Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/SpectrumIM/spectrum2.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorvitalyster <vitalyster@gmail.com>2022-02-03 01:30:46 +0300
committerGitHub <noreply@github.com>2022-02-03 01:30:46 +0300
commit1d78163eaccb3c5f2ce8789fd0fcd74bd6848ccd (patch)
tree960af5c1db57d5fb775a549bc546bfafcfa874f5
parent89f78038739433fd2e08c2491324e9cfb7fb83a6 (diff)
parente567728dc0db7daf0948d1069437178c6dea5fc3 (diff)
Merge branch 'master' into libpurple_multilevel_discolibpurple_multilevel_disco
-rw-r--r--.dockerignore2
-rw-r--r--.github/workflows/main.yml39
-rw-r--r--.github/workflows/publish.yml41
-rw-r--r--CMakeLists.txt11
-rw-r--r--ChangeLog317
-rw-r--r--ChangeLog.md261
-rw-r--r--Dockerfile70
-rw-r--r--backends/frotz/CMakeLists.txt2
-rw-r--r--backends/frotz/dfrotz/CMakeLists.txt1
-rw-r--r--backends/libcommuni/CMakeLists.txt2
-rw-r--r--backends/libpurple/CMakeLists.txt2
-rw-r--r--backends/libpurple/main.cpp320
-rw-r--r--backends/libpurple/purple_defs.cpp5
-rw-r--r--backends/libpurple/purple_defs.h4
-rw-r--r--backends/libpurple/utils.cpp31
-rw-r--r--backends/smstools3/CMakeLists.txt2
-rw-r--r--backends/swiften/CMakeLists.txt2
-rw-r--r--backends/template/CMakeLists.txt2
-rw-r--r--backends/twitter/CMakeLists.txt3
-rw-r--r--backends/twitter/TwitterResponseParser.cpp42
-rw-r--r--cmake_modules/FindJsonCpp.cmake9
-rw-r--r--docker-compose.yml40
-rw-r--r--include/Swiften/FileTransfer/CombinedOutgoingFileTransferManager.cpp106
-rw-r--r--include/Swiften/FileTransfer/CombinedOutgoingFileTransferManager.h57
-rw-r--r--include/Swiften/FileTransfer/MyOutgoingSIFileTransfer.cpp87
-rw-r--r--include/Swiften/FileTransfer/MyOutgoingSIFileTransfer.h56
-rw-r--r--include/Swiften/TLS/OpenSSL/OpenSSLServerContext.cpp3
-rw-r--r--include/boost/cstdint.hpp545
-rw-r--r--include/boost/detail/endian.hpp11
-rw-r--r--include/boost/dll.hpp27
-rwxr-xr-xinclude/boost/dll/alias.hpp261
-rw-r--r--include/boost/dll/detail/aggressive_ptr_cast.hpp44
-rw-r--r--include/boost/dll/detail/elf_info.hpp285
-rw-r--r--include/boost/dll/detail/macho_info.hpp321
-rw-r--r--include/boost/dll/detail/pe_info.hpp427
-rw-r--r--include/boost/dll/detail/posix/path_from_handle.hpp129
-rw-r--r--include/boost/dll/detail/posix/program_location_impl.hpp113
-rw-r--r--include/boost/dll/detail/posix/shared_library_impl.hpp197
-rw-r--r--include/boost/dll/detail/strip_calling_convention.hpp140
-rw-r--r--include/boost/dll/detail/system_error.hpp49
-rw-r--r--include/boost/dll/detail/windows/path_from_handle.hpp72
-rw-r--r--include/boost/dll/detail/windows/shared_library_impl.hpp167
-rw-r--r--include/boost/dll/detail/x_info_interface.hpp32
-rw-r--r--include/boost/dll/import.hpp227
-rw-r--r--include/boost/dll/library_info.hpp181
-rw-r--r--include/boost/dll/runtime_symbol_info.hpp182
-rw-r--r--include/boost/dll/shared_library.hpp538
-rw-r--r--include/boost/dll/shared_library_load_mode.hpp213
-rw-r--r--include/boost/predef.h24
-rw-r--r--include/boost/predef/architecture.h32
-rw-r--r--include/boost/predef/architecture/alpha.h59
-rw-r--r--include/boost/predef/architecture/arm.h70
-rw-r--r--include/boost/predef/architecture/blackfin.h46
-rw-r--r--include/boost/predef/architecture/convex.h65
-rw-r--r--include/boost/predef/architecture/ia64.h49
-rw-r--r--include/boost/predef/architecture/m68k.h82
-rw-r--r--include/boost/predef/architecture/mips.h73
-rw-r--r--include/boost/predef/architecture/parisc.h64
-rw-r--r--include/boost/predef/architecture/ppc.h72
-rw-r--r--include/boost/predef/architecture/pyramid.h42
-rw-r--r--include/boost/predef/architecture/rs6k.h56
-rw-r--r--include/boost/predef/architecture/sparc.h54
-rw-r--r--include/boost/predef/architecture/superh.h67
-rw-r--r--include/boost/predef/architecture/sys370.h43
-rw-r--r--include/boost/predef/architecture/sys390.h43
-rw-r--r--include/boost/predef/architecture/x86.h38
-rw-r--r--include/boost/predef/architecture/x86/32.h87
-rw-r--r--include/boost/predef/architecture/x86/64.h50
-rw-r--r--include/boost/predef/architecture/z.h42
-rw-r--r--include/boost/predef/compiler.h43
-rw-r--r--include/boost/predef/compiler/borland.h63
-rw-r--r--include/boost/predef/compiler/clang.h56
-rw-r--r--include/boost/predef/compiler/comeau.h61
-rw-r--r--include/boost/predef/compiler/compaq.h66
-rw-r--r--include/boost/predef/compiler/diab.h56
-rw-r--r--include/boost/predef/compiler/digitalmars.h56
-rw-r--r--include/boost/predef/compiler/dignus.h56
-rw-r--r--include/boost/predef/compiler/edg.h56
-rw-r--r--include/boost/predef/compiler/ekopath.h57
-rw-r--r--include/boost/predef/compiler/gcc.h68
-rw-r--r--include/boost/predef/compiler/gcc_xml.h53
-rw-r--r--include/boost/predef/compiler/greenhills.h66
-rw-r--r--include/boost/predef/compiler/hp_acc.h61
-rw-r--r--include/boost/predef/compiler/iar.h56
-rw-r--r--include/boost/predef/compiler/ibm.h72
-rw-r--r--include/boost/predef/compiler/intel.h65
-rw-r--r--include/boost/predef/compiler/kai.h56
-rw-r--r--include/boost/predef/compiler/llvm.h57
-rw-r--r--include/boost/predef/compiler/metaware.h53
-rw-r--r--include/boost/predef/compiler/metrowerks.h77
-rw-r--r--include/boost/predef/compiler/microtec.h53
-rw-r--r--include/boost/predef/compiler/mpw.h63
-rw-r--r--include/boost/predef/compiler/palm.h56
-rw-r--r--include/boost/predef/compiler/pgi.h60
-rw-r--r--include/boost/predef/compiler/sgi_mipspro.h66
-rw-r--r--include/boost/predef/compiler/sunpro.h76
-rw-r--r--include/boost/predef/compiler/tendra.h53
-rw-r--r--include/boost/predef/compiler/visualc.h91
-rw-r--r--include/boost/predef/compiler/watcom.h56
-rw-r--r--include/boost/predef/detail/_cassert.h17
-rw-r--r--include/boost/predef/detail/_exception.h15
-rw-r--r--include/boost/predef/detail/comp_detected.h10
-rw-r--r--include/boost/predef/detail/endian_compat.h26
-rw-r--r--include/boost/predef/detail/os_detected.h10
-rw-r--r--include/boost/predef/detail/platform_detected.h10
-rw-r--r--include/boost/predef/detail/test.h17
-rw-r--r--include/boost/predef/detail/test_def.h71
-rw-r--r--include/boost/predef/hardware.h16
-rw-r--r--include/boost/predef/hardware/simd.h107
-rw-r--r--include/boost/predef/hardware/simd/arm.h57
-rw-r--r--include/boost/predef/hardware/simd/arm/versions.h32
-rw-r--r--include/boost/predef/hardware/simd/ppc.h69
-rw-r--r--include/boost/predef/hardware/simd/ppc/versions.h51
-rw-r--r--include/boost/predef/hardware/simd/x86.h123
-rw-r--r--include/boost/predef/hardware/simd/x86/versions.h129
-rw-r--r--include/boost/predef/hardware/simd/x86_amd.h87
-rw-r--r--include/boost/predef/hardware/simd/x86_amd/versions.h51
-rw-r--r--include/boost/predef/language.h17
-rw-r--r--include/boost/predef/language/objc.h42
-rw-r--r--include/boost/predef/language/stdc.h53
-rw-r--r--include/boost/predef/language/stdcpp.h121
-rw-r--r--include/boost/predef/library.h16
-rw-r--r--include/boost/predef/library/c.h20
-rw-r--r--include/boost/predef/library/c/_prefix.h13
-rw-r--r--include/boost/predef/library/c/gnu.h61
-rw-r--r--include/boost/predef/library/c/uc.h47
-rw-r--r--include/boost/predef/library/c/vms.h47
-rw-r--r--include/boost/predef/library/c/zos.h56
-rw-r--r--include/boost/predef/library/std.h25
-rw-r--r--include/boost/predef/library/std/_prefix.h23
-rw-r--r--include/boost/predef/library/std/cxx.h46
-rw-r--r--include/boost/predef/library/std/dinkumware.h52
-rw-r--r--include/boost/predef/library/std/libcomo.h47
-rw-r--r--include/boost/predef/library/std/modena.h45
-rw-r--r--include/boost/predef/library/std/msl.h53
-rw-r--r--include/boost/predef/library/std/roguewave.h56
-rw-r--r--include/boost/predef/library/std/sgi.h51
-rw-r--r--include/boost/predef/library/std/stdcpp3.h53
-rw-r--r--include/boost/predef/library/std/stlport.h59
-rw-r--r--include/boost/predef/library/std/vacpp.h44
-rw-r--r--include/boost/predef/make.h89
-rw-r--r--include/boost/predef/os.h33
-rw-r--r--include/boost/predef/os/aix.h66
-rw-r--r--include/boost/predef/os/amigaos.h46
-rw-r--r--include/boost/predef/os/android.h45
-rw-r--r--include/boost/predef/os/beos.h45
-rw-r--r--include/boost/predef/os/bsd.h103
-rw-r--r--include/boost/predef/os/bsd/bsdi.h48
-rw-r--r--include/boost/predef/os/bsd/dragonfly.h50
-rw-r--r--include/boost/predef/os/bsd/free.h60
-rw-r--r--include/boost/predef/os/bsd/net.h84
-rw-r--r--include/boost/predef/os/bsd/open.h171
-rw-r--r--include/boost/predef/os/cygwin.h45
-rw-r--r--include/boost/predef/os/haiku.h46
-rw-r--r--include/boost/predef/os/hpux.h47
-rw-r--r--include/boost/predef/os/ios.h51
-rw-r--r--include/boost/predef/os/irix.h46
-rw-r--r--include/boost/predef/os/linux.h46
-rw-r--r--include/boost/predef/os/macos.h65
-rw-r--r--include/boost/predef/os/os400.h45
-rw-r--r--include/boost/predef/os/qnxnto.h59
-rw-r--r--include/boost/predef/os/solaris.h46
-rw-r--r--include/boost/predef/os/unix.h76
-rw-r--r--include/boost/predef/os/vms.h52
-rw-r--r--include/boost/predef/os/windows.h51
-rw-r--r--include/boost/predef/other.h16
-rw-r--r--include/boost/predef/other/endian.h204
-rw-r--r--include/boost/predef/platform.h21
-rw-r--r--include/boost/predef/platform/mingw.h69
-rw-r--r--include/boost/predef/platform/windows_desktop.h45
-rw-r--r--include/boost/predef/platform/windows_phone.h43
-rw-r--r--include/boost/predef/platform/windows_runtime.h45
-rw-r--r--include/boost/predef/platform/windows_store.h43
-rw-r--r--include/boost/predef/version.h15
-rw-r--r--include/boost/predef/version_number.h53
-rw-r--r--include/boost/signalslib.hpp33
-rw-r--r--include/boost/utility/explicit_operator_bool.hpp154
-rw-r--r--include/transport/Conversation.h1
-rw-r--r--include/transport/FileTransferManager.h66
-rw-r--r--include/transport/MemoryReadBytestream.h52
-rw-r--r--include/transport/MySQLBackend.h3
-rw-r--r--include/transport/NetworkPlugin.h18
-rw-r--r--include/transport/NetworkPluginServer.h19
-rw-r--r--include/transport/PQXXBackend.h2
-rw-r--r--include/transport/SQLite3Backend.h3
-rw-r--r--include/transport/StorageBackend.h2
-rw-r--r--include/transport/User.h2
-rw-r--r--include/transport/protocol.proto16
-rw-r--r--libtransport/CMakeLists.txt4
-rw-r--r--libtransport/FileTransferManager.cpp102
-rw-r--r--libtransport/MemoryReadByteStream.cpp76
-rw-r--r--libtransport/MySQLBackend.cpp29
-rw-r--r--libtransport/NetworkPluginServer.cpp192
-rw-r--r--libtransport/PQXXBackend.cpp17
-rw-r--r--libtransport/SQLite3Backend.cpp20
-rw-r--r--libtransport/Util.cpp30
-rwxr-xr-xpackaging/docker/run.sh12
-rw-r--r--plugin/cpp/networkplugin.cpp118
-rw-r--r--plugin/python/CMakeLists.txt2
-rw-r--r--plugin/python/NetworkPlugin.py82
-rw-r--r--spectrum/src/frontends/slack/CMakeLists.txt2
-rw-r--r--spectrum/src/frontends/xmpp/CMakeLists.txt2
-rw-r--r--spectrum/src/frontends/xmpp/XMPPUser.h1
-rw-r--r--spectrum/src/frontends/xmpp/XMPPUserRegistration.cpp20
-rw-r--r--spectrum/src/frontends/xmpp/discoinforesponder.cpp1
-rw-r--r--spectrum/src/main.cpp5
-rw-r--r--spectrum_manager/src/CMakeLists.txt2
-rw-r--r--spectrum_manager/src/html/header.shtml13
-rw-r--r--spectrum_manager/src/html/js/app.js29
-rw-r--r--spectrum_manager/src/html/js/bootbox.min.js6
-rw-r--r--spectrum_manager/src/html/js/bootstrap.min.js7
-rw-r--r--spectrum_manager/src/html/js/jquery-ui.js5
-rw-r--r--spectrum_manager/src/html/js/jquery.cookie.js114
-rw-r--r--spectrum_manager/src/html/js/jquery.js5
-rw-r--r--spectrum_manager/src/server.cpp3
-rw-r--r--tests/libtransport/AdminInterface.cpp2
-rw-r--r--tests/libtransport/CMakeLists.txt2
-rw-r--r--tests/libtransport/basictest.h3
-rw-r--r--tests/libtransport/config.cpp2
-rw-r--r--tests/libtransport/networkpluginserver.cpp2
-rw-r--r--tests/prosody/configuration/prosody.cfg.lua70
-rw-r--r--tests/prosody/data/.gitignore2
-rw-r--r--tests/xmpp/configuration/backend-logging.cfg11
-rw-r--r--tests/xmpp/configuration/logging.cfg14
-rw-r--r--tests/xmpp/configuration/manager-logging.cfg11
-rw-r--r--tests/xmpp/configuration/spectrum_manager.cfg23
-rw-r--r--tests/xmpp/configuration/transports/irc.cfg26
-rw-r--r--tests/xmpp/configuration/transports/tg.cfg27
-rw-r--r--tests/xmpp/configuration/transports/wa.cfg28
-rw-r--r--tests/xmpp/data/.gitignore2
-rw-r--r--tests/xmpp/media/.gitignore2
231 files changed, 909 insertions, 13266 deletions
diff --git a/.dockerignore b/.dockerignore
new file mode 100644
index 00000000..1d52deee
--- /dev/null
+++ b/.dockerignore
@@ -0,0 +1,2 @@
+tests/xmpp/data
+tests/prosody/data
diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml
index 36c0e454..75d0eb14 100644
--- a/.github/workflows/main.yml
+++ b/.github/workflows/main.yml
@@ -10,9 +10,7 @@ jobs:
- uses: actions/checkout@v2
- name: Build tests
- run: docker build . --target test -t spectrum:tests
- env:
- DOCKER_BUILDKIT: 1
+ run: docker buildx build . --target test -t spectrum:tests
- name: Run tests
run: docker run -tt spectrum:tests
linux-clang:
@@ -22,9 +20,7 @@ jobs:
- uses: actions/checkout@v2
- name: Build tests
- run: docker build . --target test-clang -t spectrum:tests-clang
- env:
- DOCKER_BUILDKIT: 1
+ run: docker buildx build . --target test-clang -t spectrum:tests-clang
- name: Run tests
run: docker run -tt spectrum:tests-clang
linux-musl:
@@ -34,22 +30,27 @@ jobs:
- uses: actions/checkout@v2
- name: Build tests
- env:
- DOCKER_BUILDKIT: 1
- run: docker build . --target test-musl -t spectrum:tests-musl
+ run: docker buildx build . --target test-musl -t spectrum:tests-musl
- name: Run tests
run: docker run -tt --env LANG=en_US.UTF-8 spectrum:tests-musl
macos:
- runs-on: macOS-latest
+ runs-on: macOS-11.0
steps:
- uses: actions/checkout@v2
+ - name: Install MacPorts
+ run: |
+ curl -L -O "https://github.com/macports/macports-base/releases/download/v2.7.1/MacPorts-2.7.1-11-BigSur.pkg"
+ sudo installer -store -pkg MacPorts-2.7.1-11-BigSur.pkg -target /
+ echo "https://packages.spectrum.im/macports/ports.tar.bz2" | sudo tee -a /opt/local/etc/macports/sources.conf
- name: Install dependencies
- run: brew install cppunit log4cxx popt jsoncpp libswiften protobuf pkg-config
+ run: |
+ export PATH=$PATH:/opt/local/bin
+ sudo rm -rf /usr/local/*
+ sudo port -v selfupdate && sudo port -q install cppunit log4cxx popt jsoncpp protobuf3-cpp pkgconfig boost cmake zlib libswiften
- name: Configure build
run: |
- rm /usr/local/include/Swiften/Network/DummyConnectionServer.h
- rm /usr/local/include/Swiften/Network/DummyConnectionServerFactory.h
- cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_TESTS=ON -DENABLE_FROTZ=OFF -DCMAKE_UNITY_BUILD=ON .
+ export PATH=$PATH:/opt/local/bin:/usr/local/bin
+ cmake -DCMAKE_BUILD_TYPE=MacPorts -DENABLE_TESTS=ON -DCMAKE_UNITY_BUILD=ON .
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
@@ -59,7 +60,13 @@ jobs:
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1
- name: Run tests
- run: make test
+ run: |
+ install_name_tool -change libSwiften.4.dylib @rpath/libSwiften.4.dylib tests/libtransport/libtransport_test
+ install_name_tool -add_rpath /opt/local/lib tests/libtransport/libtransport_test
+ install_name_tool -change libSwiften.4.dylib @rpath/libSwiften.4.dylib libtransport/libtransport.2.0.dylib
+ install_name_tool -add_rpath /opt/local/lib libtransport/libtransport.2.0.dylib
+ make test
+
windows:
runs-on: windows-latest
@@ -79,7 +86,7 @@ jobs:
cmake -G "Visual Studio 16 2019" -A Win32 -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_TESTS=ON -DENABLE_FROTZ=OFF -DENABLE_PURPLE=OFF -DENABLE_MYSQL=OFF -DENABLE_IRC=OFF -DENABLE_PQXX=OFF -DCMAKE_INSTALL_PREFIX=dist .
shell: cmd
- name: Build solution
- run: msbuild /t:Build INSTALL.vcxproj /p:Configuration=RelWithDebInfo /p:Platform=Win32
+ run: msbuild /t:Build INSTALL.vcxproj /p:Configuration=RelWithDebInfo /p:Platform=Win32 /m
- name: Run tests
shell: cmd
run: |
diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml
index 8224445e..5f9f75ad 100644
--- a/.github/workflows/publish.yml
+++ b/.github/workflows/publish.yml
@@ -1,26 +1,45 @@
name: Publish
on:
- workflow_dispatch:
push:
- branches:
+ branches:
- master
tags:
- - '*'
+ - '*.*.*'
jobs:
build:
- runs-on: ubuntu-latest
+ runs-on: ubuntu-20.04
steps:
- uses: actions/checkout@v2
-
- - uses: docker/build-push-action@v1
- env:
- DOCKER_BUILDKIT: 1
+ - name: Docker meta
+ id: docker_meta
+ uses: crazy-max/ghaction-docker-meta@v1
+ with:
+ images: spectrum2/spectrum
+ tag-semver: |
+ {{version}}
+ tag-latest: ${{ endsWith(github.ref, github.repository.default_branch) || startsWith(github.ref, 'refs/tags/') }}
+ - name: Set up QEMU
+ uses: docker/setup-qemu-action@v1
+ - name: Set up Docker Buildx
+ uses: docker/setup-buildx-action@v1
+ - name: Login to DockerHub
+ if: github.event_name != 'pull_request'
+ uses: docker/login-action@v1
with:
username: ${{ secrets.DOCKERHUB_LOGIN }}
- password: ${{ secrets.DOCKERHUB }}
- repository: spectrum2/spectrum
- tag_with_ref: true
+ password: ${{ secrets.DOCKERHUB}}
+ - name: Build and push
+ uses: docker/build-push-action@v2
+ with:
+ context: .
+ file: ./Dockerfile
+ platforms: linux/amd64,linux/arm64
target: production
+ cache-from: type=registry,ref=spectrum2/spectrum
+ cache-to: type=inline
+ push: ${{ github.event_name != 'pull_request' }}
+ tags: ${{ steps.docker_meta.outputs.tags }}
+ labels: ${{ steps.docker_meta.outputs.labels }}
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 53b1228c..37d6c453 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -3,6 +3,9 @@ cmake_minimum_required(VERSION 3.7)
project(libtransport)
set(CMAKE_CXX_STANDARD 11)
+if(WIN32)
+ set(CMAKE_CXX_STANDARD 17)
+endif(WIN32)
set(CMAKE_CXX_STANDARD_REQUIRED ON)
set(CMAKE_CXX_EXTENSIONS OFF)
@@ -165,10 +168,6 @@ if(NOT PROTOBUF_FOUND AND PROTOBUF_INCLUDE_DIR AND PROTOBUF_LIBRARY)
endif()
find_package(JsonCpp REQUIRED)
-if(JSONCPP_FOUND)
- include_directories(${JSONCPP_INCLUDE_DIRS})
- message(STATUS "Found jsoncpp: ${JSONCPP_INCLUDE_DIRS} ${JSONCPP_LIBRARY}, shared: ${JSONCPP_LIBRARY_IS_SHARED}")
-endif()
if(WIN32)
add_definitions(-DSWIFTEN_STATIC=1)
@@ -226,10 +225,10 @@ else(SPECTRUM_VERSION)
OUTPUT_VARIABLE GIT_REVISION
OUTPUT_STRIP_TRAILING_WHITESPACE
)
- set(SPECTRUM_VERSION 2.0.x-git-${GIT_REVISION})
+ set(SPECTRUM_VERSION 2.1.x-git-${GIT_REVISION})
add_definitions(-DSPECTRUM_VERSION="${SPECTRUM_VERSION}")
else(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git)
- set(SPECTRUM_VERSION 2.0.13)
+ set(SPECTRUM_VERSION 2.1.1)
add_definitions(-DSPECTRUM_VERSION="${SPECTRUM_VERSION}")
endif(EXISTS ${CMAKE_CURRENT_SOURCE_DIR}/.git)
endif(SPECTRUM_VERSION)
diff --git a/ChangeLog b/ChangeLog
deleted file mode 100644
index 4d1e6ed8..00000000
--- a/ChangeLog
+++ /dev/null
@@ -1,317 +0,0 @@
-Version 2.0.13 (2020-07-13):
- General:
- * improve compatibility with latest build tools
- libpurple backend:
- * fix random crashes
- * telegram-tdlib support
-
-Version 2.0.12 (2019-07-15):
- libpurple backend:
- * revert changes which causes crash on start
-
-Version 2.0.11 (2019-07-12):
- General:
- * Minor compatibility fixes with latest packaging tools
- * 2FA support for Steam libpurple plugin
- * Improved image and carbons forwarding
-
-Version 2.0.10 (2019-01-25):
- General:
- * Compatibility with latest compilers and libraries Libpurple backend:
- * 2FA support for Discord plugin
- * Compatibility with non-protocol plugins (nss-prefs)
- * Improved room list forwarding
- * Improved image forwarding
-
-Version 2.0.9 (2018-09-22):
- General:
- * Finally fix MySQL storage backend issues
-
-Version 2.0.8 (2018-09-17):
- General:
- * Fix some MySQL storage backend issues
- * Appveyor build integration
- Libpurple backend:
- * Fix Steam Guard compatibility in Steam Mobile plugin
- * Fix VCard forwarding and room joining issues
- Twitter backend:
- * 280 characters support
- * Support for Direct Messages is disabled until switching to new
- Direct Message API
- Libcommuni backend:
- * split multiline messages into series of PRIVMSG commands
-
-Version 2.0.7 (2018-04-27):
- General:
- * Fix Web interface and Twitter backend compatibilty with Swiften 4 by switching to C++11-compatible JSON library
- * Minor changes in packaging and build environment
- XMPP:
- * Fix XEP-0085 compatibility with some clients
-
-Version 2.0.6 (2018-02-07):
- General:
- * Add support for forwading own messages sent from different legacy network client.
- XMPP frontend:
- * Forward own messages as XEP-280 Carbons. Requires XEP-0356 capable server
- and transport should be configured as privileged entity for outgoing messages.
- * Fixed compatibility with XEP-0356: now it can be used to provide remote
- roster management support.
- * Forward images using XEP-0066 attachments. May not be compatible with all backends.
- Libpurple backend:
- * Forward own messages to frontend. Tested with prpl-skypeweb.
- * Fixed compatibility with latest prpl-steam-mobile
- Minor bugfixes:
- * packaging updates and improvements
- * better compatibility with newest compilers and libraries
-
-Version 2.0.5 (2017-08-09):
- Minor bugfixes:
- * fix purple-hangouts login
- * fix Debian packages dependencies
-
-Version 2.0.4 (2017-08-03):
- General:
- * Add support for Swiften 4.0rc2. Swiften 3.x and 2.x are still supported.
- * Add support for passwordless libpurple backends (e.g. purple-hangouts).
- * Partial support for groupchats with case-sensitive names (e.g. purple-telegram).
- * Various small bugfixes, see Git commit descriptions for the full list of changes.
-
-Version 2.0.3 (2016-02-29):
- General:
- * Swift 3.0rc2 is now minimum Swift 3.x version needed to compile Spectrum2,
- Swith 2.x remains supported.
- * Rename user when he tries to connect to room from the second client
- with different nickname than he used with the first client.
- * Send self presence as the first presence from the MUC room.
- * Send the icon hash to the backend with other buddies information.
- * Send unavailable presence as a response to presence for exiting
- the room. Fixes room rejoin in Pidgin.
- * Fix memory leak in HTTPRequest - currently used only in Slack frontend.
-
- Slack frontend:
- * For IRC allow registering without providing account name/password.
- * Do not reconnect to Slack RTM when no URL is available after disconnect.
- * Handle "account_inactive" Slack error.
-
- Web interface:
- * Show warning when trying to register already registered username.
- * Allow registering with empty password for networks like IRC where
- password is not needed.
- * Allow showing examples of username or server in registration form. This
- is configured in config file.
- * Fix `service.base_location` setting for register.shtml page.
-
- Libpurple backend:
- * Make the conversation active according to chatstates notifications.
- Should fix the issue with repeating messages with prpl-facebook.
- * When `service.web_directory` and `service.web_url` is set, images sent
- in messages are stored to `service.web_directory` and link is forwarded
- to the user. Tested only with prpl-facebook for now.
- * Treat empty password as fatal error - do no try to reconnect
- automatically in that case.
-
- Libcommuni backend:
- * Latest libcommuni 3.4.0 is now needed.
- * Libcommuni backend has been improved to use the newest libcommuni
- features.
- * Ports can now be set in `service.irc_server` option and in the JID. When
- '+' character is used before the port number, SSL is used automatically.
- When port 6697 is used, SSL is used automatically too.
-
- Swiften backend:
- * Respect the resource when connecting to 3rd-party XMPP network.
-
-Version 2.0.2 (2016-02-09):
- General:
- * Fix joining the room when using JID Escaping even for '@' character.
- * Fix Raw XML mode - fixes the Swiften backend.
- * Allow backends to set avatars to buddies in room - currently no backend
- uses it.
- * Set the room list per frontend user - this fixes possible information
- for networks like Skype or Facebook where the room list is not global
- per network.
- * Support usage of aliases in the rooms, so backends can use the
- network-based UID for the buddies in the room while still setting
- user-friendly aliases to them.
- * Fix leaving the room when user is connected to transport using two
- clients, but only one of them joined the room and that one disconnects
- the transport without leaving the room (For example when he just
- quits the client).
-
- XMPP frontend:
- * Handle the XMPP VCard changes - updating avatar should work now for
- backends supporting it.
-
- Slack frontend:
- * Slack frontend is now completely managed by the web interface, old
- way of managing (".spectrum2 ..." commands sent to Spectrum 2 bot)
- are not supported.
- * Slack channels are now created automatically on Slack when you join them
- using web-interface. The same applies also to the Main channel.
- * Logging has been improved to show the name of Slack team for each log
- line.
-
- Libpurple backend:
- * Forward the room topic to frontend.
- * Fix joining the rooms on networks when the nickname in the room cannot
- be changed (Skype or Facebook). Libpurple backend changes your nickname
- to the right one in that case.
- * Show the buddies aliases in the Facebook rooms instead of Facebook
- buddies numbers.
-
- Twitter backend:
- * Fix compilation with newer gcc.
-
- Swiften backend:
- * Swiften backend works as before the frontends introduction.
-
- Skype backend:
- * The old skype backend has been removed. Use purple-skypeweb instead.
-
- Web interface:
- * Allow setting "port" and "base_location" in the config file.
- * Allow maintaining joined rooms in the Web interface for the Slack
- frontend.
- * "[identity] name" config variables is now used as a name of the
- transport.
-
-Version 2.0.1 (2016-01-25):
- General:
- * Fix wrong nickname when joining room with some backends.
- * Leave room when disconnected from 3rd-party network because of an error.
- Fixes a bug when users were not able to rejoin the room after Spectrum 2
- disconnected them from 3rd-party network.
- * Fix building on Windows.
- * Support case-sensitive buddy names transparently - boost_locale is now
- needed as a new dependency.
-
- Spectrum2_manager:
- * Add simple web interface, can be tested using "spectrum2_manager server".
-
- XMPP frontend:
- * Show MUC feature in room disco#info response.
-
- Slack frontend:
- * Slack frontend is now working as Slack app, so you need to obtain the
- client_id and client_secret from Slack to setup your own server and to
- do the OAuth2 flow, you have to setup the Spectrum2_manager Server. Read
- the documentation for more info.
- * Fix OAuth2 registration flow.
- * Fix multiple crashes when disconnected from Slack network or from
- 3rd-party network.
- * Slack frontend should still be used only for testing, it is till under
- the development.
-
- Libpurple backend:
- * Forward room list to frontend.
- * Fix compatibility with latest telegram-purple - You mean need to
- unregister the transport and register it again if you experience
- compatibility problems.
-
- Twitter backend:
- * Fix default value of fetch timer.
- * Disable useless Curl verbose output.
- * Fix crash when populating roster when using Swiften 3.
- * Do not set status message for buddies not in Friends list - fixes a bug
- when buddies who are not in Friends list have been added to roster.
-
-Version 2.0.0 (2015-12-29):
- General:
- * Fix compilation with new versions of Spectrum 2 dependencies.
- * Added support for multiple frontends - Slack frontend is the first one.
- * Log errors related to backend spawning (Show proper log message for
- example when path to backend binary is not found).
- * Set SQLite3 as default database backend.
- * Fixed disconnecting from server caused by sending VCard response
- with bad "from" attribute.
- * Added Munin plugin (Thanks to Askovpen).
- * Added support for more admin_jid JIDs (Thanks to Askovpen).
- * Fixed allowed_servers option.
- * Options from config file can now be set also using command line like
- --service.jid=domain.tld .
- * Do not send password in IQ-get registration response.
- * Added support for AdHoc commands.
- * Do not store buddies with empty name in database.
- * Improved MySQL storage backend performance.
- * Fix crash caused by two XMPP users using single PurpleAccount instance.
- * Support for [registration] allowed_usernames.
-
- Spectrum2_manager:
- * Rewritten to provide more features. Check the documentation.
-
- Libpurple:
- * prpl-gg: Fetch the contact list properly (#252).
- * Added support for prpl-novell as it was in Spectrum 1.
-
- Twitter:
- * Added Twitter support using Twitter backend. Thanks to Sarang and
- Google Summer of Code.
-
- Skype:
- * Skype backend is now deprecated, use libpurple purple-skypeweb plugin
- as a replacement.
-
- Backend API:
- * Added Python NetworkPlugin class, so it is now easier to write backends
- in Python (Thanks to Sarang).
-
-Version 2.0.0-beta2 (2012-03-28):
- General:
- * Fixed bug when Roster Item Exchange and subscribe stanzas were sent
- repeatedly.
- * Backends related logs now contain the backend PID.
- * Fixed username_mask setting.
- * Added new fields into statistics (backends_crashed, messages related
- stats).
- * Chatstates are now not counted as incoming messages in stats.
- * Log4cxx is now optional dependency. Without Log4cxx, Spectrum 2 logs
- to standard output.
- * Fixed crash when Log4cxx configuration file didn't exist.
- * Admin can now see "Admin" contact in server-mode.
-
- libpurple:
- * Added initial support for MUC for prpl-jabber protocol.
-
- LibCommuni IRC backend:
- * Fixed sending/receiving UTF8 messages.
- * Using the [registration] auto_register=1 config option, users don't
- have to register manually when connecting IRC network.
-
- Skype:
- * Memory usage statistic now includes the Skype client.
- * Fixed logging issue when the logs were not stored in the proper instance
- directory.
- * Skype backend includes also Skype client memory usage into the account.
- * Working buddies adding/removing.
- * Information about missed call is now forwarded to XMPP user.
- * Fixed bug when Skype client instance wasn't killed by backend.
-
-Version 2.0.0-beta (2012-02-28):
- General:
- * Added PostreSQL support (thanks to Jadestorm).
- * Added XEP-0100 (Gateway interaction) support.
- * Send presences only "from" bare JID (fixed bug with buddies appearing
- twice in the roster and potential unregistering issues).
- * Fixed potential MySQL/SQLite3 deadlocks.
- * Fixed disconnecting in server-mode when client does not send unavailable
- presence before disconnection.
- * Fixed crash in server-mode when client send its custom jabber:iq:storage
- payload.
- * Fixed registration from Pidgin.
- * Unsubscribe presence sent to some buddy doesn't disconnect the account.
- * Remote Roster requests are not sent to resources, but to bare JID.
- * Added automatic reconnection in case of non-fatal error.
- * Added more error messages.
-
- Skype:
- * Initial support for Skype added, read more on
- http://spectrum.im/projects/spectrum/wiki/Spectrum_2_Admin_-_Skype_backend
-
- SMSTools3:
- * Initial support for SMSTools3, read more on
- http://spectrum.im/projects/spectrum/wiki/Spectrum_2_Admin_-_SMSTools3_backend
-
-version 2.0.0 alpha (2011-12-06):
- General:
- * First Spectrum 2.0.0 alpha release, check more on
- http://spectrum.im/projects/spectrum/wiki/Spectrum_200_alpha
diff --git a/ChangeLog.md b/ChangeLog.md
new file mode 100644
index 00000000..67c83998
--- /dev/null
+++ b/ChangeLog.md
@@ -0,0 +1,261 @@
+### Version 2.1.1 (2022-02-03)
+#### General
+* Fix MySQL 8.x compatibility
+* Various minor code improvements, see commit log
+#### libpurple backend
+* Fix issues with filetransfers: files automatically downloaded to `web.directory`
+* Add support for the purple-gowhatsapp QR code auth
+* Fix crash when processing `[purple]` boolean config options
+#### Docker
+* Updated base image to Debian 11
+* Added example `docker-compose` configuration
+#### Web interface
+* Fix security issues found by CodeQL scans
+* Use third-party scripts from CDN
+___
+### Version 2.1.0 (2021-10-15)
+#### General
+* Swiften 4.0 is now minimum supported Swiften version
+* CMake 3.7 is now minimum supported CMake version (which is present in Debian oldoldstable)
+* improve compatibility with latest build tools and dependencies
+* Fix service discovery compatibility with some clients (Gajim)
+#### libpurple backend
+* Improved support for passwordless backends
+___
+### Version 2.0.13 (2020-07-13)
+#### General
+* improve compatibility with latest build tools
+#### libpurple backend
+* fix random crashes
+* telegram-tdlib support
+___
+### Version 2.0.12 (2019-07-15)
+#### libpurple backend
+* revert changes which causes crash on start
+___
+### Version 2.0.11 (2019-07-12)
+#### General
+* Minor compatibility fixes with latest packaging tools
+* 2FA support for Steam libpurple plugin
+* Improved image and carbons forwarding
+___
+### Version 2.0.10 (2019-01-25)
+#### General
+* Compatibility with latest compilers and libraries
+#### Libpurple backend
+* 2FA support for Discord plugin
+* Compatibility with non-protocol plugins (nss-prefs)
+* Improved room list forwarding
+* Improved image forwarding
+___
+### Version 2.0.9 (2018-09-22)
+#### General
+* Finally fix MySQL storage backend issues
+___
+### Version 2.0.8 (2018-09-17)
+#### General
+* Fix some MySQL storage backend issues
+* Appveyor build integration
+#### Libpurple backend
+* Fix Steam Guard compatibility in Steam Mobile plugin
+* Fix VCard forwarding and room joining issues
+#### Twitter backend
+* 280 characters support
+* Support for Direct Messages is disabled until switching to new Direct Message API
+#### Libcommuni backend
+* split multiline messages into series of PRIVMSG commands
+___
+### Version 2.0.7 (2018-04-27)
+#### General
+* Fix Web interface and Twitter backend compatibilty with Swiften 4 by switching to C++11-compatible JSON library
+* Minor changes in packaging and build environment
+#### XMPP
+* Fix XEP-0085 compatibility with some clients
+___
+### Version 2.0.6 (2018-02-07)
+#### General
+* Add support for forwading own messages sent from different legacy network client.
+#### XMPP frontend
+* Forward own messages as XEP-280 Carbons. Requires XEP-0356 capable server and transport should be configured as privileged entity for outgoing messages.
+* Fixed compatibility with XEP-0356: now it can be used to provide remote roster management support.
+* Forward images using XEP-0066 attachments. May not be compatible with all backends.
+#### Libpurple backend
+* Forward own messages to frontend. Tested with prpl-skypeweb.
+* Fixed compatibility with latest prpl-steam-mobile
+#### Minor bugfixes
+* packaging updates and improvements
+* better compatibility with newest compilers and libraries
+___
+### Version 2.0.5 (2017-08-09)
+#### Minor bugfixes
+* fix purple-hangouts login
+* fix Debian packages dependencies
+___
+### Version 2.0.4 (2017-08-03)
+#### General
+* Add support for Swiften 4.0rc2. Swiften 3.x and 2.x are still supported.
+* Add support for passwordless libpurple backends (e.g. purple-hangouts).
+* Partial support for groupchats with case-sensitive names (e.g. purple-telegram).
+* Various small bugfixes, see Git commit descriptions for the full list of changes.
+___
+### Version 2.0.3 (2016-02-29)
+#### General
+* Swift 3.0rc2 is now minimum Swift 3.x version needed to compile Spectrum2, Swith 2.x remains supported.
+* Rename user when he tries to connect to room from the second client with different nickname than he used with the first client.
+* Send self presence as the first presence from the MUC room.
+* Send the icon hash to the backend with other buddies information.
+* Send unavailable presence as a response to presence for exiting the room. Fixes room rejoin in Pidgin.
+* Fix memory leak in HTTPRequest - currently used only in Slack frontend.
+#### Slack frontend
+* For IRC allow registering without providing account name/password.
+* Do not reconnect to Slack RTM when no URL is available after disconnect.
+* Handle "account_inactive" Slack error.
+
+#### Web interface
+* Show warning when trying to register already registered username.
+* Allow registering with empty password for networks like IRC where password is not needed.
+* Allow showing examples of username or server in registration form. This is configured in config file.
+* Fix `service.base_location` setting for register.shtml page.
+
+#### Libpurple backend
+* Make the conversation active according to chatstates notifications. Should fix the issue with repeating messages with prpl-facebook.
+* When `service.web_directory` and `service.web_url` is set, images sent in messages are stored to `service.web_directory` and link is forwarded to the user. Tested only with prpl-facebook for now.
+* Treat empty password as fatal error - do no try to reconnect automatically in that case.
+
+#### Libcommuni backend
+* Latest libcommuni 3.4.0 is now needed.
+* Libcommuni backend has been improved to use the newest libcommuni features.
+* Ports can now be set in `service.irc_server` option and in the JID. When '+' character is used before the port number, SSL is used automatically. When port 6697 is used, SSL is used automatically too.
+#### Swiften backend
+* Respect the resource when connecting to 3rd-party XMPP network.
+___
+### Version 2.0.2 (2016-02-09)
+#### General
+* Fix joining the room when using JID Escaping even for '@' character.
+* Fix Raw XML mode - fixes the Swiften backend.
+* Allow backends to set avatars to buddies in room - currently no backend uses it.
+* Set the room list per frontend user - this fixes possible information for networks like Skype or Facebook where the room list is not global per network.
+* Support usage of aliases in the rooms, so backends can use the network-based UID for the buddies in the room while still setting user-friendly aliases to them.
+* Fix leaving the room when user is connected to transport using two clients, but only one of them joined the room and that one disconnects the transport without leaving the room (For example when he just quits the client).
+#### XMPP frontend
+* Handle the XMPP VCard changes - updating avatar should work now for backends supporting it.
+#### Slack frontend
+* Slack frontend is now completely managed by the web interface, old way of managing (".spectrum2 ..." commands sent to Spectrum 2 bot) are not supported.
+* Slack channels are now created automatically on Slack when you join them using web-interface. The same applies also to the Main channel.
+* Logging has been improved to show the name of Slack team for each log line.
+#### Libpurple backend
+* Forward the room topic to frontend.
+* Fix joining the rooms on networks when the nickname in the room cannot be changed (Skype or Facebook). Libpurple backend changes your nickname to the right one in that case.
+* Show the buddies aliases in the Facebook rooms instead of Facebook buddies numbers.
+#### Twitter backend
+* Fix compilation with newer gcc.
+#### Swiften backend
+* Swiften backend works as before the frontends introduction.
+#### Skype backend
+* The old skype backend has been removed. Use purple-skypeweb instead.
+#### Web interface
+* Allow setting "port" and "base_location" in the config file.
+* Allow maintaining joined rooms in the Web interface for the Slack frontend.
+* "[identity] name" config variables is now used as a name of the transport.
+___
+### Version 2.0.1 (2016-01-25)
+#### General
+* Fix wrong nickname when joining room with some backends.
+* Leave room when disconnected from 3rd-party network because of an error. Fixes a bug when users were not able to rejoin the room after Spectrum 2 disconnected them from 3rd-party network.
+* Fix building on Windows.
+* Support case-sensitive buddy names transparently - boost_locale is now needed as a new dependency.
+#### Spectrum2_manager
+* Add simple web interface, can be tested using `spectrum2_manager server`.
+#### XMPP frontend
+* Show MUC feature in room disco#info response.
+#### Slack frontend
+* Slack frontend is now working as Slack app, so you need to obtain the client_id and client_secret from Slack to setup your own server and to do the OAuth2 flow, you have to setup the Spectrum2_manager Server. Read the documentation for more info.
+* Fix OAuth2 registration flow.
+* Fix multiple crashes when disconnected from Slack network or from 3rd-party network.
+* Slack frontend should still be used only for testing, it is till under the development.
+#### Libpurple backend
+* Forward room list to frontend.
+* Fix compatibility with latest telegram-purple - You mean need to unregister the transport and register it again if you experience compatibility problems.
+#### Twitter backend
+* Fix default value of fetch timer.
+* Disable useless Curl verbose output.
+* Fix crash when populating roster when using Swiften 3.
+* Do not set status message for buddies not in Friends list - fixes a bug when buddies who are not in Friends list have been added to roster.
+___
+### Version 2.0.0 (2015-12-29)
+#### General
+* Fix compilation with new versions of Spectrum 2 dependencies.
+* Added support for multiple frontends - Slack frontend is the first one.
+* Log errors related to backend spawning (Show proper log message for example when path to backend binary is not found).
+* Set SQLite3 as default database backend.
+* Fixed disconnecting from server caused by sending VCard response with bad "from" attribute.
+* Added Munin plugin (Thanks to Askovpen).
+* Added support for more admin_jid JIDs (Thanks to Askovpen).
+* Fixed allowed_servers option.
+* Options from config file can now be set also using command line like `--service.jid=domain.tld`.
+* Do not send password in IQ-get registration response.
+* Added support for AdHoc commands.
+* Do not store buddies with empty name in database.
+* Improved MySQL storage backend performance.
+* Fix crash caused by two XMPP users using single PurpleAccount instance.
+* Support for [registration] allowed_usernames.
+#### Spectrum2_manager
+* Rewritten to provide more features. Check the documentation.
+#### Libpurple
+* prpl-gg: Fetch the contact list properly (#252).
+* Added support for prpl-novell as it was in Spectrum 1.
+#### Twitter
+* Added Twitter support using Twitter backend. Thanks to Sarang and Google Summer of Code.
+#### Skype
+* Skype backend is now deprecated, use libpurple purple-skypeweb plugin as a replacement.
+#### Backend API
+* Added Python NetworkPlugin class, so it is now easier to write backends in Python (Thanks to Sarang).
+___
+### Version 2.0.0-beta2 (2012-03-28)
+#### General
+* Fixed bug when Roster Item Exchange and subscribe stanzas were sent repeatedly.
+* Backends related logs now contain the backend PID.
+* Fixed username_mask setting.
+* Added new fields into statistics (backends_crashed, messages related stats).
+* Chatstates are now not counted as incoming messages in stats.
+* Log4cxx is now optional dependency. Without Log4cxx, Spectrum 2 logs to standard output.
+* Fixed crash when Log4cxx configuration file didn't exist.
+* Admin can now see "Admin" contact in server-mode.
+#### libpurple
+* Added initial support for MUC for prpl-jabber protocol.
+#### LibCommuni IRC backend
+* Fixed sending/receiving UTF8 messages.
+* Using the [registration] auto_register=1 config option, users don't have to register manually when connecting IRC network.
+#### Skype
+* Memory usage statistic now includes the Skype client.
+* Fixed logging issue when the logs were not stored in the proper instance directory.
+* Skype backend includes also Skype client memory usage into the account.
+* Working buddies adding/removing.
+* Information about missed call is now forwarded to XMPP user.
+* Fixed bug when Skype client instance wasn't killed by backend.
+___
+### Version 2.0.0-beta (2012-02-28)
+#### General
+* Added PostreSQL support (thanks to Jadestorm).
+* Added XEP-0100 (Gateway interaction) support.
+* Send presences only "from" bare JID (fixed bug with buddies appearing twice in the roster and potential unregistering issues).
+* Fixed potential MySQL/SQLite3 deadlocks.
+* Fixed disconnecting in server-mode when client does not send unavailable presence before disconnection.
+* Fixed crash in server-mode when client send its custom jabber:iq:storage payload.
+* Fixed registration from Pidgin.
+* Unsubscribe presence sent to some buddy doesn't disconnect the account.
+* Remote Roster requests are not sent to resources, but to bare JID.
+* Added automatic reconnection in case of non-fatal error.
+* Added more error messages.
+#### Skype
+* Initial support for Skype added, read more on
+ http://spectrum.im/projects/spectrum/wiki/Spectrum_2_Admin_-_Skype_backend
+
+#### SMSTools3
+* Initial support for SMSTools3, read more on
+ http://spectrum.im/projects/spectrum/wiki/Spectrum_2_Admin_-_SMSTools3_backend
+___
+### Version 2.0.0 alpha (2011-12-06)
+#### General
+* First Spectrum 2.0.0 alpha release, check more on http://spectrum.im/projects/spectrum/wiki/Spectrum_200_alpha
+___
diff --git a/Dockerfile b/Dockerfile
index 5e79629a..bcbfd69a 100644
--- a/Dockerfile
+++ b/Dockerfile
@@ -1,19 +1,19 @@
-FROM debian:buster-backports as base
+FROM debian:bullseye-backports as base
ARG DEBIAN_FRONTEND=noninteractive
ARG APT_LISTCHANGES_FRONTEND=none
RUN apt-get update -qq
RUN apt-get install --no-install-recommends -y dpkg-dev devscripts curl git
-RUN echo "deb https://packages.spectrum.im/spectrum2/ buster main" | tee -a /etc/apt/sources.list
-RUN echo "deb-src https://packages.spectrum.im/spectrum2/ buster main" | tee -a /etc/apt/sources.list
+RUN echo "deb https://packages.spectrum.im/spectrum2/ bullseye main" | tee -a /etc/apt/sources.list
+RUN echo "deb-src https://packages.spectrum.im/spectrum2/ bullseye main" | tee -a /etc/apt/sources.list
RUN curl https://packages.spectrum.im/packages.key | apt-key add -
RUN apt-get update -qq
RUN apt-get build-dep --no-install-recommends -y spectrum2
RUN apt-get install --no-install-recommends -y libminiupnpc-dev libnatpmp-dev
-RUN apt-get install -t buster-backports --no-install-recommends -y cmake
+RUN apt-get install --no-install-recommends -y cmake
#TODO include in Build-Depends
RUN apt-get install --no-install-recommends -y libssl-dev
@@ -26,11 +26,11 @@ FROM base as test
ARG DEBIAN_FRONTEND=noninteractive
ARG APT_LISTCHANGES_FRONTEND=none
-WORKDIR spectrum2
+WORKDIR /spectrum2
-RUN apt-get install --no-install-recommends -y prosody ngircd python3-sleekxmpp python3-dateutil python3-dnspython libcppunit-dev libpurple-xmpp-carbons1 libglib2.0-dev psmisc
+RUN apt-get install --no-install-recommends -y prosody ngircd python3-sleekxmpp python3-dateutil python3-dnspython libcppunit-dev purple-xmpp-carbons libglib2.0-dev psmisc
-RUN cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_TESTS=ON -DENABLE_QT4=OFF -DENABLE_FROTZ=OFF -DCMAKE_UNITY_BUILD=ON . && make -j4
+RUN cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_TESTS=ON -DENABLE_QT4=OFF -DCMAKE_UNITY_BUILD=ON . && make -j4
ENTRYPOINT ["make", "extended_test"]
@@ -41,24 +41,24 @@ ARG APT_LISTCHANGES_FRONTEND=none
RUN curl -fsSL https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -
-RUN echo 'deb http://apt.llvm.org/buster/ llvm-toolchain-buster-10 main' > /etc/apt/sources.list.d/llvm.list
+RUN echo 'deb http://apt.llvm.org/bullseye/ llvm-toolchain-bullseye-13 main' > /etc/apt/sources.list.d/llvm.list
RUN apt-get update -qq
-RUN apt-get install --no-install-recommends -y libcppunit-dev clang-10 lld-10
+RUN apt-get install --no-install-recommends -y libcppunit-dev clang-13 lld-13
-WORKDIR spectrum2
+WORKDIR /spectrum2
-RUN cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_TESTS=ON -DENABLE_QT4=OFF -DENABLE_FROTZ=OFF -DCMAKE_UNITY_BUILD=ON -DCMAKE_C_COMPILER=/usr/bin/clang-10 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-10 -DCMAKE_EXE_LINKER_FLAGS=-fuse-ld=lld -DCMAKE_SHARED_LINKER_FLAGS=-fuse-ld=lld . && make -j4
+RUN cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_TESTS=ON -DENABLE_QT4=OFF -DCMAKE_UNITY_BUILD=ON -DCMAKE_C_COMPILER=/usr/bin/clang-13 -DCMAKE_CXX_COMPILER=/usr/bin/clang++-13 -DCMAKE_EXE_LINKER_FLAGS=-fuse-ld=lld -DCMAKE_SHARED_LINKER_FLAGS=-fuse-ld=lld . && make -j4
ENTRYPOINT ["make", "test"]
FROM spectrum2/alpine-build-environment:latest as test-musl
-COPY . spectrum2/
+COPY . /spectrum2/
-WORKDIR spectrum2
+WORKDIR /spectrum2
-RUN cmake -DCMAKE_BUILD_TYPE=Debug -DENABLE_TESTS=ON -DENABLE_QT4=OFF -DENABLE_FROTZ=OFF -DCMAKE_UNITY_BUILD=ON . && make -j4
+RUN cmake -DCMAKE_BUILD_TYPE=RelWithDebInfo -DENABLE_TESTS=ON -DENABLE_QT4=OFF -DCMAKE_UNITY_BUILD=ON . && make -j4
ENTRYPOINT ["make", "test"]
@@ -74,7 +74,15 @@ RUN /bin/bash ./build_spectrum2.sh
RUN apt-get install --no-install-recommends -y libjson-glib-dev \
graphicsmagick-imagemagick-compat libsecret-1-dev libnss3-dev \
libwebp-dev libgcrypt20-dev libpng-dev libglib2.0-dev \
- libprotobuf-c-dev protobuf-c-compiler libmarkdown2-dev
+ libprotobuf-c-dev protobuf-c-compiler libmarkdown2-dev mercurial
+
+RUN echo "---> Installing purple-facebook" && \
+ git clone https://github.com/dequis/purple-facebook.git && \
+ cd purple-facebook && \
+ /bin/bash ./autogen.sh && \
+ ./configure && \
+ make && \
+ make DESTDIR=/tmp/out install
RUN echo "---> Installing purple-instagram" && \
git clone https://github.com/EionRobb/purple-instagram.git && \
@@ -101,16 +109,11 @@ RUN echo "---> Install Steam" && \
make DESTDIR=/tmp/out install
RUN echo "---> purple-gowhatsapp" && \
- apt-get -y install golang && \
- git clone https://github.com/hoehermann/purple-gowhatsapp && \
+ apt-get -y install -t bullseye-backports golang && \
+ git clone https://github.com/hoehermann/purple-gowhatsapp.git && \
cd purple-gowhatsapp && \
- make && \
- make DESTDIR=/tmp/out install
-
-RUN echo "---> purple-telegram" && \
-git clone --recursive https://github.com/majn/telegram-purple && \
- cd telegram-purple && \
- ./configure && \
+ git checkout whatsmeow && \
+ cmake . && \
make && \
make DESTDIR=/tmp/out install
@@ -133,7 +136,7 @@ git clone --recursive https://github.com/EionRobb/purple-mattermost && \
make DESTDIR=/tmp/out install
-FROM debian:buster-slim as production
+FROM debian:bullseye-slim as production
EXPOSE 8080
VOLUME ["/etc/spectrum2/transports", "/var/lib/spectrum2"]
@@ -141,26 +144,21 @@ VOLUME ["/etc/spectrum2/transports", "/var/lib/spectrum2"]
ARG DEBIAN_FRONTEND=noninteractive
ARG APT_LISTCHANGES_FRONTEND=none
-RUN echo 'deb http://deb.debian.org/debian stable-backports main' > /etc/apt/sources.list.d/backports.list
RUN apt-get update -qq
RUN apt-get install --no-install-recommends -y curl ca-certificates gnupg1 libmarkdown2
-RUN echo "deb https://packages.spectrum.im/spectrum2/ buster main" | tee -a /etc/apt/sources.list
+RUN echo "deb https://packages.spectrum.im/spectrum2/ bullseye main" | tee -a /etc/apt/sources.list
RUN curl -fsSL https://packages.spectrum.im/packages.key | apt-key add -
-RUN echo "deb http://download.opensuse.org/repositories/home:/jgeboski/Debian_10/ /" | tee /etc/apt/sources.list.d/home:jgeboski.list
-RUN curl -fsSL https://download.opensuse.org/repositories/home:jgeboski/Debian_10/Release.key | apt-key add
-RUN echo "deb http://download.opensuse.org/repositories/home:/ars3n1y/Debian_10/ /" | tee /etc/apt/sources.list.d/home:ars3n1y.list
-RUN curl -fsSL https://download.opensuse.org/repositories/home:ars3n1y/Debian_10/Release.key | apt-key add
+RUN echo "deb http://download.opensuse.org/repositories/home:/ars3n1y/Debian_11/ /" | tee /etc/apt/sources.list.d/home:ars3n1y.list
+RUN curl -fsSL https://download.opensuse.org/repositories/home:ars3n1y/Debian_11/Release.key | apt-key add
RUN apt-get update -qq
RUN echo "---> Installing pidgin-sipe" && \
apt-get install --no-install-recommends -y pidgin-sipe
-RUN echo "---> Installing purple-facebook" && \
- apt-get install --no-install-recommends -y purple-facebook
RUN echo "---> Installing purple-telegram" && \
- apt-get install --no-install-recommends -y libpurple-telegram-tdlib libtdjson1.6.0
+ apt-get install --no-install-recommends -y libpurple-telegram-tdlib libtdjson1.7.9
RUN echo "---> Installing purple-discord" && \
- apt-get install --no-install-recommends -y -t buster-backports purple-discord
+ apt-get install --no-install-recommends -y purple-discord
COPY --from=staging /tmp/out/* /usr/
@@ -171,6 +169,6 @@ RUN apt install --no-install-recommends -y /tmp/*.deb
RUN rm -rf /tmp/*.deb
-RUN apt-get autoremove && apt-get clean
+RUN apt-get autoremove -y && apt-get clean
ENTRYPOINT ["/run.sh"]
diff --git a/backends/frotz/CMakeLists.txt b/backends/frotz/CMakeLists.txt
index 26dbeec3..677dbae9 100644
--- a/backends/frotz/CMakeLists.txt
+++ b/backends/frotz/CMakeLists.txt
@@ -1,5 +1,3 @@
-cmake_minimum_required(VERSION 2.6)
-
add_subdirectory(dfrotz)
file(GLOB SRC *.c *.cpp)
diff --git a/backends/frotz/dfrotz/CMakeLists.txt b/backends/frotz/dfrotz/CMakeLists.txt
index 1cd8ea7e..7565a5b7 100644
--- a/backends/frotz/dfrotz/CMakeLists.txt
+++ b/backends/frotz/dfrotz/CMakeLists.txt
@@ -1,4 +1,3 @@
-cmake_minimum_required(VERSION 2.6)
file(GLOB SRC common/*.c dumb/*.c)
add_executable(dfrotz ${SRC})
diff --git a/backends/libcommuni/CMakeLists.txt b/backends/libcommuni/CMakeLists.txt
index 15778215..47b591ba 100644
--- a/backends/libcommuni/CMakeLists.txt
+++ b/backends/libcommuni/CMakeLists.txt
@@ -1,5 +1,3 @@
-cmake_minimum_required(VERSION 2.6)
-
file(GLOB SRC *.cpp)
file(GLOB HEADERS *.h)
diff --git a/backends/libpurple/CMakeLists.txt b/backends/libpurple/CMakeLists.txt
index 896370d5..7b9f4145 100644
--- a/backends/libpurple/CMakeLists.txt
+++ b/backends/libpurple/CMakeLists.txt
@@ -1,5 +1,3 @@
-cmake_minimum_required(VERSION 2.6)
-
file(GLOB SRC *.cpp)
add_executable(spectrum2_libpurple_backend ${SRC})
diff --git a/backends/libpurple/main.cpp b/backends/libpurple/main.cpp
index ad855558..1d2172ee 100644
--- a/backends/libpurple/main.cpp
+++ b/backends/libpurple/main.cpp
@@ -57,19 +57,6 @@ bool firstPing = true;
using namespace Transport;
-template <class T> T fromString(const std::string &str) {
- T i;
- std::istringstream os(str);
- os >> i;
- return i;
-}
-
-template <class T> std::string stringOf(T object) {
- std::ostringstream os;
- os << object;
- return (os.str());
-}
-
static std::vector<std::string> &split(const std::string &s, char delim, std::vector<std::string> &elems) {
std::stringstream ss(s);
std::string item;
@@ -112,14 +99,6 @@ bool caching = true;
static void *notify_user_info(PurpleConnection *gc, const char *who, PurpleNotifyUserInfo *user_info);
-static gboolean ft_ui_ready(void *data) {
- PurpleXfer *xfer = (PurpleXfer *) data;
- FTData *ftdata = (FTData *) xfer->ui_data;
- ftdata->timer = 0;
- purple_xfer_ui_ready_wrapped((PurpleXfer *) data);
- return FALSE;
-}
-
/*
Authorization requests from buddies are cached for the duration of the session.
To authorize or deny, call the cached callbacks.
@@ -241,6 +220,7 @@ static boost::mutex dblock;
static std::string OAUTH_TOKEN = "hangouts_oauth_token";
static std::string STEAM_ACCESS_TOKEN = "steammobile_access_token";
static std::string DISCORD_ACCESS_TOKEN = "discord_access_token";
+static std::string WHATSMEOW_ACCESS_TOKEN = "credentials";
static bool getUserToken(const std::string user, const std::string token_name, std::string &token_value)
{
@@ -338,7 +318,7 @@ class SpectrumNetworkPlugin : public NetworkPlugin {
break;
case PURPLE_PREF_INT:
- purple_account_set_int_wrapped(account, strippedKey.c_str(), fromString<int>(keyItem.second.as<std::string>()));
+ purple_account_set_int_wrapped(account, strippedKey.c_str(), std::stoi(keyItem.second.as<std::string>()));
break;
case PURPLE_PREF_STRING:
@@ -352,7 +332,7 @@ class SpectrumNetworkPlugin : public NetworkPlugin {
}
if (!found) {
- purple_account_set_string_wrapped(account, strippedKey.c_str(), keyItem.second.as<std::string>().c_str());
+ LOG4CXX_ERROR(logger, "Unknown [purple] option: " << strippedKey);
}
i++;
}
@@ -361,7 +341,7 @@ class SpectrumNetworkPlugin : public NetworkPlugin {
gsize length;
gboolean ret = g_file_get_contents ("gfire.cfg", &contents, &length, NULL);
if (ret) {
- purple_account_set_int_wrapped(account, "version", fromString<int>(std::string(contents, length)));
+ purple_account_set_int_wrapped(account, "version", std::stoi(std::string(contents, length)));
}
@@ -487,6 +467,13 @@ class SpectrumNetworkPlugin : public NetworkPlugin {
purple_account_set_string_wrapped(account, "token", token.c_str());
}
}
+ else if (protocol == "prpl-hehoe-whatsmeow") {
+ std::string token;
+ getUserToken(user, WHATSMEOW_ACCESS_TOKEN, token);
+ if (!token.empty()) {
+ purple_account_set_string_wrapped(account, "credentials", token.c_str());
+ }
+ }
setDefaultAccountOptions(account);
@@ -521,7 +508,7 @@ class SpectrumNetworkPlugin : public NetworkPlugin {
account->ui_data = NULL;
}
if (purple_account_get_int_wrapped(account, "version", 0) != 0) {
- std::string data = stringOf(purple_account_get_int_wrapped(account, "version", 0));
+ std::string data = std::to_string(purple_account_get_int_wrapped(account, "version", 0));
g_file_set_contents ("gfire.cfg", data.c_str(), data.size(), NULL);
}
// VALGRIND_DO_LEAK_CHECK;
@@ -891,44 +878,6 @@ class SpectrumNetworkPlugin : public NetworkPlugin {
purple_conversation_destroy_wrapped(conv);
}
- void handleFTStartRequest(const std::string &user, const std::string &buddyName, const std::string &fileName, unsigned long size, unsigned long ftID) {
- PurpleXfer *xfer = m_unhandledXfers[user + fileName + buddyName];
- if (xfer) {
- m_unhandledXfers.erase(user + fileName + buddyName);
- FTData *ftData = (FTData *) xfer->ui_data;
-
- ftData->id = ftID;
- m_xfers[ftID] = xfer;
- purple_xfer_request_accepted_wrapped(xfer, fileName.c_str());
- purple_xfer_ui_ready_wrapped(xfer);
- }
- }
-
- void handleFTFinishRequest(const std::string &user, const std::string &buddyName, const std::string &fileName, unsigned long size, unsigned long ftID) {
- PurpleXfer *xfer = m_unhandledXfers[user + fileName + buddyName];
- if (xfer) {
- m_unhandledXfers.erase(user + fileName + buddyName);
- purple_xfer_request_denied_wrapped(xfer);
- }
- }
-
- void handleFTPauseRequest(unsigned long ftID) {
- PurpleXfer *xfer = m_xfers[ftID];
- if (!xfer)
- return;
- FTData *ftData = (FTData *) xfer->ui_data;
- ftData->paused = true;
- }
-
- void handleFTContinueRequest(unsigned long ftID) {
- PurpleXfer *xfer = m_xfers[ftID];
- if (!xfer)
- return;
- FTData *ftData = (FTData *) xfer->ui_data;
- ftData->paused = false;
- purple_xfer_ui_ready_wrapped(xfer);
- }
-
void sendData(const std::string &string) {
#ifdef WIN32
::send(main_socket, string.c_str(), string.size(), 0);
@@ -939,30 +888,12 @@ class SpectrumNetworkPlugin : public NetworkPlugin {
writeInput = purple_input_add_wrapped(main_socket, PURPLE_INPUT_WRITE, &transportDataReceived, NULL);
}
- void readyForData() {
- if (m_waitingXfers.empty())
- return;
- std::vector<PurpleXfer *> tmp;
- tmp.swap(m_waitingXfers);
-
- for (std::vector<PurpleXfer *>::const_iterator it = tmp.begin(); it != tmp.end(); it++) {
- FTData *ftData = (FTData *) (*it)->ui_data;
- if (ftData->timer == 0) {
- ftData->timer = purple_timeout_add_wrapped(1, ft_ui_ready, *it);
- }
-// purple_xfer_ui_ready_wrapped(xfer);
- }
- }
-
std::map<std::string, PurpleAccount *> m_sessions;
std::map<PurpleAccount *, std::string> m_accounts;
std::map<std::string, unsigned int> m_vcards;
AuthRequestList m_authRequests;
std::map<std::string, inputRequest *> m_inputRequests;
std::map<std::string, std::list<std::string> > m_rooms;
- std::map<unsigned long, PurpleXfer *> m_xfers;
- std::map<std::string, PurpleXfer *> m_unhandledXfers;
- std::vector<PurpleXfer *> m_waitingXfers;
std::string adminLegacyName;
std::string adminAlias;
};
@@ -1480,7 +1411,7 @@ static bool conv_msg_to_image(const char* msg, std::string* xhtml_, std::string*
static void conv_write_im(PurpleConversation *conv, const char *who, const char *msg, PurpleMessageFlags flags, time_t mtime) {
- LOG4CXX_INFO(logger, "conv_write_im()");
+ LOG4CXX_DEBUG(logger, "conv_write_im(): msg='" << msg << "', flags=" << flags);
bool isCarbon = false;
if (purple_conversation_get_type_wrapped(conv) == PURPLE_CONV_TYPE_IM) {
@@ -1506,8 +1437,6 @@ static void conv_write_im(PurpleConversation *conv, const char *who, const char
std::string message_; //plain text
std::string xhtml_; //enhanced xhtml, if available
- LOG4CXX_DEBUG(logger, "conv_write_im(): msg='" << msg << "', flags=" << flags);
-
if (flags & PURPLE_MESSAGE_IMAGES) {
//Store image locally and adjust the message
if (!conv_msg_to_image(msg, &xhtml_, &message_))
@@ -1968,142 +1897,92 @@ static PurpleAccountUiOps accountUiOps =
NULL
};
-static void XferCreated(PurpleXfer *xfer) {
- if (!xfer) {
- return;
- }
-
- PurpleAccount *account = purple_xfer_get_account_wrapped(xfer);
- np->handleFTStart(np->m_accounts[account], xfer->who, purple_xfer_get_filename_wrapped(xfer), purple_xfer_get_size_wrapped(xfer));
-}
-
-static void XferDestroyed(PurpleXfer *xfer) {
- std::remove(np->m_waitingXfers.begin(), np->m_waitingXfers.end(), xfer);
- FTData *ftdata = (FTData *) xfer->ui_data;
- if (ftdata && ftdata->timer) {
- purple_timeout_remove_wrapped(ftdata->timer);
- }
- if (ftdata) {
- np->m_xfers.erase(ftdata->id);
+static gboolean
+ensure_path_exists(const char *dir)
+{
+ if (!g_file_test(dir, G_FILE_TEST_IS_DIR))
+ {
+ if (g_mkdir_with_parents(dir, S_IRUSR | S_IWUSR | S_IXUSR)) {
+ return FALSE;
+ }
}
+ return TRUE;
}
-static void xferCanceled(PurpleXfer *xfer) {
+static void newXfer(PurpleXfer *xfer) {
PurpleAccount *account = purple_xfer_get_account_wrapped(xfer);
- std::string filename(xfer ? purple_xfer_get_filename_wrapped(xfer) : "");
- std::string w = xfer->who;
+ std::string remote_filename(xfer ? purple_xfer_get_filename_wrapped(xfer) : "");
+ std::string w = xfer->who ? xfer->who : "";
size_t pos = w.find("/");
if (pos != std::string::npos)
w.erase((int) pos, w.length() - (int) pos);
-
- FTData *ftdata = (FTData *) xfer->ui_data;
-
- np->handleFTFinish(np->m_accounts[account], w, filename, purple_xfer_get_size_wrapped(xfer), ftdata ? ftdata->id : 0);
- std::remove(np->m_waitingXfers.begin(), np->m_waitingXfers.end(), xfer);
- if (ftdata && ftdata->timer) {
- purple_timeout_remove_wrapped(ftdata->timer);
+ int count = 1;
+ gchar **name_and_ext;
+ const gchar *name;
+ gchar *ext;
+ std::string web_dir = CONFIG_STRING(config, "service.web_directory");
+ std::string web_url = CONFIG_STRING(config, "service.web_url");
+ if (web_dir.empty() || web_url.empty()) {
+ LOG4CXX_DEBUG(logger, "Denied " << remote_filename << " from " << w << ", web_directory is disabled.");
+ purple_xfer_request_denied_wrapped(xfer);
+ return;
}
- purple_xfer_unref_wrapped(xfer);
-}
-
-static void fileSendStart(PurpleXfer *xfer) {
-// FiletransferRepeater *repeater = (FiletransferRepeater *) xfer->ui_data;
-// repeater->fileSendStart();
-}
-
-static void fileRecvStart(PurpleXfer *xfer) {
-// FiletransferRepeater *repeater = (FiletransferRepeater *) xfer->ui_data;
-// repeater->fileRecvStart();
- FTData *ftData = (FTData *) xfer->ui_data;
- if (ftData->timer == 0) {
- ftData->timer = purple_timeout_add_wrapped(1, ft_ui_ready, xfer);
+ LOG4CXX_INFO(logger, "Accepting " << remote_filename << " from " << w);
+ gchar *dirname = g_build_filename(web_dir.c_str(), NULL);
+ gchar *filename = g_build_filename(dirname, remote_filename.c_str(), NULL);
+ // Uniqifying code taken from Pidgin autoaccept plugin
+ /* Split at the first dot, to avoid uniquifying "foo.tar.gz" to "foo.tar-2.gz" */
+ name_and_ext = g_strsplit(filename, ".", 2);
+ name = name_and_ext[0];
+ if (name == NULL)
+ {
+ g_strfreev(name_and_ext);
+ g_return_if_reached();
}
-}
-
-static void newXfer(PurpleXfer *xfer) {
- PurpleAccount *account = purple_xfer_get_account_wrapped(xfer);
- std::string filename(xfer ? purple_xfer_get_filename_wrapped(xfer) : "");
- purple_xfer_ref_wrapped(xfer);
- std::string w = xfer->who;
- size_t pos = w.find("/");
- if (pos != std::string::npos)
- w.erase((int) pos, w.length() - (int) pos);
-
- FTData *ftdata = new FTData;
- ftdata->paused = false;
- ftdata->id = 0;
- ftdata->timer = 0;
- xfer->ui_data = (void *) ftdata;
-
- np->m_unhandledXfers[np->m_accounts[account] + filename + w] = xfer;
-
- np->handleFTStart(np->m_accounts[account], w, filename, purple_xfer_get_size_wrapped(xfer));
-}
-
-static void XferReceiveComplete(PurpleXfer *xfer) {
-// FiletransferRepeater *repeater = (FiletransferRepeater *) xfer->ui_data;
-// repeater->_tryToDeleteMe();
-// GlooxMessageHandler::instance()->ftManager->handleXferFileReceiveComplete(xfer);
- std::remove(np->m_waitingXfers.begin(), np->m_waitingXfers.end(), xfer);
- FTData *ftdata = (FTData *) xfer->ui_data;
- if (ftdata && ftdata->timer) {
- purple_timeout_remove_wrapped(ftdata->timer);
- }
- purple_xfer_unref_wrapped(xfer);
-}
-
-static void XferSendComplete(PurpleXfer *xfer) {
-// FiletransferRepeater *repeater = (FiletransferRepeater *) xfer->ui_data;
-// repeater->_tryToDeleteMe();
- std::remove(np->m_waitingXfers.begin(), np->m_waitingXfers.end(), xfer);
- FTData *ftdata = (FTData *) xfer->ui_data;
- if (ftdata && ftdata->timer) {
- purple_timeout_remove_wrapped(ftdata->timer);
+ if (name_and_ext[1] != NULL)
+ {
+ /* g_strsplit does not include the separator in each chunk. */
+ ext = g_strdup_printf(".%s", name_and_ext[1]);
}
- purple_xfer_unref_wrapped(xfer);
-}
-
-static gssize XferWrite(PurpleXfer *xfer, const guchar *buffer, gssize size) {
- FTData *ftData = (FTData *) xfer->ui_data;
- std::string data((const char *) buffer, (size_t) size);
-// std::cout << "xferwrite\n";
- if (!ftData->paused) {
-// std::cout << "adding xfer to waitingXfers queue\n";
- np->m_waitingXfers.push_back(xfer);
+ else
+ {
+ ext = g_strdup("");
+ }
+ /* Make sure the file doesn't exist. Do we want some better checking than this? */
+ /* FIXME: There is a race here: if the newly uniquified file name gets created between
+ * this g_file_test and the transfer starting, the file created in the meantime
+ * will be clobbered. But it's not at all straightforward to fix.
+ */
+ while (g_file_test(filename, G_FILE_TEST_EXISTS))
+ {
+ char *file = g_strdup_printf("%s-%d%s", name, count++, ext);
+ g_free(filename);
+ filename = g_build_filename(dirname, file, NULL);
+ g_free(file);
}
- np->handleFTData(ftData->id, data);
- return size;
-}
-static void XferNotSent(PurpleXfer *xfer, const guchar *buffer, gsize size) {
-// FiletransferRepeater *repeater = (FiletransferRepeater *) xfer->ui_data;
-// repeater->handleDataNotSent(buffer, size);
+ purple_xfer_request_accepted_wrapped(xfer, filename);
+ g_strfreev(name_and_ext);
+ g_free(ext);
+ g_free(dirname);
+ g_free(filename);
}
-static gssize XferRead(PurpleXfer *xfer, guchar **buffer, gssize size) {
-// FiletransferRepeater *repeater = (FiletransferRepeater *) xfer->ui_data;
-// int data_size = repeater->getDataToSend(buffer, size);
-// if (data_size == 0)
-// return 0;
-//
-// return data_size;
- return 0;
+static void XferReceiveComplete(PurpleXfer *xfer) {
+ std::string filename(xfer ? purple_xfer_get_local_filename_wrapped(xfer) : "");
+ std::string w = xfer->who ? xfer->who : "";
+ std::string message = xfer->message ? xfer->message : "";
+ LOG4CXX_INFO(logger, "Received " << filename << " from " << w);
+ PurpleAccount *account = purple_xfer_get_account_wrapped(xfer);
+ std::string web_url = CONFIG_STRING(config, "service.web_url");
+ pbnetwork::Attachment attachment;
+ gchar *base_filename = g_path_get_basename(filename.c_str());
+ attachment.set_url(web_url + "/" + std::string(base_filename));
+ g_free(base_filename);
+ std::vector<pbnetwork::Attachment> attachments = { attachment };
+ np->handleMessage(np->m_accounts[account], w, message, "", "", xfer->end_time? std::to_string(xfer->end_time) : "", false, false, false, attachments);
}
-static PurpleXferUiOps xferUiOps =
-{
- XferCreated,
- XferDestroyed,
- NULL,
- NULL,
- xferCanceled,
- xferCanceled,
- XferWrite,
- XferRead,
- XferNotSent,
- NULL
-};
-
static void RoomlistProgress(PurpleRoomlist *list, gboolean in_progress)
{
if (!in_progress) {
@@ -2243,7 +2122,6 @@ static void transport_core_ui_init(void)
purple_accounts_set_ui_ops_wrapped(&accountUiOps);
purple_notify_set_ui_ops_wrapped(&notifyUiOps);
purple_request_set_ui_ops_wrapped(&requestUiOps);
- purple_xfers_set_ui_ops_wrapped(&xferUiOps);
purple_connections_set_ui_ops_wrapped(&conn_ui_ops);
purple_conversations_set_ui_ops_wrapped(&conversation_ui_ops);
purple_roomlist_set_ui_ops_wrapped(&roomlist_ui_ops);
@@ -2357,6 +2235,9 @@ static void signed_on(PurpleConnection *gc, gpointer unused) {
else if (CONFIG_STRING(config, "service.protocol") == "prpl-eionrobb-discord") {
storeUserToken(np->m_accounts[account], DISCORD_ACCESS_TOKEN, purple_account_get_string_wrapped(account, "token", NULL));
}
+ else if (CONFIG_STRING(config, "service.protocol") == "prpl-hehoe-whatsmeow") {
+ storeUserToken(np->m_accounts[account], WHATSMEOW_ACCESS_TOKEN, purple_account_get_string_wrapped(account, "credentials", NULL));
+ }
}
static void printDebug(PurpleDebugLevel level, const char *category, const char *arg_s) {
@@ -2498,11 +2379,8 @@ static bool initPurple() {
purple_signal_connect_wrapped(purple_blist_get_handle_wrapped(), "blist-node-removed", &blist_handle,PURPLE_CALLBACK(NodeRemoved), NULL);
purple_signal_connect_wrapped(purple_conversations_get_handle_wrapped(), "chat-topic-changed", &conversation_handle, PURPLE_CALLBACK(conv_chat_topic_changed), NULL);
static int xfer_handle;
- purple_signal_connect_wrapped(purple_xfers_get_handle_wrapped(), "file-send-start", &xfer_handle, PURPLE_CALLBACK(fileSendStart), NULL);
- purple_signal_connect_wrapped(purple_xfers_get_handle_wrapped(), "file-recv-start", &xfer_handle, PURPLE_CALLBACK(fileRecvStart), NULL);
- purple_signal_connect_wrapped(purple_xfers_get_handle_wrapped(), "file-recv-request", &xfer_handle, PURPLE_CALLBACK(newXfer), NULL);
- purple_signal_connect_wrapped(purple_xfers_get_handle_wrapped(), "file-recv-complete", &xfer_handle, PURPLE_CALLBACK(XferReceiveComplete), NULL);
- purple_signal_connect_wrapped(purple_xfers_get_handle_wrapped(), "file-send-complete", &xfer_handle, PURPLE_CALLBACK(XferSendComplete), NULL);
+ purple_signal_connect_wrapped(purple_xfers_get_handle_wrapped(), "file-recv-request", &xfer_handle, PURPLE_CALLBACK(newXfer), &xfer_handle);
+ purple_signal_connect_wrapped(purple_xfers_get_handle_wrapped(), "file-recv-complete", &xfer_handle, PURPLE_CALLBACK(XferReceiveComplete), &xfer_handle);
//
// purple_commands_init();
@@ -2543,12 +2421,17 @@ static void transportDataReceived(gpointer data, gint source, PurpleInputConditi
cfg.setNeedRegistration(false);
}
else {
- PurplePlugin *plugin = purple_find_prpl_wrapped(CONFIG_STRING(config, "service.protocol").c_str());
- PurplePluginProtocolInfo *prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(plugin);
- if (prpl_info) {
- bool isPasswordlessPlugin = prpl_info->options & OPT_PROTO_NO_PASSWORD;
- LOG4CXX_INFO(logger, "passwordless backend: " << isPasswordlessPlugin);
- cfg.setNeedPassword(!isPasswordlessPlugin);
+ std::string protocol = CONFIG_STRING(config, "service.protocol");
+ PurplePlugin *plugin = purple_find_prpl_wrapped(protocol.c_str());
+ if (plugin) {
+ PurplePluginProtocolInfo *prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(plugin);
+ if (prpl_info) {
+ bool isPasswordlessPlugin = prpl_info->options & OPT_PROTO_NO_PASSWORD;
+ LOG4CXX_INFO(logger, "passwordless backend: " << isPasswordlessPlugin);
+ cfg.setNeedPassword(!isPasswordlessPlugin);
+ }
+ } else {
+ LOG4CXX_ERROR(logger, "Protocol not found: " << protocol);
}
cfg.setNeedRegistration(true);
}
@@ -2562,7 +2445,6 @@ static void transportDataReceived(gpointer data, gint source, PurpleInputConditi
purple_input_remove_wrapped(writeInput);
writeInput = 0;
}
- np->readyForData();
}
}
@@ -2593,7 +2475,9 @@ int main(int argc, char **argv) {
config = std::shared_ptr<Config>(cfg);
Logging::initBackendLogging(config.get());
- if (CONFIG_STRING(config, "service.protocol") == "prpl-hangouts" || CONFIG_STRING(config, "service.protocol") == "prpl-steam-mobile" || CONFIG_STRING(config, "service.protocol") == "prpl-eionrobb-discord") {
+ if (CONFIG_STRING(config, "service.protocol") == "prpl-hangouts" || CONFIG_STRING(config, "service.protocol") == "prpl-steam-mobile"
+ || CONFIG_STRING(config, "service.protocol") == "prpl-eionrobb-discord" || CONFIG_STRING(config, "service.protocol") == "prpl-hehoe-whatsmeow")
+ {
storagebackend = StorageBackend::createBackend(config.get(), error);
if (storagebackend == NULL) {
LOG4CXX_ERROR(logger, "Error creating StorageBackend! " << error);
diff --git a/backends/libpurple/purple_defs.cpp b/backends/libpurple/purple_defs.cpp
index bb583012..6bf7766b 100644
--- a/backends/libpurple/purple_defs.cpp
+++ b/backends/libpurple/purple_defs.cpp
@@ -98,6 +98,7 @@ purple_xfer_request_accepted_wrapped_fnc purple_xfer_request_accepted_wrapped =
purple_xfer_request_denied_wrapped_fnc purple_xfer_request_denied_wrapped = NULL;
purple_xfer_get_account_wrapped_fnc purple_xfer_get_account_wrapped = NULL;
purple_xfer_get_filename_wrapped_fnc purple_xfer_get_filename_wrapped = NULL;
+purple_xfer_get_local_filename_wrapped_fnc purple_xfer_get_local_filename_wrapped = NULL;
purple_xfer_get_size_wrapped_fnc purple_xfer_get_size_wrapped = NULL;
purple_xfer_unref_wrapped_fnc purple_xfer_unref_wrapped = NULL;
purple_xfer_ref_wrapped_fnc purple_xfer_ref_wrapped = NULL;
@@ -540,6 +541,10 @@ bool resolvePurpleFunctions() {
if (!purple_xfer_get_filename_wrapped)
return false;
+ purple_xfer_get_local_filename_wrapped = (purple_xfer_get_local_filename_wrapped_fnc)GetProcAddress(f_hPurple, "purple_xfer_get_local_filename");
+ if (!purple_xfer_get_local_filename_wrapped)
+ return false;
+
purple_xfer_get_size_wrapped = (purple_xfer_get_size_wrapped_fnc)GetProcAddress(f_hPurple, "purple_xfer_get_size");
if (!purple_xfer_get_size_wrapped)
return false;
diff --git a/backends/libpurple/purple_defs.h b/backends/libpurple/purple_defs.h
index c138a6a9..69d6cbbe 100644
--- a/backends/libpurple/purple_defs.h
+++ b/backends/libpurple/purple_defs.h
@@ -311,6 +311,9 @@ extern purple_xfer_get_account_wrapped_fnc purple_xfer_get_account_wrapped;
typedef const char * (_cdecl * purple_xfer_get_filename_wrapped_fnc)(const PurpleXfer *xfer);
extern purple_xfer_get_filename_wrapped_fnc purple_xfer_get_filename_wrapped;
+typedef const char * (_cdecl * purple_xfer_get_local_filename_wrapped_fnc)(const PurpleXfer *xfer);
+extern purple_xfer_get_local_filename_wrapped_fnc purple_xfer_get_local_filename_wrapped;
+
typedef size_t (_cdecl * purple_xfer_get_size_wrapped_fnc)(const PurpleXfer *xfer);
extern purple_xfer_get_size_wrapped_fnc purple_xfer_get_size_wrapped;
@@ -580,6 +583,7 @@ extern wpurple_g_io_channel_win32_new_socket_wrapped_fnc wpurple_g_io_channel_wi
#define purple_xfer_request_denied_wrapped purple_xfer_request_denied
#define purple_xfer_get_account_wrapped purple_xfer_get_account
#define purple_xfer_get_filename_wrapped purple_xfer_get_filename
+#define purple_xfer_get_local_filename_wrapped purple_xfer_get_local_filename
#define purple_xfer_get_size_wrapped purple_xfer_get_size
#define purple_xfer_unref_wrapped purple_xfer_unref
#define purple_xfer_ref_wrapped purple_xfer_ref
diff --git a/backends/libpurple/utils.cpp b/backends/libpurple/utils.cpp
index 71bb1584..77da3799 100644
--- a/backends/libpurple/utils.cpp
+++ b/backends/libpurple/utils.cpp
@@ -164,34 +164,3 @@ int create_socket(const char *host, int portno) {
return SocketFD;
}
-
-#ifdef _WIN32
-std::wstring utf8ToUtf16(const std::string& str)
-{
- try
- {
- if (str.empty())
- return L"";
-
- // First request the size of the required UTF-16 buffer
- int numRequiredBytes = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), boost::numeric_cast<int>(str.size()), NULL, 0);
- if (!numRequiredBytes)
- return L"";
-
- // Allocate memory for the UTF-16 string
- std::vector<wchar_t> utf16Str(numRequiredBytes);
-
- int numConverted = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), boost::numeric_cast<int>(str.size()), &utf16Str[0], numRequiredBytes);
- if (!numConverted)
- return L"";
-
- std::wstring wstr(&utf16Str[0], numConverted);
- return wstr;
- }
- catch (...)
- {
- // I don't believe libtransport is exception-safe so we'll just return an empty string instead
- return L"";
- }
-}
-#endif // _WIN32
diff --git a/backends/smstools3/CMakeLists.txt b/backends/smstools3/CMakeLists.txt
index ea041462..95ef831e 100644
--- a/backends/smstools3/CMakeLists.txt
+++ b/backends/smstools3/CMakeLists.txt
@@ -1,5 +1,3 @@
-cmake_minimum_required(VERSION 2.6)
-
file(GLOB SRC *.c *.cpp)
add_executable(spectrum2_smstools3_backend ${SRC})
diff --git a/backends/swiften/CMakeLists.txt b/backends/swiften/CMakeLists.txt
index bc40e704..411fc8ad 100644
--- a/backends/swiften/CMakeLists.txt
+++ b/backends/swiften/CMakeLists.txt
@@ -1,5 +1,3 @@
-cmake_minimum_required(VERSION 2.6)
-
file(GLOB SRC *.cpp)
add_executable(spectrum2_swiften_backend ${SRC})
diff --git a/backends/template/CMakeLists.txt b/backends/template/CMakeLists.txt
index 02beae2e..26fcde1b 100644
--- a/backends/template/CMakeLists.txt
+++ b/backends/template/CMakeLists.txt
@@ -1,5 +1,3 @@
-cmake_minimum_required(VERSION 2.6)
-
file(GLOB SRC *.c *.cpp)
add_executable(spectrum2_template_backend ${SRC})
diff --git a/backends/twitter/CMakeLists.txt b/backends/twitter/CMakeLists.txt
index 1ff73056..6748305d 100644
--- a/backends/twitter/CMakeLists.txt
+++ b/backends/twitter/CMakeLists.txt
@@ -8,8 +8,7 @@ find_package(CURL)
if(CURL_FOUND)
message(STATUS "Using curl ${CURL_VERSION_STRING}: ${CURL_INCLUDE_DIRS} ${CURL_LIBRARIES}")
- include_directories (${CURL_INCLUDE_DIRS} ${JSONCPP_INCLUDE_DIRS})
- target_link_libraries(spectrum2_twitter_backend transport ${CURL_LIBRARIES} ${Boost_LIBRARIES} ${SWIFTEN_LIBRARY} ${LOG4CXX_LIBRARIES})
+ target_link_libraries(spectrum2_twitter_backend transport JsonCpp::JsonCpp ${CURL_LIBRARIES} ${Boost_LIBRARIES} ${SWIFTEN_LIBRARY} ${LOG4CXX_LIBRARIES})
else()
message(FATAL_ERROR "curl not found")
endif()
diff --git a/backends/twitter/TwitterResponseParser.cpp b/backends/twitter/TwitterResponseParser.cpp
index 3fd40d5c..ff577da7 100644
--- a/backends/twitter/TwitterResponseParser.cpp
+++ b/backends/twitter/TwitterResponseParser.cpp
@@ -4,22 +4,10 @@
#include <cctype>
#include "boost/date_time/local_time/local_time.hpp"
#include "boost/date_time/time_facet.hpp"
+#include <boost/locale.hpp>
DEFINE_LOGGER(responseParserLogger, "TwitterResponseParser")
-static std::string tolowercase(std::string inp)
-{
- std::string out = inp;
- for (unsigned i=0 ; i<out.size() ; i++) out[i] = tolower(out[i]);
- return out;
-}
-
-template <class T> std::string stringOf(T object) {
- std::ostringstream os;
- os << object;
- return (os.str());
-}
-
static std::string unescape(std::string data, std::vector<UrlEntity> urls) {
using boost::algorithm::replace_all;
replace_all(data, "&amp;", "&");
@@ -57,13 +45,13 @@ EmbeddedStatus getEmbeddedStatus(const Json::Value &element)
return status;
}
status.setCreationTime( toIsoTime ( element[TwitterReponseTypes::created_at.c_str()].asString() ) );
- status.setID( stringOf( element[TwitterReponseTypes::id.c_str()].asInt64() ) );
+ status.setID( std::to_string( element[TwitterReponseTypes::id.c_str()].asInt64() ) );
status.setTweet( unescape ( element[TwitterReponseTypes::text.c_str()].asString(), getUrlEntities(element) ) );
status.setTruncated( element[TwitterReponseTypes::truncated.c_str()].asBool());
status.setReplyToStatusID( element[TwitterReponseTypes::in_reply_to_status_id.c_str()].isNull() ?
-"" : stringOf(element[TwitterReponseTypes::in_reply_to_status_id.c_str()].asInt64()) );
+"" : std::to_string(element[TwitterReponseTypes::in_reply_to_status_id.c_str()].asInt64()) );
status.setReplyToUserID( element[TwitterReponseTypes::in_reply_to_user_id.c_str()].isNull() ?
-"" : stringOf(element[TwitterReponseTypes::in_reply_to_user_id.c_str()].asInt64()) );
+"" : std::to_string(element[TwitterReponseTypes::in_reply_to_user_id.c_str()].asInt64()) );
status.setReplyToScreenName( element[TwitterReponseTypes::in_reply_to_screen_name.c_str()].isNull() ?
"" : element[TwitterReponseTypes::in_reply_to_screen_name.c_str()].asString() );
status.setRetweetCount( element[TwitterReponseTypes::retweet_count.c_str()].asInt64() );
@@ -80,8 +68,8 @@ User getUser(const Json::Value &element)
return user;
}
- user.setUserID( stringOf( element[TwitterReponseTypes::id.c_str()].asInt64() ) );
- user.setScreenName( tolowercase( element[TwitterReponseTypes::screen_name.c_str()].asString() ) );
+ user.setUserID( std::to_string( element[TwitterReponseTypes::id.c_str()].asInt64() ) );
+ user.setScreenName( boost::locale::to_lower( element[TwitterReponseTypes::screen_name.c_str()].asString() ) );
user.setUserName( element[TwitterReponseTypes::name.c_str()].asString() );
user.setProfileImgURL( element[TwitterReponseTypes::profile_image_url.c_str()].asString() );
user.setNumberOfTweets( element[TwitterReponseTypes::statuses_count.c_str()].asInt64() );
@@ -95,13 +83,13 @@ Status getStatus(const Json::Value &element)
Status status;
status.setCreationTime( toIsoTime ( element[TwitterReponseTypes::created_at.c_str()].asString() ) );
- status.setID( stringOf( element[TwitterReponseTypes::id.c_str()].asInt64() ));
+ status.setID( std::to_string( element[TwitterReponseTypes::id.c_str()].asInt64() ));
status.setTweet( unescape ( element[TwitterReponseTypes::text.c_str()].asString(), getUrlEntities(element) ) );
status.setTruncated( element[TwitterReponseTypes::truncated.c_str()].asBool());
status.setReplyToStatusID( element[TwitterReponseTypes::in_reply_to_status_id.c_str()].isNull() ?
-"" : stringOf(element[TwitterReponseTypes::in_reply_to_status_id.c_str()].asInt64()) );
+"" : std::to_string(element[TwitterReponseTypes::in_reply_to_status_id.c_str()].asInt64()) );
status.setReplyToUserID( element[TwitterReponseTypes::in_reply_to_user_id.c_str()].isNull() ?
-"" : stringOf(element[TwitterReponseTypes::in_reply_to_user_id.c_str()].asInt64()) );
+"" : std::to_string(element[TwitterReponseTypes::in_reply_to_user_id.c_str()].asInt64()) );
status.setReplyToScreenName( element[TwitterReponseTypes::in_reply_to_screen_name.c_str()].isNull() ?
"" : element[TwitterReponseTypes::in_reply_to_screen_name.c_str()].asString() );
status.setUserData( getUser(element[TwitterReponseTypes::user.c_str()]) );
@@ -112,7 +100,7 @@ Status getStatus(const Json::Value &element)
if (rt.isObject()) {
status.setTweet(unescape( rt[TwitterReponseTypes::text.c_str()].asString() + " (RT by @" + status.getUserData().getScreenName() + ")"
, getUrlEntities(element)) );
- status.setRetweetID( stringOf(rt[TwitterReponseTypes::id.c_str()].asInt64()) );
+ status.setRetweetID( std::to_string(rt[TwitterReponseTypes::id.c_str()].asInt64()) );
status.setCreationTime( toIsoTime ( rt[TwitterReponseTypes::created_at.c_str()].asString() ) );
status.setUserData( getUser ( rt[TwitterReponseTypes::user.c_str()]) );
}
@@ -125,10 +113,10 @@ DirectMessage getDirectMessage(const Json::Value &element)
DirectMessage DM;
DM.setCreationTime( toIsoTime ( element[TwitterReponseTypes::created_at.c_str()].asString() ) );
- DM.setID( stringOf( element[TwitterReponseTypes::id.c_str()].asInt64() ) );
+ DM.setID( std::to_string( element[TwitterReponseTypes::id.c_str()].asInt64() ) );
DM.setMessage( unescape ( element[TwitterReponseTypes::text.c_str()].asString(), getUrlEntities(element) ) );
- DM.setSenderID( stringOf( element[TwitterReponseTypes::sender_id.c_str()].asInt64()) );
- DM.setRecipientID( stringOf( element[TwitterReponseTypes::recipient_id.c_str()].asInt64() ) );
+ DM.setSenderID( std::to_string( element[TwitterReponseTypes::sender_id.c_str()].asInt64()) );
+ DM.setRecipientID( std::to_string( element[TwitterReponseTypes::recipient_id.c_str()].asInt64() ) );
DM.setSenderScreenName( element[TwitterReponseTypes::sender_screen_name.c_str()].asString() );
DM.setRecipientScreenName( element[TwitterReponseTypes::recipient_screen_name.c_str()].asString() );
DM.setSenderData( getUser(element[TwitterReponseTypes::sender.c_str()] ));
@@ -250,7 +238,7 @@ std::vector<std::string> getIDs(std::string &json)
const Json::Value & ids = rootElement[TwitterReponseTypes::ids.c_str()];
for (Json::Value::ArrayIndex i=0 ; i<ids.size() ; i++) {
- IDs.push_back(stringOf( ids[i].asInt64()) );
+ IDs.push_back(std::to_string( ids[i].asInt64()) );
}
return IDs;
}
@@ -272,7 +260,7 @@ Error getErrorMessage(std::string &json)
if (!rootElement["errors"].isNull()) {
const Json::Value &errorElement = rootElement["errors"][0u]; // first error
error = errorElement["message"].asString();
- code = stringOf(errorElement["code"].asInt64());
+ code = std::to_string(errorElement["code"].asInt64());
resp.setCode(code);
resp.setMessage(error);
}
diff --git a/cmake_modules/FindJsonCpp.cmake b/cmake_modules/FindJsonCpp.cmake
index 67045e97..e08b06c6 100644
--- a/cmake_modules/FindJsonCpp.cmake
+++ b/cmake_modules/FindJsonCpp.cmake
@@ -26,8 +26,11 @@
# Incorporates work from the module contributed to VRPN under the same license:
# 2011 Philippe Crassous (ENSAM ParisTech / Institut Image) p.crassous _at_ free.fr
#
-# Copyright Philippe Crassous 2011.
-# Copyright Sensics, Inc. 2016.
+# Copyright 2011, Philippe Crassous
+# Copyright 2016, Sensics, Inc.
+#
+# SPDX-License-Identifier: BSL-1.0
+#
# Distributed under the Boost Software License, Version 1.0.
# (See accompanying file LICENSE_1_0.txt or copy at
# http://www.boost.org/LICENSE_1_0.txt)
@@ -84,7 +87,7 @@ if(jsoncpp_FOUND)
set_property(TARGET ${target} APPEND PROPERTY MAP_IMPORTED_CONFIG_RELEASE RELEASE RELWITHDEBINFO MINSIZEREL NONE ${_jsoncpp_debug_fallback})
set_property(TARGET ${target} APPEND PROPERTY MAP_IMPORTED_CONFIG_RELWITHDEBINFO RELWITHDEBINFO RELEASE MINSIZEREL NONE ${_jsoncpp_debug_fallback})
set_property(TARGET ${target} APPEND PROPERTY MAP_IMPORTED_CONFIG_MINSIZEREL MINSIZEREL RELEASE RELWITHDEBINFO NONE ${_jsoncpp_debug_fallback})
- set_property(TARGET ${target} APPEND PROPERTY MAP_IMPORTED_CONFIG_NONE RELEASE RELWITHDEBINFO MINSIZEREL ${_jsoncpp_debug_fallback})
+ set_property(TARGET ${target} APPEND PROPERTY MAP_IMPORTED_CONFIG_NONE NONE RELEASE RELWITHDEBINFO MINSIZEREL ${_jsoncpp_debug_fallback})
if(NOT MSVC)
set_property(TARGET ${target} APPEND PROPERTY MAP_IMPORTED_CONFIG_DEBUG DEBUG RELWITHDEBINFO RELEASE MINSIZEREL NONE)
endif()
diff --git a/docker-compose.yml b/docker-compose.yml
new file mode 100644
index 00000000..093a2135
--- /dev/null
+++ b/docker-compose.yml
@@ -0,0 +1,40 @@
+version: '3.4'
+services:
+ spectrum:
+ image: spectrum2/spectrum:master
+ restart: unless-stopped
+ container_name: spectrum
+ ports:
+ - 8080:8080
+ volumes:
+ - ./tests/xmpp/configuration:/etc/spectrum2:ro
+ - ./tests/xmpp/configuration/transports:/etc/spectrum2/transports:ro
+ - ./tests/xmpp/data:/var/lib/spectrum2
+ - ./tests/xmpp/media:/var/lib/spectrum2/media
+ depends_on:
+ prosody:
+ condition: service_started
+ nginx:
+ condition: service_started
+ prosody:
+ image: spectrum2/prosody:latest
+ restart: unless-stopped
+ container_name: prosody
+ ports:
+ - 5222:5222
+ - 5347:5347
+ environment:
+ - LOCAL=admin
+ - DOMAIN=localhost
+ - PASSWORD=secret
+ volumes:
+ - ./tests/prosody/configuration:/etc/prosody:ro
+ - ./tests/prosody/data:/var/lib/prosody
+ nginx:
+ image: spectrum2/nginx:latest
+ restart: unless-stopped
+ container_name: nginx
+ ports:
+ - 8081:80
+ volumes:
+ - ./tests/xmpp/media:/var/www/html:ro
diff --git a/include/Swiften/FileTransfer/CombinedOutgoingFileTransferManager.cpp b/include/Swiften/FileTransfer/CombinedOutgoingFileTransferManager.cpp
deleted file mode 100644
index f344b587..00000000
--- a/include/Swiften/FileTransfer/CombinedOutgoingFileTransferManager.cpp
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (c) 2011 Tobias Markmann
- * Licensed under the simplified BSD license.
- * See Documentation/Licenses/BSD-simplified.txt for more information.
- */
-
-#include "CombinedOutgoingFileTransferManager.h"
-
-#include <boost/foreach.hpp>
-#include <boost/smart_ptr/make_shared.hpp>
-
-#include <Swiften/JID/JID.h>
-#include "Swiften/Disco/EntityCapsProvider.h"
-#include <Swiften/Jingle/JingleSessionManager.h>
-#include <Swiften/Jingle/JingleSessionImpl.h>
-#include <Swiften/Jingle/JingleContentID.h>
-#include <Swiften/FileTransfer/OutgoingJingleFileTransfer.h>
-#include <Swiften/FileTransfer/MyOutgoingSIFileTransfer.h>
-#include <Swiften/FileTransfer/SOCKS5BytestreamServer.h>
-#include <Swiften/Base/IDGenerator.h>
-#include <Swiften/Elements/Presence.h>
-
-
-namespace Swift {
-
-CombinedOutgoingFileTransferManager::CombinedOutgoingFileTransferManager(JingleSessionManager* jingleSessionManager, IQRouter* router, EntityCapsProvider* capsProvider, RemoteJingleTransportCandidateSelectorFactory* remoteFactory, LocalJingleTransportCandidateGeneratorFactory* localFactory, SOCKS5BytestreamRegistry* bytestreamRegistry, SOCKS5BytestreamProxy* bytestreamProxy, Transport::PresenceOracle *presOracle, SOCKS5BytestreamServer *bytestreamServer) : jsManager(jingleSessionManager), iqRouter(router), capsProvider(capsProvider), remoteFactory(remoteFactory), localFactory(localFactory), bytestreamRegistry(bytestreamRegistry), bytestreamProxy(bytestreamProxy), presenceOracle(presOracle), bytestreamServer(bytestreamServer) {
- idGenerator = new IDGenerator();
-}
-
-CombinedOutgoingFileTransferManager::~CombinedOutgoingFileTransferManager() {
- delete idGenerator;
-}
-
-std::shared_ptr<OutgoingFileTransfer> CombinedOutgoingFileTransferManager::createOutgoingFileTransfer(const JID& from, const JID& receipient, std::shared_ptr<ReadBytestream> readBytestream, const StreamInitiationFileInfo& fileInfo) {
- // check if receipient support Jingle FT
- boost::optional<JID> fullJID = highestPriorityJIDSupportingJingle(receipient);
- if (!fullJID.is_initialized()) {
- fullJID = highestPriorityJIDSupportingSI(receipient);
- }
- else {
- JingleSessionImpl::ref jingleSession = std::make_shared<JingleSessionImpl>(from, receipient, idGenerator->generateID(), iqRouter);
-
- //jsManager->getSession(receipient, idGenerator->generateID());
- assert(jingleSession);
- jsManager->registerOutgoingSession(from, jingleSession);
- }
-
- if (!fullJID.is_initialized()) {
- return std::shared_ptr<OutgoingFileTransfer>();
- }
-
- // otherwise try SI
- std::shared_ptr<MyOutgoingSIFileTransfer> jingleFT = std::shared_ptr<MyOutgoingSIFileTransfer>(new MyOutgoingSIFileTransfer(idGenerator->generateID(), from, fullJID.get(), fileInfo.getName(), fileInfo.getSize(), fileInfo.getDescription(), readBytestream, iqRouter, bytestreamServer, bytestreamRegistry));
- // else fail
-
- return jingleFT;
-}
-
-boost::optional<JID> CombinedOutgoingFileTransferManager::highestPriorityJIDSupportingJingle(const JID& bareJID) {
- JID fullReceipientJID;
- int priority = INT_MIN;
-
- //getAllPresence(bareJID) gives you all presences for the bare JID (i.e. all resources) Remko Tronçon @ 11:11
- std::vector<Presence::ref> presences = presenceOracle->getAllPresence(bareJID);
-
- //iterate over them
- BOOST_FOREACH(Presence::ref pres, presences) {
- if (pres->getPriority() > priority) {
- // look up caps from the jid
- DiscoInfo::ref info = capsProvider->getCaps(pres->getFrom());
- if (info && info->hasFeature(DiscoInfo::JingleFeature) && info->hasFeature(DiscoInfo::JingleFTFeature) &&
- info->hasFeature(DiscoInfo::JingleTransportsIBBFeature)) {
-
- priority = pres->getPriority();
- fullReceipientJID = pres->getFrom();
- }
- }
- }
-
- return fullReceipientJID.isValid() ? boost::optional<JID>(fullReceipientJID) : boost::optional<JID>();
-}
-
-boost::optional<JID> CombinedOutgoingFileTransferManager::highestPriorityJIDSupportingSI(const JID& bareJID) {
- JID fullReceipientJID;
- int priority = INT_MIN;
-
- //getAllPresence(bareJID) gives you all presences for the bare JID (i.e. all resources) Remko Tronçon @ 11:11
- std::vector<Presence::ref> presences = presenceOracle->getAllPresence(bareJID);
-
- //iterate over them
- BOOST_FOREACH(Presence::ref pres, presences) {
- if (pres->getPriority() > priority) {
- // look up caps from the jid
- DiscoInfo::ref info = capsProvider->getCaps(pres->getFrom());
- if (info && info->hasFeature("http://jabber.org/protocol/si/profile/file-transfer")) {
-
- priority = pres->getPriority();
- fullReceipientJID = pres->getFrom();
- }
- }
- }
-
- return fullReceipientJID.isValid() ? boost::optional<JID>(fullReceipientJID) : boost::optional<JID>();
-}
-
-}
diff --git a/include/Swiften/FileTransfer/CombinedOutgoingFileTransferManager.h b/include/Swiften/FileTransfer/CombinedOutgoingFileTransferManager.h
deleted file mode 100644
index ae00753d..00000000
--- a/include/Swiften/FileTransfer/CombinedOutgoingFileTransferManager.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2011 Tobias Markmann
- * Licensed under the simplified BSD license.
- * See Documentation/Licenses/BSD-simplified.txt for more information.
- */
-
-#pragma once
-
-#include <boost/shared_ptr.hpp>
-#include <boost/optional.hpp>
-
-#include <Swiften/JID/JID.h>
-
-#include "transport/PresenceOracle.h"
-
-#include <Swiften/FileTransfer/OutgoingFileTransfer.h>
-
-namespace Swift {
-
-class JingleSessionManager;
-class IQRouter;
-class EntityCapsProvider;
-class RemoteJingleTransportCandidateSelectorFactory;
-class LocalJingleTransportCandidateGeneratorFactory;
-class OutgoingFileTransfer;
-class JID;
-class IDGenerator;
-class ReadBytestream;
-class StreamInitiationFileInfo;
-class SOCKS5BytestreamRegistry;
-class SOCKS5BytestreamProxy;
-class SOCKS5BytestreamServer;
-class PresenceOracle;
-
-class CombinedOutgoingFileTransferManager {
-public:
- CombinedOutgoingFileTransferManager(JingleSessionManager* jingleSessionManager, IQRouter* router, EntityCapsProvider* capsProvider, RemoteJingleTransportCandidateSelectorFactory* remoteFactory, LocalJingleTransportCandidateGeneratorFactory* localFactory, SOCKS5BytestreamRegistry* bytestreamRegistry, SOCKS5BytestreamProxy* bytestreamProxy, Transport::PresenceOracle* presOracle, SOCKS5BytestreamServer *server);
- ~CombinedOutgoingFileTransferManager();
-
- std::shared_ptr<OutgoingFileTransfer> createOutgoingFileTransfer(const JID& from, const JID& to, std::shared_ptr<ReadBytestream>, const StreamInitiationFileInfo&);
-
-private:
- boost::optional<JID> highestPriorityJIDSupportingJingle(const JID& bareJID);
- boost::optional<JID> highestPriorityJIDSupportingSI(const JID& bareJID);
- JingleSessionManager* jsManager;
- IQRouter* iqRouter;
- EntityCapsProvider* capsProvider;
- RemoteJingleTransportCandidateSelectorFactory* remoteFactory;
- LocalJingleTransportCandidateGeneratorFactory* localFactory;
- IDGenerator *idGenerator;
- SOCKS5BytestreamRegistry* bytestreamRegistry;
- SOCKS5BytestreamProxy* bytestreamProxy;
- Transport::PresenceOracle* presenceOracle;
- SOCKS5BytestreamServer *bytestreamServer;
-};
-
-}
diff --git a/include/Swiften/FileTransfer/MyOutgoingSIFileTransfer.cpp b/include/Swiften/FileTransfer/MyOutgoingSIFileTransfer.cpp
deleted file mode 100644
index eebc8fd3..00000000
--- a/include/Swiften/FileTransfer/MyOutgoingSIFileTransfer.cpp
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (c) 2010 Remko Tronçon
- * Licensed under the GNU General Public License v3.
- * See Documentation/Licenses/GPLv3.txt for more information.
- */
-
-#include <Swiften/FileTransfer/MyOutgoingSIFileTransfer.h>
-
-#include <boost/bind.hpp>
-
-#include <Swiften/FileTransfer/StreamInitiationRequest.h>
-#include <Swiften/FileTransfer/BytestreamsRequest.h>
-#include <Swiften/FileTransfer/SOCKS5BytestreamServer.h>
-#include <Swiften/FileTransfer/SOCKS5BytestreamRegistry.h>
-#include <Swiften/FileTransfer/IBBSendSession.h>
-
-namespace Swift {
-
-MyOutgoingSIFileTransfer::MyOutgoingSIFileTransfer(const std::string& id, const JID& from, const JID& to, const std::string& name, int size, const std::string& description, std::shared_ptr<ReadBytestream> bytestream, IQRouter* iqRouter, SOCKS5BytestreamServer* socksServer, SOCKS5BytestreamRegistry* registry) : id(id), from(from), to(to), name(name), size(size), description(description), bytestream(bytestream), iqRouter(iqRouter), socksServer(socksServer), registry(registry) {
-}
-
-void MyOutgoingSIFileTransfer::start() {
- StreamInitiation::ref streamInitiation(new StreamInitiation());
- streamInitiation->setID(id);
- streamInitiation->setFileInfo(StreamInitiationFileInfo(name, description, size));
- streamInitiation->addProvidedMethod("http://jabber.org/protocol/bytestreams");
- streamInitiation->addProvidedMethod("http://jabber.org/protocol/ibb");
- StreamInitiationRequest::ref request = StreamInitiationRequest::create(from, to, streamInitiation, iqRouter);
- request->onResponse.connect(boost::bind(&MyOutgoingSIFileTransfer::handleStreamInitiationRequestResponse, this, _1, _2));
- request->send();
-}
-
-void MyOutgoingSIFileTransfer::stop() {
-}
-
-void MyOutgoingSIFileTransfer::cancel() {
- // TODO
-// session->sendTerminate(JinglePayload::Reason::Cancel);
-
- if (ibbSession) {
- ibbSession->stop();
- }
-}
-
-void MyOutgoingSIFileTransfer::handleStreamInitiationRequestResponse(StreamInitiation::ref response, ErrorPayload::ref error) {
- if (error) {
- finish(FileTransferError());
- }
- else {
- if (response->getRequestedMethod() == "http://jabber.org/protocol/bytestreams") {
- Bytestreams::ref bytestreams(new Bytestreams());
- bytestreams->setStreamID(id);
- HostAddressPort addressPort = socksServer->getAddressPort();
- bytestreams->addStreamHost(Bytestreams::StreamHost(addressPort.getAddress().toString(), from, addressPort.getPort()));
- BytestreamsRequest::ref request = BytestreamsRequest::create(from, to, bytestreams, iqRouter);
- request->onResponse.connect(boost::bind(&MyOutgoingSIFileTransfer::handleBytestreamsRequestResponse, this, _1, _2));
- request->send();
- }
- else if (response->getRequestedMethod() == "http://jabber.org/protocol/ibb") {
- ibbSession = std::shared_ptr<IBBSendSession>(new IBBSendSession(id, from, to, bytestream, iqRouter));
- ibbSession->onFinished.connect(boost::bind(&MyOutgoingSIFileTransfer::handleIBBSessionFinished, this, _1));
- ibbSession->start();
- }
- }
-}
-
-void MyOutgoingSIFileTransfer::handleBytestreamsRequestResponse(Bytestreams::ref, ErrorPayload::ref error) {
- if (error) {
- finish(FileTransferError());
- return;
- }
- //socksServer->onTransferFinished.connect();
-}
-
-void MyOutgoingSIFileTransfer::finish(boost::optional<FileTransferError> error) {
- if (ibbSession) {
- ibbSession->onFinished.disconnect(boost::bind(&MyOutgoingSIFileTransfer::handleIBBSessionFinished, this, _1));
- ibbSession.reset();
- }
- onFinished(error);
-}
-
-void MyOutgoingSIFileTransfer::handleIBBSessionFinished(boost::optional<FileTransferError> error) {
- finish(error);
-}
-
-}
diff --git a/include/Swiften/FileTransfer/MyOutgoingSIFileTransfer.h b/include/Swiften/FileTransfer/MyOutgoingSIFileTransfer.h
deleted file mode 100644
index b04ec294..00000000
--- a/include/Swiften/FileTransfer/MyOutgoingSIFileTransfer.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2010 Remko Tronçon
- * Licensed under the GNU General Public License v3.
- * See Documentation/Licenses/GPLv3.txt for more information.
- */
-
-#pragma once
-
-#include <boost/signals2.hpp>
-
-#include <Swiften/FileTransfer/OutgoingFileTransfer.h>
-#include <Swiften/FileTransfer/ReadBytestream.h>
-#include <Swiften/FileTransfer/FileTransferError.h>
-#include <Swiften/FileTransfer/SOCKS5BytestreamServer.h>
-#include <Swiften/JID/JID.h>
-#include <Swiften/Elements/StreamInitiation.h>
-#include <Swiften/Elements/Bytestreams.h>
-#include <Swiften/Elements/ErrorPayload.h>
-#include <Swiften/FileTransfer/IBBSendSession.h>
-#include <Swiften/Version.h>
-
-namespace Swift {
- class IQRouter;
- class SOCKS5BytestreamServer;
- class SOCKS5BytestreamRegistry;
-
- class MyOutgoingSIFileTransfer : public OutgoingFileTransfer {
- public:
- MyOutgoingSIFileTransfer(const std::string& id, const JID& from, const JID& to, const std::string& name, int size, const std::string& description, std::shared_ptr<ReadBytestream> bytestream, IQRouter* iqRouter, SOCKS5BytestreamServer* socksServer, SOCKS5BytestreamRegistry* registry);
-
- virtual void start();
- virtual void stop();
- virtual void cancel();
-
- boost::signals2::signal<void (const boost::optional<FileTransferError>&)> onFinished;
-
- private:
- void handleStreamInitiationRequestResponse(StreamInitiation::ref, ErrorPayload::ref);
- void handleBytestreamsRequestResponse(Bytestreams::ref, ErrorPayload::ref);
- void finish(boost::optional<FileTransferError> error);
- void handleIBBSessionFinished(boost::optional<FileTransferError> error);
-
- private:
- std::string id;
- JID from;
- JID to;
- std::string name;
- int size;
- std::string description;
- std::shared_ptr<ReadBytestream> bytestream;
- IQRouter* iqRouter;
- SOCKS5BytestreamServer* socksServer;
- std::shared_ptr<IBBSendSession> ibbSession;
- SOCKS5BytestreamRegistry *registry;
- };
-}
diff --git a/include/Swiften/TLS/OpenSSL/OpenSSLServerContext.cpp b/include/Swiften/TLS/OpenSSL/OpenSSLServerContext.cpp
index 2f22a280..b0628fb0 100644
--- a/include/Swiften/TLS/OpenSSL/OpenSSLServerContext.cpp
+++ b/include/Swiften/TLS/OpenSSL/OpenSSLServerContext.cpp
@@ -219,6 +219,9 @@ bool OpenSSLServerContext::setServerCertificate(CertificateWithKey::ref certref)
LOG4CXX_ERROR(logger, "TLS WILL NOT WORK: Can't use this private key");
return false;
}
+ for (int i = 0; i < sk_X509_num(caCerts.get()); ++i) {
+ SSL_CTX_add_extra_chain_cert(context_, sk_X509_value(caCerts.get(), i));
+ }
return true;
}
diff --git a/include/boost/cstdint.hpp b/include/boost/cstdint.hpp
deleted file mode 100644
index 98faeae0..00000000
--- a/include/boost/cstdint.hpp
+++ /dev/null
@@ -1,545 +0,0 @@
-// boost cstdint.hpp header file ------------------------------------------//
-
-// (C) Copyright Beman Dawes 1999.
-// (C) Copyright Jens Mauer 2001
-// (C) Copyright John Maddock 2001
-// Distributed under the Boost
-// Software License, Version 1.0. (See accompanying file
-// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-// See http://www.boost.org/libs/integer for documentation.
-
-// Revision History
-// 31 Oct 01 use BOOST_HAS_LONG_LONG to check for "long long" (Jens M.)
-// 16 Apr 01 check LONGLONG_MAX when looking for "long long" (Jens Maurer)
-// 23 Jan 01 prefer "long" over "int" for int32_t and intmax_t (Jens Maurer)
-// 12 Nov 00 Merged <boost/stdint.h> (Jens Maurer)
-// 23 Sep 00 Added INTXX_C macro support (John Maddock).
-// 22 Sep 00 Better 64-bit support (John Maddock)
-// 29 Jun 00 Reimplement to avoid including stdint.h within namespace boost
-// 8 Aug 99 Initial version (Beman Dawes)
-
-
-#ifndef BOOST_CSTDINT_HPP
-#define BOOST_CSTDINT_HPP
-
-//
-// Since we always define the INT#_C macros as per C++0x,
-// define __STDC_CONSTANT_MACROS so that <stdint.h> does the right
-// thing if possible, and so that the user knows that the macros
-// are actually defined as per C99.
-//
-#ifndef __STDC_CONSTANT_MACROS
-# define __STDC_CONSTANT_MACROS
-#endif
-
-#include <boost/config.hpp>
-
-//
-// Note that GLIBC is a bit inconsistent about whether int64_t is defined or not
-// depending upon what headers happen to have been included first...
-// so we disable use of stdint.h when GLIBC does not define __GLIBC_HAVE_LONG_LONG.
-// See https://svn.boost.org/trac/boost/ticket/3548 and http://sources.redhat.com/bugzilla/show_bug.cgi?id=10990
-//
-#if defined(BOOST_HAS_STDINT_H) \
- && (!defined(__GLIBC__) \
- || defined(__GLIBC_HAVE_LONG_LONG) \
- || (defined(__GLIBC__) && ((__GLIBC__ > 2) || ((__GLIBC__ == 2) && (__GLIBC_MINOR__ >= 17)))))
-
-// The following #include is an implementation artifact; not part of interface.
-# ifdef __hpux
-// HP-UX has a vaguely nice <stdint.h> in a non-standard location
-# include <inttypes.h>
-# ifdef __STDC_32_MODE__
- // this is triggered with GCC, because it defines __cplusplus < 199707L
-# define BOOST_NO_INT64_T
-# endif
-# elif defined(__FreeBSD__) || defined(__IBMCPP__) || defined(_AIX)
-# include <inttypes.h>
-# else
-# include <stdint.h>
-
-// There is a bug in Cygwin two _C macros
-# if defined(__STDC_CONSTANT_MACROS) && defined(__CYGWIN__)
-# undef INTMAX_C
-# undef UINTMAX_C
-# define INTMAX_C(c) c##LL
-# define UINTMAX_C(c) c##ULL
-# endif
-
-# endif
-
-#ifdef __QNX__
-
-// QNX (Dinkumware stdlib) defines these as non-standard names.
-// Reflect to the standard names.
-
-typedef ::intleast8_t int_least8_t;
-typedef ::intfast8_t int_fast8_t;
-typedef ::uintleast8_t uint_least8_t;
-typedef ::uintfast8_t uint_fast8_t;
-
-typedef ::intleast16_t int_least16_t;
-typedef ::intfast16_t int_fast16_t;
-typedef ::uintleast16_t uint_least16_t;
-typedef ::uintfast16_t uint_fast16_t;
-
-typedef ::intleast32_t int_least32_t;
-typedef ::intfast32_t int_fast32_t;
-typedef ::uintleast32_t uint_least32_t;
-typedef ::uintfast32_t uint_fast32_t;
-
-# ifndef BOOST_NO_INT64_T
-
-typedef ::intleast64_t int_least64_t;
-typedef ::intfast64_t int_fast64_t;
-typedef ::uintleast64_t uint_least64_t;
-typedef ::uintfast64_t uint_fast64_t;
-
-# endif
-
-#endif
-
-namespace boost
-{
-
- using ::int8_t;
- using ::int_least8_t;
- using ::int_fast8_t;
- using ::uint8_t;
- using ::uint_least8_t;
- using ::uint_fast8_t;
-
- using ::int16_t;
- using ::int_least16_t;
- using ::int_fast16_t;
- using ::uint16_t;
- using ::uint_least16_t;
- using ::uint_fast16_t;
-
- using ::int32_t;
- using ::int_least32_t;
- using ::int_fast32_t;
- using ::uint32_t;
- using ::uint_least32_t;
- using ::uint_fast32_t;
-
-# ifndef BOOST_NO_INT64_T
-
- using ::int64_t;
- using ::int_least64_t;
- using ::int_fast64_t;
- using ::uint64_t;
- using ::uint_least64_t;
- using ::uint_fast64_t;
-
-# endif
-
- using ::intmax_t;
- using ::uintmax_t;
-
-} // namespace boost
-
-#elif defined(__FreeBSD__) && (__FreeBSD__ <= 4) || defined(__osf__) || defined(__VMS)
-// FreeBSD and Tru64 have an <inttypes.h> that contains much of what we need.
-# include <inttypes.h>
-
-namespace boost {
-
- using ::int8_t;
- typedef int8_t int_least8_t;
- typedef int8_t int_fast8_t;
- using ::uint8_t;
- typedef uint8_t uint_least8_t;
- typedef uint8_t uint_fast8_t;
-
- using ::int16_t;
- typedef int16_t int_least16_t;
- typedef int16_t int_fast16_t;
- using ::uint16_t;
- typedef uint16_t uint_least16_t;
- typedef uint16_t uint_fast16_t;
-
- using ::int32_t;
- typedef int32_t int_least32_t;
- typedef int32_t int_fast32_t;
- using ::uint32_t;
- typedef uint32_t uint_least32_t;
- typedef uint32_t uint_fast32_t;
-
-# ifndef BOOST_NO_INT64_T
-
- using ::int64_t;
- typedef int64_t int_least64_t;
- typedef int64_t int_fast64_t;
- using ::uint64_t;
- typedef uint64_t uint_least64_t;
- typedef uint64_t uint_fast64_t;
-
- typedef int64_t intmax_t;
- typedef uint64_t uintmax_t;
-
-# else
-
- typedef int32_t intmax_t;
- typedef uint32_t uintmax_t;
-
-# endif
-
-} // namespace boost
-
-#else // BOOST_HAS_STDINT_H
-
-# include <boost/limits.hpp> // implementation artifact; not part of interface
-# include <limits.h> // needed for limits macros
-
-
-namespace boost
-{
-
-// These are fairly safe guesses for some 16-bit, and most 32-bit and 64-bit
-// platforms. For other systems, they will have to be hand tailored.
-//
-// Because the fast types are assumed to be the same as the undecorated types,
-// it may be possible to hand tailor a more efficient implementation. Such
-// an optimization may be illusionary; on the Intel x86-family 386 on, for
-// example, byte arithmetic and load/stores are as fast as "int" sized ones.
-
-// 8-bit types ------------------------------------------------------------//
-
-# if UCHAR_MAX == 0xff
- typedef signed char int8_t;
- typedef signed char int_least8_t;
- typedef signed char int_fast8_t;
- typedef unsigned char uint8_t;
- typedef unsigned char uint_least8_t;
- typedef unsigned char uint_fast8_t;
-# else
-# error defaults not correct; you must hand modify boost/cstdint.hpp
-# endif
-
-// 16-bit types -----------------------------------------------------------//
-
-# if USHRT_MAX == 0xffff
-# if defined(__crayx1)
- // The Cray X1 has a 16-bit short, however it is not recommend
- // for use in performance critical code.
- typedef short int16_t;
- typedef short int_least16_t;
- typedef int int_fast16_t;
- typedef unsigned short uint16_t;
- typedef unsigned short uint_least16_t;
- typedef unsigned int uint_fast16_t;
-# else
- typedef short int16_t;
- typedef short int_least16_t;
- typedef short int_fast16_t;
- typedef unsigned short uint16_t;
- typedef unsigned short uint_least16_t;
- typedef unsigned short uint_fast16_t;
-# endif
-# elif (USHRT_MAX == 0xffffffff) && defined(__MTA__)
- // On MTA / XMT short is 32 bits unless the -short16 compiler flag is specified
- // MTA / XMT does support the following non-standard integer types
- typedef __short16 int16_t;
- typedef __short16 int_least16_t;
- typedef __short16 int_fast16_t;
- typedef unsigned __short16 uint16_t;
- typedef unsigned __short16 uint_least16_t;
- typedef unsigned __short16 uint_fast16_t;
-# elif (USHRT_MAX == 0xffffffff) && defined(CRAY)
- // no 16-bit types on Cray:
- typedef short int_least16_t;
- typedef short int_fast16_t;
- typedef unsigned short uint_least16_t;
- typedef unsigned short uint_fast16_t;
-# else
-# error defaults not correct; you must hand modify boost/cstdint.hpp
-# endif
-
-// 32-bit types -----------------------------------------------------------//
-
-# if UINT_MAX == 0xffffffff
- typedef int int32_t;
- typedef int int_least32_t;
- typedef int int_fast32_t;
- typedef unsigned int uint32_t;
- typedef unsigned int uint_least32_t;
- typedef unsigned int uint_fast32_t;
-# elif (USHRT_MAX == 0xffffffff)
- typedef short int32_t;
- typedef short int_least32_t;
- typedef short int_fast32_t;
- typedef unsigned short uint32_t;
- typedef unsigned short uint_least32_t;
- typedef unsigned short uint_fast32_t;
-# elif ULONG_MAX == 0xffffffff
- typedef long int32_t;
- typedef long int_least32_t;
- typedef long int_fast32_t;
- typedef unsigned long uint32_t;
- typedef unsigned long uint_least32_t;
- typedef unsigned long uint_fast32_t;
-# elif (UINT_MAX == 0xffffffffffffffff) && defined(__MTA__)
- // Integers are 64 bits on the MTA / XMT
- typedef __int32 int32_t;
- typedef __int32 int_least32_t;
- typedef __int32 int_fast32_t;
- typedef unsigned __int32 uint32_t;
- typedef unsigned __int32 uint_least32_t;
- typedef unsigned __int32 uint_fast32_t;
-# else
-# error defaults not correct; you must hand modify boost/cstdint.hpp
-# endif
-
-// 64-bit types + intmax_t and uintmax_t ----------------------------------//
-
-# if defined(BOOST_HAS_LONG_LONG) && \
- !defined(BOOST_MSVC) && !defined(__BORLANDC__) && \
- (!defined(__GLIBCPP__) || defined(_GLIBCPP_USE_LONG_LONG)) && \
- (defined(ULLONG_MAX) || defined(ULONG_LONG_MAX) || defined(ULONGLONG_MAX))
-# if defined(__hpux)
- // HP-UX's value of ULONG_LONG_MAX is unusable in preprocessor expressions
-# elif (defined(ULLONG_MAX) && ULLONG_MAX == 18446744073709551615ULL) || (defined(ULONG_LONG_MAX) && ULONG_LONG_MAX == 18446744073709551615ULL) || (defined(ULONGLONG_MAX) && ULONGLONG_MAX == 18446744073709551615ULL)
- // 2**64 - 1
-# else
-# error defaults not correct; you must hand modify boost/cstdint.hpp
-# endif
-
- typedef ::boost::long_long_type intmax_t;
- typedef ::boost::ulong_long_type uintmax_t;
- typedef ::boost::long_long_type int64_t;
- typedef ::boost::long_long_type int_least64_t;
- typedef ::boost::long_long_type int_fast64_t;
- typedef ::boost::ulong_long_type uint64_t;
- typedef ::boost::ulong_long_type uint_least64_t;
- typedef ::boost::ulong_long_type uint_fast64_t;
-
-# elif ULONG_MAX != 0xffffffff
-
-# if ULONG_MAX == 18446744073709551615 // 2**64 - 1
- typedef long intmax_t;
- typedef unsigned long uintmax_t;
- typedef long int64_t;
- typedef long int_least64_t;
- typedef long int_fast64_t;
- typedef unsigned long uint64_t;
- typedef unsigned long uint_least64_t;
- typedef unsigned long uint_fast64_t;
-# else
-# error defaults not correct; you must hand modify boost/cstdint.hpp
-# endif
-# elif defined(__GNUC__) && defined(BOOST_HAS_LONG_LONG)
- __extension__ typedef long long intmax_t;
- __extension__ typedef unsigned long long uintmax_t;
- __extension__ typedef long long int64_t;
- __extension__ typedef long long int_least64_t;
- __extension__ typedef long long int_fast64_t;
- __extension__ typedef unsigned long long uint64_t;
- __extension__ typedef unsigned long long uint_least64_t;
- __extension__ typedef unsigned long long uint_fast64_t;
-# elif defined(BOOST_HAS_MS_INT64)
- //
- // we have Borland/Intel/Microsoft __int64:
- //
- typedef __int64 intmax_t;
- typedef unsigned __int64 uintmax_t;
- typedef __int64 int64_t;
- typedef __int64 int_least64_t;
- typedef __int64 int_fast64_t;
- typedef unsigned __int64 uint64_t;
- typedef unsigned __int64 uint_least64_t;
- typedef unsigned __int64 uint_fast64_t;
-# else // assume no 64-bit integers
-# define BOOST_NO_INT64_T
- typedef int32_t intmax_t;
- typedef uint32_t uintmax_t;
-# endif
-
-} // namespace boost
-
-
-#endif // BOOST_HAS_STDINT_H
-
-// intptr_t/uintptr_t are defined separately because they are optional and not universally available
-#if defined(BOOST_WINDOWS) && !defined(_WIN32_WCE) && !defined(BOOST_HAS_STDINT_H)
-// Older MSVC don't have stdint.h and have intptr_t/uintptr_t defined in stddef.h
-#include <stddef.h>
-#endif
-
-// PGI seems to not support intptr_t/uintptr_t properly. BOOST_HAS_STDINT_H is not defined for this compiler by Boost.Config.
-#if !defined(__PGIC__)
-
-#if (defined(BOOST_WINDOWS) && !defined(_WIN32_WCE)) \
- || (defined(_XOPEN_UNIX) && (_XOPEN_UNIX+0 > 0) && !defined(__UCLIBC__)) \
- || defined(__CYGWIN__) \
- || defined(macintosh) || defined(__APPLE__) || defined(__APPLE_CC__) \
- || defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__DragonFly__)
-
-namespace boost {
- using ::intptr_t;
- using ::uintptr_t;
-}
-#define BOOST_HAS_INTPTR_T
-
-// Clang pretends to be GCC, so it'll match this condition
-#elif defined(__GNUC__) && defined(__INTPTR_TYPE__) && defined(__UINTPTR_TYPE__)
-
-namespace boost {
- typedef __INTPTR_TYPE__ intptr_t;
- typedef __UINTPTR_TYPE__ uintptr_t;
-}
-#define BOOST_HAS_INTPTR_T
-
-#endif
-
-#endif // !defined(__PGIC__)
-
-#endif // BOOST_CSTDINT_HPP
-
-
-/****************************************************
-
-Macro definition section:
-
-Added 23rd September 2000 (John Maddock).
-Modified 11th September 2001 to be excluded when
-BOOST_HAS_STDINT_H is defined (John Maddock).
-Modified 11th Dec 2009 to always define the
-INT#_C macros if they're not already defined (John Maddock).
-
-******************************************************/
-
-#if !defined(BOOST__STDC_CONSTANT_MACROS_DEFINED) && \
- (!defined(INT8_C) || !defined(INT16_C) || !defined(INT32_C) || !defined(INT64_C))
-//
-// For the following code we get several warnings along the lines of:
-//
-// boost/cstdint.hpp:428:35: error: use of C99 long long integer constant
-//
-// So we declare this a system header to suppress these warnings.
-//
-#if defined(__GNUC__) && (__GNUC__ >= 4)
-#pragma GCC system_header
-#endif
-
-#include <limits.h>
-# define BOOST__STDC_CONSTANT_MACROS_DEFINED
-# if defined(BOOST_HAS_MS_INT64)
-//
-// Borland/Intel/Microsoft compilers have width specific suffixes:
-//
-#ifndef INT8_C
-# define INT8_C(value) value##i8
-#endif
-#ifndef INT16_C
-# define INT16_C(value) value##i16
-#endif
-#ifndef INT32_C
-# define INT32_C(value) value##i32
-#endif
-#ifndef INT64_C
-# define INT64_C(value) value##i64
-#endif
-# ifdef __BORLANDC__
- // Borland bug: appending ui8 makes the type a signed char
-# define UINT8_C(value) static_cast<unsigned char>(value##u)
-# else
-# define UINT8_C(value) value##ui8
-# endif
-#ifndef UINT16_C
-# define UINT16_C(value) value##ui16
-#endif
-#ifndef UINT32_C
-# define UINT32_C(value) value##ui32
-#endif
-#ifndef UINT64_C
-# define UINT64_C(value) value##ui64
-#endif
-#ifndef INTMAX_C
-# define INTMAX_C(value) value##i64
-# define UINTMAX_C(value) value##ui64
-#endif
-
-# else
-// do it the old fashioned way:
-
-// 8-bit types ------------------------------------------------------------//
-
-# if (UCHAR_MAX == 0xff) && !defined(INT8_C)
-# define INT8_C(value) static_cast<boost::int8_t>(value)
-# define UINT8_C(value) static_cast<boost::uint8_t>(value##u)
-# endif
-
-// 16-bit types -----------------------------------------------------------//
-
-# if (USHRT_MAX == 0xffff) && !defined(INT16_C)
-# define INT16_C(value) static_cast<boost::int16_t>(value)
-# define UINT16_C(value) static_cast<boost::uint16_t>(value##u)
-# endif
-
-// 32-bit types -----------------------------------------------------------//
-#ifndef INT32_C
-# if (UINT_MAX == 0xffffffff)
-# define INT32_C(value) value
-# define UINT32_C(value) value##u
-# elif ULONG_MAX == 0xffffffff
-# define INT32_C(value) value##L
-# define UINT32_C(value) value##uL
-# endif
-#endif
-
-// 64-bit types + intmax_t and uintmax_t ----------------------------------//
-#ifndef INT64_C
-# if defined(BOOST_HAS_LONG_LONG) && \
- (defined(ULLONG_MAX) || defined(ULONG_LONG_MAX) || defined(ULONGLONG_MAX) || defined(_LLONG_MAX))
-
-# if defined(__hpux)
- // HP-UX's value of ULONG_LONG_MAX is unusable in preprocessor expressions
-# define INT64_C(value) value##LL
-# define UINT64_C(value) value##uLL
-# elif (defined(ULLONG_MAX) && ULLONG_MAX == 18446744073709551615ULL) || \
- (defined(ULONG_LONG_MAX) && ULONG_LONG_MAX == 18446744073709551615ULL) || \
- (defined(ULONGLONG_MAX) && ULONGLONG_MAX == 18446744073709551615ULL) || \
- (defined(_LLONG_MAX) && _LLONG_MAX == 18446744073709551615ULL)
-
-# define INT64_C(value) value##LL
-# define UINT64_C(value) value##uLL
-# else
-# error defaults not correct; you must hand modify boost/cstdint.hpp
-# endif
-# elif ULONG_MAX != 0xffffffff
-
-# if ULONG_MAX == 18446744073709551615U // 2**64 - 1
-# define INT64_C(value) value##L
-# define UINT64_C(value) value##uL
-# else
-# error defaults not correct; you must hand modify boost/cstdint.hpp
-# endif
-# elif defined(BOOST_HAS_LONG_LONG)
- // Usual macros not defined, work things out for ourselves:
-# if(~0uLL == 18446744073709551615ULL)
-# define INT64_C(value) value##LL
-# define UINT64_C(value) value##uLL
-# else
-# error defaults not correct; you must hand modify boost/cstdint.hpp
-# endif
-# else
-# error defaults not correct; you must hand modify boost/cstdint.hpp
-# endif
-
-# ifdef BOOST_NO_INT64_T
-# define INTMAX_C(value) INT32_C(value)
-# define UINTMAX_C(value) UINT32_C(value)
-# else
-# define INTMAX_C(value) INT64_C(value)
-# define UINTMAX_C(value) UINT64_C(value)
-# endif
-#endif
-# endif // Borland/Microsoft specific width suffixes
-
-#endif // INT#_C macros.
-
-
-
-
diff --git a/include/boost/detail/endian.hpp b/include/boost/detail/endian.hpp
deleted file mode 100644
index f576c26b..00000000
--- a/include/boost/detail/endian.hpp
+++ /dev/null
@@ -1,11 +0,0 @@
-// Copyright 2013 Rene Rivera
-// Distributed under the Boost Software License, Version 1.0. (See accompany-
-// ing file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_DETAIL_ENDIAN_HPP
-#define BOOST_DETAIL_ENDIAN_HPP
-
-// Use the Predef library for the detection of endianess.
-#include <boost/predef/detail/endian_compat.h>
-
-#endif
diff --git a/include/boost/dll.hpp b/include/boost/dll.hpp
deleted file mode 100644
index c7357007..00000000
--- a/include/boost/dll.hpp
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2014 Renato Tegon Forti, Antony Polukhin.
-// Copyright 2015 Antony Polukhin.
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-
-#ifndef BOOST_DLL_DLL_HPP
-#define BOOST_DLL_DLL_HPP
-
-/// \file boost/dll.hpp
-/// \brief Includes all the headers of the Boost.DLL library.
-
-#include <boost/config.hpp>
-#include <boost/dll/shared_library.hpp>
-#include <boost/dll/alias.hpp>
-#include <boost/dll/import.hpp>
-#include <boost/dll/library_info.hpp>
-#include <boost/dll/runtime_symbol_info.hpp>
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-# pragma once
-#endif
-
-#endif // BOOST_DLL_DLL_HPP
-
diff --git a/include/boost/dll/alias.hpp b/include/boost/dll/alias.hpp
deleted file mode 100755
index 9f2e1685..00000000
--- a/include/boost/dll/alias.hpp
+++ /dev/null
@@ -1,261 +0,0 @@
-// Copyright 2014 Renato Tegon Forti, Antony Polukhin.
-// Copyright 2015 Antony Polukhin.
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_DLL_ALIAS_HPP
-#define BOOST_DLL_ALIAS_HPP
-
-#include <boost/config.hpp>
-#include <boost/static_assert.hpp>
-#include <boost/utility/addressof.hpp>
-#include <boost/predef/compiler.h>
-#include <boost/predef/os.h>
-#include <boost/dll/shared_library.hpp>
-#include <boost/dll/detail/aggressive_ptr_cast.hpp>
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-# pragma once
-#endif
-
-
-/// \file boost/dll/alias.hpp
-/// \brief Includes alias methods and macro. You can include this header or
-/// boost/dll/shared_library.hpp to reduce dependencies
-/// in case you do not use the refcountable functions.
-
-namespace boost { namespace dll {
-
-#ifdef BOOST_DLL_DOXYGEN
-/// Define this macro to explicitly specify translation unit in which alias must be instantiated.
-/// See section 'Limitations' for more info. You may find usage examples in source codes of almost each tutorial.
-#define BOOST_DLL_FORCE_ALIAS_INSTANTIATION
-#endif
-
-#if BOOST_COMP_MSVC
-
-#define BOOST_DLL_SELECTANY __declspec(selectany)
-
-#define BOOST_DLL_SECTION(SectionName, Permissions) \
- BOOST_STATIC_ASSERT_MSG( \
- sizeof(#SectionName) < 10, \
- "Some platforms require section names to be at most 8 bytest" \
- ); \
- __pragma(section(#SectionName, Permissions)) __declspec(allocate(#SectionName)) \
- /**/
-
-#else // #if BOOST_COMP_MSVC
-
-
-#if BOOST_OS_WINDOWS || BOOST_OS_ANDROID || BOOST_COMP_IBM
-// There are some problems with mixing `__dllexport__` and `weak` using MinGW
-// See https://sourceware.org/bugzilla/show_bug.cgi?id=17480
-//
-// Android had an issue with exporting weak symbols
-// https://code.google.com/p/android/issues/detail?id=70206
-#define BOOST_DLL_SELECTANY
-#else // #if BOOST_OS_WINDOWS
-/*!
-* \brief Macro that allows linker to select any occurrence of this symbol instead of
-* failing with 'multiple definitions' error at linktime.
-*
-* This macro does not work on Android, IBM XL C/C++ and MinGW+Windows
-* because of linker problems with exporting weak symbols
-* (See https://code.google.com/p/android/issues/detail?id=70206, https://sourceware.org/bugzilla/show_bug.cgi?id=17480)
-*/
-#define BOOST_DLL_SELECTANY __attribute__((weak))
-#endif // #if BOOST_OS_WINDOWS
-
-// TODO: improve section permissions using following info:
-// http://stackoverflow.com/questions/6252812/what-does-the-aw-flag-in-the-section-attribute-mean
-
-#if !BOOST_OS_MACOS && !BOOST_OS_IOS
-/*!
-* \brief Macro that puts symbol to a specific section. On MacOS all the sections are put into "__DATA" segment.
-* \param SectionName Name of the section. Must be a valid C identifier without quotes not longer than 8 bytes.
-* \param Permissions Can be "read" or "write" (without quotes!).
-*/
-#define BOOST_DLL_SECTION(SectionName, Permissions) \
- BOOST_STATIC_ASSERT_MSG( \
- sizeof(#SectionName) < 10, \
- "Some platforms require section names to be at most 8 bytest" \
- ); \
- __attribute__ ((section (#SectionName))) \
- /**/
-#else // #if !BOOST_OS_MACOS && !BOOST_OS_IOS
-
-#define BOOST_DLL_SECTION(SectionName, Permissions) \
- BOOST_STATIC_ASSERT_MSG( \
- sizeof(#SectionName) < 10, \
- "Some platforms require section names to be at most 8 bytest" \
- ); \
- __attribute__ ((section ( "__DATA," #SectionName))) \
- /**/
-
-#endif // #if #if !BOOST_OS_MACOS && !BOOST_OS_IOS
-
-#endif // #if BOOST_COMP_MSVC
-
-
-// Alias - is just a variable that pointers to original data
-//
-// A few attempts were made to avoid additional indirection:
-// 1)
-// // Does not work on Windows, work on Linux
-// extern "C" BOOST_SYMBOL_EXPORT void AliasName() {
-// reinterpret_cast<void (*)()>(Function)();
-// }
-//
-// 2)
-// // Does not work on Linux (changes permissions of .text section and produces incorrect DSO)
-// extern "C" BOOST_SYMBOL_EXPORT void* __attribute__ ((section(".text#")))
-// func_ptr = *reinterpret_cast<std::ptrdiff_t**>(&foo::bar);
-//
-// 3) // requires mangled name of `Function`
-// // AliasName() __attribute__ ((weak, alias ("Function")))
-//
-// // hard to use
-// `#pragma comment(linker, "/alternatename:_pWeakValue=_pDefaultWeakValue")`
-
-/*!
-* \brief Makes an alias name for exported function or variable.
-*
-* This macro is useful in cases of long mangled C++ names. For example some `void boost::foo(std::sting)`
-* function name will change to something like `N5boostN3foosE` after mangling.
-* Importing function by `N5boostN3foosE` name does not looks user friendly, especially assuming the fact
-* that different compilers have different mangling schemes. AliasName is the name that won't be mangled
-* and can be used as a portable import name.
-*
-*
-* Can be used in any namespace, including global. FunctionOrVar must be fully qualified,
-* so that address of it could be taken. Multiple different aliases for a single variable/function
-* are allowed.
-*
-* Make sure that AliasNames are unique per library/executable. Functions or variables
-* in global namespace must not have names same as AliasNames.
-*
-* Same AliasName in different translation units must point to the same FunctionOrVar.
-*
-* Puts all the aliases into the \b "boostdll" read only section of the binary. Equal to
-* \forcedmacrolink{BOOST_DLL_ALIAS_SECTIONED}(FunctionOrVar, AliasName, boostdll).
-*
-* \param FunctionOrVar Function or variable for which an alias must be made.
-* \param AliasName Name of the alias. Must be a valid C identifier.
-*
-* \b Example:
-* \code
-* namespace foo {
-* void bar(std::string&);
-*
-* BOOST_DLL_ALIAS(foo::bar, foo_bar)
-* }
-*
-* BOOST_DLL_ALIAS(foo::bar, foo_bar_another_alias_name)
-* \endcode
-*
-* \b See: \forcedmacrolink{BOOST_DLL_ALIAS_SECTIONED} for making alias in a specific section.
-*/
-#define BOOST_DLL_ALIAS(FunctionOrVar, AliasName) \
- BOOST_DLL_ALIAS_SECTIONED(FunctionOrVar, AliasName, boostdll) \
- /**/
-
-
-#if ((BOOST_COMP_GNUC && BOOST_OS_WINDOWS) || BOOST_OS_ANDROID || BOOST_COMP_IBM) && !defined(BOOST_DLL_FORCE_ALIAS_INSTANTIATION)
-
-#define BOOST_DLL_ALIAS_SECTIONED(FunctionOrVar, AliasName, SectionName) \
- namespace _autoaliases { \
- extern "C" BOOST_SYMBOL_EXPORT const void *AliasName; \
- } /* namespace _autoaliases */ \
- /**/
-
-#define BOOST_DLL_AUTO_ALIAS(FunctionOrVar) \
- namespace _autoaliases { \
- extern "C" BOOST_SYMBOL_EXPORT const void *FunctionOrVar; \
- } /* namespace _autoaliases */ \
- /**/
-#else
-// Note: we can not use `aggressive_ptr_cast` here, because in that case GCC applies
-// different permissions to the section and it causes Segmentation fault.
-// Note: we can not use `boost::addressof()` here, because in that case GCC
-// may optimize away the FunctionOrVar instance and we'll get a pointer to unexisting symbol.
-/*!
-* \brief Same as \forcedmacrolink{BOOST_DLL_ALIAS} but puts alias name into the user specified section.
-*
-* \param FunctionOrVar Function or variable for which an alias must be made.
-* \param AliasName Name of the alias. Must be a valid C identifier.
-* \param SectionName Name of the section. Must be a valid C identifier without quotes not longer than 8 bytes.
-*
-* \b Example:
-* \code
-* namespace foo {
-* void bar(std::string&);
-*
-* BOOST_DLL_ALIAS_SECTIONED(foo::bar, foo_bar, sect_1) // section "sect_1" now exports "foo_bar"
-* }
-* \endcode
-*
-*/
-#define BOOST_DLL_ALIAS_SECTIONED(FunctionOrVar, AliasName, SectionName) \
- namespace _autoaliases { \
- extern "C" BOOST_SYMBOL_EXPORT const void *AliasName; \
- BOOST_DLL_SECTION(SectionName, read) BOOST_DLL_SELECTANY \
- const void * AliasName = reinterpret_cast<const void*>(reinterpret_cast<intptr_t>( \
- &FunctionOrVar \
- )); \
- } /* namespace _autoaliases */ \
- /**/
-
-/*!
-* \brief Exports variable or function with unmangled alias name.
-*
-* This macro is useful in cases of long mangled C++ names. For example some `void boost::foo(std::sting)`
-* function name will change to something like `N5boostN3foosE` after mangling.
-* Importing function by `N5boostN3foosE` name does not looks user friendly, especially assuming the fact
-* that different compilers have different mangling schemes.*
-*
-* Must be used in scope where FunctionOrVar declared. FunctionOrVar must be a valid C name, which means that
-* it must not contain `::`.
-*
-* Functions or variables
-* in global namespace must not have names same as FunctionOrVar.
-*
-* Puts all the aliases into the \b "boostdll" read only section of the binary. Almost same as
-* \forcedmacrolink{BOOST_DLL_ALIAS}(FunctionOrVar, FunctionOrVar).
-*
-* \param FunctionOrVar Function or variable for which an unmangled alias must be made.
-*
-* \b Example:
-* \code
-* namespace foo {
-* void bar(std::string&);
-* BOOST_DLL_AUTO_ALIAS(bar)
-* }
-*
-* \endcode
-*
-* \b See: \forcedmacrolink{BOOST_DLL_ALIAS} for making an alias with different names.
-*/
-
-#define BOOST_DLL_AUTO_ALIAS(FunctionOrVar) \
- namespace _autoaliases { \
- BOOST_DLL_SELECTANY const void * dummy_ ## FunctionOrVar \
- = reinterpret_cast<const void*>(reinterpret_cast<intptr_t>( \
- &FunctionOrVar \
- )); \
- extern "C" BOOST_SYMBOL_EXPORT const void *FunctionOrVar; \
- BOOST_DLL_SECTION(boostdll, read) BOOST_DLL_SELECTANY \
- const void * FunctionOrVar = dummy_ ## FunctionOrVar; \
- } /* namespace _autoaliases */ \
- /**/
-
-
-#endif
-
-
-}} // namespace boost::dll
-
-
-#endif // BOOST_DLL_ALIAS_HPP
-
diff --git a/include/boost/dll/detail/aggressive_ptr_cast.hpp b/include/boost/dll/detail/aggressive_ptr_cast.hpp
deleted file mode 100644
index 567d102b..00000000
--- a/include/boost/dll/detail/aggressive_ptr_cast.hpp
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2014 Renato Tegon Forti, Antony Polukhin.
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_DLL_DETAIL_AGGRESSIVE_PTR_CAST_HPP
-#define BOOST_DLL_DETAIL_AGGRESSIVE_PTR_CAST_HPP
-
-#include <boost/config.hpp>
-#ifdef BOOST_HAS_PRAGMA_ONCE
-# pragma once
-#endif
-
-#include <boost/static_assert.hpp>
-#include <boost/type_traits/is_pointer.hpp>
-#include <boost/type_traits/is_const.hpp>
-#include <boost/cstdint.hpp> // boost::uintptr_t
-
-namespace boost { namespace dll { namespace detail {
-
-// GCC warns when reinterpret_cast between function pointer and object pointer occur.
-// This method suppress the warnings and ensures that such casts are safe.
-template <class To, class From>
-BOOST_FORCEINLINE To aggressive_ptr_cast(From* v) BOOST_NOEXCEPT {
- BOOST_STATIC_ASSERT_MSG(
- boost::is_pointer<To>::value,
- "`agressive_ptr_cast` function must be used only for pointer casting."
- );
-
- BOOST_STATIC_ASSERT_MSG(
- sizeof(v) == sizeof(To),
- "Pointer to function and pointer to object differ in size on your platform."
- );
-
- return reinterpret_cast<To>(
- reinterpret_cast<boost::uintptr_t>(v)
- );
-}
-
-}}} // boost::dll::detail
-
-#endif // BOOST_DLL_DETAIL_AGGRESSIVE_PTR_CAST_HPP
-
diff --git a/include/boost/dll/detail/elf_info.hpp b/include/boost/dll/detail/elf_info.hpp
deleted file mode 100644
index 325df9cb..00000000
--- a/include/boost/dll/detail/elf_info.hpp
+++ /dev/null
@@ -1,285 +0,0 @@
-// Copyright 2014 Renato Tegon Forti, Antony Polukhin.
-// Copyright 2015 Antony Polukhin.
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_DLL_DETAIL_POSIX_ELF_INFO_HPP
-#define BOOST_DLL_DETAIL_POSIX_ELF_INFO_HPP
-
-#include <boost/config.hpp>
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-# pragma once
-#endif
-
-#include <cstring>
-#include <boost/filesystem/fstream.hpp>
-#include <boost/dll/detail/x_info_interface.hpp>
-
-namespace boost { namespace dll { namespace detail {
-
-template <class AddressOffsetT>
-struct Elf_Ehdr_template {
- unsigned char e_ident[16]; /* Magic number and other info */
- boost::uint16_t e_type; /* Object file type */
- boost::uint16_t e_machine; /* Architecture */
- boost::uint32_t e_version; /* Object file version */
- AddressOffsetT e_entry; /* Entry point virtual address */
- AddressOffsetT e_phoff; /* Program header table file offset */
- AddressOffsetT e_shoff; /* Section header table file offset */
- boost::uint32_t e_flags; /* Processor-specific flags */
- boost::uint16_t e_ehsize; /* ELF header size in bytes */
- boost::uint16_t e_phentsize; /* Program header table entry size */
- boost::uint16_t e_phnum; /* Program header table entry count */
- boost::uint16_t e_shentsize; /* Section header table entry size */
- boost::uint16_t e_shnum; /* Section header table entry count */
- boost::uint16_t e_shstrndx; /* Section header string table index */
-};
-
-typedef Elf_Ehdr_template<boost::uint32_t> Elf32_Ehdr_;
-typedef Elf_Ehdr_template<boost::uint64_t> Elf64_Ehdr_;
-
-template <class AddressOffsetT>
-struct Elf_Shdr_template {
- boost::uint32_t sh_name; /* Section name (string tbl index) */
- boost::uint32_t sh_type; /* Section type */
- AddressOffsetT sh_flags; /* Section flags */
- AddressOffsetT sh_addr; /* Section virtual addr at execution */
- AddressOffsetT sh_offset; /* Section file offset */
- AddressOffsetT sh_size; /* Section size in bytes */
- boost::uint32_t sh_link; /* Link to another section */
- boost::uint32_t sh_info; /* Additional section information */
- AddressOffsetT sh_addralign; /* Section alignment */
- AddressOffsetT sh_entsize; /* Entry size if section holds table */
-};
-
-typedef Elf_Shdr_template<boost::uint32_t> Elf32_Shdr_;
-typedef Elf_Shdr_template<boost::uint64_t> Elf64_Shdr_;
-
-template <class AddressOffsetT>
-struct Elf_Sym_template;
-
-template <>
-struct Elf_Sym_template<boost::uint32_t> {
- typedef boost::uint32_t AddressOffsetT;
-
- boost::uint32_t st_name; /* Symbol name (string tbl index) */
- AddressOffsetT st_value; /* Symbol value */
- AddressOffsetT st_size; /* Symbol size */
- unsigned char st_info; /* Symbol type and binding */
- unsigned char st_other; /* Symbol visibility */
- boost::uint16_t st_shndx; /* Section index */
-};
-
-template <>
-struct Elf_Sym_template<boost::uint64_t> {
- typedef boost::uint64_t AddressOffsetT;
-
- boost::uint32_t st_name; /* Symbol name (string tbl index) */
- unsigned char st_info; /* Symbol type and binding */
- unsigned char st_other; /* Symbol visibility */
- boost::uint16_t st_shndx; /* Section index */
- AddressOffsetT st_value; /* Symbol value */
- AddressOffsetT st_size; /* Symbol size */
-};
-
-
-typedef Elf_Sym_template<boost::uint32_t> Elf32_Sym_;
-typedef Elf_Sym_template<boost::uint64_t> Elf64_Sym_;
-
-template <class AddressOffsetT>
-class elf_info: public x_info_interface {
- boost::filesystem::ifstream& f_;
-
- typedef boost::dll::detail::Elf_Ehdr_template<AddressOffsetT> header_t;
- typedef boost::dll::detail::Elf_Shdr_template<AddressOffsetT> section_t;
- typedef boost::dll::detail::Elf_Sym_template<AddressOffsetT> symbol_t;
-
- BOOST_STATIC_CONSTANT(boost::uint32_t, SHT_SYMTAB_ = 2);
- BOOST_STATIC_CONSTANT(boost::uint32_t, SHT_STRTAB_ = 3);
-
- BOOST_STATIC_CONSTANT(unsigned char, STB_LOCAL_ = 0); /* Local symbol */
- BOOST_STATIC_CONSTANT(unsigned char, STB_GLOBAL_ = 1); /* Global symbol */
- BOOST_STATIC_CONSTANT(unsigned char, STB_WEAK_ = 2); /* Weak symbol */
-
- /* Symbol visibility specification encoded in the st_other field. */
- BOOST_STATIC_CONSTANT(unsigned char, STV_DEFAULT_ = 0); /* Default symbol visibility rules */
- BOOST_STATIC_CONSTANT(unsigned char, STV_INTERNAL_ = 1); /* Processor specific hidden class */
- BOOST_STATIC_CONSTANT(unsigned char, STV_HIDDEN_ = 2); /* Sym unavailable in other modules */
- BOOST_STATIC_CONSTANT(unsigned char, STV_PROTECTED_ = 3); /* Not preemptible, not exported */
-
-public:
- static bool parsing_supported(boost::filesystem::ifstream& f) {
- const unsigned char magic_bytes[5] = {
- 0x7f, 'E', 'L', 'F', sizeof(boost::uint32_t) == sizeof(AddressOffsetT) ? 1 : 2
- };
-
- unsigned char ch;
- f.seekg(0);
- for (std::size_t i = 0; i < sizeof(magic_bytes); ++i) {
- f >> ch;
- if (ch != magic_bytes[i]) {
- return false;
- }
- }
-
- return true;
- }
-
- explicit elf_info(boost::filesystem::ifstream& f) BOOST_NOEXCEPT
- : f_(f)
- {}
-
- std::vector<std::string> sections() {
- std::vector<std::string> ret;
- std::vector<char> names;
- sections_names_raw(names);
-
- const char* name_begin = &names[0];
- const char* const name_end = name_begin + names.size();
- ret.reserve(header().e_shnum);
- do {
- ret.push_back(name_begin);
- name_begin += ret.back().size() + 1;
- } while (name_begin != name_end);
-
- return ret;
- }
-
-private:
- template <class T>
- inline void read_raw(T& value, std::size_t size = sizeof(T)) const {
- f_.read(reinterpret_cast<char*>(&value), size);
- }
-
- inline header_t header() {
- header_t elf;
-
- f_.seekg(0);
- read_raw(elf);
-
- return elf;
- }
-
- void sections_names_raw(std::vector<char>& sections) {
- const header_t elf = header();
-
- section_t section_names_section;
- f_.seekg(elf.e_shoff + elf.e_shstrndx * sizeof(section_t));
- read_raw(section_names_section);
-
- sections.resize(static_cast<std::size_t>(section_names_section.sh_size));
- f_.seekg(section_names_section.sh_offset);
- read_raw(sections[0], static_cast<std::size_t>(section_names_section.sh_size));
- }
-
- void symbols_text(std::vector<symbol_t>& symbols, std::vector<char>& text) {
- const header_t elf = header();
- f_.seekg(elf.e_shoff);
-
- for (std::size_t i = 0; i < elf.e_shnum; ++i) {
- section_t section;
- read_raw(section);
-
- if (section.sh_type == SHT_SYMTAB_) {
- symbols.resize(static_cast<std::size_t>(section.sh_size / sizeof(symbol_t)));
-
- const boost::filesystem::ifstream::pos_type pos = f_.tellg();
- f_.seekg(section.sh_offset);
- read_raw(symbols[0], static_cast<std::size_t>(section.sh_size - (section.sh_size % sizeof(symbol_t))) );
- f_.seekg(pos);
- } else if (section.sh_type == SHT_STRTAB_) {
- text.resize(static_cast<std::size_t>(section.sh_size));
-
- const boost::filesystem::ifstream::pos_type pos = f_.tellg();
- f_.seekg(section.sh_offset);
- read_raw(text[0], static_cast<std::size_t>(section.sh_size));
- f_.seekg(pos);
- }
- }
- }
-
- static bool is_visible(const symbol_t& sym) BOOST_NOEXCEPT {
- // `(sym.st_info >> 4) != STB_LOCAL_ && !!sym.st_size` check also workarounds the
- // GCC's issue https://sourceware.org/bugzilla/show_bug.cgi?id=13621
- return (sym.st_other & 0x03) == STV_DEFAULT_ && (sym.st_info >> 4) != STB_LOCAL_ && !!sym.st_size;
- }
-
-public:
- std::vector<std::string> symbols() {
- std::vector<std::string> ret;
-
- std::vector<symbol_t> symbols;
- std::vector<char> text;
- symbols_text(symbols, text);
-
- ret.reserve(symbols.size());
- for (std::size_t i = 0; i < symbols.size(); ++i) {
- if (is_visible(symbols[i])) {
- ret.push_back(&text[0] + symbols[i].st_name);
- if (ret.back().empty()) {
- ret.pop_back(); // Do not show empty names
- }
- }
- }
-
- return ret;
- }
-
- std::vector<std::string> symbols(const char* section_name) {
- std::vector<std::string> ret;
-
- std::size_t index = 0;
- std::size_t ptrs_in_section_count = 0;
- {
- std::vector<char> names;
- sections_names_raw(names);
-
- const header_t elf = header();
-
- for (; index < elf.e_shnum; ++index) {
- section_t section;
- f_.seekg(elf.e_shoff + index * sizeof(section_t));
- read_raw(section);
-
- if (!std::strcmp(&names[0] + section.sh_name, section_name)) {
- if (!section.sh_entsize) {
- section.sh_entsize = 1;
- }
- ptrs_in_section_count = static_cast<std::size_t>(section.sh_size / section.sh_entsize);
- break;
- }
- }
- }
-
- std::vector<symbol_t> symbols;
- std::vector<char> text;
- symbols_text(symbols, text);
-
- if (ptrs_in_section_count < symbols.size()) {
- ret.reserve(ptrs_in_section_count);
- } else {
- ret.reserve(symbols.size());
- }
-
- for (std::size_t i = 0; i < symbols.size(); ++i) {
- if (symbols[i].st_shndx == index && is_visible(symbols[i])) {
- ret.push_back(&text[0] + symbols[i].st_name);
- if (ret.back().empty()) {
- ret.pop_back(); // Do not show empty names
- }
- }
- }
-
- return ret;
- }
-};
-
-typedef elf_info<boost::uint32_t> elf_info32;
-typedef elf_info<boost::uint64_t> elf_info64;
-
-}}} // namespace boost::dll::detail
-
-#endif // BOOST_DLL_DETAIL_POSIX_ELF_INFO_HPP
diff --git a/include/boost/dll/detail/macho_info.hpp b/include/boost/dll/detail/macho_info.hpp
deleted file mode 100644
index 69119082..00000000
--- a/include/boost/dll/detail/macho_info.hpp
+++ /dev/null
@@ -1,321 +0,0 @@
-// Copyright 2014 Renato Tegon Forti, Antony Polukhin.
-// Copyright 2015 Antony Polukhin.
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_DLL_DETAIL_MACHO_INFO_HPP
-#define BOOST_DLL_DETAIL_MACHO_INFO_HPP
-
-#include <boost/config.hpp>
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-# pragma once
-#endif
-
-#include <boost/filesystem/fstream.hpp>
-#include <boost/dll/detail/x_info_interface.hpp>
-
-namespace boost { namespace dll { namespace detail {
-
-typedef int integer_t;
-typedef int vm_prot_t;
-typedef integer_t cpu_type_t;
-typedef integer_t cpu_subtype_t;
-
-template <class AddressOffsetT>
-struct mach_header_template {
- boost::uint32_t magic;
- cpu_type_t cputype;
- cpu_subtype_t cpusubtype;
- boost::uint32_t filetype;
- boost::uint32_t ncmds;
- boost::uint32_t sizeofcmds;
- boost::uint32_t flags[sizeof(AddressOffsetT) / sizeof(uint32_t)]; // Flags and reserved
-};
-
-typedef mach_header_template<boost::uint32_t> mach_header_32_;
-typedef mach_header_template<boost::uint64_t> mach_header_64_;
-
-struct load_command_ {
- boost::uint32_t cmd; /* type of command */
- boost::uint32_t cmdsize;
-};
-
-struct load_command_types {
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_SEGMENT_ = 0x1); /* segment of this file to be mapped */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_SYMTAB_ = 0x2); /* link-edit stab symbol table info */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_SYMSEG_ = 0x3); /* link-edit gdb symbol table info (obsolete) */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_THREAD_ = 0x4); /* thread */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_UNIXTHREAD_ = 0x5); /* unix thread (includes a stack) */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_LOADFVMLIB_ = 0x6); /* load a specified fixed VM shared library */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_IDFVMLIB_ = 0x7); /* fixed VM shared library identification */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_IDENT_ = 0x8); /* object identification info (obsolete) */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_FVMFILE_ = 0x9); /* fixed VM file inclusion (internal use) */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_PREPAGE_ = 0xa); /* prepage command (internal use) */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_DYSYMTAB_ = 0xb); /* dynamic link-edit symbol table info */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_LOAD_DYLIB_ = 0xc); /* load a dynamically linked shared library */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_ID_DYLIB_ = 0xd); /* dynamically linked shared lib ident */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_LOAD_DYLINKER_ = 0xe); /* load a dynamic linker */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_ID_DYLINKER_ = 0xf); /* dynamic linker identification */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_PREBOUND_DYLIB_ = 0x10); /* modules prebound for a dynamically linked shared library */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_ROUTINES_ = 0x11); /* image routines */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_SUB_FRAMEWORK_ = 0x12); /* sub framework */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_SUB_UMBRELLA_ = 0x13); /* sub umbrella */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_SUB_CLIENT_ = 0x14); /* sub client */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_SUB_LIBRARY_ = 0x15); /* sub library */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_TWOLEVEL_HINTS_ = 0x16); /* two-level namespace lookup hints */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_PREBIND_CKSUM_ = 0x17); /* prebind checksum */
-/*
- * After MacOS X 10.1 when a new load command is added that is required to be
- * understood by the dynamic linker for the image to execute properly the
- * LC_REQ_DYLD bit will be or'ed into the load command constant. If the dynamic
- * linker sees such a load command it it does not understand will issue a
- * "unknown load command required for execution" error and refuse to use the
- * image. Other load commands without this bit that are not understood will
- * simply be ignored.
- */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_REQ_DYLD_ = 0x80000000);
-
-/*
- * load a dynamically linked shared library that is allowed to be missing
- * (all symbols are weak imported).
- */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_LOAD_WEAK_DYLIB_ = (0x18 | LC_REQ_DYLD_));
-
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_SEGMENT_64_ = 0x19); /* 64-bit segment of this file to be mapped */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_ROUTINES_64_ = 0x1a); /* 64-bit image routines */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_UUID_ = 0x1b); /* the uuid */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_RPATH_ = (0x1c | LC_REQ_DYLD_)); /* runpath additions */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_CODE_SIGNATURE_ = 0x1d); /* local of code signature */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_SEGMENT_SPLIT_INFO_= 0x1e); /* local of info to split segments */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_REEXPORT_DYLIB_ = (0x1f | LC_REQ_DYLD_)); /* load and re-export dylib */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_LAZY_LOAD_DYLIB_ = 0x20); /* delay load of dylib until first use */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_ENCRYPTION_INFO_ = 0x21); /* encrypted segment information */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_DYLD_INFO_ = 0x22); /* compressed dyld information */
- BOOST_STATIC_CONSTANT(boost::uint32_t, LC_DYLD_INFO_ONLY_ = (0x22|LC_REQ_DYLD_)); /* compressed dyld information only */
-};
-
-template <class AddressOffsetT>
-struct segment_command_template {
- boost::uint32_t cmd; /* LC_SEGMENT_ */
- boost::uint32_t cmdsize; /* includes sizeof section structs */
- char segname[16]; /* segment name */
- AddressOffsetT vmaddr; /* memory address of this segment */
- AddressOffsetT vmsize; /* memory size of this segment */
- AddressOffsetT fileoff; /* file offset of this segment */
- AddressOffsetT filesize; /* amount to map from the file */
- vm_prot_t maxprot; /* maximum VM protection */
- vm_prot_t initprot; /* initial VM protection */
- boost::uint32_t nsects; /* number of sections in segment */
- boost::uint32_t flags; /* flags */
-};
-
-typedef segment_command_template<boost::uint32_t> segment_command_32_;
-typedef segment_command_template<boost::uint64_t> segment_command_64_;
-
-template <class AddressOffsetT>
-struct section_template {
- char sectname[16]; /* name of this section */
- char segname[16]; /* segment this section goes in */
- AddressOffsetT addr; /* memory address of this section */
- AddressOffsetT size; /* size in bytes of this section */
- boost::uint32_t offset; /* file offset of this section */
- boost::uint32_t align; /* section alignment (power of 2) */
- boost::uint32_t reloff; /* file offset of relocation entries */
- boost::uint32_t nreloc; /* number of relocation entries */
- boost::uint32_t flags; /* flags (section type and attributes)*/
- boost::uint32_t reserved[1 + sizeof(AddressOffsetT) / sizeof(uint32_t)];
-};
-
-typedef section_template<boost::uint32_t> section_32_;
-typedef section_template<boost::uint64_t> section_64_;
-
-struct symtab_command_ {
- boost::uint32_t cmd; /* LC_SYMTAB_ */
- boost::uint32_t cmdsize; /* sizeof(struct symtab_command) */
- boost::uint32_t symoff; /* symbol table offset */
- boost::uint32_t nsyms; /* number of symbol table entries */
- boost::uint32_t stroff; /* string table offset */
- boost::uint32_t strsize; /* string table size in bytes */
-};
-
-template <class AddressOffsetT>
-struct nlist_template {
- boost::uint32_t n_strx;
- boost::uint8_t n_type;
- boost::uint8_t n_sect;
- boost::uint16_t n_desc;
- AddressOffsetT n_value;
-};
-
-typedef nlist_template<boost::uint32_t> nlist_32_;
-typedef nlist_template<boost::uint64_t> nlist_64_;
-
-template <class AddressOffsetT>
-class macho_info: public x_info_interface {
- boost::filesystem::ifstream& f_;
-
- typedef boost::dll::detail::mach_header_template<AddressOffsetT> header_t;
- typedef boost::dll::detail::load_command_ load_command_t;
- typedef boost::dll::detail::segment_command_template<AddressOffsetT> segment_t;
- typedef boost::dll::detail::section_template<AddressOffsetT> section_t;
- typedef boost::dll::detail::symtab_command_ symbol_header_t;
- typedef boost::dll::detail::nlist_template<AddressOffsetT> nlist_t;
-
- BOOST_STATIC_CONSTANT(boost::uint32_t, SEGMENT_CMD_NUMBER = (sizeof(AddressOffsetT) > 4 ? load_command_types::LC_SEGMENT_64_ : load_command_types::LC_SEGMENT_));
-
-public:
- static bool parsing_supported(boost::filesystem::ifstream& f) {
- static const uint32_t magic_bytes = (sizeof(AddressOffsetT) <= sizeof(uint32_t) ? 0xfeedface : 0xfeedfacf);
-
- uint32_t magic;
- f.seekg(0);
- f.read(reinterpret_cast<char*>(&magic), sizeof(magic));
- return (magic_bytes == magic);
- }
-
- explicit macho_info(boost::filesystem::ifstream& f) BOOST_NOEXCEPT
- : f_(f)
- {}
-
-private:
- template <class T>
- inline void read_raw(T& value, std::size_t size = sizeof(T)) const {
- f_.read(reinterpret_cast<char*>(&value), size);
- }
-
- template <class F>
- void command_finder(uint32_t cmd_num, F callback_f) {
- const header_t h = header();
- load_command_t command;
- f_.seekg(sizeof(header_t));
- for (std::size_t i = 0; i < h.ncmds; ++i) {
- const boost::filesystem::ifstream::pos_type pos = f_.tellg();
- read_raw(command);
- if (command.cmd != cmd_num) {
- f_.seekg(pos + static_cast<boost::filesystem::ifstream::pos_type>(command.cmdsize));
- continue;
- }
-
- f_.seekg(pos);
- callback_f(*this);
- f_.seekg(pos + static_cast<boost::filesystem::ifstream::pos_type>(command.cmdsize));
- }
- }
-
- struct section_names_gather {
- std::vector<std::string>& ret;
-
- void operator()(const macho_info& f) const {
- segment_t segment;
- f.read_raw(segment);
-
- section_t section;
- ret.reserve(ret.size() + segment.nsects);
- for (std::size_t j = 0; j < segment.nsects; ++j) {
- f.read_raw(section);
- // `segname` goes right after the `sectname`.
- // Forcing `sectname` to end on '\0'
- section.segname[0] = '\0';
- ret.push_back(section.sectname);
- if (ret.back().empty()) {
- ret.pop_back(); // Do not show empty names
- }
- }
- }
- };
-
- struct symbol_names_gather {
- std::vector<std::string>& ret;
- std::size_t section_index;
-
- void operator()(const macho_info& f) const {
- symbol_header_t symbh;
- f.read_raw(symbh);
- ret.reserve(ret.size() + symbh.nsyms);
-
- nlist_t symbol;
- std::string symbol_name;
- for (std::size_t j = 0; j < symbh.nsyms; ++j) {
- f.f_.seekg(symbh.symoff + j * sizeof(nlist_t));
- f.read_raw(symbol);
- if (!symbol.n_strx) {
- continue; // Symbol has no name
- }
-
- if ((symbol.n_type & 0x0e) != 0xe || !symbol.n_sect) {
- continue; // Symbol has no section
- }
-
- if (section_index && section_index != symbol.n_sect) {
- continue; // Not in the required section
- }
-
- f.f_.seekg(symbh.stroff + symbol.n_strx);
- getline(f.f_, symbol_name, '\0');
- if (symbol_name.empty()) {
- continue;
- }
-
- if (symbol_name[0] == '_') {
- // Linker adds additional '_' symbol. Could not find official docs for that case.
- ret.push_back(symbol_name.c_str() + 1);
- } else {
- ret.push_back(symbol_name);
- }
- }
- }
- };
-
-public:
- std::vector<std::string> sections() {
- std::vector<std::string> ret;
- section_names_gather f = { ret };
- command_finder(SEGMENT_CMD_NUMBER, f);
- return ret;
- }
-
-private:
- inline header_t header() {
- header_t h;
-
- f_.seekg(0);
- read_raw(h);
-
- return h;
- }
-
-public:
- std::vector<std::string> symbols() {
- std::vector<std::string> ret;
- symbol_names_gather f = { ret, 0 };
- command_finder(load_command_types::LC_SYMTAB_, f);
- return ret;
- }
-
- std::vector<std::string> symbols(const char* section_name) {
- // Not very optimal solution
- std::vector<std::string> ret = sections();
- std::vector<std::string>::iterator it = std::find(ret.begin(), ret.end(), section_name);
- if (it == ret.end()) {
- // No section with such name
- ret.clear();
- return ret;
- }
-
- // section indexes start from 1
- symbol_names_gather f = { ret, static_cast<std::size_t>(1 + (it - ret.begin())) };
- ret.clear();
- command_finder(load_command_types::LC_SYMTAB_, f);
- return ret;
- }
-};
-
-typedef macho_info<boost::uint32_t> macho_info32;
-typedef macho_info<boost::uint64_t> macho_info64;
-
-}}} // namespace boost::dll::detail
-
-#endif // BOOST_DLL_DETAIL_MACHO_INFO_HPP
diff --git a/include/boost/dll/detail/pe_info.hpp b/include/boost/dll/detail/pe_info.hpp
deleted file mode 100644
index 7f1584a6..00000000
--- a/include/boost/dll/detail/pe_info.hpp
+++ /dev/null
@@ -1,427 +0,0 @@
-// Copyright 2014 Renato Tegon Forti, Antony Polukhin.
-// Copyright 2015 Antony Polukhin.
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_DLL_DETAIL_WINDOWS_PE_INFO_HPP
-#define BOOST_DLL_DETAIL_WINDOWS_PE_INFO_HPP
-
-#include <boost/config.hpp>
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-# pragma once
-#endif
-
-#include <boost/filesystem/fstream.hpp>
-#include <boost/dll/detail/x_info_interface.hpp>
-
-namespace boost { namespace dll { namespace detail {
-
-// reference:
-// http://www.joachim-bauch.de/tutorials/loading-a-dll-from-memory/
-// http://msdn.microsoft.com/en-us/magazine/ms809762.aspx
-// http://msdn.microsoft.com/en-us/magazine/cc301808.aspx
-//
-
-// Basic Windows typedefs. We can not use <boost/detail/winapi/basic_types.hpp> header
-// because that header must be included only on Windows platform
-typedef unsigned char BYTE_;
-typedef unsigned short WORD_;
-typedef unsigned long DWORD_;
-typedef long LONG_;
-typedef unsigned long ULONG_;
-typedef boost::int64_t LONGLONG_;
-typedef boost::uint64_t ULONGLONG_;
-
-struct IMAGE_DOS_HEADER_ { // 32/64 independent header
- boost::dll::detail::WORD_ e_magic; // Magic number
- boost::dll::detail::WORD_ e_cblp; // Bytes on last page of file
- boost::dll::detail::WORD_ e_cp; // Pages in file
- boost::dll::detail::WORD_ e_crlc; // Relocations
- boost::dll::detail::WORD_ e_cparhdr; // Size of header in paragraphs
- boost::dll::detail::WORD_ e_minalloc; // Minimum extra paragraphs needed
- boost::dll::detail::WORD_ e_maxalloc; // Maximum extra paragraphs needed
- boost::dll::detail::WORD_ e_ss; // Initial (relative) SS value
- boost::dll::detail::WORD_ e_sp; // Initial SP value
- boost::dll::detail::WORD_ e_csum; // Checksum
- boost::dll::detail::WORD_ e_ip; // Initial IP value
- boost::dll::detail::WORD_ e_cs; // Initial (relative) CS value
- boost::dll::detail::WORD_ e_lfarlc; // File address of relocation table
- boost::dll::detail::WORD_ e_ovno; // Overlay number
- boost::dll::detail::WORD_ e_res[4]; // Reserved words
- boost::dll::detail::WORD_ e_oemid; // OEM identifier (for e_oeminfo)
- boost::dll::detail::WORD_ e_oeminfo; // OEM information; e_oemid specific
- boost::dll::detail::WORD_ e_res2[10]; // Reserved words
- boost::dll::detail::LONG_ e_lfanew; // File address of new exe header
-};
-
-struct IMAGE_FILE_HEADER_ { // 32/64 independent header
- boost::dll::detail::WORD_ Machine;
- boost::dll::detail::WORD_ NumberOfSections;
- boost::dll::detail::DWORD_ TimeDateStamp;
- boost::dll::detail::DWORD_ PointerToSymbolTable;
- boost::dll::detail::DWORD_ NumberOfSymbols;
- boost::dll::detail::WORD_ SizeOfOptionalHeader;
- boost::dll::detail::WORD_ Characteristics;
-};
-
-struct IMAGE_DATA_DIRECTORY_ { // 32/64 independent header
- boost::dll::detail::DWORD_ VirtualAddress;
- boost::dll::detail::DWORD_ Size;
-};
-
-struct IMAGE_EXPORT_DIRECTORY_ { // 32/64 independent header
- boost::dll::detail::DWORD_ Characteristics;
- boost::dll::detail::DWORD_ TimeDateStamp;
- boost::dll::detail::WORD_ MajorVersion;
- boost::dll::detail::WORD_ MinorVersion;
- boost::dll::detail::DWORD_ Name;
- boost::dll::detail::DWORD_ Base;
- boost::dll::detail::DWORD_ NumberOfFunctions;
- boost::dll::detail::DWORD_ NumberOfNames;
- boost::dll::detail::DWORD_ AddressOfFunctions;
- boost::dll::detail::DWORD_ AddressOfNames;
- boost::dll::detail::DWORD_ AddressOfNameOrdinals;
-};
-
-struct IMAGE_SECTION_HEADER_ { // 32/64 independent header
- static const std::size_t IMAGE_SIZEOF_SHORT_NAME_ = 8;
-
- boost::dll::detail::BYTE_ Name[IMAGE_SIZEOF_SHORT_NAME_];
- union {
- boost::dll::detail::DWORD_ PhysicalAddress;
- boost::dll::detail::DWORD_ VirtualSize;
- } Misc;
- boost::dll::detail::DWORD_ VirtualAddress;
- boost::dll::detail::DWORD_ SizeOfRawData;
- boost::dll::detail::DWORD_ PointerToRawData;
- boost::dll::detail::DWORD_ PointerToRelocations;
- boost::dll::detail::DWORD_ PointerToLinenumbers;
- boost::dll::detail::WORD_ NumberOfRelocations;
- boost::dll::detail::WORD_ NumberOfLinenumbers;
- boost::dll::detail::DWORD_ Characteristics;
-};
-
-
-template <class AddressOffsetT>
-struct IMAGE_OPTIONAL_HEADER_template {
- static const std::size_t IMAGE_NUMBEROF_DIRECTORY_ENTRIES_ = 16;
-
- boost::dll::detail::WORD_ Magic;
- boost::dll::detail::BYTE_ MajorLinkerVersion;
- boost::dll::detail::BYTE_ MinorLinkerVersion;
- boost::dll::detail::DWORD_ SizeOfCode;
- boost::dll::detail::DWORD_ SizeOfInitializedData;
- boost::dll::detail::DWORD_ SizeOfUninitializedData;
- boost::dll::detail::DWORD_ AddressOfEntryPoint;
- union {
- boost::dll::detail::DWORD_ BaseOfCode;
- unsigned char padding_[sizeof(AddressOffsetT) == 8 ? 4 : 8]; // in x64 version BaseOfData does not exist
- } BaseOfCode_and_BaseOfData;
-
- AddressOffsetT ImageBase;
- boost::dll::detail::DWORD_ SectionAlignment;
- boost::dll::detail::DWORD_ FileAlignment;
- boost::dll::detail::WORD_ MajorOperatingSystemVersion;
- boost::dll::detail::WORD_ MinorOperatingSystemVersion;
- boost::dll::detail::WORD_ MajorImageVersion;
- boost::dll::detail::WORD_ MinorImageVersion;
- boost::dll::detail::WORD_ MajorSubsystemVersion;
- boost::dll::detail::WORD_ MinorSubsystemVersion;
- boost::dll::detail::DWORD_ Win32VersionValue;
- boost::dll::detail::DWORD_ SizeOfImage;
- boost::dll::detail::DWORD_ SizeOfHeaders;
- boost::dll::detail::DWORD_ CheckSum;
- boost::dll::detail::WORD_ Subsystem;
- boost::dll::detail::WORD_ DllCharacteristics;
- AddressOffsetT SizeOfStackReserve;
- AddressOffsetT SizeOfStackCommit;
- AddressOffsetT SizeOfHeapReserve;
- AddressOffsetT SizeOfHeapCommit;
- boost::dll::detail::DWORD_ LoaderFlags;
- boost::dll::detail::DWORD_ NumberOfRvaAndSizes;
- IMAGE_DATA_DIRECTORY_ DataDirectory[IMAGE_NUMBEROF_DIRECTORY_ENTRIES_];
-};
-
-typedef IMAGE_OPTIONAL_HEADER_template<boost::dll::detail::DWORD_> IMAGE_OPTIONAL_HEADER32_;
-typedef IMAGE_OPTIONAL_HEADER_template<boost::dll::detail::ULONGLONG_> IMAGE_OPTIONAL_HEADER64_;
-
-template <class AddressOffsetT>
-struct IMAGE_NT_HEADERS_template {
- boost::dll::detail::DWORD_ Signature;
- IMAGE_FILE_HEADER_ FileHeader;
- IMAGE_OPTIONAL_HEADER_template<AddressOffsetT> OptionalHeader;
-};
-
-typedef IMAGE_NT_HEADERS_template<boost::dll::detail::DWORD_> IMAGE_NT_HEADERS32_;
-typedef IMAGE_NT_HEADERS_template<boost::dll::detail::ULONGLONG_> IMAGE_NT_HEADERS64_;
-
-
-template <class AddressOffsetT>
-class pe_info: public x_info_interface {
- boost::filesystem::ifstream& f_;
-
- typedef IMAGE_NT_HEADERS_template<AddressOffsetT> header_t;
- typedef IMAGE_EXPORT_DIRECTORY_ exports_t;
- typedef IMAGE_SECTION_HEADER_ section_t;
- typedef IMAGE_DOS_HEADER_ dos_t;
-
- template <class T>
- inline void read_raw(T& value, std::size_t size = sizeof(T)) const {
- f_.read(reinterpret_cast<char*>(&value), size);
- }
-
-public:
- static bool parsing_supported(boost::filesystem::ifstream& f) {
- dos_t dos;
- f.seekg(0);
- f.read(reinterpret_cast<char*>(&dos), sizeof(dos));
-
- // 'MZ' and 'ZM' according to Wikipedia
- if (dos.e_magic != 0x4D5A && dos.e_magic != 0x5A4D) {
- return false;
- }
-
- header_t h;
- f.seekg(dos.e_lfanew);
- f.read(reinterpret_cast<char*>(&h), sizeof(h));
-
- return h.Signature == 0x00004550 // 'PE00'
- && h.OptionalHeader.Magic == (sizeof(boost::uint32_t) == sizeof(AddressOffsetT) ? 0x10B : 0x20B);
- }
-
-
- explicit pe_info(boost::filesystem::ifstream& f) BOOST_NOEXCEPT
- : f_(f)
- {}
-
-private:
- inline header_t header() {
- header_t h;
-
- dos_t dos;
- f_.seekg(0);
- read_raw(dos);
-
- f_.seekg(dos.e_lfanew);
- read_raw(h);
-
- return h;
- }
-
- inline exports_t exports(const header_t& h) {
- exports_t exports;
-
- static const unsigned int IMAGE_DIRECTORY_ENTRY_EXPORT_ = 0;
- const std::size_t exp_virtual_address = h.OptionalHeader.DataDirectory[IMAGE_DIRECTORY_ENTRY_EXPORT_].VirtualAddress;
-
- const std::size_t real_offset = get_file_offset(exp_virtual_address, h);
- BOOST_ASSERT(real_offset);
-
- f_.seekg(real_offset);
- read_raw(exports);
-
- return exports;
- }
-
- std::size_t get_file_offset(std::size_t virtual_address, const header_t& h) {
- section_t image_section_header;
-
- { // f_.seekg to the beginning on section headers
- dos_t dos;
- f_.seekg(0);
- read_raw(dos);
- f_.seekg(dos.e_lfanew + sizeof(header_t));
- }
-
- for (std::size_t i = 0;i < h.FileHeader.NumberOfSections;++i) {
- read_raw(image_section_header);
- if (virtual_address >= image_section_header.VirtualAddress
- && virtual_address < image_section_header.VirtualAddress + image_section_header.SizeOfRawData)
- {
- return image_section_header.PointerToRawData + virtual_address - image_section_header.VirtualAddress;
- }
- }
-
- return 0;
- }
-
-public:
- std::vector<std::string> sections() {
- std::vector<std::string> ret;
-
- const header_t h = header();
- ret.reserve(h.FileHeader.NumberOfSections);
-
- // get names, e.g: .text .rdata .data .rsrc .reloc
- section_t image_section_header;
- char name_helper[section_t::IMAGE_SIZEOF_SHORT_NAME_ + 1];
- std::memset(name_helper, 0, sizeof(name_helper));
- for (std::size_t i = 0;i < h.FileHeader.NumberOfSections;++i) {
- // There is no terminating null character if the string is exactly eight characters long
- read_raw(image_section_header);
- std::memcpy(name_helper, image_section_header.Name, section_t::IMAGE_SIZEOF_SHORT_NAME_);
-
- if (name_helper[0] != '/') {
- ret.push_back(name_helper);
- } else {
- // For longer names, image_section_header.Name contains a slash (/) followed by ASCII representation of a decimal number.
- // this number is an offset into the string table.
- // TODO: fixme
- ret.push_back(name_helper);
- }
- }
-
- return ret;
- }
-
- std::vector<std::string> symbols() {
- std::vector<std::string> ret;
-
- const header_t h = header();
- const exports_t exprt = exports(h);
- const std::size_t exported_symbols = exprt.NumberOfNames;
- const std::size_t fixed_names_addr = get_file_offset(exprt.AddressOfNames, h);
-
- ret.reserve(exported_symbols);
- boost::dll::detail::DWORD_ name_offset;
- std::string symbol_name;
- for (std::size_t i = 0;i < exported_symbols;++i) {
- f_.seekg(fixed_names_addr + i * sizeof(name_offset));
- read_raw(name_offset);
- f_.seekg(get_file_offset(name_offset, h));
- getline(f_, symbol_name, '\0');
- ret.push_back(symbol_name);
- }
-
- return ret;
- }
-
- std::vector<std::string> symbols(const char* section_name) {
- std::vector<std::string> ret;
-
- const header_t h = header();
-
- std::size_t section_begin_addr = 0;
- std::size_t section_end_addr = 0;
-
- { // getting address range for the section
- section_t image_section_header;
- char name_helper[section_t::IMAGE_SIZEOF_SHORT_NAME_ + 1];
- std::memset(name_helper, 0, sizeof(name_helper));
- for (std::size_t i = 0;i < h.FileHeader.NumberOfSections;++i) {
- // There is no terminating null character if the string is exactly eight characters long
- read_raw(image_section_header);
- std::memcpy(name_helper, image_section_header.Name, section_t::IMAGE_SIZEOF_SHORT_NAME_);
- if (!std::strcmp(section_name, name_helper)) {
- section_begin_addr = image_section_header.PointerToRawData;
- section_end_addr = section_begin_addr + image_section_header.SizeOfRawData;
- }
- }
- BOOST_ASSERT(section_begin_addr);
- BOOST_ASSERT(section_end_addr);
- }
-
- const exports_t exprt = exports(h);
- const std::size_t exported_symbols = exprt.NumberOfFunctions;
- const std::size_t fixed_names_addr = get_file_offset(exprt.AddressOfNames, h);
- const std::size_t fixed_ordinals_addr = get_file_offset(exprt.AddressOfNameOrdinals, h);
- const std::size_t fixed_functions_addr = get_file_offset(exprt.AddressOfFunctions, h);
-
- ret.reserve(exported_symbols);
- boost::dll::detail::DWORD_ ptr;
- boost::dll::detail::WORD_ ordinal;
- std::string symbol_name;
- for (std::size_t i = 0;i < exported_symbols;++i) {
- // getting ordinal
- f_.seekg(fixed_ordinals_addr + i * sizeof(ordinal));
- read_raw(ordinal);
-
- // getting function addr
- f_.seekg(fixed_functions_addr + ordinal * sizeof(ptr));
- read_raw(ptr);
- ptr = static_cast<boost::dll::detail::DWORD_>( get_file_offset(ptr, h) );
-
- if (ptr >= section_end_addr || ptr < section_begin_addr) {
- continue;
- }
-
- f_.seekg(fixed_names_addr + i * sizeof(ptr));
- read_raw(ptr);
- f_.seekg(get_file_offset(ptr, h));
- getline(f_, symbol_name, '\0');
- ret.push_back(symbol_name);
- }
-
- return ret;
- }
-
- // a test method to get dependents modules,
- // who my plugin imports (1st level only)
- /*
- e.g. for myself I get:
- KERNEL32.dll
- MSVCP110D.dll
- boost_system-vc-mt-gd-1_56.dll
- MSVCR110D.dll
- */
- /*
- std::vector<std::string> depend_of(boost::system::error_code &ec) BOOST_NOEXCEPT {
- std::vector<std::string> ret;
-
- IMAGE_DOS_HEADER* image_dos_header = (IMAGE_DOS_HEADER*)native();
- if(!image_dos_header) {
- // ERROR_BAD_EXE_FORMAT
- ec = boost::system::error_code(
- boost::system::errc::executable_format_error,
- boost::system::generic_category()
- );
-
- return ret;
- }
-
- IMAGE_OPTIONAL_HEADER* image_optional_header = (IMAGE_OPTIONAL_HEADER*)((boost::dll::detail::BYTE_*)native() + image_dos_header->e_lfanew + 24);
- if(!image_optional_header) {
- // ERROR_BAD_EXE_FORMAT
- ec = boost::system::error_code(
- boost::system::errc::executable_format_error,
- boost::system::generic_category()
- );
-
- return ret;
- }
-
- IMAGE_IMPORT_DESCRIPTOR* image_import_descriptor = (IMAGE_IMPORT_DESCRIPTOR*)((boost::dll::detail::BYTE_*)native() + image_optional_header->DataDirectory[IMAGE_DIRECTORY_ENTRY_IMPORT].VirtualAddress);
- if(!image_import_descriptor) {
- // ERROR_BAD_EXE_FORMAT
- ec = boost::system::error_code(
- boost::system::errc::executable_format_error,
- boost::system::generic_category()
- );
-
- return ret;
- }
-
- while(image_import_descriptor->FirstThunk) {
- std::string module_name = reinterpret_cast<char*>((boost::dll::detail::BYTE_*)native() + image_import_descriptor->Name);
-
- if(module_name.size()) {
- ret.push_back(module_name);
- }
-
- image_import_descriptor++;
- }
-
- return ret;
- }
-*/
-};
-
-typedef pe_info<boost::dll::detail::DWORD_> pe_info32;
-typedef pe_info<boost::dll::detail::ULONGLONG_> pe_info64;
-
-}}} // namespace boost::dll::detail
-
-#endif // BOOST_DLL_DETAIL_WINDOWS_PE_INFO_HPP
diff --git a/include/boost/dll/detail/posix/path_from_handle.hpp b/include/boost/dll/detail/posix/path_from_handle.hpp
deleted file mode 100644
index aeebc249..00000000
--- a/include/boost/dll/detail/posix/path_from_handle.hpp
+++ /dev/null
@@ -1,129 +0,0 @@
-// Copyright 2014-2015 Renato Tegon Forti, Antony Polukhin.
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_DLL_DETAIL_POSIX_PATH_FROM_HANDLE_HPP
-#define BOOST_DLL_DETAIL_POSIX_PATH_FROM_HANDLE_HPP
-
-#include <boost/config.hpp>
-#include <boost/dll/detail/system_error.hpp>
-#include <boost/dll/detail/posix/program_location_impl.hpp>
-#include <boost/filesystem/path.hpp>
-#include <boost/predef/os.h>
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-# pragma once
-#endif
-
-// for dlinfo
-#include <dlfcn.h>
-
-#if BOOST_OS_MACOS || BOOST_OS_IOS
-# include <mach-o/dyld.h>
-# include <mach-o/nlist.h>
-# include <cstddef> // for std::ptrdiff_t
-
-namespace boost { namespace dll { namespace detail {
- inline void* strip_handle(void* handle) BOOST_NOEXCEPT {
- return reinterpret_cast<void*>(
- (reinterpret_cast<std::ptrdiff_t>(handle) >> 2) << 2
- );
- }
-
- inline boost::filesystem::path path_from_handle(void* handle, boost::system::error_code &ec) {
- handle = strip_handle(handle);
-
- // Iterate through all images currently in memory
- // https://developer.apple.com/library/mac/documentation/Darwin/Reference/ManPages/man3/dyld.3.html
- const std::size_t count = _dyld_image_count(); // not thread safe: other thread my [un]load images
- for (std::size_t i = 0; i <= count; ++i) {
- // on last iteration `i` is equal to `count` which is out of range, so `_dyld_get_image_name`
- // will return NULL. `dlopen(NULL, RTLD_LAZY)` call will open the current executable.
- const char* image_name = _dyld_get_image_name(i);
- void* probe_handle = dlopen(image_name, RTLD_LAZY);
- dlclose(probe_handle);
-
- // If the handle is the same as what was passed in (modulo mode bits), return this image name
- if (handle == strip_handle(probe_handle)) {
- return image_name;
- }
- }
-
- ec = boost::system::error_code(
- boost::system::errc::bad_file_descriptor,
- boost::system::generic_category()
- );
-
- return boost::filesystem::path();
- }
-
-}}} // namespace boost::dll::detail
-
-#else // #if BOOST_OS_MACOS || BOOST_OS_IOS
-
-#if BOOST_OS_QNX
-// QNX's copy of <elf.h> and <link.h> reside in sys folder
-# include <sys/link.h>
-#else
-# include <link.h> // struct link_map
-#endif
-
-namespace boost { namespace dll { namespace detail {
-
-#if BOOST_OS_ANDROID || BOOST_OS_QNX
- // Android and QNX miss struct link_map. QNX misses ElfW macro, so avoiding it.
- struct link_map {
- void *l_addr; // Base address shared object is loaded at
- char *l_name; // Absolute file name object was found in
- // ... // Ignoring remaning parts of the structure
- };
-#endif // #if BOOST_OS_ANDROID
-
- inline boost::filesystem::path path_from_handle(void* handle, boost::system::error_code &ec) {
- // RTLD_DI_LINKMAP (RTLD_DI_ORIGIN returns only folder and is not suitable for this case)
- // Obtain the Link_map for the handle that is specified.
- // The p argument points to a Link_map pointer (Link_map
- // **p). The actual storage for the Link_map structure is
- // maintained by ld.so.1.
- //
- // Unfortunately we can not use `dlinfo(handle, RTLD_DI_LINKMAP, &link_map) < 0`
- // because it is not supported on MacOS X 10.3, NetBSD 3.0, OpenBSD 3.8, AIX 5.1,
- // HP-UX 11, IRIX 6.5, OSF/1 5.1, Cygwin, mingw, Interix 3.5, BeOS.
- // Fortunately investigating the sources of open source projects brought the understanding, that
- // `handle` is just a `struct link_map*` that contains full library name.
-
- const struct link_map* link_map = 0;
-#if BOOST_OS_BSD_FREE
- // FreeBSD has it's own logic http://code.metager.de/source/xref/freebsd/libexec/rtld-elf/rtld.c
- // Fortunately it has the dlinfo call.
- if (dlinfo(handle, RTLD_DI_LINKMAP, &link_map) < 0) {
- link_map = 0;
- }
-#else
- link_map = static_cast<const struct link_map*>(handle);
-#endif
- if (!link_map) {
- ec = boost::system::error_code(
- boost::system::errc::bad_file_descriptor,
- boost::system::generic_category()
- );
-
- return boost::filesystem::path();
- }
-
- if (!link_map->l_name || *link_map->l_name == '\0') {
- return program_location_impl(ec);
- }
-
- return boost::filesystem::path(link_map->l_name);
- }
-
-}}} // namespace boost::dll::detail
-
-#endif // #if BOOST_OS_MACOS || BOOST_OS_IOS
-
-#endif // BOOST_DLL_DETAIL_POSIX_PATH_FROM_HANDLE_HPP
-
-
diff --git a/include/boost/dll/detail/posix/program_location_impl.hpp b/include/boost/dll/detail/posix/program_location_impl.hpp
deleted file mode 100644
index f27641f8..00000000
--- a/include/boost/dll/detail/posix/program_location_impl.hpp
+++ /dev/null
@@ -1,113 +0,0 @@
-// Copyright 2014 Renato Tegon Forti, Antony Polukhin.
-// Copyright 2015 Antony Polukhin.
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_DLL_DETAIL_POSIX_PROGRAM_LOCATION_IMPL_HPP
-#define BOOST_DLL_DETAIL_POSIX_PROGRAM_LOCATION_IMPL_HPP
-
-#include <boost/config.hpp>
-#include <boost/dll/detail/system_error.hpp>
-#include <boost/filesystem/path.hpp>
-#include <boost/predef/os.h>
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-# pragma once
-#endif
-
-#if BOOST_OS_MACOS || BOOST_OS_IOS
-
-#include <mach-o/dyld.h>
-
-namespace boost { namespace dll { namespace detail {
- inline boost::filesystem::path program_location_impl(boost::system::error_code &ec) {
- char path[1024];
- uint32_t size = sizeof(path);
- if (_NSGetExecutablePath(path, &size) == 0)
- return boost::filesystem::path(path);
-
- char *p = new char[size];
- if (_NSGetExecutablePath(p, &size) != 0) {
- ec = boost::system::error_code(
- boost::system::errc::bad_file_descriptor, // TODO: better error report
- boost::system::generic_category()
- );
- }
-
- boost::filesystem::path ret(p);
- delete[] p;
- return ret;
- }
-}}} // namespace boost::dll::detail
-
-#elif BOOST_OS_SOLARIS
-
-#include <stdlib.h>
-namespace boost { namespace dll { namespace detail {
- inline boost::filesystem::path program_location_impl(boost::system::error_code& ec) {
- ec.clear();
- return boost::filesystem::path(getexecname());
- }
-}}} // namespace boost::dll::detail
-
-#elif BOOST_OS_BSD_FREE
-
-#include <sys/types.h>
-#include <sys/sysctl.h>
-#include <stdlib.h>
-
-namespace boost { namespace dll { namespace detail {
- inline boost::filesystem::path program_location_impl(boost::system::error_code& ec) {
- int mib[4];
- mib[0] = CTL_KERN;
- mib[1] = KERN_PROC;
- mib[2] = KERN_PROC_PATHNAME;
- mib[3] = -1;
- char buf[10240];
- size_t cb = sizeof(buf);
- sysctl(mib, 4, buf, &cb, NULL, 0);
-
- ec.clear();
- return boost::filesystem::path(buf);
- }
-}}} // namespace boost::dll::detail
-
-
-
-#elif BOOST_OS_BSD_NET
-
-#include <boost/filesystem/operations.hpp>
-namespace boost { namespace dll { namespace detail {
- inline boost::filesystem::path program_location_impl(boost::system::error_code &ec) {
- return boost::filesystem::read_symlink("/proc/curproc/exe", ec);
- }
-}}} // namespace boost::dll::detail
-
-#elif BOOST_OS_BSD_DRAGONFLY
-
-#include <boost/filesystem/operations.hpp>
-namespace boost { namespace dll { namespace detail {
- inline boost::filesystem::path program_location_impl(boost::system::error_code &ec) {
- return boost::filesystem::read_symlink("/proc/curproc/file", ec);
- }
-}}} // namespace boost::dll::detail
-
-#else // BOOST_OS_LINUX || BOOST_OS_UNIX || BOOST_OS_QNX || BOOST_OS_HPUX || BOOST_OS_ANDROID
-
-#include <boost/filesystem/operations.hpp>
-namespace boost { namespace dll { namespace detail {
- inline boost::filesystem::path program_location_impl(boost::system::error_code &ec) {
- // We can not use
- // boost::dll::detail::path_from_handle(dlopen(NULL, RTLD_LAZY | RTLD_LOCAL), ignore);
- // because such code returns empty path.
-
- return boost::filesystem::read_symlink("/proc/self/exe", ec); // Linux specific
- }
-}}} // namespace boost::dll::detail
-
-#endif
-
-#endif // BOOST_DLL_DETAIL_POSIX_PROGRAM_LOCATION_IMPL_HPP
-
diff --git a/include/boost/dll/detail/posix/shared_library_impl.hpp b/include/boost/dll/detail/posix/shared_library_impl.hpp
deleted file mode 100644
index 8df0ca5c..00000000
--- a/include/boost/dll/detail/posix/shared_library_impl.hpp
+++ /dev/null
@@ -1,197 +0,0 @@
-// Copyright 2014 Renato Tegon Forti, Antony Polukhin.
-// Copyright 2015 Antony Polukhin.
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_DLL_SHARED_LIBRARY_IMPL_HPP
-#define BOOST_DLL_SHARED_LIBRARY_IMPL_HPP
-
-#include <boost/config.hpp>
-#include <boost/dll/shared_library_load_mode.hpp>
-#include <boost/dll/detail/posix/path_from_handle.hpp>
-#include <boost/dll/detail/posix/program_location_impl.hpp>
-
-//#include <boost/move/utility.hpp>
-#include <boost/swap.hpp>
-#include <boost/filesystem/path.hpp>
-#include <boost/filesystem/operations.hpp>
-#include <boost/predef/os.h>
-
-#include <dlfcn.h>
-#include <cstring> // strncmp
-#if !BOOST_OS_MACOS && !BOOST_OS_IOS && !BOOST_OS_QNX
-# include <link.h>
-#elif BOOST_OS_QNX
-// QNX's copy of <elf.h> and <link.h> reside in sys folder
-# include <sys/link.h>
-#endif
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-# pragma once
-#endif
-
-namespace boost { namespace dll { namespace detail {
-
-class shared_library_impl {
-
- BOOST_MOVABLE_BUT_NOT_COPYABLE(shared_library_impl)
-
-public:
- typedef void* native_handle_t;
-
- shared_library_impl() BOOST_NOEXCEPT
- : handle_(NULL)
- {}
-
- ~shared_library_impl() BOOST_NOEXCEPT {
- unload();
- }
-
- shared_library_impl(BOOST_RV_REF(shared_library_impl) sl) BOOST_NOEXCEPT
- : handle_(sl.handle_)
- {
- sl.handle_ = NULL;
- }
-
- shared_library_impl & operator=(BOOST_RV_REF(shared_library_impl) sl) BOOST_NOEXCEPT {
- handle_ = sl.handle_;
- sl.handle_ = NULL;
- return *this;
- }
-
- void load(const boost::filesystem::path &sl, load_mode::type mode, boost::system::error_code &ec) {
- typedef int native_mode_t;
- unload();
-
- // Do not allow opening NULL paths. User must use program_location() instead
- if (sl.empty()) {
- ec = boost::system::error_code(
- boost::system::errc::bad_file_descriptor,
- boost::system::generic_category()
- );
-
- return;
- }
-
- // Fixing modes
- if (!(mode & load_mode::rtld_now)) {
- mode |= load_mode::rtld_lazy;
- }
-
- if (!(mode & load_mode::rtld_global)) {
- mode |= load_mode::rtld_local;
- }
-
- // Trying to open with appended decorations
- if (!!(mode & load_mode::append_decorations)) {
- mode = static_cast<load_mode::type>(
- static_cast<native_mode_t>(mode) & (~static_cast<native_mode_t>(load_mode::append_decorations))
- );
-
- boost::filesystem::path actual_path = (
- std::strncmp(sl.filename().string().c_str(), "lib", 3)
- ? (sl.parent_path() / "lib").native() + sl.filename().native()
- : sl
- );
- actual_path += suffix();
-
- handle_ = dlopen(actual_path.c_str(), static_cast<native_mode_t>(mode));
- if (handle_) {
- return;
- }
- }
-
- // Opening by exactly specified path
- handle_ = dlopen(sl.c_str(), static_cast<native_mode_t>(mode));
- if (handle_) {
- return;
- }
-
- ec = boost::system::error_code(
- boost::system::errc::bad_file_descriptor,
- boost::system::generic_category()
- );
-
- // Maybe user wanted to load the executable itself? Checking...
- // We assume that usually user wants to load a dynamic library not the executable itself, that's why
- // we try this only after traditional load fails.
- boost::system::error_code prog_loc_err;
- boost::filesystem::path loc = boost::dll::detail::program_location_impl(prog_loc_err);
- if (!prog_loc_err && boost::filesystem::equivalent(sl, loc, prog_loc_err) && !prog_loc_err) {
- // As is known the function dlopen() loads the dynamic library file
- // named by the null-terminated string filename and returns an opaque
- // "handle" for the dynamic library. If filename is NULL, then the
- // returned handle is for the main program.
- ec.clear();
- handle_ = dlopen(NULL, static_cast<native_mode_t>(mode));
- if (!handle_) {
- ec = boost::system::error_code(
- boost::system::errc::bad_file_descriptor,
- boost::system::generic_category()
- );
- }
- }
- }
-
- bool is_loaded() const BOOST_NOEXCEPT {
- return (handle_ != 0);
- }
-
- void unload() BOOST_NOEXCEPT {
- if (!is_loaded()) {
- return;
- }
-
- dlclose(handle_);
- handle_ = 0;
- }
-
- void swap(shared_library_impl& rhs) BOOST_NOEXCEPT {
- boost::swap(handle_, rhs.handle_);
- }
-
- boost::filesystem::path full_module_path(boost::system::error_code &ec) const {
- return boost::dll::detail::path_from_handle(handle_, ec);
- }
-
- static boost::filesystem::path suffix() {
- // https://sourceforge.net/p/predef/wiki/OperatingSystems/
-#if BOOST_OS_MACOS || BOOST_OS_IOS
- return ".dylib";
-#else
- return ".so";
-#endif
- }
-
- void* symbol_addr(const char* sb, boost::system::error_code &ec) const BOOST_NOEXCEPT {
- // dlsym - obtain the address of a symbol from a dlopen object
- void* const symbol = dlsym(handle_, sb);
- if (symbol == NULL) {
- ec = boost::system::error_code(
- boost::system::errc::invalid_seek,
- boost::system::generic_category()
- );
- }
-
- // If handle does not refer to a valid object opened by dlopen(),
- // or if the named symbol cannot be found within any of the objects
- // associated with handle, dlsym() shall return NULL.
- // More detailed diagnostic information shall be available through dlerror().
-
- return symbol;
- }
-
- native_handle_t native() const BOOST_NOEXCEPT {
- return handle_;
- }
-
-private:
- native_handle_t handle_;
-};
-
-}}} // boost::dll::detail
-
-#endif // BOOST_DLL_SHARED_LIBRARY_IMPL_HPP
-
diff --git a/include/boost/dll/detail/strip_calling_convention.hpp b/include/boost/dll/detail/strip_calling_convention.hpp
deleted file mode 100644
index 70c642eb..00000000
--- a/include/boost/dll/detail/strip_calling_convention.hpp
+++ /dev/null
@@ -1,140 +0,0 @@
-// Copyright 2015 Antony Polukhin.
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_DLL_DETAIL_STRIP_CALLING_CONVENTION_HPP
-#define BOOST_DLL_DETAIL_STRIP_CALLING_CONVENTION_HPP
-
-#include <boost/config.hpp>
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-# pragma once
-#endif
-
-namespace boost { namespace dll { namespace detail {
-
-template <class T>
-struct strip_calling_convention {
- typedef T type;
-};
-
-#ifdef _MSC_VER
-
-// stripping __fastcall
-
-template <class Ret, class Arg1>
-struct strip_calling_convention<Ret __fastcall (Arg1)> {
- typedef Ret(type)(Arg1);
-};
-
-template <class Ret, class Arg1, class Arg2>
-struct strip_calling_convention<Ret __fastcall (Arg1, Arg2)> {
- typedef Ret(type)(Arg1, Arg2);
-};
-
-template <class Ret, class Arg1, class Arg2, class Arg3>
-struct strip_calling_convention<Ret __fastcall (Arg1, Arg2, Arg3)> {
- typedef Ret(type)(Arg1, Arg2, Arg3);
-};
-
-template <class Ret, class Arg1, class Arg2, class Arg3, class Arg4>
-struct strip_calling_convention<Ret __fastcall (Arg1, Arg2, Arg3, Arg4)> {
- typedef Ret(type)(Arg1, Arg2, Arg3, Arg4);
-};
-
-template <class Ret, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5>
-struct strip_calling_convention<Ret __fastcall (Arg1, Arg2, Arg3, Arg4, Arg5)> {
- typedef Ret(type)(Arg1, Arg2, Arg3, Arg4, Arg5);
-};
-
-template <class Ret, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6>
-struct strip_calling_convention<Ret __fastcall (Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)> {
- typedef Ret(type)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6);
-};
-
-template <class Ret, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7>
-struct strip_calling_convention<Ret __fastcall (Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7)> {
- typedef Ret(type)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7);
-};
-
-template <class Ret, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7, class Arg8>
-struct strip_calling_convention<Ret __fastcall (Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8)> {
- typedef Ret(type)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8);
-};
-
-template <class Ret, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7, class Arg8, class Arg9>
-struct strip_calling_convention<Ret __fastcall (Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9)> {
- typedef Ret(type)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9);
-};
-
-// stripping __stdall
-template <class Ret, class Arg1>
-struct strip_calling_convention<Ret __stdcall (Arg1)> {
- typedef Ret(type)(Arg1);
-};
-
-template <class Ret, class Arg1, class Arg2>
-struct strip_calling_convention<Ret __stdcall (Arg1, Arg2)> {
- typedef Ret(type)(Arg1, Arg2);
-};
-
-template <class Ret, class Arg1, class Arg2, class Arg3>
-struct strip_calling_convention<Ret __stdcall (Arg1, Arg2, Arg3)> {
- typedef Ret(type)(Arg1, Arg2, Arg3);
-};
-
-template <class Ret, class Arg1, class Arg2, class Arg3, class Arg4>
-struct strip_calling_convention<Ret __stdcall (Arg1, Arg2, Arg3, Arg4)> {
- typedef Ret(type)(Arg1, Arg2, Arg3, Arg4);
-};
-
-template <class Ret, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5>
-struct strip_calling_convention<Ret __stdcall (Arg1, Arg2, Arg3, Arg4, Arg5)> {
- typedef Ret(type)(Arg1, Arg2, Arg3, Arg4, Arg5);
-};
-
-template <class Ret, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6>
-struct strip_calling_convention<Ret __stdcall (Arg1, Arg2, Arg3, Arg4, Arg5, Arg6)> {
- typedef Ret(type)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6);
-};
-
-template <class Ret, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7>
-struct strip_calling_convention<Ret __stdcall (Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7)> {
- typedef Ret(type)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7);
-};
-
-template <class Ret, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7, class Arg8>
-struct strip_calling_convention<Ret __stdcall (Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8)> {
- typedef Ret(type)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8);
-};
-
-template <class Ret, class Arg1, class Arg2, class Arg3, class Arg4, class Arg5, class Arg6, class Arg7, class Arg8, class Arg9>
-struct strip_calling_convention<Ret __stdcall (Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9)> {
- typedef Ret(type)(Arg1, Arg2, Arg3, Arg4, Arg5, Arg6, Arg7, Arg8, Arg9);
-};
-
-#ifndef BOOST_NO_CXX11_VARIADIC_TEMPLATES
-
-// Some of the MSVC versions have issues in variadic templates implementation.
-// So we leave previous specializations visible even if variadic templates are allowed
-
-template <class Ret, class... Args>
-struct strip_calling_convention<Ret __fastcall (Args...)> {
- typedef Ret(type)(Args...);
-};
-
-template <class Ret, class... Args>
-struct strip_calling_convention<Ret __stdcall (Args...)> {
- typedef Ret(type)(Args...);
-};
-#endif // #ifndef BOOST_NO_CXX11_VARIADIC_TEMPLATES
-
-#endif // #ifdef _MSC_VER
-
-
-}}} // namespace boost::dll::detail
-
-
-#endif // #ifndef BOOST_DLL_DETAIL_STRIP_CALLING_CONVENTION_HPP
diff --git a/include/boost/dll/detail/system_error.hpp b/include/boost/dll/detail/system_error.hpp
deleted file mode 100644
index 1f4cabf8..00000000
--- a/include/boost/dll/detail/system_error.hpp
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2014 Renato Tegon Forti, Antony Polukhin.
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_DLL_SYSTEM_ERROR_HPP
-#define BOOST_DLL_SYSTEM_ERROR_HPP
-
-#include <boost/config.hpp>
-#include <boost/predef/os.h>
-#include <boost/system/error_code.hpp>
-#include <boost/system/system_error.hpp>
-#include <boost/throw_exception.hpp>
-
-#if !BOOST_OS_WINDOWS
-# include <dlfcn.h>
-#endif
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-# pragma once
-#endif
-
-namespace boost { namespace dll { namespace detail {
-
- inline void report_error(const boost::system::error_code& ec, const char* message) {
-#if !BOOST_OS_WINDOWS
- const char* const error_txt = dlerror();
- if (error_txt) {
- boost::throw_exception(
- boost::system::system_error(
- ec,
- message + std::string(" (dlerror system message: ") + error_txt + std::string(")")
- )
- );
- }
-#endif
-
- boost::throw_exception(
- boost::system::system_error(
- ec, message
- )
- );
- }
-
-}}} // boost::dll::detail
-
-#endif // BOOST_DLL_SYSTEM_ERROR_HPP
-
diff --git a/include/boost/dll/detail/windows/path_from_handle.hpp b/include/boost/dll/detail/windows/path_from_handle.hpp
deleted file mode 100644
index 0372b756..00000000
--- a/include/boost/dll/detail/windows/path_from_handle.hpp
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright 2014 Renato Tegon Forti, Antony Polukhin.
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_DLL_DETAIL_WINDOWS_PATH_FROM_HANDLE_HPP
-#define BOOST_DLL_DETAIL_WINDOWS_PATH_FROM_HANDLE_HPP
-
-#include <boost/config.hpp>
-#include <boost/dll/detail/system_error.hpp>
-#include <boost/detail/winapi/dll.hpp>
-#include <boost/detail/winapi/GetLastError.hpp>
-#include <boost/filesystem/path.hpp>
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-# pragma once
-#endif
-
-namespace boost { namespace dll { namespace detail {
-
-
- static inline boost::system::error_code last_error_code() BOOST_NOEXCEPT {
- return boost::system::error_code(
- boost::detail::winapi::GetLastError(),
- boost::system::system_category()
- );
- }
-
- inline boost::filesystem::path path_from_handle(boost::detail::winapi::HMODULE_ handle, boost::system::error_code &ec) {
- boost::filesystem::path ret;
-
- BOOST_STATIC_CONSTANT(boost::detail::winapi::DWORD_, ERROR_INSUFFICIENT_BUFFER_ = 0x7A);
- BOOST_STATIC_CONSTANT(boost::detail::winapi::DWORD_, DEFAULT_PATH_SIZE_ = 260);
-
- // A handle to the loaded module whose path is being requested.
- // If this parameter is NULL, GetModuleFileName retrieves the path of the
- // executable file of the current process.
- boost::detail::winapi::WCHAR_ path_hldr[DEFAULT_PATH_SIZE_];
- boost::detail::winapi::LPWSTR_ path = path_hldr;
- boost::detail::winapi::GetModuleFileNameW(handle, path, DEFAULT_PATH_SIZE_);
- ec = last_error_code();
-
- // In case of ERROR_INSUFFICIENT_BUFFER_ trying to get buffer big enough to store the whole path
- for (unsigned i = 2; i < 1025 && ec.value() == ERROR_INSUFFICIENT_BUFFER_; i *= 2) {
- path = new boost::detail::winapi::WCHAR_[DEFAULT_PATH_SIZE_ * i];
-
- boost::detail::winapi::GetModuleFileNameW(handle, path, DEFAULT_PATH_SIZE_ * i);
- ec = last_error_code();
-
- if (ec) {
- delete[] path;
- }
- }
-
- if (ec) {
- // Error other than ERROR_INSUFFICIENT_BUFFER_ occurred or failed to allocate buffer big enough
- return boost::filesystem::path();
- }
-
- ret = path;
- if (path != path_hldr) {
- delete[] path;
- }
-
- return ret;
- }
-
-}}} // namespace boost::dll::detail
-
-#endif // BOOST_DLL_DETAIL_WINDOWS_PATH_FROM_HANDLE_HPP
-
diff --git a/include/boost/dll/detail/windows/shared_library_impl.hpp b/include/boost/dll/detail/windows/shared_library_impl.hpp
deleted file mode 100644
index d25d3364..00000000
--- a/include/boost/dll/detail/windows/shared_library_impl.hpp
+++ /dev/null
@@ -1,167 +0,0 @@
-// Copyright 2014 Renato Tegon Forti, Antony Polukhin.
-// Copyright 2015 Antony Polukhin.
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_DLL_SHARED_LIBRARY_IMPL_HPP
-#define BOOST_DLL_SHARED_LIBRARY_IMPL_HPP
-
-#include <boost/config.hpp>
-#include <boost/dll/shared_library_load_mode.hpp>
-#include <boost/dll/detail/aggressive_ptr_cast.hpp>
-#include <boost/dll/detail/system_error.hpp>
-#include <boost/dll/detail/windows/path_from_handle.hpp>
-
-//#include <boost/move/utility.hpp>
-#include <boost/swap.hpp>
-#include <boost/filesystem/path.hpp>
-
-#include <boost/detail/winapi/dll.hpp>
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-# pragma once
-#endif
-
-namespace boost { namespace dll { namespace detail {
-
-class shared_library_impl {
- BOOST_MOVABLE_BUT_NOT_COPYABLE(shared_library_impl)
-
-public:
- typedef boost::detail::winapi::HMODULE_ native_handle_t;
-
- shared_library_impl() BOOST_NOEXCEPT
- : handle_(NULL)
- {}
-
- ~shared_library_impl() BOOST_NOEXCEPT {
- unload();
- }
-
- shared_library_impl(BOOST_RV_REF(shared_library_impl) sl) BOOST_NOEXCEPT
- : handle_(sl.handle_)
- {
- sl.handle_ = NULL;
- }
-
- shared_library_impl & operator=(BOOST_RV_REF(shared_library_impl) sl) BOOST_NOEXCEPT {
- handle_ = sl.handle_;
- sl.handle_ = NULL;
- return *this;
- }
-
- void load(const boost::filesystem::path &sl, load_mode::type mode, boost::system::error_code &ec) {
- typedef boost::detail::winapi::DWORD_ native_mode_t;
- unload();
-
- // Trying to open with appended decorations
- if (!!(mode & load_mode::append_decorations)) {
- mode = static_cast<load_mode::type>(
- static_cast<native_mode_t>(mode) & (~static_cast<native_mode_t>(load_mode::append_decorations))
- );
-
- handle_ = boost::detail::winapi::LoadLibraryExW((sl.native() + L".dll").c_str(), 0, static_cast<native_mode_t>(mode));
- if (!handle_) {
- // MinGW loves 'lib' prefix and puts it even on Windows platform
- handle_ = boost::detail::winapi::LoadLibraryExW(
- ((sl.parent_path() / L"lib").native() + sl.filename().native() + L".dll").c_str(),
- 0,
- static_cast<native_mode_t>(mode)
- );
- }
-
- if (handle_) {
- return;
- }
- }
-
- // From MSDN: If the string specifies a module name without a path and the
- // file name extension is omitted, the function appends the default library
- // extension .dll to the module name.
- //
- // From experiments: Default library extension appended to the module name even if
- // we have some path. So we do not check for path, only for extension. We can not be sure that
- // such behavior remain across all platforms, so we add L"." by hand.
- if (sl.has_extension()) {
- handle_ = boost::detail::winapi::LoadLibraryExW(sl.c_str(), 0, static_cast<native_mode_t>(mode));
- } else {
- handle_ = boost::detail::winapi::LoadLibraryExW((sl.native() + L".").c_str(), 0, static_cast<native_mode_t>(mode));
- }
-
- // LoadLibraryExW method is capable of self loading from program_location() path. No special actions
- // must be taken to allow self loading.
-
- if (!handle_) {
- ec = boost::dll::detail::last_error_code();
- }
- }
-
- bool is_loaded() const BOOST_NOEXCEPT {
- return (handle_ != 0);
- }
-
- void unload() BOOST_NOEXCEPT {
- if (handle_) {
- boost::detail::winapi::FreeLibrary(handle_);
- handle_ = 0;
- }
- }
-
- void swap(shared_library_impl& rhs) BOOST_NOEXCEPT {
- boost::swap(handle_, rhs.handle_);
- }
-
- boost::filesystem::path full_module_path(boost::system::error_code &ec) const {
- return boost::dll::detail::path_from_handle(handle_, ec);
- }
-
- static boost::filesystem::path suffix() {
- return L".dll";
- }
-
- void* symbol_addr(const char* sb, boost::system::error_code &ec) const BOOST_NOEXCEPT {
- if (is_resource()) {
- // `GetProcAddress` could not be called for libraries loaded with
- // `LOAD_LIBRARY_AS_DATAFILE`, `LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE`
- // or `LOAD_LIBRARY_AS_IMAGE_RESOURCE`.
- ec = boost::system::error_code(
- boost::system::errc::operation_not_supported,
- boost::system::generic_category()
- );
-
- return NULL;
- }
-
- // Judging by the documentation of GetProcAddress
- // there is no version for UNICODE, because
- // names of functions are stored in narrow characters.
- void* const symbol = boost::dll::detail::aggressive_ptr_cast<void*>(
- boost::detail::winapi::GetProcAddress(handle_, sb)
- );
- if (symbol == NULL) {
- ec = boost::dll::detail::last_error_code();
- }
-
- return symbol;
- }
-
- native_handle_t native() const BOOST_NOEXCEPT {
- return handle_;
- }
-
-private:
- bool is_resource() const BOOST_NOEXCEPT {
- return false; /*!!(
- reinterpret_cast<boost::detail::winapi::ULONG_PTR_>(handle_) & static_cast<boost::detail::winapi::ULONG_PTR_>(3)
- );*/
- }
-
- native_handle_t handle_;
-};
-
-}}} // boost::dll::detail
-
-#endif // BOOST_DLL_SHARED_LIBRARY_IMPL_HPP
-
diff --git a/include/boost/dll/detail/x_info_interface.hpp b/include/boost/dll/detail/x_info_interface.hpp
deleted file mode 100644
index e53214e1..00000000
--- a/include/boost/dll/detail/x_info_interface.hpp
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2014 Renato Tegon Forti, Antony Polukhin.
-// Copyright 2015 Antony Polukhin.
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_DLL_DETAIL_X_INFO_INTERFACE_HPP
-#define BOOST_DLL_DETAIL_X_INFO_INTERFACE_HPP
-
-#include <boost/config.hpp>
-#ifdef BOOST_HAS_PRAGMA_ONCE
-# pragma once
-#endif
-
-#include <string>
-#include <vector>
-
-namespace boost { namespace dll { namespace detail {
-
-class x_info_interface {
-public:
- virtual std::vector<std::string> sections() = 0;
- virtual std::vector<std::string> symbols() = 0;
- virtual std::vector<std::string> symbols(const char* section_name) = 0;
-
- virtual ~x_info_interface() BOOST_NOEXCEPT {}
-};
-
-}}} // namespace boost::dll::detail
-
-#endif // BOOST_DLL_DETAIL_X_INFO_INTERFACE_HPP
diff --git a/include/boost/dll/import.hpp b/include/boost/dll/import.hpp
deleted file mode 100644
index f65d353a..00000000
--- a/include/boost/dll/import.hpp
+++ /dev/null
@@ -1,227 +0,0 @@
-// Copyright 2014 Renato Tegon Forti, Antony Polukhin.
-// Copyright 2015 Antony Polukhin.
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_DLL_IMPORT_HPP
-#define BOOST_DLL_IMPORT_HPP
-
-#include <boost/config.hpp>
-#include <boost/utility/enable_if.hpp>
-#include <boost/type_traits/is_object.hpp>
-#include <boost/function.hpp>
-#include <boost/make_shared.hpp>
-#include <boost/dll/shared_library.hpp>
-#include <boost/dll/detail/strip_calling_convention.hpp>
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-# pragma once
-#endif
-
-/// \file boost/dll/import.hpp
-/// \brief Contains all the boost::dll::import* reference counting
-/// functions that hold a shared pointer to the instance of
-/// boost::dll::shared_library.
-
-namespace boost { namespace dll {
-
-namespace detail {
- template <class T>
- class refc_function {
- SWIFTEN_SHRPTR_NAMESPACE::shared_ptr<shared_library> lib_;
- T* func_ptr_;
-
- public:
- refc_function(const SWIFTEN_SHRPTR_NAMESPACE::shared_ptr<shared_library>& lib, T* func_ptr) BOOST_NOEXCEPT
- : lib_(lib)
- , func_ptr_(func_ptr)
- {}
-
- operator T*() const BOOST_NOEXCEPT {
- return func_ptr_;
- }
- };
-
- template <class T, class = void>
- struct import_type;
-
- template <class T>
- struct import_type<T, typename boost::disable_if<boost::is_object<T> >::type> {
- typedef boost::dll::detail::refc_function<T> base_type;
- typedef boost::function<
- typename boost::dll::detail::strip_calling_convention<T>::type
- > type;
- };
-
- template <class T>
- struct import_type<T, typename boost::enable_if<boost::is_object<T> >::type> {
- typedef SWIFTEN_SHRPTR_NAMESPACE::shared_ptr<T> base_type;
- typedef SWIFTEN_SHRPTR_NAMESPACE::shared_ptr<T> type;
- };
-} // namespace detail
-
-
-#ifndef BOOST_DLL_DOXYGEN
-# define BOOST_DLL_IMPORT_RESULT_TYPE inline typename boost::dll::detail::import_type<T>::type
-#endif
-
-
-/*!
-* Returns boost::function<T> or SWIFTEN_SHRPTR_NAMESPACE::shared_ptr<T> that holds an imported function or variable
-* from the loaded library and refcounts usage
-* of the loaded shared library, so that it won't get unload until all copies of return value
-* are not destroyed.
-*
-* This call will succeed if call to \forcedlink{shared_library}`::has(const char* )`
-* function with the same symbol name returned `true`.
-*
-* For importing symbols by \b alias names use \forcedlink{import_alias} method.
-*
-* \b Examples:
-* \code
-* boost::function<int(int)> f = import<int(int)>(
-* SWIFTEN_SHRPTR_NAMESPACE::make_shared<shared_library>("test_lib.so"),
-* "integer_func_name"
-* );
-* \endcode
-*
-* \code
-* boost::function<int(int)> f = import<int(int)>("test_lib.so", "integer_func_name");
-* \endcode
-*
-* \code
-* SWIFTEN_SHRPTR_NAMESPACE::shared_ptr<int> i = import<int>("test_lib.so", "integer_name");
-* \endcode
-*
-* \b Template \b parameter \b T: Type of the symbol that we are going to import. Must be explicitly specified.
-*
-* \param lib Path or shared pointer to library to load function from.
-* \param name Null-terminated C or C++ mangled name of the function to import. Can handle std::string, char*, const char*.
-* \param mode An mode that will be used on library load.
-*
-* \return boost::function<T> if T is a function type, or SWIFTEN_SHRPTR_NAMESPACE::shared_ptr<T> if T is an object type.
-*
-* \throw boost::system::system_error if symbol does not exist or if the DLL/DSO was not loaded.
-* Overload that accepts path also throws std::bad_alloc in case of insufficient memory.
-*/
-template <class T>
-BOOST_DLL_IMPORT_RESULT_TYPE import(const boost::filesystem::path& lib, const char* name,
- load_mode::type mode = load_mode::default_mode);
-
-//! \overload boost::dll::import(const boost::filesystem::path& lib, const char* name, load_mode::type mode)
-template <class T>
-BOOST_DLL_IMPORT_RESULT_TYPE import(const boost::filesystem::path& lib, const std::string& name,
- load_mode::type mode = load_mode::default_mode)
-{
- return boost::dll::import<T>(
- SWIFTEN_SHRPTR_NAMESPACE::make_shared<boost::dll::shared_library>(lib, mode),
- name.c_str()
- );
-}
-
-//! \overload boost::dll::import(const boost::filesystem::path& lib, const char* name, load_mode::type mode)
-template <class T>
-BOOST_DLL_IMPORT_RESULT_TYPE import(const SWIFTEN_SHRPTR_NAMESPACE::shared_ptr<shared_library>& lib, const char* name) {
- typedef typename boost::dll::detail::import_type<T>::base_type type;
- return type(lib, &lib->get<T>(name));
-}
-
-//! \overload boost::dll::import(const boost::filesystem::path& lib, const char* name, load_mode::type mode)
-template <class T>
-BOOST_DLL_IMPORT_RESULT_TYPE import(const SWIFTEN_SHRPTR_NAMESPACE::shared_ptr<shared_library>& lib, const std::string& name) {
- return boost::dll::import<T>(lib, name.c_str());
-}
-
-template <class T>
-BOOST_DLL_IMPORT_RESULT_TYPE import(const boost::filesystem::path& lib, const char* name, load_mode::type mode) {
- return boost::dll::import<T>(
- SWIFTEN_SHRPTR_NAMESPACE::make_shared<boost::dll::shared_library>(lib, mode),
- name
- );
-}
-
-
-
-
-/*!
-* Returns boost::function<T> or SWIFTEN_SHRPTR_NAMESPACE::shared_ptr<T> that holds an imported function or variable
-* from the loaded library and refcounts usage
-* of the loaded shared library, so that it won't get unload until all copies of return value
-* are not destroyed.
-*
-* This call will succeed if call to \forcedlink{shared_library}`::has(const char* )`
-* function with the same symbol name returned `true`.
-*
-* For importing symbols by \b non \b alias names use \forcedlink{import} method.
-*
-* \b Examples:
-* \code
-* boost::function<int(int)> f = import_alias<int(int)>(
-* SWIFTEN_SHRPTR_NAMESPACE::make_shared<shared_library>("test_lib.so"),
-* "integer_func_alias_name"
-* );
-* \endcode
-*
-* \code
-* boost::function<int(int)> f = import_alias<int(int)>("test_lib.so", "integer_func_alias_name");
-* \endcode
-*
-* \code
-* SWIFTEN_SHRPTR_NAMESPACE::shared_ptr<int> i = import_alias<int>("test_lib.so", "integer_alias_name");
-* \endcode
-*
-* \b Template \b parameter \b T: Type of the symbol alias that we are going to import. Must be explicitly specified.
-*
-* \param lib Path or shared pointer to library to load function from.
-* \param name Null-terminated C or C++ mangled name of the function or variable to import. Can handle std::string, char*, const char*.
-* \param mode An mode that will be used on library load.
-*
-* \return boost::function<T> if T is a function type, or SWIFTEN_SHRPTR_NAMESPACE::shared_ptr<T> if T is an object type.
-*
-* \throw boost::system::system_error if symbol does not exist or if the DLL/DSO was not loaded.
-* Overload that accepts path also throws std::bad_alloc in case of insufficient memory.
-*/
-template <class T>
-BOOST_DLL_IMPORT_RESULT_TYPE import_alias(const boost::filesystem::path& lib, const char* name,
- load_mode::type mode = load_mode::default_mode);
-
-//! \overload boost::dll::import_alias(const boost::filesystem::path& lib, const char* name, load_mode::type mode)
-template <class T>
-BOOST_DLL_IMPORT_RESULT_TYPE import_alias(const boost::filesystem::path& lib, const std::string& name,
- load_mode::type mode = load_mode::default_mode)
-{
- return boost::dll::import_alias<T>(
- SWIFTEN_SHRPTR_NAMESPACE::make_shared<boost::dll::shared_library>(lib, mode),
- name.c_str()
- );
-}
-
-//! \overload boost::dll::import_alias(const boost::filesystem::path& lib, const char* name, load_mode::type mode)
-template <class T>
-BOOST_DLL_IMPORT_RESULT_TYPE import_alias(const SWIFTEN_SHRPTR_NAMESPACE::shared_ptr<shared_library>& lib, const std::string& name) {
- return boost::dll::import_alias<T>(lib, name.c_str());
-}
-
-//! \overload boost::dll::import_alias(const boost::filesystem::path& lib, const char* name, load_mode::type mode)
-template <class T>
-BOOST_DLL_IMPORT_RESULT_TYPE import_alias(const SWIFTEN_SHRPTR_NAMESPACE::shared_ptr<shared_library>& lib, const char* name) {
- typedef typename boost::dll::detail::import_type<T>::base_type type;
- return type(lib, lib->get<T*>(name));
-}
-
-template <class T>
-BOOST_DLL_IMPORT_RESULT_TYPE import_alias(const boost::filesystem::path& lib, const char* name, load_mode::type mode) {
- return boost::dll::import_alias<T>(
- SWIFTEN_SHRPTR_NAMESPACE::make_shared<boost::dll::shared_library>(lib, mode),
- name
- );
-}
-#undef BOOST_DLL_IMPORT_RESULT_TYPE
-
-
-}} // boost::dll
-
-#endif // BOOST_DLL_IMPORT_HPP
-
diff --git a/include/boost/dll/library_info.hpp b/include/boost/dll/library_info.hpp
deleted file mode 100644
index 4666a163..00000000
--- a/include/boost/dll/library_info.hpp
+++ /dev/null
@@ -1,181 +0,0 @@
-// Copyright 2014 Renato Tegon Forti, Antony Polukhin.
-// Copyright 2015 Antony Polukhin.
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_DLL_LIBRARY_INFO_HPP
-#define BOOST_DLL_LIBRARY_INFO_HPP
-
-#include <boost/config.hpp>
-#include <boost/mpl/max_element.hpp>
-#include <boost/mpl/vector_c.hpp>
-#include <boost/aligned_storage.hpp>
-#include <boost/noncopyable.hpp>
-#include <boost/predef/os.h>
-#include <boost/predef/architecture.h>
-#include <boost/type_traits/integral_constant.hpp>
-
-#include <boost/dll/detail/pe_info.hpp>
-#include <boost/dll/detail/elf_info.hpp>
-#include <boost/dll/detail/macho_info.hpp>
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-# pragma once
-#endif
-
-/// \file boost/dll/library_info.hpp
-/// \brief Contains only the boost::dll::library_info class that is capable of
-/// extracting different information from binaries.
-
-namespace boost { namespace dll {
-
-/*!
-* \brief Class that is capable of extracting different information from a library or binary file.
-* Currently understands ELF, MACH-O and PE formats on all the platforms.
-*/
-class library_info: private boost::noncopyable {
-private:
- boost::filesystem::ifstream f_;
-
- boost::aligned_storage< // making my own std::aligned_union from scratch. TODO: move to TypeTraits
- boost::mpl::deref<
- boost::mpl::max_element<
- boost::mpl::vector_c<std::size_t,
- sizeof(boost::dll::detail::elf_info32),
- sizeof(boost::dll::detail::elf_info64),
- sizeof(boost::dll::detail::pe_info32),
- sizeof(boost::dll::detail::pe_info64),
- sizeof(boost::dll::detail::macho_info32),
- sizeof(boost::dll::detail::macho_info64)
- >
- >::type
- >::type::value
- >::type impl_;
-
- /// @cond
- boost::dll::detail::x_info_interface& impl() BOOST_NOEXCEPT {
- return *reinterpret_cast<boost::dll::detail::x_info_interface*>(impl_.address());
- }
-
- inline static void throw_if_in_32bit_impl(boost::true_type /* is_32bit_platform */) {
- boost::throw_exception(std::runtime_error("Not native format: 64bit binary"));
- }
-
- inline static void throw_if_in_32bit_impl(boost::false_type /* is_32bit_platform */) BOOST_NOEXCEPT {}
-
-
- inline static void throw_if_in_32bit() {
- throw_if_in_32bit_impl( boost::integral_constant<bool, (sizeof(void*) == 4)>() );
- }
-
- static void throw_if_in_windows() {
-#if BOOST_OS_WINDOWS
- boost::throw_exception(std::runtime_error("Not native format: not a PE binary"));
-#endif
- }
-
- static void throw_if_in_linux() {
-#if !BOOST_OS_WINDOWS && !BOOST_OS_MACOS && !BOOST_OS_IOS
- boost::throw_exception(std::runtime_error("Not native format: not an ELF binary"));
-#endif
- }
-
- static void throw_if_in_macos() {
-#if BOOST_OS_MACOS || BOOST_OS_IOS
- boost::throw_exception(std::runtime_error("Not native format: not an Mach-O binary"));
-#endif
- }
-
- void init(bool throw_if_not_native) {
-
- if (boost::dll::detail::elf_info32::parsing_supported(f_)) {
- if (throw_if_not_native) { throw_if_in_windows(); throw_if_in_macos(); }
-
- new (impl_.address()) boost::dll::detail::elf_info32(f_);
- } else if (boost::dll::detail::elf_info64::parsing_supported(f_)) {
- if (throw_if_not_native) { throw_if_in_windows(); throw_if_in_macos(); throw_if_in_32bit(); }
-
- new (impl_.address()) boost::dll::detail::elf_info64(f_);
- } else if (boost::dll::detail::pe_info32::parsing_supported(f_)) {
- if (throw_if_not_native) { throw_if_in_linux(); throw_if_in_macos(); }
-
- new (impl_.address()) boost::dll::detail::pe_info32(f_);
- } else if (boost::dll::detail::pe_info64::parsing_supported(f_)) {
- if (throw_if_not_native) { throw_if_in_linux(); throw_if_in_macos(); throw_if_in_32bit(); }
-
- new (impl_.address()) boost::dll::detail::pe_info64(f_);
- } else if (boost::dll::detail::macho_info32::parsing_supported(f_)) {
- if (throw_if_not_native) { throw_if_in_linux(); throw_if_in_windows(); }
-
- new (impl_.address()) boost::dll::detail::macho_info32(f_);
- } else if (boost::dll::detail::macho_info64::parsing_supported(f_)) {
- if (throw_if_not_native) { throw_if_in_linux(); throw_if_in_windows(); throw_if_in_32bit(); }
-
- new (impl_.address()) boost::dll::detail::macho_info64(f_);
- } else {
- boost::throw_exception(std::runtime_error("Unsupported binary format"));
- }
- }
- /// @endcond
-
-public:
- /*!
- * Opens file with specified path and prepares for information extraction.
- * \param library_path Path to the binary file from which the info must be extracted.
- * \param throw_if_not_native_format Throw an exception if this file format is not
- * supported by OS.
- */
- explicit library_info(const boost::filesystem::path& library_path, bool throw_if_not_native_format = true)
- : f_(library_path, std::ios_base::in | std::ios_base::binary)
- , impl_()
- {
- f_.exceptions(
- boost::filesystem::ifstream::failbit
- | boost::filesystem::ifstream::badbit
- | boost::filesystem::ifstream::eofbit
- );
-
- init(throw_if_not_native_format);
- }
-
- /*!
- * \return List of sections that exist in binary file.
- */
- std::vector<std::string> sections() {
- return impl().sections();
- }
-
- /*!
- * \return List of all the exportable symbols from all the sections that exist in binary file.
- */
- std::vector<std::string> symbols() {
- return impl().symbols();
- }
-
- /*!
- * \param section_name Name of the section from which symbol names must be returned.
- * \return List of symbols from the specified section.
- */
- std::vector<std::string> symbols(const char* section_name) {
- return impl().symbols(section_name);
- }
-
-
- //! \overload std::vector<std::string> symbols(const char* section_name)
- std::vector<std::string> symbols(const std::string& section_name) {
- return impl().symbols(section_name.c_str());
- }
-
- /*!
- * \throw Nothing.
- */
- ~library_info() BOOST_NOEXCEPT {
- typedef boost::dll::detail::x_info_interface T;
- impl().~T();
- }
-};
-
-}} // namespace boost::dll
-#endif // BOOST_DLL_LIBRARY_INFO_HPP
diff --git a/include/boost/dll/runtime_symbol_info.hpp b/include/boost/dll/runtime_symbol_info.hpp
deleted file mode 100644
index 58dc467a..00000000
--- a/include/boost/dll/runtime_symbol_info.hpp
+++ /dev/null
@@ -1,182 +0,0 @@
-// Copyright 2014 Renato Tegon Forti, Antony Polukhin.
-// Copyright 2015 Antony Polukhin.
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_DLL_RUNTIME_SYMBOL_INFO_HPP
-#define BOOST_DLL_RUNTIME_SYMBOL_INFO_HPP
-
-#include <boost/config.hpp>
-#include <boost/predef/os.h>
-#include <boost/dll/detail/aggressive_ptr_cast.hpp>
-#if BOOST_OS_WINDOWS
-# include <boost/detail/winapi/dll.hpp>
-# include <boost/dll/detail/windows/path_from_handle.hpp>
-#else
-# include <dlfcn.h>
-# include <boost/dll/detail/posix/program_location_impl.hpp>
-#endif
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-# pragma once
-#endif
-
-/// \file boost/dll/runtime_symbol_info.hpp
-/// \brief Provides methods for getting acceptable by boost::dll::shared_library location of symbol, source line or program.
-namespace boost { namespace dll {
-
-namespace detail {
-#if BOOST_OS_WINDOWS
- inline boost::filesystem::path symbol_location_impl(const void* symbol, boost::system::error_code& ec) {
- boost::filesystem::path ret;
-
- boost::detail::winapi::MEMORY_BASIC_INFORMATION_ mbi;
- if (!boost::detail::winapi::VirtualQuery(symbol, &mbi, sizeof(mbi))) {
- ec = boost::dll::detail::last_error_code();
- return ret;
- }
-
- return boost::dll::detail::path_from_handle(reinterpret_cast<boost::detail::winapi::HMODULE_>(mbi.AllocationBase), ec);
- }
-
- inline boost::filesystem::path program_location_impl(boost::system::error_code& ec) {
- return boost::dll::detail::path_from_handle(NULL, ec);
- }
-#else
- inline boost::filesystem::path symbol_location_impl(const void* symbol, boost::system::error_code& ec) {
- boost::filesystem::path ret;
- Dl_info info;
-
- // Some of the libc headers miss `const` in `dladdr(const void*, Dl_info*)`
- const int res = dladdr(const_cast<void*>(symbol), &info);
-
- if (res) {
- ret = info.dli_fname;
- } else {
- ec = boost::system::error_code(
- boost::system::errc::not_supported,
- boost::system::generic_category()
- );
- }
-
- return ret;
- }
-#endif
-} // namespace detail
-
- /*!
- * On success returns full path and name of the binary object that holds symbol.
- * \tparam T Type of the symbol, must not be explicitly specified.
- * \param symbol Symbol which location is to be determined.
- * \param ec Variable that will be set to the result of the operation.
- * \return Path to the binary object that holds symbol or empty path in case error.
- * \throws std::bad_alloc in case of insufficient memory. Overload that does not accept boost::system::error_code also throws boost::system::system_error.
- *
- * \b Examples:
- * \code
- * int var;
- * void foo() {}
- *
- * int main() {
- * dll::symbol_location(var); // returns program location
- * dll::symbol_location(foo); // returns program location
- * dll::symbol_location(std::cerr); // returns location of libstdc++: "/usr/lib/x86_64-linux-gnu/libstdc++.so.6"
- * dll::symbol_location(std::placeholders::_1); // returns location of libstdc++: "/usr/lib/x86_64-linux-gnu/libstdc++.so.6"
- * dll::symbol_location(std::puts); // returns location of libc: "/lib/x86_64-linux-gnu/libc.so.6"
- * }
- * \endcode
- */
- template <class T>
- inline boost::filesystem::path symbol_location(const T& symbol, boost::system::error_code& ec) {
- ec.clear();
- return boost::dll::detail::symbol_location_impl(
- boost::dll::detail::aggressive_ptr_cast<const void*>(boost::addressof(symbol)),
- ec
- );
- }
-
- //! \overload symbol_location(const T& symbol, boost::system::error_code& ec)
- template <class T>
- inline boost::filesystem::path symbol_location(const T& symbol) {
- boost::filesystem::path ret;
- boost::system::error_code ec;
- ret = boost::dll::detail::symbol_location_impl(
- boost::dll::detail::aggressive_ptr_cast<const void*>(boost::addressof(symbol)),
- ec
- );
-
- if (ec) {
- boost::dll::detail::report_error(ec, "boost::dll::symbol_location(const T& symbol) failed");
- }
-
- return ret;
- }
-
- /// @cond
- // We have anonymous namespace here to make sure that `this_line_location()` method is instantiated in
- // current translation module and is not shadowed by instantiations from other modules.
- namespace {
- /// @endcond
-
- /*!
- * On success returns full path and name of the binary object that holds the current line of code
- * (the line in which the `this_line_location()` method was called).
- *
- * \param ec Variable that will be set to the result of the operation.
- * \throws std::bad_alloc in case of insufficient memory. Overload that does not accept boost::system::error_code also throws boost::system::system_error.
- */
- static inline boost::filesystem::path this_line_location(boost::system::error_code& ec) {
- ec.clear();
- return boost::dll::symbol_location<boost::filesystem::path(boost::system::error_code& )>(this_line_location, ec);
- }
-
- //! \overload this_line_location(boost::system::error_code& ec)
- static inline boost::filesystem::path this_line_location() {
- boost::filesystem::path ret;
- boost::system::error_code ec;
- ret = boost::dll::symbol_location<boost::filesystem::path()>(this_line_location, ec);
-
- if (ec) {
- boost::dll::detail::report_error(ec, "boost::dll::this_line_location() failed");
- }
-
- return ret;
- }
-
- /// @cond
- } // anonymous namespace
- /// @endcond
-
- /*!
- * On success returns full path and name of the currently running program (the one which contains the `main()` function).
- *
- * Return value can be used as a parameter for shared_library. See Tutorial "Linking plugin into the executable"
- * for usage example. Flag '-rdynamic' must be used when linking the plugin into the executable
- * on Linux OS.
- *
- * \param ec Variable that will be set to the result of the operation.
- * \throws std::bad_alloc in case of insufficient memory. Overload that does not accept boost::system::error_code also throws boost::system::system_error.
- */
- inline boost::filesystem::path program_location(boost::system::error_code& ec) {
- return boost::dll::detail::program_location_impl(ec);
- }
-
- //! \overload program_location(boost::system::error_code& ec) {
- inline boost::filesystem::path program_location() {
- boost::filesystem::path ret;
- boost::system::error_code ec;
- ret = boost::dll::detail::program_location_impl(ec);
-
- if (ec) {
- boost::dll::detail::report_error(ec, "boost::dll::program_location() failed");
- }
-
- return ret;
- }
-
-}} // namespace boost::dll
-
-#endif // BOOST_DLL_RUNTIME_SYMBOL_INFO_HPP
-
diff --git a/include/boost/dll/shared_library.hpp b/include/boost/dll/shared_library.hpp
deleted file mode 100644
index d292c536..00000000
--- a/include/boost/dll/shared_library.hpp
+++ /dev/null
@@ -1,538 +0,0 @@
-// Copyright 2014 Renato Tegon Forti, Antony Polukhin.
-// Copyright 2015 Antony Polukhin.
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_DLL_SHARED_LIBRARY_HPP
-#define BOOST_DLL_SHARED_LIBRARY_HPP
-
-/// \file boost/dll/shared_library.hpp
-/// \brief Contains the boost::dll::shared_library class, core class for all the
-/// DLL/DSO operations.
-
-// Walkaround for compatibility with boost 1.54
-#include <boost/move/move.hpp>
-
-#include <boost/config.hpp>
-#include <boost/predef/os.h>
-#include <boost/utility/explicit_operator_bool.hpp>
-#include <boost/dll/detail/system_error.hpp>
-#include <boost/dll/detail/aggressive_ptr_cast.hpp>
-
-#if BOOST_OS_WINDOWS
-# include <boost/dll/detail/windows/shared_library_impl.hpp>
-#else
-# include <boost/dll/detail/posix/shared_library_impl.hpp>
-#endif
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-# pragma once
-#endif
-
-namespace boost { namespace dll {
-
-/*!
-* \brief This class can be used to load a
-* Dynamic link libraries (DLL's) or Shared Libraries, also know
-* as dynamic shared objects (DSO's) and get their exported
-* symbols (functions and variables).
-*
-* shared_library instances share reference count to an actual loaded DLL/DSO, so it
-* is safe and memory efficient to have multiple instances of shared_library referencing the same DLL/DSO
-* even if those instances were loaded using different paths (relative + absolute) referencing the same object.
-*
-* On Linux/POSIX link with library "dl". "-fvisibility=hidden" flag is also recommended for use on Linux/POSIX.
-*/
-class shared_library
-/// @cond
- : private boost::dll::detail::shared_library_impl
-/// @endcond
-{
- typedef boost::dll::detail::shared_library_impl base_t;
- BOOST_COPYABLE_AND_MOVABLE(shared_library)
-
-public:
-#ifdef BOOST_DLL_DOXYGEN
- typedef platform_specific native_handle_t;
-#else
- typedef shared_library_impl::native_handle_t native_handle_t;
-#endif
-
- /*!
- * Creates shared_library that does not reference any DLL/DSO.
- *
- * \post this->is_loaded() returns false.
- * \throw Nothing.
- */
- shared_library() BOOST_NOEXCEPT {}
-
- /*!
- * Copy constructor that increments the reference count of an underlying shared library.
- * Same as calling `shared_library(lib.location())`
- *
- * \param lib A shared_library to copy.
- * \post lib == *this
- * \throw boost::system::system_error, std::bad_alloc in case of insufficient memory.
- */
- shared_library(const shared_library& lib)
- : base_t()
- {
- assign(lib);
- }
-
- /*!
- * Copy constructor that increments the reference count of an underlying shared library.
- * Same as calling `shared_library(lib.location(), ec)`
- *
- * \param lib A shared_library to copy.
- * \param ec Variable that will be set to the result of the operation.
- * \post lib == *this
- * \throw std::bad_alloc in case of insufficient memory.
- */
- shared_library(const shared_library& lib, boost::system::error_code& ec)
- : base_t()
- {
- assign(lib, ec);
- }
-
- /*!
- * Move constructor. Does not invalidate existing symbols and functions loaded from lib.
- *
- * \param lib A shared_library to move from.
- * \post lib.is_loaded() returns false, this->is_loaded() return true.
- * \throw Nothing.
- */
- shared_library(BOOST_RV_REF(shared_library) lib) BOOST_NOEXCEPT
- : base_t(boost::move(static_cast<base_t&>(lib)))
- {}
-
- /*!
- * Creates a shared_library object and loads a library by specified path
- * with a specified mode.
- *
- * \param lib_path Library file name. Can handle std::string, const char*, std::wstring,
- * const wchar_t* or boost::filesystem::path.
- * \param mode A mode that will be used on library load.
- * \throw boost::system::system_error, std::bad_alloc in case of insufficient memory.
- */
- explicit shared_library(const boost::filesystem::path& lib_path, load_mode::type mode = load_mode::default_mode) {
- load(lib_path, mode);
- }
-
- /*!
- * Creates a shared_library object and loads a library by specified path
- * with a specified mode.
- *
- * \param lib_path Library file name. Can handle std::string, const char*, std::wstring,
- * const wchar_t* or boost::filesystem::path.
- * \param mode A mode that will be used on library load.
- * \param ec Variable that will be set to the result of the operation.
- * \throw std::bad_alloc in case of insufficient memory.
- */
- shared_library(const boost::filesystem::path& lib_path, boost::system::error_code& ec, load_mode::type mode = load_mode::default_mode) {
- load(lib_path, mode, ec);
- }
-
- //! \overload shared_library(const boost::filesystem::path& lib_path, boost::system::error_code& ec, load_mode::type mode = load_mode::default_mode)
- shared_library(const boost::filesystem::path& lib_path, load_mode::type mode, boost::system::error_code& ec) {
- load(lib_path, mode, ec);
- }
-
- /*!
- * Copy assign a shared_library object. If this->is_loaded() then calls this->unload(). Does not invalidate existing symbols and functions loaded from lib.
- *
- * \param lib A shared_library to copy.
- * \post lib == *this
- * \throw boost::system::system_error, std::bad_alloc in case of insufficient memory.
- */
- shared_library& operator=(BOOST_COPY_ASSIGN_REF(shared_library) lib) {
- boost::system::error_code ec;
- assign(lib, ec);
- if (ec) {
- boost::dll::detail::report_error(ec, "shared_library::operator= failed");
- }
-
- return *this;
- }
-
- /*!
- * Move assign a shared_library object. If this->is_loaded() then calls this->unload(). Does not invalidate existing symbols and functions loaded from lib.
- *
- * \param lib A shared_library to move from.
- * \post lib.is_loaded() returns false.
- * \throw Nothing.
- */
- shared_library& operator=(BOOST_RV_REF(shared_library) lib) BOOST_NOEXCEPT {
- base_t::operator=(boost::move(static_cast<base_t&>(lib)));
- return *this;
- }
-
- /*!
- * Destroys the shared_library by calling
- * `unload()`. If library was loaded multiple times
- * by different instances of shared_library, the actual DLL/DSO won't be unloaded until
- * there is at least one instance of shared_library.
- *
- * \throw Nothing.
- */
- ~shared_library() BOOST_NOEXCEPT {}
-
- /*!
- * Makes *this share the same shared object as lib. If *this is loaded, then unloads it.
- *
- * \post lib.location() == this->location(), lib == *this
- * \param lib A shared_library to copy.
- * \param ec Variable that will be set to the result of the operation.
- * \throw std::bad_alloc in case of insufficient memory.
- */
- shared_library& assign(const shared_library& lib, boost::system::error_code& ec) {
- ec.clear();
-
- if (native() == lib.native()) {
- return *this;
- }
-
- if (!lib) {
- unload();
- return *this;
- }
-
- boost::filesystem::path loc = lib.location(ec);
- if (ec) {
- return *this;
- }
-
- shared_library copy(loc, ec);
- /*if (ec) {
- return *this;
- }*/
-
- swap(copy);
- return *this;
- }
-
- /*!
- * Makes *this share the same shared object as lib. If *this is loaded, then unloads it.
- *
- * \param lib A shared_library instance to share.
- * \post lib.location() == this->location()
- * \throw boost::system::system_error, std::bad_alloc in case of insufficient memory.
- */
- shared_library& assign(const shared_library& lib) {
- boost::system::error_code ec;
- assign(lib, ec);
- if (ec) {
- boost::dll::detail::report_error(ec, "assign() failed");
- }
-
- return *this;
- }
-
- /*!
- * Loads a library by specified path with a specified mode.
- *
- * Note that if some library is already loaded in this shared_library instance, load will
- * call unload() and then load the new provided library.
- *
- * \param lib_path Library file name. Can handle std::string, const char*, std::wstring,
- * const wchar_t* or boost::filesystem::path.
- * \param mode A mode that will be used on library load.
- * \throw boost::system::system_error, std::bad_alloc in case of insufficient memory.
- *
- */
- void load(const boost::filesystem::path& lib_path, load_mode::type mode = load_mode::default_mode) {
- boost::system::error_code ec;
- base_t::load(lib_path, mode, ec);
-
- if (ec) {
- boost::dll::detail::report_error(ec, "load() failed");
- }
- }
-
- /*!
- * Loads a library by specified path with a specified mode.
- *
- * Note that if some library is already loaded in this shared_library instance, load will
- * call unload() and then load the new provided library.
- *
- * \param lib_path Library file name. Can handle std::string, const char*, std::wstring,
- * const wchar_t* or boost::filesystem::path.
- * \param ec Variable that will be set to the result of the operation.
- * \param mode A mode that will be used on library load.
- * \throw std::bad_alloc in case of insufficient memory.
- */
- void load(const boost::filesystem::path& lib_path, boost::system::error_code& ec, load_mode::type mode = load_mode::default_mode) {
- ec.clear();
- base_t::load(lib_path, mode, ec);
- }
-
- //! \overload void load(const boost::filesystem::path& lib_path, boost::system::error_code& ec, load_mode::type mode = load_mode::default_mode)
- void load(const boost::filesystem::path& lib_path, load_mode::type mode, boost::system::error_code& ec) {
- ec.clear();
- base_t::load(lib_path, mode, ec);
- }
-
- /*!
- * Unloads a shared library. If library was loaded multiple times
- * by different instances of shared_library, the actual DLL/DSO won't be unloaded until
- * there is at least one instance of shared_library holding a reference to it.
- *
- * \post this->is_loaded() returns false.
- * \throw Nothing.
- */
- void unload() BOOST_NOEXCEPT {
- base_t::unload();
- }
-
- /*!
- * Check if an library is loaded.
- *
- * \return true if a library has been loaded.
- * \throw Nothing.
- */
- bool is_loaded() const BOOST_NOEXCEPT {
- return base_t::is_loaded();
- }
-
- /*!
- * Check if an library is not loaded.
- *
- * \return true if a library has not been loaded.
- * \throw Nothing.
- */
- bool operator!() const BOOST_NOEXCEPT {
- return !is_loaded();
- }
-
- /*!
- * Check if an library is loaded.
- *
- * \return true if a library has been loaded.
- * \throw Nothing.
- */
- BOOST_EXPLICIT_OPERATOR_BOOL()
-
- /*!
- * Search for a given symbol on loaded library. Works for all symbols, including alias names.
- *
- * \param symbol_name Null-terminated symbol name. Can handle std::string, char*, const char*.
- * \return `true` if the loaded library contains a symbol with a given name.
- * \throw Nothing.
- */
- bool has(const char* symbol_name) const BOOST_NOEXCEPT {
- boost::system::error_code ec;
- return is_loaded() && !!base_t::symbol_addr(symbol_name, ec) && !ec;
- }
-
- //! \overload bool has(const char* symbol_name) const
- bool has(const std::string& symbol_name) const BOOST_NOEXCEPT {
- return has(symbol_name.c_str());
- }
-
- /*!
- * Returns reference to the symbol (function or variable) with the given name from the loaded library.
- * This call will always succeed and throw nothing if call to `has(const char* )`
- * member function with the same symbol name returned `true`.
- *
- * If using this call for an alias name do not forget to add a pointer to a resulting type.
- *
- * \b Example:
- * \code
- * shared_library lib("test_lib.so");
- * int& i0 = lib.get<int>("integer_name");
- * int& i1 = *lib.get<int*>("integer_alias_name");
- * \endcode
- *
- * \tparam T Type of the symbol that we are going to import. Must be explicitly specified.
- * \param symbol_name Null-terminated symbol name. Can handle std::string, char*, const char*.
- * \return Reference to the symbol.
- * \throw boost::system::system_error if symbol does not exist or if the DLL/DSO was not loaded.
- */
- template <typename T>
- inline T& get(const char* symbol_name) const {
- return *boost::dll::detail::aggressive_ptr_cast<T*>(
- get_impl(symbol_name)
- );
- }
-
- //! \overload T& get(const char* symbol_name) const
- template <typename T>
- inline T& get(const std::string& symbol_name) const {
- return get<T>(symbol_name.c_str());
- }
-
- /*!
- * Returns a symbol (function or variable) from a shared library by alias name of the symbol.
- *
- * \b Example:
- * \code
- * shared_library lib("test_lib.so");
- * int& i = lib.get_alias<int>("integer_alias_name");
- * \endcode
- *
- * \tparam T Type of the symbol that we are going to import. Must be explicitly specified..
- * \param alias_name Null-terminated alias symbol name. Can handle std::string, char*, const char*.
- * \throw boost::system::system_error if symbol does not exist or if the DLL/DSO was not loaded.
- */
- template <typename T>
- inline T& get_alias(const char* alias_name) const {
- return *get<T*>(alias_name);
- }
-
- //! \overload T& get_alias(const char* alias_name) const
- template <typename T>
- inline T& get_alias(const std::string& alias_name) const {
- return *get<T*>(alias_name.c_str());
- }
-
-private:
-
- /// @cond
- // get_impl is required to reduce binary size: it does not depend on a template
- // parameter and will be instantiated only once.
- void* get_impl(const char* sb) const {
- boost::system::error_code ec;
-
- if (!is_loaded()) {
- ec = boost::system::error_code(
- boost::system::errc::bad_file_descriptor,
- boost::system::generic_category()
- );
-
- // report_error() calls dlsym, do not use it here!
- boost::throw_exception(
- boost::system::system_error(
- ec, "get() failed: no library was loaded"
- )
- );
- }
-
- void* const ret = base_t::symbol_addr(sb, ec);
- if (ec || !ret) {
- boost::dll::detail::report_error(ec, "get() failed");
- }
-
- return ret;
- }
- /// @endcond
-
-public:
-
- /*!
- * Returns the native handler of the loaded library.
- *
- * \return Platform-specific handle.
- */
- native_handle_t native() const BOOST_NOEXCEPT {
- return base_t::native();
- }
-
- /*!
- * Returns full path and name of this shared object.
- *
- * \b Example:
- * \code
- * shared_library lib("test_lib.dll");
- * filesystem::path full_path = lib.location(); // C:\Windows\System32\test_lib.dll
- * \endcode
- *
- * \return Full path to the shared library.
- * \throw boost::system::system_error, std::bad_alloc.
- */
- boost::filesystem::path location() const {
- boost::system::error_code ec;
- if (!is_loaded()) {
- ec = boost::system::error_code(
- boost::system::errc::bad_file_descriptor,
- boost::system::generic_category()
- );
-
- boost::throw_exception(
- boost::system::system_error(
- ec, "location() failed (no library was loaded)"
- )
- );
- }
-
- boost::filesystem::path full_path = base_t::full_module_path(ec);
-
- if (ec) {
- boost::dll::detail::report_error(ec, "location() failed");
- }
-
- return full_path;
- }
-
- /*!
- * Returns full path and name of shared module.
- *
- * \b Example:
- * \code
- * shared_library lib("test_lib.dll");
- * filesystem::path full_path = lib.location(); // C:\Windows\System32\test_lib.dll
- * \endcode
- *
- * \param ec Variable that will be set to the result of the operation.
- * \return Full path to the shared library.
- * \throw std::bad_alloc.
- */
- boost::filesystem::path location(boost::system::error_code& ec) const {
- if (!is_loaded()) {
- ec = boost::system::error_code(
- boost::system::errc::bad_file_descriptor,
- boost::system::generic_category()
- );
-
- return boost::filesystem::path();
- }
-
- return base_t::full_module_path(ec);
- }
-
- /*!
- * Returns suffix of shared module:
- * in a call to load() or the constructor/load.
- *
- * \return The suffix od shared module: ".dll" (Windows), ".so" (Unix/Linux/BSD), ".dylib" (MacOS/IOS)
- */
- static boost::filesystem::path suffix() {
- return base_t::suffix();
- }
-
- /*!
- * Swaps two libraries. Does not invalidate existing symbols and functions loaded from libraries.
- *
- * \param rhs Library to swap with.
- * \throw Nothing.
- */
- void swap(shared_library& rhs) BOOST_NOEXCEPT {
- base_t::swap(rhs);
- }
-};
-
-/// Very fast equality check that compares the actual DLL/DSO objects. Throws nothing.
-inline bool operator==(const shared_library& lhs, const shared_library& rhs) BOOST_NOEXCEPT {
- return lhs.native() == rhs.native();
-}
-
-/// Very fast inequality check that compares the actual DLL/DSO objects. Throws nothing.
-inline bool operator!=(const shared_library& lhs, const shared_library& rhs) BOOST_NOEXCEPT {
- return lhs.native() != rhs.native();
-}
-
-/// Compare the actual DLL/DSO objects without any guarantee to be stable between runs. Throws nothing.
-inline bool operator<(const shared_library& lhs, const shared_library& rhs) BOOST_NOEXCEPT {
- return lhs.native() < rhs.native();
-}
-
-/// Swaps two shared libraries. Does not invalidate symbols and functions loaded from libraries. Throws nothing.
-inline void swap(shared_library& lhs, shared_library& rhs) BOOST_NOEXCEPT {
- lhs.swap(rhs);
-}
-
-}} // boost::dll
-
-#endif // BOOST_DLL_SHARED_LIBRARY_HPP
-
diff --git a/include/boost/dll/shared_library_load_mode.hpp b/include/boost/dll/shared_library_load_mode.hpp
deleted file mode 100644
index cd25ad66..00000000
--- a/include/boost/dll/shared_library_load_mode.hpp
+++ /dev/null
@@ -1,213 +0,0 @@
-// Copyright 2014 Renato Tegon Forti, Antony Polukhin.
-//
-// Distributed under the Boost Software License, Version 1.0.
-// (See accompanying file LICENSE_1_0.txt
-// or copy at http://www.boost.org/LICENSE_1_0.txt)
-
-#ifndef BOOST_DLL_SHARED_LIBRARY_MODE_HPP
-#define BOOST_DLL_SHARED_LIBRARY_MODE_HPP
-
-#include <boost/config.hpp>
-#include <boost/predef/os.h>
-#include <boost/predef/library/c.h>
-
-#if BOOST_OS_WINDOWS
-//#include <boost/detail/winapi/dll.hpp>
-#include <boost/detail/winapi/dll.hpp>
-#else
-# include <dlfcn.h>
-#endif
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-# pragma once
-#endif
-
-/// \file boost/dll/shared_library_load_mode.hpp
-/// \brief Contains only the boost::dll::load_mode::type enum and operators related to it.
-
-namespace boost { namespace dll { namespace load_mode {
-
-/*! Library load modes.
-*
-* Each of system family provides own modes. Flags not supported by a particular platform will be silently ignored.
-*
-* For a detailed description of platform specific options see:
-* <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/ms684179(v=vs.85).aspx">Windows specific options</a>,
-* <a href="http://pubs.opengroup.org/onlinepubs/000095399/functions/dlopen.html">POSIX specific options</a>.
-*
-*/
-
-enum type {
-#ifdef BOOST_DLL_DOXYGEN
- /*!
- * Default open mode. See the \b Default: comments below to find out the flags that are enabled by default.
- */
- default_mode,
-
- /*!
- * \b Platforms: Windows
- *
- * \b Default: disabled
- *
- * If this value is used, and the executable module is a DLL, the system does
- * not call DllMain for process and thread initialization and termination.
- * Also, the system does not load additional executable modules that are
- * referenced by the specified module.
- *
- * Note Do not use this value; it is provided only for backward compatibility.
- * If you are planning to access only data or resources in the DLL, use
- * LOAD_LIBRARY_AS_DATAFILE_EXCLUSIVE or LOAD_LIBRARY_AS_IMAGE_RESOURCE
- * or both.
- */
- dont_resolve_dll_references,
-
- /*!
- * \b Platforms: Windows
- *
- * \b Default: disabled
- *
- * If this value is used, the system does not check AppLocker rules or
- * apply Software Restriction Policies for the DLL.
- */
- load_ignore_code_authz_level,
-
- /*!
- * \b Platforms: Windows
- *
- * \b Default: disabled
- *
- * If this value is used and lpFileName specifies an absolute path,
- * the system uses the alternate file search strategy.
- *
- * This value cannot be combined with any LOAD_LIBRARY_SEARCH flag.
- */
- load_with_altered_search_path,
-
- /*!
- * \b Platforms: POSIX
- *
- * \b Default: enabled
- *
- * Relocations shall be performed at an implementation-defined time, ranging
- * from the time of the dlopen() call until the first reference to a given
- * symbol occurs.
- *
- * Specifying RTLD_LAZY should improve performance on implementations
- * supporting dynamic symbol binding as a process may not reference all of
- * the functions in any given object. And, for systems supporting dynamic
- * symbol resolution for normal process execution, this behavior mimics
- * the normal handling of process execution.
- */
- rtld_lazy,
-
- /*!
- * \b Platforms: POSIX
- *
- * \b Default: disabled
- *
- * All necessary relocations shall be performed when the object is first
- * loaded. This may waste some processing if relocations are performed for
- * functions that are never referenced. This behavior may be useful for
- * plugins that need to know as soon as an object is loaded that all
- * symbols referenced during execution are available.
- */
- rtld_now,
-
- /*!
- * \b Platforms: POSIX
- *
- * \b Default: disabled
- *
- * The object's symbols shall be made available for the relocation
- * processing of any other object. In addition, symbol lookup using
- * dlopen(0, mode) and an associated dlsym() allows objects loaded
- * with this mode to be searched.
- */
- rtld_global,
-
- /*!
- * \b Platforms: POSIX
- *
- * \b Default: enabled
- *
- * The object's symbols shall not be made available for the relocation
- * processing of any other object.
- *
- * This is a default Windows behavior that can not be changed.
- */
- rtld_local,
-
- /*!
- * \b Platforms: POSIX (requires glibc >= 2.3.4)
- *
- * \b Default: disabled
- *
- * The object will use its own symbols in preference to global symbols
- * with the same name contained in libraries that have already been loaded.
- * This flag is not specified in POSIX.1-2001.
- */
- rtld_deepbind,
-
- /*!
- * \b Platforms: Windows, POSIX
- *
- * \b Default: disabled
- *
- * Append a platform specific extension and prefix to shared library filename before trying to load it.
- * If load attempt fails, try to load with exactly specified name.
- *
- * \b Example:
- * \code
- * // Opens `./my_plugins/plugin1.dll` on Windows, `./my_plugins/libplugin1.so` on Linux, `./my_plugins/libplugin1.dylib` on MacOS.
- * // If that fails, loads `./my_plugins/plugin1`
- * boost::dll::shared_library lib("./my_plugins/plugin1", load_mode::append_decorations);
- * \endcode
- */
- append_decorations
-#elif BOOST_OS_WINDOWS
- default_mode = 0,
- dont_resolve_dll_references = boost::detail::winapi::DONT_RESOLVE_DLL_REFERENCES_,
- load_ignore_code_authz_level = boost::detail::winapi::LOAD_IGNORE_CODE_AUTHZ_LEVEL_,
- load_with_altered_search_path = boost::detail::winapi::LOAD_WITH_ALTERED_SEARCH_PATH_,
- rtld_lazy = 0,
- rtld_now = 0,
- rtld_global = 0,
- rtld_local = 0,
- rtld_deepbind = 0,
- append_decorations = 0x00800000
-#else
- default_mode = 0,
- dont_resolve_dll_references = 0,
- load_ignore_code_authz_level = 0,
- load_with_altered_search_path = 0,
- rtld_lazy = RTLD_LAZY,
- rtld_now = RTLD_NOW,
- rtld_global = RTLD_GLOBAL,
- rtld_local = RTLD_LOCAL,
-
-#if BOOST_LIB_C_GNU < BOOST_VERSION_NUMBER(2,3,4)
- rtld_deepbind = 0,
-#else
- rtld_deepbind = RTLD_DEEPBIND,
-#endif
-
- append_decorations = 0x00800000
-#endif
-};
-
-
-/// Free operators for load_mode::type flag manipulation.
-inline type operator|(type left, type right) BOOST_NOEXCEPT {
- return (static_cast<type>(
- static_cast<unsigned int>(left) | static_cast<unsigned int>(right))
- );
-}
-
-inline type& operator|=(type& left, type right) BOOST_NOEXCEPT {
- left = left | right;
- return (left);
-}
-
-}}} // boost::dll::load_mode
-
-#endif // BOOST_DLL_SHARED_LIBRARY_MODE_HPP
diff --git a/include/boost/predef.h b/include/boost/predef.h
deleted file mode 100644
index 49653378..00000000
--- a/include/boost/predef.h
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#if !defined(BOOST_PREDEF_H) || defined(BOOST_PREDEF_INTERNAL_GENERATE_TESTS)
-#ifndef BOOST_PREDEF_H
-#define BOOST_PREDEF_H
-#endif
-
-#include <boost/predef/language.h>
-#include <boost/predef/architecture.h>
-#include <boost/predef/compiler.h>
-#include <boost/predef/library.h>
-#include <boost/predef/os.h>
-#include <boost/predef/other.h>
-#include <boost/predef/platform.h>
-#include <boost/predef/hardware.h>
-
-#include <boost/predef/version.h>
-
-#endif
diff --git a/include/boost/predef/architecture.h b/include/boost/predef/architecture.h
deleted file mode 100644
index c433d437..00000000
--- a/include/boost/predef/architecture.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#if !defined(BOOST_PREDEF_ARCHITECTURE_H) || defined(BOOST_PREDEF_INTERNAL_GENERATE_TESTS)
-#ifndef BOOST_PREDEF_ARCHITECTURE_H
-#define BOOST_PREDEF_ARCHITECTURE_H
-#endif
-
-#include <boost/predef/architecture/alpha.h>
-#include <boost/predef/architecture/arm.h>
-#include <boost/predef/architecture/blackfin.h>
-#include <boost/predef/architecture/convex.h>
-#include <boost/predef/architecture/ia64.h>
-#include <boost/predef/architecture/m68k.h>
-#include <boost/predef/architecture/mips.h>
-#include <boost/predef/architecture/parisc.h>
-#include <boost/predef/architecture/ppc.h>
-#include <boost/predef/architecture/pyramid.h>
-#include <boost/predef/architecture/rs6k.h>
-#include <boost/predef/architecture/sparc.h>
-#include <boost/predef/architecture/superh.h>
-#include <boost/predef/architecture/sys370.h>
-#include <boost/predef/architecture/sys390.h>
-#include <boost/predef/architecture/x86.h>
-#include <boost/predef/architecture/z.h>
-/*#include <boost/predef/architecture/.h>*/
-
-#endif
diff --git a/include/boost/predef/architecture/alpha.h b/include/boost/predef/architecture/alpha.h
deleted file mode 100644
index 5bcade18..00000000
--- a/include/boost/predef/architecture/alpha.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_ALPHA_H
-#define BOOST_PREDEF_ARCHITECTURE_ALPHA_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_ALPHA`]
-
-[@http://en.wikipedia.org/wiki/DEC_Alpha DEC Alpha] architecture.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
- [[`__alpha__`] [__predef_detection__]]
- [[`__alpha`] [__predef_detection__]]
- [[`_M_ALPHA`] [__predef_detection__]]
-
- [[`__alpha_ev4__`] [4.0.0]]
- [[`__alpha_ev5__`] [5.0.0]]
- [[`__alpha_ev6__`] [6.0.0]]
- ]
- */
-
-#define BOOST_ARCH_ALPHA BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__alpha__) || defined(__alpha) || \
- defined(_M_ALPHA)
-# undef BOOST_ARCH_ALPHA
-# if !defined(BOOST_ARCH_ALPHA) && defined(__alpha_ev4__)
-# define BOOST_ARCH_ALPHA BOOST_VERSION_NUMBER(4,0,0)
-# endif
-# if !defined(BOOST_ARCH_ALPHA) && defined(__alpha_ev5__)
-# define BOOST_ARCH_ALPHA BOOST_VERSION_NUMBER(5,0,0)
-# endif
-# if !defined(BOOST_ARCH_ALPHA) && defined(__alpha_ev6__)
-# define BOOST_ARCH_ALPHA BOOST_VERSION_NUMBER(6,0,0)
-# endif
-# if !defined(BOOST_ARCH_ALPHA)
-# define BOOST_ARCH_ALPHA BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#if BOOST_ARCH_ALPHA
-# define BOOST_ARCH_ALPHA_AVAILABLE
-#endif
-
-#define BOOST_ARCH_ALPHA_NAME "DEC Alpha"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_ALPHA,BOOST_ARCH_ALPHA_NAME)
diff --git a/include/boost/predef/architecture/arm.h b/include/boost/predef/architecture/arm.h
deleted file mode 100644
index b200c627..00000000
--- a/include/boost/predef/architecture/arm.h
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Copyright Franz Detro 2014
-Copyright (c) Microsoft Corporation 2014
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_ARM_H
-#define BOOST_PREDEF_ARCHITECTURE_ARM_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_ARM`]
-
-[@http://en.wikipedia.org/wiki/ARM_architecture ARM] architecture.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__arm__`] [__predef_detection__]]
- [[`__arm64`] [__predef_detection__]]
- [[`__thumb__`] [__predef_detection__]]
- [[`__TARGET_ARCH_ARM`] [__predef_detection__]]
- [[`__TARGET_ARCH_THUMB`] [__predef_detection__]]
- [[`_M_ARM`] [__predef_detection__]]
-
- [[`__arm64`] [8.0.0]]
- [[`__TARGET_ARCH_ARM`] [V.0.0]]
- [[`__TARGET_ARCH_THUMB`] [V.0.0]]
- [[`_M_ARM`] [V.0.0]]
- ]
- */
-
-#define BOOST_ARCH_ARM BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__arm__) || defined(__arm64) || defined(__thumb__) || \
- defined(__TARGET_ARCH_ARM) || defined(__TARGET_ARCH_THUMB) || \
- defined(_M_ARM)
-# undef BOOST_ARCH_ARM
-# if !defined(BOOST_ARCH_ARM) && defined(__arm64)
-# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(8,0,0)
-# endif
-# if !defined(BOOST_ARCH_ARM) && defined(__TARGET_ARCH_ARM)
-# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__TARGET_ARCH_ARM,0,0)
-# endif
-# if !defined(BOOST_ARCH_ARM) && defined(__TARGET_ARCH_THUMB)
-# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(__TARGET_ARCH_THUMB,0,0)
-# endif
-# if !defined(BOOST_ARCH_ARM) && defined(_M_ARM)
-# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER(_M_ARM,0,0)
-# endif
-# if !defined(BOOST_ARCH_ARM)
-# define BOOST_ARCH_ARM BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#if BOOST_ARCH_ARM
-# define BOOST_ARCH_ARM_AVAILABLE
-#endif
-
-#define BOOST_ARCH_ARM_NAME "ARM"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_ARM,BOOST_ARCH_ARM_NAME)
diff --git a/include/boost/predef/architecture/blackfin.h b/include/boost/predef/architecture/blackfin.h
deleted file mode 100644
index 84c58a25..00000000
--- a/include/boost/predef/architecture/blackfin.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-Copyright Rene Rivera 2013-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_BLACKFIN_H
-#define BOOST_PREDEF_ARCHITECTURE_BLACKFIN_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_BLACKFIN`]
-
-Blackfin Processors from Analog Devices.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__bfin__`] [__predef_detection__]]
- [[`__BFIN__`] [__predef_detection__]]
- [[`bfin`] [__predef_detection__]]
- [[`BFIN`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_ARCH_BLACKFIN BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__bfin__) || defined(__BFIN__) || \
- defined(bfin) || defined(BFIN)
-# undef BOOST_ARCH_BLACKFIN
-# define BOOST_ARCH_BLACKFIN BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_ARCH_BLACKFIN
-# define BOOST_ARCH_BLACKFIN_AVAILABLE
-#endif
-
-#define BOOST_ARCH_BLACKFIN_NAME "Blackfin"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_BLACKFIN,BOOST_ARCH_BLACKFIN_NAME)
diff --git a/include/boost/predef/architecture/convex.h b/include/boost/predef/architecture/convex.h
deleted file mode 100644
index ac783a9c..00000000
--- a/include/boost/predef/architecture/convex.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
-Copyright Rene Rivera 2011-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_CONVEX_H
-#define BOOST_PREDEF_ARCHITECTURE_CONVEX_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_CONVEX`]
-
-[@http://en.wikipedia.org/wiki/Convex_Computer Convex Computer] architecture.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__convex__`] [__predef_detection__]]
-
- [[`__convex_c1__`] [1.0.0]]
- [[`__convex_c2__`] [2.0.0]]
- [[`__convex_c32__`] [3.2.0]]
- [[`__convex_c34__`] [3.4.0]]
- [[`__convex_c38__`] [3.8.0]]
- ]
- */
-
-#define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__convex__)
-# undef BOOST_ARCH_CONVEX
-# if !defined(BOOST_ARCH_CONVEX) && defined(__convex_c1__)
-# define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER(1,0,0)
-# endif
-# if !defined(BOOST_ARCH_CONVEX) && defined(__convex_c2__)
-# define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER(2,0,0)
-# endif
-# if !defined(BOOST_ARCH_CONVEX) && defined(__convex_c32__)
-# define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER(3,2,0)
-# endif
-# if !defined(BOOST_ARCH_CONVEX) && defined(__convex_c34__)
-# define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER(3,4,0)
-# endif
-# if !defined(BOOST_ARCH_CONVEX) && defined(__convex_c38__)
-# define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER(3,8,0)
-# endif
-# if !defined(BOOST_ARCH_CONVEX)
-# define BOOST_ARCH_CONVEX BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#if BOOST_ARCH_CONVEX
-# define BOOST_ARCH_CONVEX_AVAILABLE
-#endif
-
-#define BOOST_ARCH_CONVEX_NAME "Convex Computer"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_CONVEX,BOOST_ARCH_CONVEX_NAME)
diff --git a/include/boost/predef/architecture/ia64.h b/include/boost/predef/architecture/ia64.h
deleted file mode 100644
index 9b1972bd..00000000
--- a/include/boost/predef/architecture/ia64.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_IA64_H
-#define BOOST_PREDEF_ARCHITECTURE_IA64_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_IA64`]
-
-[@http://en.wikipedia.org/wiki/Ia64 Intel Itanium 64] architecture.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__ia64__`] [__predef_detection__]]
- [[`_IA64`] [__predef_detection__]]
- [[`__IA64__`] [__predef_detection__]]
- [[`__ia64`] [__predef_detection__]]
- [[`_M_IA64`] [__predef_detection__]]
- [[`__itanium__`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_ARCH_IA64 BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__ia64__) || defined(_IA64) || \
- defined(__IA64__) || defined(__ia64) || \
- defined(_M_IA64) || defined(__itanium__)
-# undef BOOST_ARCH_IA64
-# define BOOST_ARCH_IA64 BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_ARCH_IA64
-# define BOOST_ARCH_IA64_AVAILABLE
-#endif
-
-#define BOOST_ARCH_IA64_NAME "Intel Itanium 64"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_IA64,BOOST_ARCH_IA64_NAME)
diff --git a/include/boost/predef/architecture/m68k.h b/include/boost/predef/architecture/m68k.h
deleted file mode 100644
index 63ed5f84..00000000
--- a/include/boost/predef/architecture/m68k.h
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_M68K_H
-#define BOOST_PREDEF_ARCHITECTURE_M68K_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_M68K`]
-
-[@http://en.wikipedia.org/wiki/M68k Motorola 68k] architecture.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__m68k__`] [__predef_detection__]]
- [[`M68000`] [__predef_detection__]]
-
- [[`__mc68060__`] [6.0.0]]
- [[`mc68060`] [6.0.0]]
- [[`__mc68060`] [6.0.0]]
- [[`__mc68040__`] [4.0.0]]
- [[`mc68040`] [4.0.0]]
- [[`__mc68040`] [4.0.0]]
- [[`__mc68030__`] [3.0.0]]
- [[`mc68030`] [3.0.0]]
- [[`__mc68030`] [3.0.0]]
- [[`__mc68020__`] [2.0.0]]
- [[`mc68020`] [2.0.0]]
- [[`__mc68020`] [2.0.0]]
- [[`__mc68010__`] [1.0.0]]
- [[`mc68010`] [1.0.0]]
- [[`__mc68010`] [1.0.0]]
- [[`__mc68000__`] [0.0.1]]
- [[`mc68000`] [0.0.1]]
- [[`__mc68000`] [0.0.1]]
- ]
- */
-
-#define BOOST_ARCH_M68K BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__m68k__) || defined(M68000)
-# undef BOOST_ARCH_M68K
-# if !defined(BOOST_ARCH_M68K) && (defined(__mc68060__) || defined(mc68060) || defined(__mc68060))
-# define BOOST_ARCH_M68K BOOST_VERSION_NUMBER(6,0,0)
-# endif
-# if !defined(BOOST_ARCH_M68K) && (defined(__mc68040__) || defined(mc68040) || defined(__mc68040))
-# define BOOST_ARCH_M68K BOOST_VERSION_NUMBER(4,0,0)
-# endif
-# if !defined(BOOST_ARCH_M68K) && (defined(__mc68030__) || defined(mc68030) || defined(__mc68030))
-# define BOOST_ARCH_M68K BOOST_VERSION_NUMBER(3,0,0)
-# endif
-# if !defined(BOOST_ARCH_M68K) && (defined(__mc68020__) || defined(mc68020) || defined(__mc68020))
-# define BOOST_ARCH_M68K BOOST_VERSION_NUMBER(2,0,0)
-# endif
-# if !defined(BOOST_ARCH_M68K) && (defined(__mc68010__) || defined(mc68010) || defined(__mc68010))
-# define BOOST_ARCH_M68K BOOST_VERSION_NUMBER(1,0,0)
-# endif
-# if !defined(BOOST_ARCH_M68K) && (defined(__mc68000__) || defined(mc68000) || defined(__mc68000))
-# define BOOST_ARCH_M68K BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-# if !defined(BOOST_ARCH_M68K)
-# define BOOST_ARCH_M68K BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#if BOOST_ARCH_M68K
-# define BOOST_ARCH_M68K_AVAILABLE
-#endif
-
-#define BOOST_ARCH_M68K_NAME "Motorola 68k"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_M68K,BOOST_ARCH_M68K_NAME)
diff --git a/include/boost/predef/architecture/mips.h b/include/boost/predef/architecture/mips.h
deleted file mode 100644
index 0189d7db..00000000
--- a/include/boost/predef/architecture/mips.h
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_MIPS_H
-#define BOOST_PREDEF_ARCHITECTURE_MIPS_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_MIPS`]
-
-[@http://en.wikipedia.org/wiki/MIPS_architecture MIPS] architecture.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__mips__`] [__predef_detection__]]
- [[`__mips`] [__predef_detection__]]
- [[`__MIPS__`] [__predef_detection__]]
-
- [[`__mips`] [V.0.0]]
- [[`_MIPS_ISA_MIPS1`] [1.0.0]]
- [[`_R3000`] [1.0.0]]
- [[`_MIPS_ISA_MIPS2`] [2.0.0]]
- [[`__MIPS_ISA2__`] [2.0.0]]
- [[`_R4000`] [2.0.0]]
- [[`_MIPS_ISA_MIPS3`] [3.0.0]]
- [[`__MIPS_ISA3__`] [3.0.0]]
- [[`_MIPS_ISA_MIPS4`] [4.0.0]]
- [[`__MIPS_ISA4__`] [4.0.0]]
- ]
- */
-
-#define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__mips__) || defined(__mips) || \
- defined(__MIPS__)
-# undef BOOST_ARCH_MIPS
-# if !defined(BOOST_ARCH_MIPS) && (defined(__mips))
-# define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER(__mips,0,0)
-# endif
-# if !defined(BOOST_ARCH_MIPS) && (defined(_MIPS_ISA_MIPS1) || defined(_R3000))
-# define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER(1,0,0)
-# endif
-# if !defined(BOOST_ARCH_MIPS) && (defined(_MIPS_ISA_MIPS2) || defined(__MIPS_ISA2__) || defined(_R4000))
-# define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER(2,0,0)
-# endif
-# if !defined(BOOST_ARCH_MIPS) && (defined(_MIPS_ISA_MIPS3) || defined(__MIPS_ISA3__))
-# define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER(3,0,0)
-# endif
-# if !defined(BOOST_ARCH_MIPS) && (defined(_MIPS_ISA_MIPS4) || defined(__MIPS_ISA4__))
-# define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER(4,0,0)
-# endif
-# if !defined(BOOST_ARCH_MIPS)
-# define BOOST_ARCH_MIPS BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#if BOOST_ARCH_MIPS
-# define BOOST_ARCH_MIPS_AVAILABLE
-#endif
-
-#define BOOST_ARCH_MIPS_NAME "MIPS"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_MIPS,BOOST_ARCH_MIPS_NAME)
diff --git a/include/boost/predef/architecture/parisc.h b/include/boost/predef/architecture/parisc.h
deleted file mode 100644
index 7c7625f9..00000000
--- a/include/boost/predef/architecture/parisc.h
+++ /dev/null
@@ -1,64 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_PARISC_H
-#define BOOST_PREDEF_ARCHITECTURE_PARISC_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_PARISK`]
-
-[@http://en.wikipedia.org/wiki/PA-RISC_family HP/PA RISC] architecture.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__hppa__`] [__predef_detection__]]
- [[`__hppa`] [__predef_detection__]]
- [[`__HPPA__`] [__predef_detection__]]
-
- [[`_PA_RISC1_0`] [1.0.0]]
- [[`_PA_RISC1_1`] [1.1.0]]
- [[`__HPPA11__`] [1.1.0]]
- [[`__PA7100__`] [1.1.0]]
- [[`_PA_RISC2_0`] [2.0.0]]
- [[`__RISC2_0__`] [2.0.0]]
- [[`__HPPA20__`] [2.0.0]]
- [[`__PA8000__`] [2.0.0]]
- ]
- */
-
-#define BOOST_ARCH_PARISC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__hppa__) || defined(__hppa) || defined(__HPPA__)
-# undef BOOST_ARCH_PARISC
-# if !defined(BOOST_ARCH_PARISC) && (defined(_PA_RISC1_0))
-# define BOOST_ARCH_PARISC BOOST_VERSION_NUMBER(1,0,0)
-# endif
-# if !defined(BOOST_ARCH_PARISC) && (defined(_PA_RISC1_1) || defined(__HPPA11__) || defined(__PA7100__))
-# define BOOST_ARCH_PARISC BOOST_VERSION_NUMBER(1,1,0)
-# endif
-# if !defined(BOOST_ARCH_PARISC) && (defined(_PA_RISC2_0) || defined(__RISC2_0__) || defined(__HPPA20__) || defined(__PA8000__))
-# define BOOST_ARCH_PARISC BOOST_VERSION_NUMBER(2,0,0)
-# endif
-# if !defined(BOOST_ARCH_PARISC)
-# define BOOST_ARCH_PARISC BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#if BOOST_ARCH_PARISC
-# define BOOST_ARCH_PARISC_AVAILABLE
-#endif
-
-#define BOOST_ARCH_PARISC_NAME "HP/PA RISC"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_PARISC,BOOST_ARCH_PARISC_NAME)
diff --git a/include/boost/predef/architecture/ppc.h b/include/boost/predef/architecture/ppc.h
deleted file mode 100644
index e8c57c91..00000000
--- a/include/boost/predef/architecture/ppc.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_PPC_H
-#define BOOST_PREDEF_ARCHITECTURE_PPC_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_PPC`]
-
-[@http://en.wikipedia.org/wiki/PowerPC PowerPC] architecture.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__powerpc`] [__predef_detection__]]
- [[`__powerpc__`] [__predef_detection__]]
- [[`__POWERPC__`] [__predef_detection__]]
- [[`__ppc__`] [__predef_detection__]]
- [[`_M_PPC`] [__predef_detection__]]
- [[`_ARCH_PPC`] [__predef_detection__]]
- [[`__PPCGECKO__`] [__predef_detection__]]
- [[`__PPCBROADWAY__`] [__predef_detection__]]
- [[`_XENON`] [__predef_detection__]]
-
- [[`__ppc601__`] [6.1.0]]
- [[`_ARCH_601`] [6.1.0]]
- [[`__ppc603__`] [6.3.0]]
- [[`_ARCH_603`] [6.3.0]]
- [[`__ppc604__`] [6.4.0]]
- [[`__ppc604__`] [6.4.0]]
- ]
- */
-
-#define BOOST_ARCH_PPC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__powerpc) || defined(__powerpc__) || \
- defined(__POWERPC__) || defined(__ppc__) || \
- defined(_M_PPC) || defined(_ARCH_PPC) || \
- defined(__PPCGECKO__) || defined(__PPCBROADWAY__) || \
- defined(_XENON)
-# undef BOOST_ARCH_PPC
-# if !defined (BOOST_ARCH_PPC) && (defined(__ppc601__) || defined(_ARCH_601))
-# define BOOST_ARCH_PPC BOOST_VERSION_NUMBER(6,1,0)
-# endif
-# if !defined (BOOST_ARCH_PPC) && (defined(__ppc603__) || defined(_ARCH_603))
-# define BOOST_ARCH_PPC BOOST_VERSION_NUMBER(6,3,0)
-# endif
-# if !defined (BOOST_ARCH_PPC) && (defined(__ppc604__) || defined(__ppc604__))
-# define BOOST_ARCH_PPC BOOST_VERSION_NUMBER(6,4,0)
-# endif
-# if !defined (BOOST_ARCH_PPC)
-# define BOOST_ARCH_PPC BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#if BOOST_ARCH_PPC
-# define BOOST_ARCH_PPC_AVAILABLE
-#endif
-
-#define BOOST_ARCH_PPC_NAME "PowerPC"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_PPC,BOOST_ARCH_PPC_NAME)
diff --git a/include/boost/predef/architecture/pyramid.h b/include/boost/predef/architecture/pyramid.h
deleted file mode 100644
index 4f132538..00000000
--- a/include/boost/predef/architecture/pyramid.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-Copyright Rene Rivera 2011-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_PYRAMID_H
-#define BOOST_PREDEF_ARCHITECTURE_PYRAMID_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_PYRAMID`]
-
-Pyramid 9810 architecture.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`pyr`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_ARCH_PYRAMID BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(pyr)
-# undef BOOST_ARCH_PYRAMID
-# define BOOST_ARCH_PYRAMID BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_ARCH_PYRAMID
-# define BOOST_ARCH_PYRAMID_AVAILABLE
-#endif
-
-#define BOOST_ARCH_PYRAMID_NAME "Pyramid 9810"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_PYRAMID,BOOST_ARCH_PYRAMID_NAME)
diff --git a/include/boost/predef/architecture/rs6k.h b/include/boost/predef/architecture/rs6k.h
deleted file mode 100644
index 8a6e9b6b..00000000
--- a/include/boost/predef/architecture/rs6k.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_RS6K_H
-#define BOOST_PREDEF_ARCHITECTURE_RS6K_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_RS6000`]
-
-[@http://en.wikipedia.org/wiki/RS/6000 RS/6000] architecture.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__THW_RS6000`] [__predef_detection__]]
- [[`_IBMR2`] [__predef_detection__]]
- [[`_POWER`] [__predef_detection__]]
- [[`_ARCH_PWR`] [__predef_detection__]]
- [[`_ARCH_PWR2`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_ARCH_RS6000 BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__THW_RS6000) || defined(_IBMR2) || \
- defined(_POWER) || defined(_ARCH_PWR) || \
- defined(_ARCH_PWR2)
-# undef BOOST_ARCH_RS6000
-# define BOOST_ARCH_RS6000 BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_ARCH_RS6000
-# define BOOST_ARCH_RS6000_AVAILABLE
-#endif
-
-#define BOOST_ARCH_RS6000_NAME "RS/6000"
-
-#define BOOST_ARCH_PWR BOOST_ARCH_RS6000
-
-#if BOOST_ARCH_PWR
-# define BOOST_ARCH_PWR_AVAILABLE
-#endif
-
-#define BOOST_ARCH_PWR_NAME BOOST_ARCH_RS6000_NAME
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_RS6000,BOOST_ARCH_RS6000_NAME)
diff --git a/include/boost/predef/architecture/sparc.h b/include/boost/predef/architecture/sparc.h
deleted file mode 100644
index a89a5100..00000000
--- a/include/boost/predef/architecture/sparc.h
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_SPARC_H
-#define BOOST_PREDEF_ARCHITECTURE_SPARC_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_SPARC`]
-
-[@http://en.wikipedia.org/wiki/SPARC SPARC] architecture.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__sparc__`] [__predef_detection__]]
- [[`__sparc`] [__predef_detection__]]
-
- [[`__sparcv9`] [9.0.0]]
- [[`__sparcv8`] [8.0.0]]
- ]
- */
-
-#define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__sparc__) || defined(__sparc)
-# undef BOOST_ARCH_SPARC
-# if !defined(BOOST_ARCH_SPARC) && defined(__sparcv9)
-# define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER(9,0,0)
-# endif
-# if !defined(BOOST_ARCH_SPARC) && defined(__sparcv8)
-# define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER(8,0,0)
-# endif
-# if !defined(BOOST_ARCH_SPARC)
-# define BOOST_ARCH_SPARC BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#if BOOST_ARCH_SPARC
-# define BOOST_ARCH_SPARC_AVAILABLE
-#endif
-
-#define BOOST_ARCH_SPARC_NAME "SPARC"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_SPARC,BOOST_ARCH_SPARC_NAME)
diff --git a/include/boost/predef/architecture/superh.h b/include/boost/predef/architecture/superh.h
deleted file mode 100644
index da0529e5..00000000
--- a/include/boost/predef/architecture/superh.h
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_SUPERH_H
-#define BOOST_PREDEF_ARCHITECTURE_SUPERH_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_SH`]
-
-[@http://en.wikipedia.org/wiki/SuperH SuperH] architecture:
-If available versions \[1-5\] are specifically detected.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__sh__`] [__predef_detection__]]
-
- [[`__SH5__`] [5.0.0]]
- [[`__SH4__`] [4.0.0]]
- [[`__sh3__`] [3.0.0]]
- [[`__SH3__`] [3.0.0]]
- [[`__sh2__`] [2.0.0]]
- [[`__sh1__`] [1.0.0]]
- ]
- */
-
-#define BOOST_ARCH_SH BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__sh__)
-# undef BOOST_ARCH_SH
-# if !defined(BOOST_ARCH_SH) && (defined(__SH5__))
-# define BOOST_ARCH_SH BOOST_VERSION_NUMBER(5,0,0)
-# endif
-# if !defined(BOOST_ARCH_SH) && (defined(__SH4__))
-# define BOOST_ARCH_SH BOOST_VERSION_NUMBER(4,0,0)
-# endif
-# if !defined(BOOST_ARCH_SH) && (defined(__sh3__) || defined(__SH3__))
-# define BOOST_ARCH_SH BOOST_VERSION_NUMBER(3,0,0)
-# endif
-# if !defined(BOOST_ARCH_SH) && (defined(__sh2__))
-# define BOOST_ARCH_SH BOOST_VERSION_NUMBER(2,0,0)
-# endif
-# if !defined(BOOST_ARCH_SH) && (defined(__sh1__))
-# define BOOST_ARCH_SH BOOST_VERSION_NUMBER(1,0,0)
-# endif
-# if !defined(BOOST_ARCH_SH)
-# define BOOST_ARCH_SH BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#if BOOST_ARCH_SH
-# define BOOST_ARCH_SH_AVAILABLE
-#endif
-
-#define BOOST_ARCH_SH_NAME "SuperH"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_SH,BOOST_ARCH_SH_NAME)
diff --git a/include/boost/predef/architecture/sys370.h b/include/boost/predef/architecture/sys370.h
deleted file mode 100644
index cfd85dc8..00000000
--- a/include/boost/predef/architecture/sys370.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_SYS370_H
-#define BOOST_PREDEF_ARCHITECTURE_SYS370_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_SYS370`]
-
-[@http://en.wikipedia.org/wiki/System/370 System/370] architecture.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__370__`] [__predef_detection__]]
- [[`__THW_370__`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_ARCH_SYS370 BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__370__) || defined(__THW_370__)
-# undef BOOST_ARCH_SYS370
-# define BOOST_ARCH_SYS370 BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_ARCH_SYS370
-# define BOOST_ARCH_SYS370_AVAILABLE
-#endif
-
-#define BOOST_ARCH_SYS370_NAME "System/370"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_SYS370,BOOST_ARCH_SYS370_NAME)
diff --git a/include/boost/predef/architecture/sys390.h b/include/boost/predef/architecture/sys390.h
deleted file mode 100644
index 47aff6ac..00000000
--- a/include/boost/predef/architecture/sys390.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_SYS390_H
-#define BOOST_PREDEF_ARCHITECTURE_SYS390_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_SYS390`]
-
-[@http://en.wikipedia.org/wiki/System/390 System/390] architecture.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__s390__`] [__predef_detection__]]
- [[`__s390x__`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_ARCH_SYS390 BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__s390__) || defined(__s390x__)
-# undef BOOST_ARCH_SYS390
-# define BOOST_ARCH_SYS390 BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_ARCH_SYS390
-# define BOOST_ARCH_SYS390_AVAILABLE
-#endif
-
-#define BOOST_ARCH_SYS390_NAME "System/390"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_SYS390,BOOST_ARCH_SYS390_NAME)
diff --git a/include/boost/predef/architecture/x86.h b/include/boost/predef/architecture/x86.h
deleted file mode 100644
index 0ef3ef45..00000000
--- a/include/boost/predef/architecture/x86.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#include <boost/predef/architecture/x86/32.h>
-#include <boost/predef/architecture/x86/64.h>
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_X86_H
-#define BOOST_PREDEF_ARCHITECTURE_X86_H
-
-/*`
-[heading `BOOST_ARCH_X86`]
-
-[@http://en.wikipedia.org/wiki/X86 Intel x86] architecture. This is
-a category to indicate that either `BOOST_ARCH_X86_32` or
-`BOOST_ARCH_X86_64` is detected.
- */
-
-#define BOOST_ARCH_X86 BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if BOOST_ARCH_X86_32 || BOOST_ARCH_X86_64
-# undef BOOST_ARCH_X86
-# define BOOST_ARCH_X86 BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_ARCH_X86
-# define BOOST_ARCH_X86_AVAILABLE
-#endif
-
-#define BOOST_ARCH_X86_NAME "Intel x86"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_X86,BOOST_ARCH_X86_NAME)
diff --git a/include/boost/predef/architecture/x86/32.h b/include/boost/predef/architecture/x86/32.h
deleted file mode 100644
index 17fbff55..00000000
--- a/include/boost/predef/architecture/x86/32.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_X86_32_H
-#define BOOST_PREDEF_ARCHITECTURE_X86_32_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_X86_32`]
-
-[@http://en.wikipedia.org/wiki/X86 Intel x86] architecture:
-If available versions \[3-6\] are specifically detected.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`i386`] [__predef_detection__]]
- [[`__i386__`] [__predef_detection__]]
- [[`__i486__`] [__predef_detection__]]
- [[`__i586__`] [__predef_detection__]]
- [[`__i686__`] [__predef_detection__]]
- [[`__i386`] [__predef_detection__]]
- [[`_M_IX86`] [__predef_detection__]]
- [[`_X86_`] [__predef_detection__]]
- [[`__THW_INTEL__`] [__predef_detection__]]
- [[`__I86__`] [__predef_detection__]]
- [[`__INTEL__`] [__predef_detection__]]
-
- [[`__I86__`] [V.0.0]]
- [[`_M_IX86`] [V.0.0]]
- [[`__i686__`] [6.0.0]]
- [[`__i586__`] [5.0.0]]
- [[`__i486__`] [4.0.0]]
- [[`__i386__`] [3.0.0]]
- ]
- */
-
-#define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(i386) || defined(__i386__) || \
- defined(__i486__) || defined(__i586__) || \
- defined(__i686__) || defined(__i386) || \
- defined(_M_IX86) || defined(_X86_) || \
- defined(__THW_INTEL__) || defined(__I86__) || \
- defined(__INTEL__)
-# undef BOOST_ARCH_X86_32
-# if !defined(BOOST_ARCH_X86_32) && defined(__I86__)
-# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(__I86__,0,0)
-# endif
-# if !defined(BOOST_ARCH_X86_32) && defined(_M_IX86)
-# define BOOST_ARCH_X86_32 BOOST_PREDEF_MAKE_10_VV00(_M_IX86)
-# endif
-# if !defined(BOOST_ARCH_X86_32) && defined(__i686__)
-# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(6,0,0)
-# endif
-# if !defined(BOOST_ARCH_X86_32) && defined(__i586__)
-# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(5,0,0)
-# endif
-# if !defined(BOOST_ARCH_X86_32) && defined(__i486__)
-# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(4,0,0)
-# endif
-# if !defined(BOOST_ARCH_X86_32) && defined(__i386__)
-# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER(3,0,0)
-# endif
-# if !defined(BOOST_ARCH_X86_32)
-# define BOOST_ARCH_X86_32 BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#if BOOST_ARCH_X86_32
-# define BOOST_ARCH_X86_32_AVAILABLE
-#endif
-
-#define BOOST_ARCH_X86_32_NAME "Intel x86-32"
-
-#include <boost/predef/architecture/x86.h>
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_X86_32,BOOST_ARCH_X86_32_NAME)
diff --git a/include/boost/predef/architecture/x86/64.h b/include/boost/predef/architecture/x86/64.h
deleted file mode 100644
index f761c925..00000000
--- a/include/boost/predef/architecture/x86/64.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_X86_64_H
-#define BOOST_PREDEF_ARCHITECTURE_X86_64_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_X86_64`]
-
-[@http://en.wikipedia.org/wiki/Ia64 Intel IA-64] architecture.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__x86_64`] [__predef_detection__]]
- [[`__x86_64__`] [__predef_detection__]]
- [[`__amd64__`] [__predef_detection__]]
- [[`__amd64`] [__predef_detection__]]
- [[`_M_X64`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_ARCH_X86_64 BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__x86_64) || defined(__x86_64__) || \
- defined(__amd64__) || defined(__amd64) || \
- defined(_M_X64)
-# undef BOOST_ARCH_X86_64
-# define BOOST_ARCH_X86_64 BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_ARCH_X86_64
-# define BOOST_ARCH_X86_64_AVAILABLE
-#endif
-
-#define BOOST_ARCH_X86_64_NAME "Intel x86-64"
-
-#include <boost/predef/architecture/x86.h>
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_X86_64,BOOST_ARCH_X86_64_NAME)
diff --git a/include/boost/predef/architecture/z.h b/include/boost/predef/architecture/z.h
deleted file mode 100644
index 3d218aa2..00000000
--- a/include/boost/predef/architecture/z.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_ARCHITECTURE_Z_H
-#define BOOST_PREDEF_ARCHITECTURE_Z_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_ARCH_Z`]
-
-[@http://en.wikipedia.org/wiki/Z/Architecture z/Architecture] architecture.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__SYSC_ZARCH__`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_ARCH_Z BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__SYSC_ZARCH__)
-# undef BOOST_ARCH_Z
-# define BOOST_ARCH_Z BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_ARCH_Z
-# define BOOST_ARCH_Z_AVAILABLE
-#endif
-
-#define BOOST_ARCH_Z_NAME "z/Architecture"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ARCH_Z,BOOST_ARCH_Z_NAME)
diff --git a/include/boost/predef/compiler.h b/include/boost/predef/compiler.h
deleted file mode 100644
index 61a4c527..00000000
--- a/include/boost/predef/compiler.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#if !defined(BOOST_PREDEF_COMPILER_H) || defined(BOOST_PREDEF_INTERNAL_GENERATE_TESTS)
-#ifndef BOOST_PREDEF_COMPILER_H
-#define BOOST_PREDEF_COMPILER_H
-#endif
-
-#include <boost/predef/compiler/borland.h>
-#include <boost/predef/compiler/clang.h>
-#include <boost/predef/compiler/comeau.h>
-#include <boost/predef/compiler/compaq.h>
-#include <boost/predef/compiler/diab.h>
-#include <boost/predef/compiler/digitalmars.h>
-#include <boost/predef/compiler/dignus.h>
-#include <boost/predef/compiler/edg.h>
-#include <boost/predef/compiler/ekopath.h>
-#include <boost/predef/compiler/gcc_xml.h>
-#include <boost/predef/compiler/gcc.h>
-#include <boost/predef/compiler/greenhills.h>
-#include <boost/predef/compiler/hp_acc.h>
-#include <boost/predef/compiler/iar.h>
-#include <boost/predef/compiler/ibm.h>
-#include <boost/predef/compiler/intel.h>
-#include <boost/predef/compiler/kai.h>
-#include <boost/predef/compiler/llvm.h>
-#include <boost/predef/compiler/metaware.h>
-#include <boost/predef/compiler/metrowerks.h>
-#include <boost/predef/compiler/microtec.h>
-#include <boost/predef/compiler/mpw.h>
-#include <boost/predef/compiler/palm.h>
-#include <boost/predef/compiler/pgi.h>
-#include <boost/predef/compiler/sgi_mipspro.h>
-#include <boost/predef/compiler/sunpro.h>
-#include <boost/predef/compiler/tendra.h>
-#include <boost/predef/compiler/visualc.h>
-#include <boost/predef/compiler/watcom.h>
-
-#endif
diff --git a/include/boost/predef/compiler/borland.h b/include/boost/predef/compiler/borland.h
deleted file mode 100644
index 3677cca7..00000000
--- a/include/boost/predef/compiler/borland.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_BORLAND_H
-#define BOOST_PREDEF_COMPILER_BORLAND_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_BORLAND`]
-
-[@http://en.wikipedia.org/wiki/C_plus_plus_builder Borland C++] compiler.
-Version number available as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__BORLANDC__`] [__predef_detection__]]
- [[`__CODEGEARC__`] [__predef_detection__]]
-
- [[`__BORLANDC__`] [V.R.P]]
- [[`__CODEGEARC__`] [V.R.P]]
- ]
- */
-
-#define BOOST_COMP_BORLAND BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__BORLANDC__) || defined(__CODEGEARC__)
-# if !defined(BOOST_COMP_BORLAND_DETECTION) && (defined(__CODEGEARC__))
-# define BOOST_COMP_BORLAND_DETECTION BOOST_PREDEF_MAKE_0X_VVRP(__CODEGEARC__)
-# endif
-# if !defined(BOOST_COMP_BORLAND_DETECTION)
-# define BOOST_COMP_BORLAND_DETECTION BOOST_PREDEF_MAKE_0X_VVRP(__BORLANDC__)
-# endif
-#endif
-
-#ifdef BOOST_COMP_BORLAND_DETECTION
-# define BOOST_COMP_BORLAND_AVAILABLE
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_BORLAND_EMULATED BOOST_COMP_BORLAND_DETECTION
-# else
-# undef BOOST_COMP_BORLAND
-# define BOOST_COMP_BORLAND BOOST_COMP_BORLAND_DETECTION
-# endif
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_BORLAND_NAME "Borland C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_BORLAND,BOOST_COMP_BORLAND_NAME)
-
-#ifdef BOOST_COMP_BORLAND_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_BORLAND_EMULATED,BOOST_COMP_BORLAND_NAME)
-#endif
diff --git a/include/boost/predef/compiler/clang.h b/include/boost/predef/compiler/clang.h
deleted file mode 100644
index 56678fe6..00000000
--- a/include/boost/predef/compiler/clang.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_CLANG_H
-#define BOOST_PREDEF_COMPILER_CLANG_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_CLANG`]
-
-[@http://en.wikipedia.org/wiki/Clang Clang] compiler.
-Version number available as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__clang__`] [__predef_detection__]]
-
- [[`__clang_major__`, `__clang_minor__`, `__clang_patchlevel__`] [V.R.P]]
- ]
- */
-
-#define BOOST_COMP_CLANG BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__clang__)
-# define BOOST_COMP_CLANG_DETECTION BOOST_VERSION_NUMBER(__clang_major__,__clang_minor__,__clang_patchlevel__)
-#endif
-
-#ifdef BOOST_COMP_CLANG_DETECTION
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_CLANG_EMULATED BOOST_COMP_CLANG_DETECTION
-# else
-# undef BOOST_COMP_CLANG
-# define BOOST_COMP_CLANG BOOST_COMP_CLANG_DETECTION
-# endif
-# define BOOST_COMP_CLANG_AVAILABLE
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_CLANG_NAME "Clang"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_CLANG,BOOST_COMP_CLANG_NAME)
-
-#ifdef BOOST_COMP_CLANG_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_CLANG_EMULATED,BOOST_COMP_CLANG_NAME)
-#endif
diff --git a/include/boost/predef/compiler/comeau.h b/include/boost/predef/compiler/comeau.h
deleted file mode 100644
index 15a45648..00000000
--- a/include/boost/predef/compiler/comeau.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_COMEAU_H
-#define BOOST_PREDEF_COMPILER_COMEAU_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-#define BOOST_COMP_COMO BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-/*`
-[heading `BOOST_COMP_COMO`]
-
-[@http://en.wikipedia.org/wiki/Comeau_C/C%2B%2B Comeau C++] compiler.
-Version number available as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__COMO__`] [__predef_detection__]]
-
- [[`__COMO_VERSION__`] [V.R.P]]
- ]
- */
-
-#if defined(__COMO__)
-# if !defined(BOOST_COMP_COMO_DETECTION) && defined(__COMO_VERSION__)
-# define BOOST_COMP_COMO_DETECTION BOOST_PREDEF_MAKE_0X_VRP(__COMO_VERSION__)
-# endif
-# if !defined(BOOST_COMP_COMO_DETECTION)
-# define BOOST_COMP_COMO_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#ifdef BOOST_COMP_COMO_DETECTION
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_COMO_EMULATED BOOST_COMP_COMO_DETECTION
-# else
-# undef BOOST_COMP_COMO
-# define BOOST_COMP_COMO BOOST_COMP_COMO_DETECTION
-# endif
-# define BOOST_COMP_COMO_AVAILABLE
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_COMO_NAME "Comeau C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_COMO,BOOST_COMP_COMO_NAME)
-
-#ifdef BOOST_COMP_COMO_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_COMO_EMULATED,BOOST_COMP_COMO_NAME)
-#endif
diff --git a/include/boost/predef/compiler/compaq.h b/include/boost/predef/compiler/compaq.h
deleted file mode 100644
index 96a79e67..00000000
--- a/include/boost/predef/compiler/compaq.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_COMPAQ_H
-#define BOOST_PREDEF_COMPILER_COMPAQ_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_DEC`]
-
-[@http://www.openvms.compaq.com/openvms/brochures/deccplus/ Compaq C/C++] compiler.
-Version number available as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__DECCXX`] [__predef_detection__]]
- [[`__DECC`] [__predef_detection__]]
-
- [[`__DECCXX_VER`] [V.R.P]]
- [[`__DECC_VER`] [V.R.P]]
- ]
- */
-
-#define BOOST_COMP_DEC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__DECC) || defined(__DECCXX)
-# if !defined(BOOST_COMP_DEC_DETECTION) && defined(__DECCXX_VER)
-# define BOOST_COMP_DEC_DETECTION BOOST_PREDEF_MAKE_10_VVRR0PP00(__DECCXX_VER)
-# endif
-# if !defined(BOOST_COMP_DEC_DETECTION) && defined(__DECC_VER)
-# define BOOST_COMP_DEC_DETECTION BOOST_PREDEF_MAKE_10_VVRR0PP00(__DECC_VER)
-# endif
-# if !defined(BOOST_COMP_DEC_DETECTION)
-# define BOOST_COM_DEC_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#ifdef BOOST_COMP_DEC_DETECTION
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_DEC_EMULATED BOOST_COMP_DEC_DETECTION
-# else
-# undef BOOST_COMP_DEC
-# define BOOST_COMP_DEC BOOST_COMP_DEC_DETECTION
-# endif
-# define BOOST_COMP_DEC_AVAILABLE
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_DEC_NAME "Compaq C/C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_DEC,BOOST_COMP_DEC_NAME)
-
-#ifdef BOOST_COMP_DEC_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_DEC_EMULATED,BOOST_COMP_DEC_NAME)
-#endif
diff --git a/include/boost/predef/compiler/diab.h b/include/boost/predef/compiler/diab.h
deleted file mode 100644
index f5a37de7..00000000
--- a/include/boost/predef/compiler/diab.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_DIAB_H
-#define BOOST_PREDEF_COMPILER_DIAB_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_DIAB`]
-
-[@http://www.windriver.com/products/development_suite/wind_river_compiler/ Diab C/C++] compiler.
-Version number available as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__DCC__`] [__predef_detection__]]
-
- [[`__VERSION_NUMBER__`] [V.R.P]]
- ]
- */
-
-#define BOOST_COMP_DIAB BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__DCC__)
-# define BOOST_COMP_DIAB_DETECTION BOOST_PREDEF_MAKE_10_VRPP(__VERSION_NUMBER__)
-#endif
-
-#ifdef BOOST_COMP_DIAB_DETECTION
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_DIAB_EMULATED BOOST_COMP_DIAB_DETECTION
-# else
-# undef BOOST_COMP_DIAB
-# define BOOST_COMP_DIAB BOOST_COMP_DIAB_DETECTION
-# endif
-# define BOOST_COMP_DIAB_AVAILABLE
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_DIAB_NAME "Diab C/C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_DIAB,BOOST_COMP_DIAB_NAME)
-
-#ifdef BOOST_COMP_DIAB_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_DIAB_EMULATED,BOOST_COMP_DIAB_NAME)
-#endif
diff --git a/include/boost/predef/compiler/digitalmars.h b/include/boost/predef/compiler/digitalmars.h
deleted file mode 100644
index 9bd58502..00000000
--- a/include/boost/predef/compiler/digitalmars.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_DIGITALMARS_H
-#define BOOST_PREDEF_COMPILER_DIGITALMARS_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_DMC`]
-
-[@http://en.wikipedia.org/wiki/Digital_Mars Digital Mars] compiler.
-Version number available as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__DMC__`] [__predef_detection__]]
-
- [[`__DMC__`] [V.R.P]]
- ]
- */
-
-#define BOOST_COMP_DMC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__DMC__)
-# define BOOST_COMP_DMC_DETECTION BOOST_PREDEF_MAKE_0X_VRP(__DMC__)
-#endif
-
-#ifdef BOOST_COMP_DMC_DETECTION
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_DMC_EMULATED BOOST_COMP_DMC_DETECTION
-# else
-# undef BOOST_COMP_DMC
-# define BOOST_COMP_DMC BOOST_COMP_DMC_DETECTION
-# endif
-# define BOOST_COMP_DMC_AVAILABLE
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_DMC_NAME "Digital Mars"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_DMC,BOOST_COMP_DMC_NAME)
-
-#ifdef BOOST_COMP_DMC_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_DMC_EMULATED,BOOST_COMP_DMC_NAME)
-#endif
diff --git a/include/boost/predef/compiler/dignus.h b/include/boost/predef/compiler/dignus.h
deleted file mode 100644
index c65d3dc7..00000000
--- a/include/boost/predef/compiler/dignus.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_DIGNUS_H
-#define BOOST_PREDEF_COMPILER_DIGNUS_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_SYSC`]
-
-[@http://www.dignus.com/dcxx/ Dignus Systems/C++] compiler.
-Version number available as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__SYSC__`] [__predef_detection__]]
-
- [[`__SYSC_VER__`] [V.R.P]]
- ]
- */
-
-#define BOOST_COMP_SYSC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__SYSC__)
-# define BOOST_COMP_SYSC_DETECTION BOOST_PREDEF_MAKE_10_VRRPP(__SYSC_VER__)
-#endif
-
-#ifdef BOOST_COMP_SYSC_DETECTION
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_SYSC_EMULATED BOOST_COMP_SYSC_DETECTION
-# else
-# undef BOOST_COMP_SYSC
-# define BOOST_COMP_SYSC BOOST_COMP_SYSC_DETECTION
-# endif
-# define BOOST_COMP_SYSC_AVAILABLE
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_SYSC_NAME "Dignus Systems/C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_SYSC,BOOST_COMP_SYSC_NAME)
-
-#ifdef BOOST_COMP_SYSC_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_SYSC_EMULATED,BOOST_COMP_SYSC_NAME)
-#endif
diff --git a/include/boost/predef/compiler/edg.h b/include/boost/predef/compiler/edg.h
deleted file mode 100644
index 2ffb9b0a..00000000
--- a/include/boost/predef/compiler/edg.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_EDG_H
-#define BOOST_PREDEF_COMPILER_EDG_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_EDG`]
-
-[@http://en.wikipedia.org/wiki/Edison_Design_Group EDG C++ Frontend] compiler.
-Version number available as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__EDG__`] [__predef_detection__]]
-
- [[`__EDG_VERSION__`] [V.R.0]]
- ]
- */
-
-#define BOOST_COMP_EDG BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__EDG__)
-# define BOOST_COMP_EDG_DETECTION BOOST_PREDEF_MAKE_10_VRR(__EDG_VERSION__)
-#endif
-
-#ifdef BOOST_COMP_EDG_DETECTION
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_EDG_EMULATED BOOST_COMP_EDG_DETECTION
-# else
-# undef BOOST_COMP_EDG
-# define BOOST_COMP_EDG BOOST_COMP_EDG_DETECTION
-# endif
-# define BOOST_COMP_EDG_AVAILABLE
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_EDG_NAME "EDG C++ Frontend"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_EDG,BOOST_COMP_EDG_NAME)
-
-#ifdef BOOST_COMP_EDG_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_EDG_EMULATED,BOOST_COMP_EDG_NAME)
-#endif
diff --git a/include/boost/predef/compiler/ekopath.h b/include/boost/predef/compiler/ekopath.h
deleted file mode 100644
index e5cde367..00000000
--- a/include/boost/predef/compiler/ekopath.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_EKOPATH_H
-#define BOOST_PREDEF_COMPILER_EKOPATH_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_PATH`]
-
-[@http://en.wikipedia.org/wiki/PathScale EKOpath] compiler.
-Version number available as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__PATHCC__`] [__predef_detection__]]
-
- [[`__PATHCC__`, `__PATHCC_MINOR__`, `__PATHCC_PATCHLEVEL__`] [V.R.P]]
- ]
- */
-
-#define BOOST_COMP_PATH BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__PATHCC__)
-# define BOOST_COMP_PATH_DETECTION \
- BOOST_VERSION_NUMBER(__PATHCC__,__PATHCC_MINOR__,__PATHCC_PATCHLEVEL__)
-#endif
-
-#ifdef BOOST_COMP_PATH_DETECTION
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_PATH_EMULATED BOOST_COMP_PATH_DETECTION
-# else
-# undef BOOST_COMP_PATH
-# define BOOST_COMP_PATH BOOST_COMP_PATH_DETECTION
-# endif
-# define BOOST_COMP_PATH_AVAILABLE
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_PATH_NAME "EKOpath"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_PATH,BOOST_COMP_PATH_NAME)
-
-#ifdef BOOST_COMP_PATH_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_PATH_EMULATED,BOOST_COMP_PATH_NAME)
-#endif
diff --git a/include/boost/predef/compiler/gcc.h b/include/boost/predef/compiler/gcc.h
deleted file mode 100644
index c2d7fff1..00000000
--- a/include/boost/predef/compiler/gcc.h
+++ /dev/null
@@ -1,68 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_GCC_H
-#define BOOST_PREDEF_COMPILER_GCC_H
-
-/* Other compilers that emulate this one need to be detected first. */
-
-#include <boost/predef/compiler/clang.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_GNUC`]
-
-[@http://en.wikipedia.org/wiki/GNU_Compiler_Collection Gnu GCC C/C++] compiler.
-Version number available as major, minor, and patch (if available).
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__GNUC__`] [__predef_detection__]]
-
- [[`__GNUC__`, `__GNUC_MINOR__`, `__GNUC_PATCHLEVEL__`] [V.R.P]]
- [[`__GNUC__`, `__GNUC_MINOR__`] [V.R.0]]
- ]
- */
-
-#define BOOST_COMP_GNUC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__GNUC__)
-# if !defined(BOOST_COMP_GNUC_DETECTION) && defined(__GNUC_PATCHLEVEL__)
-# define BOOST_COMP_GNUC_DETECTION \
- BOOST_VERSION_NUMBER(__GNUC__,__GNUC_MINOR__,__GNUC_PATCHLEVEL__)
-# endif
-# if !defined(BOOST_COMP_GNUC_DETECTION)
-# define BOOST_COMP_GNUC_DETECTION \
- BOOST_VERSION_NUMBER(__GNUC__,__GNUC_MINOR__,0)
-# endif
-#endif
-
-#ifdef BOOST_COMP_GNUC_DETECTION
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_GNUC_EMULATED BOOST_COMP_GNUC_DETECTION
-# else
-# undef BOOST_COMP_GNUC
-# define BOOST_COMP_GNUC BOOST_COMP_GNUC_DETECTION
-# endif
-# define BOOST_COMP_GNUC_AVAILABLE
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_GNUC_NAME "Gnu GCC C/C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_GNUC,BOOST_COMP_GNUC_NAME)
-
-#ifdef BOOST_COMP_GNUC_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_GNUC_EMULATED,BOOST_COMP_GNUC_NAME)
-#endif
diff --git a/include/boost/predef/compiler/gcc_xml.h b/include/boost/predef/compiler/gcc_xml.h
deleted file mode 100644
index acae600c..00000000
--- a/include/boost/predef/compiler/gcc_xml.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_GCC_XML_H
-#define BOOST_PREDEF_COMPILER_GCC_XML_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_GCCXML`]
-
-[@http://www.gccxml.org/ GCC XML] compiler.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__GCCXML__`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_COMP_GCCXML BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__GCCXML__)
-# define BOOST_COMP_GCCXML_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#ifdef BOOST_COMP_GCCXML_DETECTION
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_GCCXML_EMULATED BOOST_COMP_GCCXML_DETECTION
-# else
-# undef BOOST_COMP_GCCXML
-# define BOOST_COMP_GCCXML BOOST_COMP_GCCXML_DETECTION
-# endif
-# define BOOST_COMP_GCCXML_AVAILABLE
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_GCCXML_NAME "GCC XML"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_GCCXML,BOOST_COMP_GCCXML_NAME)
-
-#ifdef BOOST_COMP_GCCXML_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_GCCXML_EMULATED,BOOST_COMP_GCCXML_NAME)
-#endif
diff --git a/include/boost/predef/compiler/greenhills.h b/include/boost/predef/compiler/greenhills.h
deleted file mode 100644
index 23b8f017..00000000
--- a/include/boost/predef/compiler/greenhills.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_GREENHILLS_H
-#define BOOST_PREDEF_COMPILER_GREENHILLS_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_GHS`]
-
-[@http://en.wikipedia.org/wiki/Green_Hills_Software Green Hills C/C++] compiler.
-Version number available as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__ghs`] [__predef_detection__]]
- [[`__ghs__`] [__predef_detection__]]
-
- [[`__GHS_VERSION_NUMBER__`] [V.R.P]]
- [[`__ghs`] [V.R.P]]
- ]
- */
-
-#define BOOST_COMP_GHS BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__ghs) || defined(__ghs__)
-# if !defined(BOOST_COMP_GHS_DETECTION) && defined(__GHS_VERSION_NUMBER__)
-# define BOOST_COMP_GHS_DETECTION BOOST_PREDEF_MAKE_10_VRP(__GHS_VERSION_NUMBER__)
-# endif
-# if !defined(BOOST_COMP_GHS_DETECTION) && defined(__ghs)
-# define BOOST_COMP_GHS_DETECTION BOOST_PREDEF_MAKE_10_VRP(__ghs)
-# endif
-# if !defined(BOOST_COMP_GHS_DETECTION)
-# define BOOST_COMP_GHS_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#ifdef BOOST_COMP_GHS_DETECTION
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_GHS_EMULATED BOOST_COMP_GHS_DETECTION
-# else
-# undef BOOST_COMP_GHS
-# define BOOST_COMP_GHS BOOST_COMP_GHS_DETECTION
-# endif
-# define BOOST_COMP_GHS_AVAILABLE
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_GHS_NAME "Green Hills C/C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_GHS,BOOST_COMP_GHS_NAME)
-
-#ifdef BOOST_COMP_GHS_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_GHS_EMULATED,BOOST_COMP_GHS_NAME)
-#endif
diff --git a/include/boost/predef/compiler/hp_acc.h b/include/boost/predef/compiler/hp_acc.h
deleted file mode 100644
index 7b3ffe90..00000000
--- a/include/boost/predef/compiler/hp_acc.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_HP_ACC_H
-#define BOOST_PREDEF_COMPILER_HP_ACC_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_HPACC`]
-
-HP aC++ compiler.
-Version number available as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__HP_aCC`] [__predef_detection__]]
-
- [[`__HP_aCC`] [V.R.P]]
- ]
- */
-
-#define BOOST_COMP_HPACC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__HP_aCC)
-# if !defined(BOOST_COMP_HPACC_DETECTION) && (__HP_aCC > 1)
-# define BOOST_COMP_HPACC_DETECTION BOOST_PREDEF_MAKE_10_VVRRPP(__HP_aCC)
-# endif
-# if !defined(BOOST_COMP_HPACC_DETECTION)
-# define BOOST_COMP_HPACC_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#ifdef BOOST_COMP_HPACC_DETECTION
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_HPACC_EMULATED BOOST_COMP_HPACC_DETECTION
-# else
-# undef BOOST_COMP_HPACC
-# define BOOST_COMP_HPACC BOOST_COMP_HPACC_DETECTION
-# endif
-# define BOOST_COMP_HPACC_AVAILABLE
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_HPACC_NAME "HP aC++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_HPACC,BOOST_COMP_HPACC_NAME)
-
-#ifdef BOOST_COMP_HPACC_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_HPACC_EMULATED,BOOST_COMP_HPACC_NAME)
-#endif
diff --git a/include/boost/predef/compiler/iar.h b/include/boost/predef/compiler/iar.h
deleted file mode 100644
index 237f492e..00000000
--- a/include/boost/predef/compiler/iar.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_IAR_H
-#define BOOST_PREDEF_COMPILER_IAR_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_IAR`]
-
-IAR C/C++ compiler.
-Version number available as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__IAR_SYSTEMS_ICC__`] [__predef_detection__]]
-
- [[`__VER__`] [V.R.P]]
- ]
- */
-
-#define BOOST_COMP_IAR BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__IAR_SYSTEMS_ICC__)
-# define BOOST_COMP_IAR_DETECTION BOOST_PREDEF_MAKE_10_VVRR(__VER__)
-#endif
-
-#ifdef BOOST_COMP_IAR_DETECTION
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_IAR_EMULATED BOOST_COMP_IAR_DETECTION
-# else
-# undef BOOST_COMP_IAR
-# define BOOST_COMP_IAR BOOST_COMP_IAR_DETECTION
-# endif
-# define BOOST_COMP_IAR_AVAILABLE
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_IAR_NAME "IAR C/C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_IAR,BOOST_COMP_IAR_NAME)
-
-#ifdef BOOST_COMP_IAR_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_IAR_EMULATED,BOOST_COMP_IAR_NAME)
-#endif
diff --git a/include/boost/predef/compiler/ibm.h b/include/boost/predef/compiler/ibm.h
deleted file mode 100644
index 6931ebd8..00000000
--- a/include/boost/predef/compiler/ibm.h
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_IBM_H
-#define BOOST_PREDEF_COMPILER_IBM_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_IBM`]
-
-[@http://en.wikipedia.org/wiki/VisualAge IBM XL C/C++] compiler.
-Version number available as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__IBMCPP__`] [__predef_detection__]]
- [[`__xlC__`] [__predef_detection__]]
- [[`__xlc__`] [__predef_detection__]]
-
- [[`__COMPILER_VER__`] [V.R.P]]
- [[`__xlC__`] [V.R.P]]
- [[`__xlc__`] [V.R.P]]
- [[`__IBMCPP__`] [V.R.P]]
- ]
- */
-
-#define BOOST_COMP_IBM BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__IBMCPP__) || defined(__xlC__) || defined(__xlc__)
-# if !defined(BOOST_COMP_IBM_DETECTION) && defined(__COMPILER_VER__)
-# define BOOST_COMP_IBM_DETECTION BOOST_PREDEF_MAKE_0X_VRRPPPP(__COMPILER_VER__)
-# endif
-# if !defined(BOOST_COMP_IBM_DETECTION) && defined(__xlC__)
-# define BOOST_COMP_IBM_DETECTION BOOST_PREDEF_MAKE_0X_VVRR(__xlC__)
-# endif
-# if !defined(BOOST_COMP_IBM_DETECTION) && defined(__xlc__)
-# define BOOST_COMP_IBM_DETECTION BOOST_PREDEF_MAKE_0X_VVRR(__xlc__)
-# endif
-# if !defined(BOOST_COMP_IBM_DETECTION)
-# define BOOST_COMP_IBM_DETECTION BOOST_PREDEF_MAKE_10_VRP(__IBMCPP__)
-# endif
-#endif
-
-#ifdef BOOST_COMP_IBM_DETECTION
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_IBM_EMULATED BOOST_COMP_IBM_DETECTION
-# else
-# undef BOOST_COMP_IBM
-# define BOOST_COMP_IBM BOOST_COMP_IBM_DETECTION
-# endif
-# define BOOST_COMP_IBM_AVAILABLE
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_IBM_NAME "IBM XL C/C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_IBM,BOOST_COMP_IBM_NAME)
-
-#ifdef BOOST_COMP_IBM_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_IBM_EMULATED,BOOST_COMP_IBM_NAME)
-#endif
diff --git a/include/boost/predef/compiler/intel.h b/include/boost/predef/compiler/intel.h
deleted file mode 100644
index 65bde677..00000000
--- a/include/boost/predef/compiler/intel.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_INTEL_H
-#define BOOST_PREDEF_COMPILER_INTEL_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_INTEL`]
-
-[@http://en.wikipedia.org/wiki/Intel_C%2B%2B Intel C/C++] compiler.
-Version number available as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__INTEL_COMPILER`] [__predef_detection__]]
- [[`__ICL`] [__predef_detection__]]
- [[`__ICC`] [__predef_detection__]]
- [[`__ECC`] [__predef_detection__]]
-
- [[`__INTEL_COMPILER`] [V.R.P]]
- ]
- */
-
-#define BOOST_COMP_INTEL BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__INTEL_COMPILER) || defined(__ICL) || defined(__ICC) || \
- defined(__ECC)
-# if !defined(BOOST_COMP_INTEL_DETECTION) && defined(__INTEL_COMPILER)
-# define BOOST_COMP_INTEL_DETECTION BOOST_PREDEF_MAKE_10_VRP(__INTEL_COMPILER)
-# endif
-# if !defined(BOOST_COMP_INTEL_DETECTION)
-# define BOOST_COMP_INTEL_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#ifdef BOOST_COMP_INTEL_DETECTION
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_INTEL_EMULATED BOOST_COMP_INTEL_DETECTION
-# else
-# undef BOOST_COMP_INTEL
-# define BOOST_COMP_INTEL BOOST_COMP_INTEL_DETECTION
-# endif
-# define BOOST_COMP_INTEL_AVAILABLE
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_INTEL_NAME "Intel C/C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_INTEL,BOOST_COMP_INTEL_NAME)
-
-#ifdef BOOST_COMP_INTEL_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_INTEL_EMULATED,BOOST_COMP_INTEL_NAME)
-#endif
diff --git a/include/boost/predef/compiler/kai.h b/include/boost/predef/compiler/kai.h
deleted file mode 100644
index 68ce84e1..00000000
--- a/include/boost/predef/compiler/kai.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_KAI_H
-#define BOOST_PREDEF_COMPILER_KAI_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_KCC`]
-
-Kai C++ compiler.
-Version number available as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__KCC`] [__predef_detection__]]
-
- [[`__KCC_VERSION`] [V.R.P]]
- ]
- */
-
-#define BOOST_COMP_KCC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__KCC)
-# define BOOST_COMP_KCC_DETECTION BOOST_PREDEF_MAKE_0X_VRPP(__KCC_VERSION)
-#endif
-
-#ifdef BOOST_COMP_KCC_DETECTION
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_KCC_EMULATED BOOST_COMP_KCC_DETECTION
-# else
-# undef BOOST_COMP_KCC
-# define BOOST_COMP_KCC BOOST_COMP_KCC_DETECTION
-# endif
-# define BOOST_COMP_KCC_AVAILABLE
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_KCC_NAME "Kai C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_KCC,BOOST_COMP_KCC_NAME)
-
-#ifdef BOOST_COMP_KCC_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_KCC_EMULATED,BOOST_COMP_KCC_NAME)
-#endif
diff --git a/include/boost/predef/compiler/llvm.h b/include/boost/predef/compiler/llvm.h
deleted file mode 100644
index de654eb8..00000000
--- a/include/boost/predef/compiler/llvm.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_LLVM_H
-#define BOOST_PREDEF_COMPILER_LLVM_H
-
-/* Other compilers that emulate this one need to be detected first. */
-
-#include <boost/predef/compiler/clang.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_LLVM`]
-
-[@http://en.wikipedia.org/wiki/LLVM LLVM] compiler.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__llvm__`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_COMP_LLVM BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__llvm__)
-# define BOOST_COMP_LLVM_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#ifdef BOOST_COMP_LLVM_DETECTION
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_LLVM_EMULATED BOOST_COMP_LLVM_DETECTION
-# else
-# undef BOOST_COMP_LLVM
-# define BOOST_COMP_LLVM BOOST_COMP_LLVM_DETECTION
-# endif
-# define BOOST_COMP_LLVM_AVAILABLE
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_LLVM_NAME "LLVM"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_LLVM,BOOST_COMP_LLVM_NAME)
-
-#ifdef BOOST_COMP_LLVM_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_LLVM_EMULATED,BOOST_COMP_LLVM_NAME)
-#endif
diff --git a/include/boost/predef/compiler/metaware.h b/include/boost/predef/compiler/metaware.h
deleted file mode 100644
index 1a32039c..00000000
--- a/include/boost/predef/compiler/metaware.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_METAWARE_H
-#define BOOST_PREDEF_COMPILER_METAWARE_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_HIGHC`]
-
-MetaWare High C/C++ compiler.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__HIGHC__`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_COMP_HIGHC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__HIGHC__)
-# define BOOST_COMP_HIGHC_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#ifdef BOOST_COMP_HIGHC_DETECTION
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_HIGHC_EMULATED BOOST_COMP_HIGHC_DETECTION
-# else
-# undef BOOST_COMP_HIGHC
-# define BOOST_COMP_HIGHC BOOST_COMP_HIGHC_DETECTION
-# endif
-# define BOOST_COMP_HIGHC_AVAILABLE
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_HIGHC_NAME "MetaWare High C/C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_HIGHC,BOOST_COMP_HIGHC_NAME)
-
-#ifdef BOOST_COMP_HIGHC_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_HIGHC_EMULATED,BOOST_COMP_HIGHC_NAME)
-#endif
diff --git a/include/boost/predef/compiler/metrowerks.h b/include/boost/predef/compiler/metrowerks.h
deleted file mode 100644
index f2d739b9..00000000
--- a/include/boost/predef/compiler/metrowerks.h
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_METROWERKS_H
-#define BOOST_PREDEF_COMPILER_METROWERKS_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_MWERKS`]
-
-[@http://en.wikipedia.org/wiki/CodeWarrior Metrowerks CodeWarrior] compiler.
-Version number available as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__MWERKS__`] [__predef_detection__]]
- [[`__CWCC__`] [__predef_detection__]]
-
- [[`__CWCC__`] [V.R.P]]
- [[`__MWERKS__`] [V.R.P >= 4.2.0]]
- [[`__MWERKS__`] [9.R.0]]
- [[`__MWERKS__`] [8.R.0]]
- ]
- */
-
-#define BOOST_COMP_MWERKS BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__MWERKS__) || defined(__CWCC__)
-# if !defined(BOOST_COMP_MWERKS_DETECTION) && defined(__CWCC__)
-# define BOOST_COMP_MWERKS_DETECTION BOOST_PREDEF_MAKE_0X_VRPP(__CWCC__)
-# endif
-# if !defined(BOOST_COMP_MWERKS_DETECTION) && (__MWERKS__ >= 0x4200)
-# define BOOST_COMP_MWERKS_DETECTION BOOST_PREDEF_MAKE_0X_VRPP(__MWERKS__)
-# endif
-# if !defined(BOOST_COMP_MWERKS_DETECTION) && (__MWERKS__ >= 0x3204) // note the "skip": 04->9.3
-# define BOOST_COMP_MWERKS_DETECTION BOOST_VERSION_NUMBER(9,(__MWERKS__)%100-1,0)
-# endif
-# if !defined(BOOST_COMP_MWERKS_DETECTION) && (__MWERKS__ >= 0x3200)
-# define BOOST_COMP_MWERKS_DETECTION BOOST_VERSION_NUMBER(9,(__MWERKS__)%100,0)
-# endif
-# if !defined(BOOST_COMP_MWERKS_DETECTION) && (__MWERKS__ >= 0x3000)
-# define BOOST_COMP_MWERKS_DETECTION BOOST_VERSION_NUMBER(8,(__MWERKS__)%100,0)
-# endif
-# if !defined(BOOST_COMP_MWERKS_DETECTION)
-# define BOOST_COMP_MWERKS_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#ifdef BOOST_COMP_MWERKS_DETECTION
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_MWERKS_EMULATED BOOST_COMP_MWERKS_DETECTION
-# else
-# undef BOOST_COMP_MWERKS
-# define BOOST_COMP_MWERKS BOOST_COMP_MWERKS_DETECTION
-# endif
-# define BOOST_COMP_MWERKS_AVAILABLE
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_MWERKS_NAME "Metrowerks CodeWarrior"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_MWERKS,BOOST_COMP_MWERKS_NAME)
-
-#ifdef BOOST_COMP_MWERKS_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_MWERKS_EMULATED,BOOST_COMP_MWERKS_NAME)
-#endif
diff --git a/include/boost/predef/compiler/microtec.h b/include/boost/predef/compiler/microtec.h
deleted file mode 100644
index 066a6d2a..00000000
--- a/include/boost/predef/compiler/microtec.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_MICROTEC_H
-#define BOOST_PREDEF_COMPILER_MICROTEC_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_MRI`]
-
-[@http://www.mentor.com/microtec/ Microtec C/C++] compiler.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`_MRI`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_COMP_MRI BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(_MRI)
-# define BOOST_COMP_MRI_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#ifdef BOOST_COMP_MRI_DETECTION
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_MRI_EMULATED BOOST_COMP_MRI_DETECTION
-# else
-# undef BOOST_COMP_MRI
-# define BOOST_COMP_MRI BOOST_COMP_MRI_DETECTION
-# endif
-# define BOOST_COMP_MRI_AVAILABLE
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_MRI_NAME "Microtec C/C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_MRI,BOOST_COMP_MRI_NAME)
-
-#ifdef BOOST_COMP_MRI_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_MRI_EMULATED,BOOST_COMP_MRI_NAME)
-#endif
diff --git a/include/boost/predef/compiler/mpw.h b/include/boost/predef/compiler/mpw.h
deleted file mode 100644
index 11833064..00000000
--- a/include/boost/predef/compiler/mpw.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_MPW_H
-#define BOOST_PREDEF_COMPILER_MPW_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_MPW`]
-
-[@http://en.wikipedia.org/wiki/Macintosh_Programmer%27s_Workshop MPW C++] compiler.
-Version number available as major, and minor.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__MRC__`] [__predef_detection__]]
- [[`MPW_C`] [__predef_detection__]]
- [[`MPW_CPLUS`] [__predef_detection__]]
-
- [[`__MRC__`] [V.R.0]]
- ]
- */
-
-#define BOOST_COMP_MPW BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__MRC__) || defined(MPW_C) || defined(MPW_CPLUS)
-# if !defined(BOOST_COMP_MPW_DETECTION) && defined(__MRC__)
-# define BOOST_COMP_MPW_DETECTION BOOST_PREDEF_MAKE_0X_VVRR(__MRC__)
-# endif
-# if !defined(BOOST_COMP_MPW_DETECTION)
-# define BOOST_COMP_MPW_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#ifdef BOOST_COMP_MPW_DETECTION
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_MPW_EMULATED BOOST_COMP_MPW_DETECTION
-# else
-# undef BOOST_COMP_MPW
-# define BOOST_COMP_MPW BOOST_COMP_MPW_DETECTION
-# endif
-# define BOOST_COMP_MPW_AVAILABLE
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_MPW_NAME "MPW C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_MPW,BOOST_COMP_MPW_NAME)
-
-#ifdef BOOST_COMP_MPW_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_MPW_EMULATED,BOOST_COMP_MPW_NAME)
-#endif
diff --git a/include/boost/predef/compiler/palm.h b/include/boost/predef/compiler/palm.h
deleted file mode 100644
index 707925a6..00000000
--- a/include/boost/predef/compiler/palm.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_PALM_H
-#define BOOST_PREDEF_COMPILER_PALM_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_PALM`]
-
-Palm C/C++ compiler.
-Version number available as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`_PACC_VER`] [__predef_detection__]]
-
- [[`_PACC_VER`] [V.R.P]]
- ]
- */
-
-#define BOOST_COMP_PALM BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(_PACC_VER)
-# define BOOST_COMP_PALM_DETECTION BOOST_PREDEF_MAKE_0X_VRRPP000(_PACC_VER)
-#endif
-
-#ifdef BOOST_COMP_PALM_DETECTION
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_PALM_EMULATED BOOST_COMP_PALM_DETECTION
-# else
-# undef BOOST_COMP_PALM
-# define BOOST_COMP_PALM BOOST_COMP_PALM_DETECTION
-# endif
-# define BOOST_COMP_PALM_AVAILABLE
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_PALM_NAME "Palm C/C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_PALM,BOOST_COMP_PALM_NAME)
-
-#ifdef BOOST_COMP_PALM_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_PALM_EMULATED,BOOST_COMP_PALM_NAME)
-#endif
diff --git a/include/boost/predef/compiler/pgi.h b/include/boost/predef/compiler/pgi.h
deleted file mode 100644
index e016aeb0..00000000
--- a/include/boost/predef/compiler/pgi.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_PGI_H
-#define BOOST_PREDEF_COMPILER_PGI_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_PGI`]
-
-[@http://en.wikipedia.org/wiki/The_Portland_Group Portland Group C/C++] compiler.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__PGI`] [__predef_detection__]]
-
- [[`__PGIC__`, `__PGIC_MINOR__`, `__PGIC_PATCHLEVEL__`] [V.R.P]]
- ]
- */
-
-#define BOOST_COMP_PGI BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__PGI)
-# if !defined(BOOST_COMP_PGI_DETECTION) && (defined(__PGIC__) && defined(__PGIC_MINOR__) && defined(__PGIC_PATCHLEVEL__))
-# define BOOST_COMP_PGI_DETECTION BOOST_VERSION_NUMBER(__PGIC__,__PGIC_MINOR__,__PGIC_PATCHLEVEL__)
-# endif
-# if !defined(BOOST_COMP_PGI_DETECTION)
-# define BOOST_COMP_PGI_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#ifdef BOOST_COMP_PGI_DETECTION
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_PGI_EMULATED BOOST_COMP_PGI_DETECTION
-# else
-# undef BOOST_COMP_PGI
-# define BOOST_COMP_PGI BOOST_COMP_PGI_DETECTION
-# endif
-# define BOOST_COMP_PGI_AVAILABLE
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_PGI_NAME "Portland Group C/C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_PGI,BOOST_COMP_PGI_NAME)
-
-#ifdef BOOST_COMP_PGI_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_PGI_EMULATED,BOOST_COMP_PGI_NAME)
-#endif
diff --git a/include/boost/predef/compiler/sgi_mipspro.h b/include/boost/predef/compiler/sgi_mipspro.h
deleted file mode 100644
index 00739f0c..00000000
--- a/include/boost/predef/compiler/sgi_mipspro.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_SGI_MIPSPRO_H
-#define BOOST_PREDEF_COMPILER_SGI_MIPSPRO_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_SGI`]
-
-[@http://en.wikipedia.org/wiki/MIPSpro SGI MIPSpro] compiler.
-Version number available as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__sgi`] [__predef_detection__]]
- [[`sgi`] [__predef_detection__]]
-
- [[`_SGI_COMPILER_VERSION`] [V.R.P]]
- [[`_COMPILER_VERSION`] [V.R.P]]
- ]
- */
-
-#define BOOST_COMP_SGI BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__sgi) || defined(sgi)
-# if !defined(BOOST_COMP_SGI_DETECTION) && defined(_SGI_COMPILER_VERSION)
-# define BOOST_COMP_SGI_DETECTION BOOST_PREDEF_MAKE_10_VRP(_SGI_COMPILER_VERSION)
-# endif
-# if !defined(BOOST_COMP_SGI_DETECTION) && defined(_COMPILER_VERSION)
-# define BOOST_COMP_SGI_DETECTION BOOST_PREDEF_MAKE_10_VRP(_COMPILER_VERSION)
-# endif
-# if !defined(BOOST_COMP_SGI_DETECTION)
-# define BOOST_COMP_SGI_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#ifdef BOOST_COMP_SGI_DETECTION
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_SGI_EMULATED BOOST_COMP_SGI_DETECTION
-# else
-# undef BOOST_COMP_SGI
-# define BOOST_COMP_SGI BOOST_COMP_SGI_DETECTION
-# endif
-# define BOOST_COMP_SGI_AVAILABLE
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_SGI_NAME "SGI MIPSpro"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_SGI,BOOST_COMP_SGI_NAME)
-
-#ifdef BOOST_COMP_SGI_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_SGI_EMULATED,BOOST_COMP_SGI_NAME)
-#endif
diff --git a/include/boost/predef/compiler/sunpro.h b/include/boost/predef/compiler/sunpro.h
deleted file mode 100644
index 92c39260..00000000
--- a/include/boost/predef/compiler/sunpro.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_SUNPRO_H
-#define BOOST_PREDEF_COMPILER_SUNPRO_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_SUNPRO`]
-
-[@http://en.wikipedia.org/wiki/Oracle_Solaris_Studio Oracle Solaris Studio] compiler.
-Version number available as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__SUNPRO_CC`] [__predef_detection__]]
- [[`__SUNPRO_C`] [__predef_detection__]]
-
- [[`__SUNPRO_CC`] [V.R.P]]
- [[`__SUNPRO_C`] [V.R.P]]
- [[`__SUNPRO_CC`] [VV.RR.P]]
- [[`__SUNPRO_C`] [VV.RR.P]]
- ]
- */
-
-#define BOOST_COMP_SUNPRO BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__SUNPRO_CC) || defined(__SUNPRO_C)
-# if !defined(BOOST_COMP_SUNPRO_DETECTION) && defined(__SUNPRO_CC)
-# if (__SUNPRO_CC < 0x5100)
-# define BOOST_COMP_SUNPRO_DETECTION BOOST_PREDEF_MAKE_0X_VRP(__SUNPRO_CC)
-# else
-# define BOOST_COMP_SUNPRO_DETECTION BOOST_PREDEF_MAKE_0X_VVRRP(__SUNPRO_CC)
-# endif
-# endif
-# if !defined(BOOST_COMP_SUNPRO_DETECTION) && defined(__SUNPRO_C)
-# if (__SUNPRO_C < 0x5100)
-# define BOOST_COMP_SUNPRO_DETECTION BOOST_PREDEF_MAKE_0X_VRP(__SUNPRO_C)
-# else
-# define BOOST_COMP_SUNPRO_DETECTION BOOST_PREDEF_MAKE_0X_VVRRP(__SUNPRO_C)
-# endif
-# endif
-# if !defined(BOOST_COMP_SUNPRO_DETECTION)
-# define BOOST_COMP_SUNPRO_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#ifdef BOOST_COMP_SUNPRO_DETECTION
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_SUNPRO_EMULATED BOOST_COMP_SUNPRO_DETECTION
-# else
-# undef BOOST_COMP_SUNPRO
-# define BOOST_COMP_SUNPRO BOOST_COMP_SUNPRO_DETECTION
-# endif
-# define BOOST_COMP_SUNPRO_AVAILABLE
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_SUNPRO_NAME "Oracle Solaris Studio"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_SUNPRO,BOOST_COMP_SUNPRO_NAME)
-
-#ifdef BOOST_COMP_SUNPRO_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_SUNPRO_EMULATED,BOOST_COMP_SUNPRO_NAME)
-#endif
diff --git a/include/boost/predef/compiler/tendra.h b/include/boost/predef/compiler/tendra.h
deleted file mode 100644
index c2bc5e4e..00000000
--- a/include/boost/predef/compiler/tendra.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_TENDRA_H
-#define BOOST_PREDEF_COMPILER_TENDRA_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_TENDRA`]
-
-[@http://en.wikipedia.org/wiki/TenDRA_Compiler TenDRA C/C++] compiler.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__TenDRA__`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_COMP_TENDRA BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__TenDRA__)
-# define BOOST_COMP_TENDRA_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#ifdef BOOST_COMP_TENDRA_DETECTION
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_TENDRA_EMULATED BOOST_COMP_TENDRA_DETECTION
-# else
-# undef BOOST_COMP_TENDRA
-# define BOOST_COMP_TENDRA BOOST_COMP_TENDRA_DETECTION
-# endif
-# define BOOST_COMP_TENDRA_AVAILABLE
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_TENDRA_NAME "TenDRA C/C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_TENDRA,BOOST_COMP_TENDRA_NAME)
-
-#ifdef BOOST_COMP_TENDRA_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_TENDRA_EMULATED,BOOST_COMP_TENDRA_NAME)
-#endif
diff --git a/include/boost/predef/compiler/visualc.h b/include/boost/predef/compiler/visualc.h
deleted file mode 100644
index 9481d9d9..00000000
--- a/include/boost/predef/compiler/visualc.h
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_VISUALC_H
-#define BOOST_PREDEF_COMPILER_VISUALC_H
-
-/* Other compilers that emulate this one need to be detected first. */
-
-#include <boost/predef/compiler/clang.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_MSVC`]
-
-[@http://en.wikipedia.org/wiki/Visual_studio Microsoft Visual C/C++] compiler.
-Version number available as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`_MSC_VER`] [__predef_detection__]]
-
- [[`_MSC_FULL_VER`] [V.R.P]]
- [[`_MSC_VER`] [V.R.0]]
- ]
- */
-
-#define BOOST_COMP_MSVC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(_MSC_VER)
-# if !defined (_MSC_FULL_VER)
-# define BOOST_COMP_MSVC_BUILD 0
-# else
- /* how many digits does the build number have? */
-# if _MSC_FULL_VER / 10000 == _MSC_VER
- /* four digits */
-# define BOOST_COMP_MSVC_BUILD (_MSC_FULL_VER % 10000)
-# elif _MSC_FULL_VER / 100000 == _MSC_VER
- /* five digits */
-# define BOOST_COMP_MSVC_BUILD (_MSC_FULL_VER % 100000)
-# else
-# error "Cannot determine build number from _MSC_FULL_VER"
-# endif
-# endif
- /*
- VS2014 was skipped in the release sequence for MS. Which
- means that the compiler and VS product versions are no longer
- in sync. Hence we need to use different formulas for
- mapping from MSC version to VS product version.
- */
-# if (_MSC_VER >= 1900)
-# define BOOST_COMP_MSVC_DETECTION BOOST_VERSION_NUMBER(\
- _MSC_VER/100-5,\
- _MSC_VER%100,\
- BOOST_COMP_MSVC_BUILD)
-# else
-# define BOOST_COMP_MSVC_DETECTION BOOST_VERSION_NUMBER(\
- _MSC_VER/100-6,\
- _MSC_VER%100,\
- BOOST_COMP_MSVC_BUILD)
-# endif
-#endif
-
-#ifdef BOOST_COMP_MSVC_DETECTION
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_MSVC_EMULATED BOOST_COMP_MSVC_DETECTION
-# else
-# undef BOOST_COMP_MSVC
-# define BOOST_COMP_MSVC BOOST_COMP_MSVC_DETECTION
-# endif
-# define BOOST_COMP_MSVC_AVAILABLE
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_MSVC_NAME "Microsoft Visual C/C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_MSVC,BOOST_COMP_MSVC_NAME)
-
-#ifdef BOOST_COMP_MSVC_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_MSVC_EMULATED,BOOST_COMP_MSVC_NAME)
-#endif
diff --git a/include/boost/predef/compiler/watcom.h b/include/boost/predef/compiler/watcom.h
deleted file mode 100644
index b0e7776d..00000000
--- a/include/boost/predef/compiler/watcom.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_WATCOM_H
-#define BOOST_PREDEF_COMPILER_WATCOM_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_COMP_WATCOM`]
-
-[@http://en.wikipedia.org/wiki/Watcom Watcom C++] compiler.
-Version number available as major, and minor.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__WATCOMC__`] [__predef_detection__]]
-
- [[`__WATCOMC__`] [V.R.P]]
- ]
- */
-
-#define BOOST_COMP_WATCOM BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__WATCOMC__)
-# define BOOST_COMP_WATCOM_DETECTION BOOST_PREDEF_MAKE_10_VVRR(__WATCOMC__)
-#endif
-
-#ifdef BOOST_COMP_WATCOM_DETECTION
-# if defined(BOOST_PREDEF_DETAIL_COMP_DETECTED)
-# define BOOST_COMP_WATCOM_EMULATED BOOST_COMP_WATCOM_DETECTION
-# else
-# undef BOOST_COMP_WATCOM
-# define BOOST_COMP_WATCOM BOOST_COMP_WATCOM_DETECTION
-# endif
-# define BOOST_COMP_WATCOM_AVAILABLE
-# include <boost/predef/detail/comp_detected.h>
-#endif
-
-#define BOOST_COMP_WATCOM_NAME "Watcom C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_WATCOM,BOOST_COMP_WATCOM_NAME)
-
-#ifdef BOOST_COMP_WATCOM_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_COMP_WATCOM_EMULATED,BOOST_COMP_WATCOM_NAME)
-#endif
diff --git a/include/boost/predef/detail/_cassert.h b/include/boost/predef/detail/_cassert.h
deleted file mode 100644
index 940e944e..00000000
--- a/include/boost/predef/detail/_cassert.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-Copyright Rene Rivera 2011-2012
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_DETAIL__CASSERT_H
-#define BOOST_PREDEF_DETAIL__CASSERT_H
-
-#if defined(__cplusplus)
-#include <cassert>
-#else
-#include <assert.h>
-#endif
-
-#endif
diff --git a/include/boost/predef/detail/_exception.h b/include/boost/predef/detail/_exception.h
deleted file mode 100644
index f5a6687a..00000000
--- a/include/boost/predef/detail/_exception.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
-Copyright Rene Rivera 2011-2012
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_DETAIL__EXCEPTION_H
-#define BOOST_PREDEF_DETAIL__EXCEPTION_H
-
-#if defined(__cplusplus)
-#include <exception>
-#endif
-
-#endif
diff --git a/include/boost/predef/detail/comp_detected.h b/include/boost/predef/detail/comp_detected.h
deleted file mode 100644
index fda1801b..00000000
--- a/include/boost/predef/detail/comp_detected.h
+++ /dev/null
@@ -1,10 +0,0 @@
-/*
-Copyright Rene Rivera 2014
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_DETAIL_COMP_DETECTED
-#define BOOST_PREDEF_DETAIL_COMP_DETECTED 1
-#endif
diff --git a/include/boost/predef/detail/endian_compat.h b/include/boost/predef/detail/endian_compat.h
deleted file mode 100644
index 7725e682..00000000
--- a/include/boost/predef/detail/endian_compat.h
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
-Copyright Rene Rivera 2013
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_DETAIL_ENDIAN_COMPAT_H
-#define BOOST_PREDEF_DETAIL_ENDIAN_COMPAT_H
-
-#include <boost/predef/other/endian.h>
-
-#if BOOST_ENDIAN_BIG_BYTE
-# define BOOST_BIG_ENDIAN
-# define BOOST_BYTE_ORDER 4321
-#endif
-#if BOOST_ENDIAN_LITTLE_BYTE
-# define BOOST_LITTLE_ENDIAN
-# define BOOST_BYTE_ORDER 1234
-#endif
-#if BOOST_ENDIAN_LITTLE_WORD
-# define BOOST_PDP_ENDIAN
-# define BOOST_BYTE_ORDER 2134
-#endif
-
-#endif
diff --git a/include/boost/predef/detail/os_detected.h b/include/boost/predef/detail/os_detected.h
deleted file mode 100644
index 08e10f99..00000000
--- a/include/boost/predef/detail/os_detected.h
+++ /dev/null
@@ -1,10 +0,0 @@
-/*
-Copyright Rene Rivera 2013
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_DETAIL_OS_DETECTED
-#define BOOST_PREDEF_DETAIL_OS_DETECTED 1
-#endif
diff --git a/include/boost/predef/detail/platform_detected.h b/include/boost/predef/detail/platform_detected.h
deleted file mode 100644
index 4faf6938..00000000
--- a/include/boost/predef/detail/platform_detected.h
+++ /dev/null
@@ -1,10 +0,0 @@
-/*
-Copyright Rene Rivera 2014
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_DETAIL_PLAT_DETECTED
-#define BOOST_PREDEF_DETAIL_PLAT_DETECTED 1
-#endif
diff --git a/include/boost/predef/detail/test.h b/include/boost/predef/detail/test.h
deleted file mode 100644
index 546a9e40..00000000
--- a/include/boost/predef/detail/test.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-Copyright Rene Rivera 2011-2012
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_DETAIL_TEST_H
-#define BOOST_PREDEF_DETAIL_TEST_H
-
-#if !defined(BOOST_PREDEF_INTERNAL_GENERATE_TESTS)
-
-#define BOOST_PREDEF_DECLARE_TEST(x,s)
-
-#endif
-
-#endif
diff --git a/include/boost/predef/detail/test_def.h b/include/boost/predef/detail/test_def.h
deleted file mode 100644
index c2f195bf..00000000
--- a/include/boost/predef/detail/test_def.h
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
-Copyright Rene Rivera 2011-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-#include <boost/predef.h>
-
-#define BOOST_PREDEF_INTERNAL_GENERATE_TESTS
-
-void * add_predef_entry(const char * name, const char * description, unsigned value);
-#undef BOOST_PREDEF_DECLARE_TEST
-#define BOOST_PREDEF_DECLARE_TEST(x,s) void predef_entry_##x() { add_predef_entry(#x, s, x); }
-#include <boost/predef.h>
-
-#undef BOOST_PREDEF_DECLARE_TEST
-#define BOOST_PREDEF_DECLARE_TEST(x,s) predef_entry_##x();
-void create_predef_entries()
-{
-#include <boost/predef.h>
-}
-
-#ifdef __cplusplus
-#include <cstring>
-#include <cstdio>
-#include <cstdlib>
-using namespace std;
-#else
-#include <string.h>
-#include <stdio.h>
-#include <stdlib.h>
-#endif
-
-typedef struct predef_info
-{
- const char * name;
- const char * description;
- unsigned value;
-} predef_info;
-
-#ifdef __cplusplus
-using namespace std;
-#endif
-
-unsigned generated_predef_info_count = 0;
-predef_info* generated_predef_info = 0;
-void * add_predef_entry(const char * name, const char * description, unsigned value)
-{
- if (0 == generated_predef_info_count)
- {
- generated_predef_info_count = 1;
- generated_predef_info = (predef_info*)malloc(sizeof(predef_info));
- }
- else
- {
- generated_predef_info_count += 1;
- generated_predef_info = (predef_info*)realloc(generated_predef_info,
- generated_predef_info_count*sizeof(predef_info));
- }
- generated_predef_info[generated_predef_info_count-1].name = name;
- generated_predef_info[generated_predef_info_count-1].description = description;
- generated_predef_info[generated_predef_info_count-1].value = value;
- return 0;
-}
-
-int predef_info_compare(const void * a, const void * b)
-{
- const predef_info * i = (const predef_info *)a;
- const predef_info * j = (const predef_info *)b;
- return strcmp(i->name,j->name);
-}
diff --git a/include/boost/predef/hardware.h b/include/boost/predef/hardware.h
deleted file mode 100644
index 972b73af..00000000
--- a/include/boost/predef/hardware.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
-Copyright Charly Chevalier 2015
-Copyright Joel Falcou 2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#if !defined(BOOST_PREDEF_HARDWARE_H) || defined(BOOST_PREDEF_INTERNAL_GENERATE_TESTS)
-#ifndef BOOST_PREDEF_HARDWARE_H
-#define BOOST_PREDEF_HARDWARE_H
-#endif
-
-#include <boost/predef/hardware/simd.h>
-
-#endif
diff --git a/include/boost/predef/hardware/simd.h b/include/boost/predef/hardware/simd.h
deleted file mode 100644
index 4de1e70c..00000000
--- a/include/boost/predef/hardware/simd.h
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
-Copyright Charly Chevalier 2015
-Copyright Joel Falcou 2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#include <boost/predef/hardware/simd/x86.h>
-#include <boost/predef/hardware/simd/x86_amd.h>
-#include <boost/predef/hardware/simd/arm.h>
-#include <boost/predef/hardware/simd/ppc.h>
-
-#ifndef BOOST_PREDEF_HARDWARE_SIMD_H
-#define BOOST_PREDEF_HARDWARE_SIMD_H
-
-#include <boost/predef/version_number.h>
-
-/*`
- [section Using the `BOOST_HW_SIMD_*` predefs]
- [include ../doc/hardware_simd.qbk]
- [endsect]
-
- [/ --------------------------- ]
-
- [section `BOOST_HW_SIMD_*`]
-
- [heading `BOOST_HW_SIMD`]
-
- The SIMD extension detected for a specific architectures.
- Version number depends on the detected extension.
-
- [table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`BOOST_HW_SIMD_X86_AVAILABLE`] [__predef_detection__]]
- [[`BOOST_HW_SIMD_X86_AMD_AVAILABLE`] [__predef_detection__]]
- [[`BOOST_HW_SIMD_ARM_AVAILABLE`] [__predef_detection__]]
- [[`BOOST_HW_SIMD_PPC_AVAILABLE`] [__predef_detection__]]
- ]
-
- [include ../include/boost/predef/hardware/simd/x86.h]
- [include ../include/boost/predef/hardware/simd/x86_amd.h]
- [include ../include/boost/predef/hardware/simd/arm.h]
- [include ../include/boost/predef/hardware/simd/ppc.h]
-
- [endsect]
-
- [/ --------------------------- ]
-
- [section `BOOST_HW_SIMD_X86_*_VERSION`]
- [include ../include/boost/predef/hardware/simd/x86/versions.h]
- [endsect]
-
- [section `BOOST_HW_SIMD_X86_AMD_*_VERSION`]
- [include ../include/boost/predef/hardware/simd/x86_amd/versions.h]
- [endsect]
-
- [section `BOOST_HW_SIMD_ARM_*_VERSION`]
- [include ../include/boost/predef/hardware/simd/arm/versions.h]
- [endsect]
-
- [section `BOOST_HW_SIMD_PPC_*_VERSION`]
- [include ../include/boost/predef/hardware/simd/ppc/versions.h]
- [endsect]
-
- */
-
-// We check if SIMD extension of multiples architectures have been detected,
-// if yes, then this is an error!
-//
-// NOTE: _X86_AMD implies _X86, so there is no need to check for it here!
-//
-#if defined(BOOST_HW_SIMD_ARM_AVAILABLE) && defined(BOOST_HW_SIMD_PPC_AVAILABLE) ||\
- defined(BOOST_HW_SIMD_ARM_AVAILABLE) && defined(BOOST_HW_SIMD_X86_AVAILABLE) ||\
- defined(BOOST_HW_SIMD_PPC_AVAILABLE) && defined(BOOST_HW_SIMD_X86_AVAILABLE)
-# error "Multiple SIMD architectures detected, this cannot happen!"
-#endif
-
-#if defined(BOOST_HW_SIMD_X86_AVAILABLE)
-# define BOOST_HW_SIMD BOOST_HW_SIMD_X86
-#endif
-
-#if defined(BOOST_HW_SIMD_X86_AMD_AVAILABLE)
-# define BOOST_HW_SIMD BOOST_HW_SIMD_X86_AMD
-#endif
-
-#if defined(BOOST_HW_SIMD_ARM_AVAILABLE)
-# define BOOST_HW_SIMD BOOST_HW_SIMD_ARM
-#endif
-
-#if defined(BOOST_HW_SIMD_PPC_AVAILABLE)
-# define BOOST_HW_SIMD BOOST_HW_SIMD_PPC
-#endif
-
-#if defined(BOOST_HW_SIMD)
-# define BOOST_HW_SIMD_AVAILABLE
-#else
-# define BOOST_HW_SIMD BOOST_VERSION_NUMBER_NOT_AVAILABLE
-#endif
-
-#define BOOST_HW_SIMD_NAME "Hardware SIMD"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_HW_SIMD, BOOST_HW_SIMD_NAME)
diff --git a/include/boost/predef/hardware/simd/arm.h b/include/boost/predef/hardware/simd/arm.h
deleted file mode 100644
index d067c931..00000000
--- a/include/boost/predef/hardware/simd/arm.h
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
-Copyright Charly Chevalier 2015
-Copyright Joel Falcou 2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_HARDWARE_SIMD_ARM_H
-#define BOOST_PREDEF_HARDWARE_SIMD_ARM_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/hardware/simd/arm/versions.h>
-
-/*`
- [heading `BOOST_HW_SIMD_ARM`]
-
- The SIMD extension for ARM (*if detected*).
- Version number depends on the most recent detected extension.
-
- [table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__ARM_NEON__`] [__predef_detection__]]
- [[`__aarch64__`] [__predef_detection__]]
- [[`_M_ARM`] [__predef_detection__]]
- ]
-
- [table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__ARM_NEON__`] [BOOST_HW_SIMD_ARM_NEON_VERSION]]
- [[`__aarch64__`] [BOOST_HW_SIMD_ARM_NEON_VERSION]]
- [[`_M_ARM`] [BOOST_HW_SIMD_ARM_NEON_VERSION]]
- ]
-
- */
-
-#define BOOST_HW_SIMD_ARM BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#undef BOOST_HW_SIMD_ARM
-#if !defined(BOOST_HW_SIMD_ARM) && (defined(__ARM_NEON__) || defined(__aarch64__) || defined (_M_ARM))
-# define BOOST_HW_SIMD_ARM BOOST_HW_SIMD_ARM_NEON_VERSION
-#endif
-
-#if !defined(BOOST_HW_SIMD_ARM)
-# define BOOST_HW_SIMD_ARM BOOST_VERSION_NUMBER_NOT_AVAILABLE
-#else
-# define BOOST_HW_SIMD_ARM_AVAILABLE
-#endif
-
-#define BOOST_HW_SIMD_ARM_NAME "ARM SIMD"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_HW_SIMD_ARM, BOOST_HW_SIMD_ARM_NAME)
diff --git a/include/boost/predef/hardware/simd/arm/versions.h b/include/boost/predef/hardware/simd/arm/versions.h
deleted file mode 100644
index 8425b318..00000000
--- a/include/boost/predef/hardware/simd/arm/versions.h
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
-Copyright Charly Chevalier 2015
-Copyright Joel Falcou 2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_HARDWARE_SIMD_ARM_VERSIONS_H
-#define BOOST_PREDEF_HARDWARE_SIMD_ARM_VERSIONS_H
-
-#include <boost/predef/version_number.h>
-
-/*`
- Those defines represent ARM SIMD extensions versions.
-
- [note You *MUST* compare them with the predef `BOOST_HW_SIMD_ARM`.]
- */
-
-// ---------------------------------
-
-/*`
- [heading `BOOST_HW_SIMD_ARM_NEON_VERSION`]
-
- The [@https://en.wikipedia.org/wiki/ARM_architecture#Advanced_SIMD_.28NEON.29 NEON]
- ARM extension version number.
-
- Version number is: *1.0.0*.
- */
-#define BOOST_HW_SIMD_ARM_NEON_VERSION BOOST_VERSION_NUMBER(1, 0, 0)
-
-#endif
diff --git a/include/boost/predef/hardware/simd/ppc.h b/include/boost/predef/hardware/simd/ppc.h
deleted file mode 100644
index eef25c2d..00000000
--- a/include/boost/predef/hardware/simd/ppc.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-Copyright Charly Chevalier 2015
-Copyright Joel Falcou 2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_HARDWARE_SIMD_PPC_H
-#define BOOST_PREDEF_HARDWARE_SIMD_PPC_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/hardware/simd/ppc/versions.h>
-
-/*`
- [heading `BOOST_HW_SIMD_PPC`]
-
- The SIMD extension for PowerPC (*if detected*).
- Version number depends on the most recent detected extension.
-
- [table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__VECTOR4DOUBLE__`] [__predef_detection__]]
-
- [[`__ALTIVEC__`] [__predef_detection__]]
- [[`__VEC__`] [__predef_detection__]]
-
- [[`__VSX__`] [__predef_detection__]]
- ]
-
- [table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__VECTOR4DOUBLE__`] [BOOST_HW_SIMD_PPC_QPX_VERSION]]
-
- [[`__ALTIVEC__`] [BOOST_HW_SIMD_PPC_VMX_VERSION]]
- [[`__VEC__`] [BOOST_HW_SIMD_PPC_VMX_VERSION]]
-
- [[`__VSX__`] [BOOST_HW_SIMD_PPC_VSX_VERSION]]
- ]
-
- */
-
-#define BOOST_HW_SIMD_PPC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#undef BOOST_HW_SIMD_PPC
-#if !defined(BOOST_HW_SIMD_PPC) && defined(__VECTOR4DOUBLE__)
-# define BOOST_HW_SIMD_PPC BOOST_HW_SIMD_PPC_QPX_VERSION
-#endif
-#if !defined(BOOST_HW_SIMD_PPC) && defined(__VSX__)
-# define BOOST_HW_SIMD_PPC BOOST_HW_SIMD_PPC_VSX_VERSION
-#endif
-#if !defined(BOOST_HW_SIMD_PPC) && (defined(__ALTIVEC__) || defined(__VEC__))
-# define BOOST_HW_SIMD_PPC BOOST_HW_SIMD_PPC_VMX_VERSION
-#endif
-
-#if !defined(BOOST_HW_SIMD_PPC)
-# define BOOST_HW_SIMD_PPC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-#else
-# define BOOST_HW_SIMD_PPC_AVAILABLE
-#endif
-
-#define BOOST_HW_SIMD_PPC_NAME "PPC SIMD"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_HW_SIMD_PPC, BOOST_HW_SIMD_PPC_NAME)
diff --git a/include/boost/predef/hardware/simd/ppc/versions.h b/include/boost/predef/hardware/simd/ppc/versions.h
deleted file mode 100644
index ffe3f0b1..00000000
--- a/include/boost/predef/hardware/simd/ppc/versions.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-Copyright Charly Chevalier 2015
-Copyright Joel Falcou 2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_HARDWARE_SIMD_PPC_VERSIONS_H
-#define BOOST_PREDEF_HARDWARE_SIMD_PPC_VERSIONS_H
-
-#include <boost/predef/version_number.h>
-
-/*`
- Those defines represent Power PC SIMD extensions versions.
-
- [note You *MUST* compare them with the predef `BOOST_HW_SIMD_PPC`.]
- */
-
-// ---------------------------------
-
-/*`
- [heading `BOOST_HW_SIMD_PPC_VMX_VERSION`]
-
- The [@https://en.wikipedia.org/wiki/AltiVec#VMX128 VMX] powerpc extension
- version number.
-
- Version number is: *1.0.0*.
- */
-#define BOOST_HW_SIMD_PPC_VMX_VERSION BOOST_VERSION_NUMBER(1, 0, 0)
-
-/*`
- [heading `BOOST_HW_SIMD_PPC_VSX_VERSION`]
-
- The [@https://en.wikipedia.org/wiki/AltiVec#VSX VSX] powerpc extension version
- number.
-
- Version number is: *1.1.0*.
- */
-#define BOOST_HW_SIMD_PPC_VSX_VERSION BOOST_VERSION_NUMBER(1, 1, 0)
-
-/*`
- [heading `BOOST_HW_SIMD_PPC_QPX_VERSION`]
-
- The QPX powerpc extension version number.
-
- Version number is: *2.0.0*.
- */
-#define BOOST_HW_SIMD_PPC_QPX_VERSION BOOST_VERSION_NUMBER(2, 0, 0)
-
-#endif
diff --git a/include/boost/predef/hardware/simd/x86.h b/include/boost/predef/hardware/simd/x86.h
deleted file mode 100644
index 0874bc4e..00000000
--- a/include/boost/predef/hardware/simd/x86.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
-Copyright Charly Chevalier 2015
-Copyright Joel Falcou 2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_HARDWARE_SIMD_X86_H
-#define BOOST_PREDEF_HARDWARE_SIMD_X86_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/hardware/simd/x86/versions.h>
-
-/*`
- [heading `BOOST_HW_SIMD_X86`]
-
- The SIMD extension for x86 (*if detected*).
- Version number depends on the most recent detected extension.
-
- [table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__SSE__`] [__predef_detection__]]
- [[`_M_X64`] [__predef_detection__]]
- [[`_M_IX86_FP >= 1`] [__predef_detection__]]
-
- [[`__SSE2__`] [__predef_detection__]]
- [[`_M_X64`] [__predef_detection__]]
- [[`_M_IX86_FP >= 2`] [__predef_detection__]]
-
- [[`__SSE3__`] [__predef_detection__]]
-
- [[`__SSSE3__`] [__predef_detection__]]
-
- [[`__SSE4_1__`] [__predef_detection__]]
-
- [[`__SSE4_2__`] [__predef_detection__]]
-
- [[`__AVX__`] [__predef_detection__]]
-
- [[`__FMA__`] [__predef_detection__]]
-
- [[`__AVX2__`] [__predef_detection__]]
- ]
-
- [table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__SSE__`] [BOOST_HW_SIMD_X86_SSE_VERSION]]
- [[`_M_X64`] [BOOST_HW_SIMD_X86_SSE_VERSION]]
- [[`_M_IX86_FP >= 1`] [BOOST_HW_SIMD_X86_SSE_VERSION]]
-
- [[`__SSE2__`] [BOOST_HW_SIMD_X86_SSE2_VERSION]]
- [[`_M_X64`] [BOOST_HW_SIMD_X86_SSE2_VERSION]]
- [[`_M_IX86_FP >= 2`] [BOOST_HW_SIMD_X86_SSE2_VERSION]]
-
- [[`__SSE3__`] [BOOST_HW_SIMD_X86_SSE3_VERSION]]
-
- [[`__SSSE3__`] [BOOST_HW_SIMD_X86_SSSE3_VERSION]]
-
- [[`__SSE4_1__`] [BOOST_HW_SIMD_X86_SSE4_1_VERSION]]
-
- [[`__SSE4_2__`] [BOOST_HW_SIMD_X86_SSE4_2_VERSION]]
-
- [[`__AVX__`] [BOOST_HW_SIMD_X86_AVX_VERSION]]
-
- [[`__FMA__`] [BOOST_HW_SIMD_X86_FMA3_VERSION]]
-
- [[`__AVX2__`] [BOOST_HW_SIMD_x86_AVX2_VERSION]]
- ]
-
- */
-
-#define BOOST_HW_SIMD_X86 BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#undef BOOST_HW_SIMD_X86
-#if !defined(BOOST_HW_SIMD_X86) && defined(__MIC__)
-# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_MIC_VERSION
-#endif
-#if !defined(BOOST_HW_SIMD_X86) && defined(__AVX2__)
-# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_AVX2_VERSION
-#endif
-#if !defined(BOOST_HW_SIMD_X86) && defined(__AVX__)
-# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_AVX_VERSION
-#endif
-#if !defined(BOOST_HW_SIMD_X86) && defined(__FMA__)
-# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_FMA_VERSION
-#endif
-#if !defined(BOOST_HW_SIMD_X86) && defined(__SSE4_2__)
-# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_SSE4_2_VERSION
-#endif
-#if !defined(BOOST_HW_SIMD_X86) && defined(__SSE4_1__)
-# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_SSE4_1_VERSION
-#endif
-#if !defined(BOOST_HW_SIMD_X86) && defined(__SSSE3__)
-# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_SSSE3_VERSION
-#endif
-#if !defined(BOOST_HW_SIMD_X86) && defined(__SSE3__)
-# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_SSE3_VERSION
-#endif
-#if !defined(BOOST_HW_SIMD_X86) && (defined(__SSE2__) || defined(_M_X64) || _M_IX86_FP >= 2)
-# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_SSE2_VERSION
-#endif
-#if !defined(BOOST_HW_SIMD_X86) && (defined(__SSE__) || defined(_M_X64) || _M_IX86_FP >= 1)
-# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_SSE_VERSION
-#endif
-#if !defined(BOOST_HW_SIMD_X86) && defined(__MMX__)
-# define BOOST_HW_SIMD_X86 BOOST_HW_SIMD_X86_MMX_VERSION
-#endif
-
-#if !defined(BOOST_HW_SIMD_X86)
-# define BOOST_HW_SIMD_X86 BOOST_VERSION_NUMBER_NOT_AVAILABLE
-#else
-# define BOOST_HW_SIMD_X86_AVAILABLE
-#endif
-
-#define BOOST_HW_SIMD_X86_NAME "x86 SIMD"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_HW_SIMD_X86, BOOST_HW_SIMD_X86_NAME)
diff --git a/include/boost/predef/hardware/simd/x86/versions.h b/include/boost/predef/hardware/simd/x86/versions.h
deleted file mode 100644
index 0c7a4d38..00000000
--- a/include/boost/predef/hardware/simd/x86/versions.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
-Copyright Charly Chevalier 2015
-Copyright Joel Falcou 2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_HARDWARE_SIMD_X86_VERSIONS_H
-#define BOOST_PREDEF_HARDWARE_SIMD_X86_VERSIONS_H
-
-#include <boost/predef/version_number.h>
-
-/*`
- Those defines represent x86 SIMD extensions versions.
-
- [note You *MUST* compare them with the predef `BOOST_HW_SIMD_X86`.]
- */
-
-// ---------------------------------
-
-/*`
- [heading `BOOST_HW_SIMD_X86_MMX_VERSION`]
-
- The [@https://en.wikipedia.org/wiki/MMX_(instruction_set) MMX] x86 extension
- version number.
-
- Version number is: *0.99.0*.
- */
-#define BOOST_HW_SIMD_X86_MMX_VERSION BOOST_VERSION_NUMBER(0, 99, 0)
-
-/*`
- [heading `BOOST_HW_SIMD_X86_SSE_VERSION`]
-
- The [@https://en.wikipedia.org/wiki/Streaming_SIMD_Extensions SSE] x86 extension
- version number.
-
- Version number is: *1.0.0*.
- */
-#define BOOST_HW_SIMD_X86_SSE_VERSION BOOST_VERSION_NUMBER(1, 0, 0)
-
-/*`
- [heading `BOOST_HW_SIMD_X86_SSE2_VERSION`]
-
- The [@https://en.wikipedia.org/wiki/SSE2 SSE2] x86 extension version number.
-
- Version number is: *2.0.0*.
- */
-#define BOOST_HW_SIMD_X86_SSE2_VERSION BOOST_VERSION_NUMBER(2, 0, 0)
-
-/*`
- [heading `BOOST_HW_SIMD_X86_SSE3_VERSION`]
-
- The [@https://en.wikipedia.org/wiki/SSE3 SSE3] x86 extension version number.
-
- Version number is: *3.0.0*.
- */
-#define BOOST_HW_SIMD_X86_SSE3_VERSION BOOST_VERSION_NUMBER(3, 0, 0)
-
-/*`
- [heading `BOOST_HW_SIMD_X86_SSSE3_VERSION`]
-
- The [@https://en.wikipedia.org/wiki/SSSE3 SSSE3] x86 extension version number.
-
- Version number is: *3.1.0*.
- */
-#define BOOST_HW_SIMD_X86_SSSE3_VERSION BOOST_VERSION_NUMBER(3, 1, 0)
-
-/*`
- [heading `BOOST_HW_SIMD_X86_SSE4_1_VERSION`]
-
- The [@https://en.wikipedia.org/wiki/SSE4#SSE4.1 SSE4_1] x86 extension version
- number.
-
- Version number is: *4.1.0*.
- */
-#define BOOST_HW_SIMD_X86_SSE4_1_VERSION BOOST_VERSION_NUMBER(4, 1, 0)
-
-/*`
- [heading `BOOST_HW_SIMD_X86_SSE4_2_VERSION`]
-
- The [@https://en.wikipedia.org/wiki/SSE4##SSE4.2 SSE4_2] x86 extension version
- number.
-
- Version number is: *4.2.0*.
- */
-#define BOOST_HW_SIMD_X86_SSE4_2_VERSION BOOST_VERSION_NUMBER(4, 2, 0)
-
-/*`
- [heading `BOOST_HW_SIMD_X86_AVX_VERSION`]
-
- The [@https://en.wikipedia.org/wiki/Advanced_Vector_Extensions AVX] x86
- extension version number.
-
- Version number is: *5.0.0*.
- */
-#define BOOST_HW_SIMD_X86_AVX_VERSION BOOST_VERSION_NUMBER(5, 0, 0)
-
-/*`
- [heading `BOOST_HW_SIMD_X86_FMA3_VERSION`]
-
- The [@https://en.wikipedia.org/wiki/FMA_instruction_set FMA3] x86 extension
- version number.
-
- Version number is: *5.2.0*.
- */
-#define BOOST_HW_SIMD_X86_FMA3_VERSION BOOST_VERSION_NUMBER(5, 2, 0)
-
-/*`
- [heading `BOOST_HW_SIMD_X86_AVX2_VERSION`]
-
- The [@https://en.wikipedia.org/wiki/Advanced_Vector_Extensions#Advanced_Vector_Extensions_2 AVX2]
- x86 extension version number.
-
- Version number is: *5.3.0*.
- */
-#define BOOST_HW_SIMD_X86_AVX2_VERSION BOOST_VERSION_NUMBER(5, 3, 0)
-
-/*`
- [heading `BOOST_HW_SIMD_X86_MIC_VERSION`]
-
- The [@https://en.wikipedia.org/wiki/Xeon_Phi MIC] (Xeon Phi) x86 extension
- version number.
-
- Version number is: *9.0.0*.
- */
-#define BOOST_HW_SIMD_X86_MIC_VERSION BOOST_VERSION_NUMBER(9, 0, 0)
-
-#endif
diff --git a/include/boost/predef/hardware/simd/x86_amd.h b/include/boost/predef/hardware/simd/x86_amd.h
deleted file mode 100644
index 60fd4485..00000000
--- a/include/boost/predef/hardware/simd/x86_amd.h
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
-Copyright Charly Chevalier 2015
-Copyright Joel Falcou 2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_HARDWARE_SIMD_X86_AMD_H
-#define BOOST_PREDEF_HARDWARE_SIMD_X86_AMD_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/hardware/simd/x86_amd/versions.h>
-
-/*`
- [heading `BOOST_HW_SIMD_X86_AMD`]
-
- The SIMD extension for x86 (AMD) (*if detected*).
- Version number depends on the most recent detected extension.
-
- [table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__SSE4A__`] [__predef_detection__]]
-
- [[`__FMA4__`] [__predef_detection__]]
-
- [[`__XOP__`] [__predef_detection__]]
-
- [[`BOOST_HW_SIMD_X86`] [__predef_detection__]]
- ]
-
- [table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__SSE4A__`] [BOOST_HW_SIMD_x86_SSE4A_VERSION]]
-
- [[`__FMA4__`] [BOOST_HW_SIMD_x86_FMA4_VERSION]]
-
- [[`__XOP__`] [BOOST_HW_SIMD_x86_XOP_VERSION]]
-
- [[`BOOST_HW_SIMD_X86`] [BOOST_HW_SIMD_x86]]
- ]
-
- [note This predef includes every other x86 SIMD extensions and also has other
- more specific extensions (FMA4, XOP, SSE4a). You should use this predef
- instead of `BOOST_HW_SIMD_X86` to test if those specific extensions have
- been detected.]
-
- */
-
-#define BOOST_HW_SIMD_X86_AMD BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-// AMD CPUs also use x86 architecture. We first try to detect if any AMD
-// specific extension are detected, if yes, then try to detect more recent x86
-// common extensions.
-
-#undef BOOST_HW_SIMD_X86_AMD
-#if !defined(BOOST_HW_SIMD_X86_AMD) && defined(__XOP__)
-# define BOOST_HW_SIMD_X86_AMD BOOST_HW_SIMD_X86_AMD_XOP_VERSION
-#endif
-#if !defined(BOOST_HW_SIMD_X86_AMD) && defined(__FMA4__)
-# define BOOST_HW_SIMD_X86_AMD BOOST_HW_SIMD_X86_AMD_FMA4_VERSION
-#endif
-#if !defined(BOOST_HW_SIMD_X86_AMD) && defined(__SSE4A__)
-# define BOOST_HW_SIMD_X86_AMD BOOST_HW_SIMD_X86_AMD_SSE4A_VERSION
-#endif
-
-#if !defined(BOOST_HW_SIMD_X86_AMD)
-# define BOOST_HW_SIMD_X86_AMD BOOST_VERSION_NUMBER_NOT_AVAILABLE
-#else
- // At this point, we know that we have an AMD CPU, we do need to check for
- // other x86 extensions to determine the final version number.
-# include <boost/predef/hardware/simd/x86.h>
-# if BOOST_HW_SIMD_X86 > BOOST_HW_SIMD_X86_AMD
-# undef BOOST_HW_SIMD_X86_AMD
-# define BOOST_HW_SIMD_X86_AMD BOOST_HW_SIMD_X86
-# endif
-# define BOOST_HW_SIMD_X86_AMD_AVAILABLE
-#endif
-
-#define BOOST_HW_SIMD_X86_AMD_NAME "x86 (AMD) SIMD"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_HW_SIMD_X86_AMD, BOOST_HW_SIMD_X86_AMD_NAME)
diff --git a/include/boost/predef/hardware/simd/x86_amd/versions.h b/include/boost/predef/hardware/simd/x86_amd/versions.h
deleted file mode 100644
index a0a9e918..00000000
--- a/include/boost/predef/hardware/simd/x86_amd/versions.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-Copyright Charly Chevalier 2015
-Copyright Joel Falcou 2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_HARDWARE_SIMD_X86_AMD_VERSIONS_H
-#define BOOST_PREDEF_HARDWARE_SIMD_X86_AMD_VERSIONS_H
-
-#include <boost/predef/version_number.h>
-
-/*`
- Those defines represent x86 (AMD specific) SIMD extensions versions.
-
- [note You *MUST* compare them with the predef `BOOST_HW_SIMD_X86_AMD`.]
- */
-
-
-// ---------------------------------
-
-/*`
- [heading `BOOST_HW_SIMD_X86_SSE4A_VERSION`]
-
- [@https://en.wikipedia.org/wiki/SSE4##SSE4A SSE4A] x86 extension (AMD specific).
-
- Version number is: *4.0.0*.
- */
-#define BOOST_HW_SIMD_X86_AMD_SSE4A_VERSION BOOST_VERSION_NUMBER(4, 0, 0)
-
-/*`
- [heading `BOOST_HW_SIMD_X86_XOP_VERSION`]
-
- [@https://en.wikipedia.org/wiki/XOP_instruction_set XOP] x86 extension (AMD specific).
-
- Version number is: *5.1.0*.
- */
-#define BOOST_HW_SIMD_X86_AMD_FMA4_VERSION BOOST_VERSION_NUMBER(5, 1, 0)
-
-/*`
- [heading `BOOST_HW_SIMD_X86_XOP_VERSION`]
-
- [@https://en.wikipedia.org/wiki/XOP_instruction_set XOP] x86 extension (AMD specific).
-
- Version number is: *5.1.1*.
- */
-#define BOOST_HW_SIMD_X86_AMD_XOP_VERSION BOOST_VERSION_NUMBER(5, 1, 1)
-
-
-#endif
diff --git a/include/boost/predef/language.h b/include/boost/predef/language.h
deleted file mode 100644
index 0a317d5e..00000000
--- a/include/boost/predef/language.h
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-Copyright Rene Rivera 2011-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#if !defined(BOOST_PREDEF_LANGUAGE_H) || defined(BOOST_PREDEF_INTERNAL_GENERATE_TESTS)
-#ifndef BOOST_PREDEF_LANGUAGE_H
-#define BOOST_PREDEF_LANGUAGE_H
-#endif
-
-#include <boost/predef/language/stdc.h>
-#include <boost/predef/language/stdcpp.h>
-#include <boost/predef/language/objc.h>
-
-#endif
diff --git a/include/boost/predef/language/objc.h b/include/boost/predef/language/objc.h
deleted file mode 100644
index 24e3ad3c..00000000
--- a/include/boost/predef/language/objc.h
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
-Copyright Rene Rivera 2011-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_LANGUAGE_OBJC_H
-#define BOOST_PREDEF_LANGUAGE_OBJC_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LANG_OBJC`]
-
-[@http://en.wikipedia.org/wiki/Objective-C Objective-C] language.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__OBJC__`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_LANG_OBJC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__OBJC__)
-# undef BOOST_LANG_OBJC
-# define BOOST_LANG_OBJC BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_LANG_OBJC
-# define BOOST_LANG_OBJC_AVAILABLE
-#endif
-
-#define BOOST_LANG_OBJC_NAME "Objective-C"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LANG_OBJC,BOOST_LANG_OBJC_NAME)
diff --git a/include/boost/predef/language/stdc.h b/include/boost/predef/language/stdc.h
deleted file mode 100644
index db25c12d..00000000
--- a/include/boost/predef/language/stdc.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-Copyright Rene Rivera 2011-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_LANGUAGE_STDC_H
-#define BOOST_PREDEF_LANGUAGE_STDC_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LANG_STDC`]
-
-[@http://en.wikipedia.org/wiki/C_(programming_language) Standard C] language.
-If available, the year of the standard is detected as YYYY.MM.1 from the Epoc date.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__STDC__`] [__predef_detection__]]
-
- [[`__STDC_VERSION__`] [V.R.P]]
- ]
- */
-
-#define BOOST_LANG_STDC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__STDC__)
-# undef BOOST_LANG_STDC
-# if defined(__STDC_VERSION__)
-# if (__STDC_VERSION__ > 100)
-# define BOOST_LANG_STDC BOOST_PREDEF_MAKE_YYYYMM(__STDC_VERSION__)
-# else
-# define BOOST_LANG_STDC BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-# else
-# define BOOST_LANG_STDC BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#if BOOST_LANG_STDC
-# define BOOST_LANG_STDC_AVAILABLE
-#endif
-
-#define BOOST_LANG_STDC_NAME "Standard C"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LANG_STDC,BOOST_LANG_STDC_NAME)
diff --git a/include/boost/predef/language/stdcpp.h b/include/boost/predef/language/stdcpp.h
deleted file mode 100644
index 34dc8c7d..00000000
--- a/include/boost/predef/language/stdcpp.h
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
-Copyright Rene Rivera 2011-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_LANGUAGE_STDCPP_H
-#define BOOST_PREDEF_LANGUAGE_STDCPP_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LANG_STDCPP`]
-
-[@http://en.wikipedia.org/wiki/C%2B%2B Standard C++] language.
-If available, the year of the standard is detected as YYYY.MM.1 from the Epoc date.
-Because of the way the C++ standardization process works the
-defined version year will not be the commonly known year of the standard.
-Specifically the defined versions are:
-
-[table Detected Version Number vs. C++ Standard Year
- [[Detected Version Number] [Standard Year] [C++ Standard]]
- [[27.11.1] [1998] [ISO/IEC 14882:1998]]
- [[41.12.1] [2011] [ISO/IEC 14882:2011]]
-]
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__cplusplus`] [__predef_detection__]]
-
- [[`__cplusplus`] [YYYY.MM.1]]
- ]
- */
-
-#define BOOST_LANG_STDCPP BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__cplusplus)
-# undef BOOST_LANG_STDCPP
-# if (__cplusplus > 100)
-# define BOOST_LANG_STDCPP BOOST_PREDEF_MAKE_YYYYMM(__cplusplus)
-# else
-# define BOOST_LANG_STDCPP BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#if BOOST_LANG_STDCPP
-# define BOOST_LANG_STDCPP_AVAILABLE
-#endif
-
-#define BOOST_LANG_STDCPP_NAME "Standard C++"
-
-/*`
-[heading `BOOST_LANG_STDCPPCLI`]
-
-[@http://en.wikipedia.org/wiki/C%2B%2B/CLI Standard C++/CLI] language.
-If available, the year of the standard is detected as YYYY.MM.1 from the Epoc date.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__cplusplus_cli`] [__predef_detection__]]
-
- [[`__cplusplus_cli`] [YYYY.MM.1]]
- ]
- */
-
-#define BOOST_LANG_STDCPPCLI BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__cplusplus_cli)
-# undef BOOST_LANG_STDCPPCLI
-# if (__cplusplus_cli > 100)
-# define BOOST_LANG_STDCPPCLI BOOST_PREDEF_MAKE_YYYYMM(__cplusplus_cli)
-# else
-# define BOOST_LANG_STDCPPCLI BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#if BOOST_LANG_STDCPPCLI
-# define BOOST_LANG_STDCPPCLI_AVAILABLE
-#endif
-
-#define BOOST_LANG_STDCPPCLI_NAME "Standard C++/CLI"
-
-/*`
-[heading `BOOST_LANG_STDECPP`]
-
-[@http://en.wikipedia.org/wiki/Embedded_C%2B%2B Standard Embedded C++] language.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__embedded_cplusplus`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_LANG_STDECPP BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__embedded_cplusplus)
-# undef BOOST_LANG_STDECPP
-# define BOOST_LANG_STDECPP BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_LANG_STDECPP
-# define BOOST_LANG_STDECPP_AVAILABLE
-#endif
-
-#define BOOST_LANG_STDECPP_NAME "Standard Embedded C++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LANG_STDCPP,BOOST_LANG_STDCPP_NAME)
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LANG_STDCPPCLI,BOOST_LANG_STDCPPCLI_NAME)
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LANG_STDECPP,BOOST_LANG_STDECPP_NAME)
diff --git a/include/boost/predef/library.h b/include/boost/predef/library.h
deleted file mode 100644
index 40518a90..00000000
--- a/include/boost/predef/library.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#if !defined(BOOST_PREDEF_LIBRARY_H) || defined(BOOST_PREDEF_INTERNAL_GENERATE_TESTS)
-#ifndef BOOST_PREDEF_LIBRARY_H
-#define BOOST_PREDEF_LIBRARY_H
-#endif
-
-#include <boost/predef/library/c.h>
-#include <boost/predef/library/std.h>
-
-#endif
diff --git a/include/boost/predef/library/c.h b/include/boost/predef/library/c.h
deleted file mode 100644
index fa8841e8..00000000
--- a/include/boost/predef/library/c.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#if !defined(BOOST_PREDEF_LIBRARY_C_H) || defined(BOOST_PREDEF_INTERNAL_GENERATE_TESTS)
-#ifndef BOOST_PREDEF_LIBRARY_C_H
-#define BOOST_PREDEF_LIBRARY_C_H
-#endif
-
-#include <boost/predef/library/c/_prefix.h>
-
-#include <boost/predef/library/c/gnu.h>
-#include <boost/predef/library/c/uc.h>
-#include <boost/predef/library/c/vms.h>
-#include <boost/predef/library/c/zos.h>
-
-#endif
diff --git a/include/boost/predef/library/c/_prefix.h b/include/boost/predef/library/c/_prefix.h
deleted file mode 100644
index 12bcb0fb..00000000
--- a/include/boost/predef/library/c/_prefix.h
+++ /dev/null
@@ -1,13 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2013
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_C__PREFIX_H
-#define BOOST_PREDEF_LIBRARY_C__PREFIX_H
-
-#include <boost/predef/detail/_cassert.h>
-
-#endif
diff --git a/include/boost/predef/library/c/gnu.h b/include/boost/predef/library/c/gnu.h
deleted file mode 100644
index 9e4ca89d..00000000
--- a/include/boost/predef/library/c/gnu.h
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_C_GNU_H
-#define BOOST_PREDEF_LIBRARY_C_GNU_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-#include <boost/predef/library/c/_prefix.h>
-
-#if defined(__STDC__)
-#include <stddef.h>
-#elif defined(__cplusplus)
-#include <cstddef>
-#endif
-
-/*`
-[heading `BOOST_LIB_C_GNU`]
-
-[@http://en.wikipedia.org/wiki/Glibc GNU glibc] Standard C library.
-Version number available as major, and minor.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__GLIBC__`] [__predef_detection__]]
- [[`__GNU_LIBRARY__`] [__predef_detection__]]
-
- [[`__GLIBC__`, `__GLIBC_MINOR__`] [V.R.0]]
- [[`__GNU_LIBRARY__`, `__GNU_LIBRARY_MINOR__`] [V.R.0]]
- ]
- */
-
-#define BOOST_LIB_C_GNU BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__GLIBC__) || defined(__GNU_LIBRARY__)
-# undef BOOST_LIB_C_GNU
-# if defined(__GLIBC__)
-# define BOOST_LIB_C_GNU \
- BOOST_VERSION_NUMBER(__GLIBC__,__GLIBC_MINOR__,0)
-# else
-# define BOOST_LIB_C_GNU \
- BOOST_VERSION_NUMBER(__GNU_LIBRARY__,__GNU_LIBRARY_MINOR__,0)
-# endif
-#endif
-
-#if BOOST_LIB_C_GNU
-# define BOOST_LIB_C_GNU_AVAILABLE
-#endif
-
-#define BOOST_LIB_C_GNU_NAME "GNU"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_C_GNU,BOOST_LIB_C_GNU_NAME)
diff --git a/include/boost/predef/library/c/uc.h b/include/boost/predef/library/c/uc.h
deleted file mode 100644
index 03081e94..00000000
--- a/include/boost/predef/library/c/uc.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_C_UC_H
-#define BOOST_PREDEF_LIBRARY_C_UC_H
-
-#include <boost/predef/library/c/_prefix.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LIB_C_UC`]
-
-[@http://en.wikipedia.org/wiki/Uclibc uClibc] Standard C library.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__UCLIBC__`] [__predef_detection__]]
-
- [[`__UCLIBC_MAJOR__`, `__UCLIBC_MINOR__`, `__UCLIBC_SUBLEVEL__`] [V.R.P]]
- ]
- */
-
-#define BOOST_LIB_C_UC BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__UCLIBC__)
-# undef BOOST_LIB_C_UC
-# define BOOST_LIB_C_UC BOOST_VERSION_NUMBER(\
- __UCLIBC_MAJOR__,__UCLIBC_MINOR__,__UCLIBC_SUBLEVEL__)
-#endif
-
-#if BOOST_LIB_C_UC
-# define BOOST_LIB_C_UC_AVAILABLE
-#endif
-
-#define BOOST_LIB_C_UC_NAME "uClibc"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_C_UC,BOOST_LIB_C_UC_NAME)
diff --git a/include/boost/predef/library/c/vms.h b/include/boost/predef/library/c/vms.h
deleted file mode 100644
index 685f1a77..00000000
--- a/include/boost/predef/library/c/vms.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_C_VMS_H
-#define BOOST_PREDEF_LIBRARY_C_VMS_H
-
-#include <boost/predef/library/c/_prefix.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LIB_C_VMS`]
-
-VMS libc Standard C library.
-Version number available as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__CRTL_VER`] [__predef_detection__]]
-
- [[`__CRTL_VER`] [V.R.P]]
- ]
- */
-
-#define BOOST_LIB_C_VMS BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__CRTL_VER)
-# undef BOOST_LIB_C_VMS
-# define BOOST_LIB_C_VMS BOOST_PREDEF_MAKE_10_VVRR0PP00(__CRTL_VER)
-#endif
-
-#if BOOST_LIB_C_VMS
-# define BOOST_LIB_C_VMS_AVAILABLE
-#endif
-
-#define BOOST_LIB_C_VMS_NAME "VMS"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_C_VMS,BOOST_LIB_C_VMS_NAME)
diff --git a/include/boost/predef/library/c/zos.h b/include/boost/predef/library/c/zos.h
deleted file mode 100644
index 222d3553..00000000
--- a/include/boost/predef/library/c/zos.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_C_ZOS_H
-#define BOOST_PREDEF_LIBRARY_C_ZOS_H
-
-#include <boost/predef/library/c/_prefix.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LIB_C_ZOS`]
-
-z/OS libc Standard C library.
-Version number available as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__LIBREL__`] [__predef_detection__]]
-
- [[`__LIBREL__`] [V.R.P]]
- [[`__TARGET_LIB__`] [V.R.P]]
- ]
- */
-
-#define BOOST_LIB_C_ZOS BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__LIBREL__)
-# undef BOOST_LIB_C_ZOS
-# if !defined(BOOST_LIB_C_ZOS) && defined(__LIBREL__)
-# define BOOST_LIB_C_ZOS BOOST_PREDEF_MAKE_0X_VRRPPPP(__LIBREL__)
-# endif
-# if !defined(BOOST_LIB_C_ZOS) && defined(__TARGET_LIB__)
-# define BOOST_LIB_C_ZOS BOOST_PREDEF_MAKE_0X_VRRPPPP(__TARGET_LIB__)
-# endif
-# if !defined(BOOST_LIB_C_ZOS)
-# define BOOST_LIB_C_ZOS BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#if BOOST_LIB_C_ZOS
-# define BOOST_LIB_C_ZOS_AVAILABLE
-#endif
-
-#define BOOST_LIB_C_ZOS_NAME "z/OS"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_C_ZOS,BOOST_LIB_C_ZOS_NAME)
diff --git a/include/boost/predef/library/std.h b/include/boost/predef/library/std.h
deleted file mode 100644
index 403b6ff3..00000000
--- a/include/boost/predef/library/std.h
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-#if !defined(BOOST_PREDEF_LIBRARY_STD_H) || defined(BOOST_PREDEF_INTERNAL_GENERATE_TESTS)
-#ifndef BOOST_PREDEF_LIBRARY_STD_H
-#define BOOST_PREDEF_LIBRARY_STD_H
-#endif
-
-#include <boost/predef/library/std/_prefix.h>
-
-#include <boost/predef/library/std/cxx.h>
-#include <boost/predef/library/std/dinkumware.h>
-#include <boost/predef/library/std/libcomo.h>
-#include <boost/predef/library/std/modena.h>
-#include <boost/predef/library/std/msl.h>
-#include <boost/predef/library/std/roguewave.h>
-#include <boost/predef/library/std/sgi.h>
-#include <boost/predef/library/std/stdcpp3.h>
-#include <boost/predef/library/std/stlport.h>
-#include <boost/predef/library/std/vacpp.h>
-
-#endif
diff --git a/include/boost/predef/library/std/_prefix.h b/include/boost/predef/library/std/_prefix.h
deleted file mode 100644
index 932b8557..00000000
--- a/include/boost/predef/library/std/_prefix.h
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2013
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-#ifndef BOOST_PREDEF_LIBRARY_STD__PREFIX_H
-#define BOOST_PREDEF_LIBRARY_STD__PREFIX_H
-
-/*
-We need to include an STD header to gives us the context
-of which library we are using. The "smallest" code-wise header
-seems to be <exception>. Boost uses <utility> but as far
-as I can tell (RR) it's not a stand-alone header in most
-implementations. Using <exception> also has the benefit of
-being available in EC++, so we get a chance to make this work
-for embedded users. And since it's not a header impacted by TR1
-there's no magic needed for inclusion in the face of the
-Boost.TR1 library.
-*/
-#include <boost/predef/detail/_exception.h>
-
-#endif
diff --git a/include/boost/predef/library/std/cxx.h b/include/boost/predef/library/std/cxx.h
deleted file mode 100644
index 07b52cd6..00000000
--- a/include/boost/predef/library/std/cxx.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-Copyright Rene Rivera 2011-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_STD_CXX_H
-#define BOOST_PREDEF_LIBRARY_STD_CXX_H
-
-#include <boost/predef/library/std/_prefix.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LIB_STD_CXX`]
-
-[@http://libcxx.llvm.org/ libc++] C++ Standard Library.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`_LIBCPP_VERSION`] [__predef_detection__]]
-
- [[`_LIBCPP_VERSION`] [V.0.P]]
- ]
- */
-
-#define BOOST_LIB_STD_CXX BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(_LIBCPP_VERSION)
-# undef BOOST_LIB_STD_CXX
-# define BOOST_LIB_STD_CXX BOOST_PREDEF_MAKE_10_VPPP(_LIBCPP_VERSION)
-#endif
-
-#if BOOST_LIB_STD_CXX
-# define BOOST_LIB_STD_CXX_AVAILABLE
-#endif
-
-#define BOOST_LIB_STD_CXX_NAME "libc++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_STD_CXX,BOOST_LIB_STD_CXX_NAME)
diff --git a/include/boost/predef/library/std/dinkumware.h b/include/boost/predef/library/std/dinkumware.h
deleted file mode 100644
index 0fc07760..00000000
--- a/include/boost/predef/library/std/dinkumware.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_STD_DINKUMWARE_H
-#define BOOST_PREDEF_LIBRARY_STD_DINKUMWARE_H
-
-#include <boost/predef/library/std/_prefix.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LIB_STD_DINKUMWARE`]
-
-[@http://en.wikipedia.org/wiki/Dinkumware Dinkumware] Standard C++ Library.
-If available version number as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`_YVALS`, `__IBMCPP__`] [__predef_detection__]]
- [[`_CPPLIB_VER`] [__predef_detection__]]
-
- [[`_CPPLIB_VER`] [V.R.0]]
- ]
- */
-
-#define BOOST_LIB_STD_DINKUMWARE BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if (defined(_YVALS) && !defined(__IBMCPP__)) || defined(_CPPLIB_VER)
-# undef BOOST_LIB_STD_DINKUMWARE
-# if defined(_CPPLIB_VER)
-# define BOOST_LIB_STD_DINKUMWARE BOOST_PREDEF_MAKE_10_VVRR(_CPPLIB_VER)
-# else
-# define BOOST_LIB_STD_DINKUMWARE BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#if BOOST_LIB_STD_DINKUMWARE
-# define BOOST_LIB_STD_DINKUMWARE_AVAILABLE
-#endif
-
-#define BOOST_LIB_STD_DINKUMWARE_NAME "Dinkumware"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_STD_DINKUMWARE,BOOST_LIB_STD_DINKUMWARE_NAME)
diff --git a/include/boost/predef/library/std/libcomo.h b/include/boost/predef/library/std/libcomo.h
deleted file mode 100644
index 97d4a53d..00000000
--- a/include/boost/predef/library/std/libcomo.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_STD_LIBCOMO_H
-#define BOOST_PREDEF_LIBRARY_STD_LIBCOMO_H
-
-#include <boost/predef/library/std/_prefix.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LIB_STD_COMO`]
-
-[@http://www.comeaucomputing.com/libcomo/ Comeau Computing] Standard C++ Library.
-Version number available as major.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__LIBCOMO__`] [__predef_detection__]]
-
- [[`__LIBCOMO_VERSION__`] [V.0.0]]
- ]
- */
-
-#define BOOST_LIB_STD_COMO BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__LIBCOMO__)
-# undef BOOST_LIB_STD_COMO
-# define BOOST_LIB_STD_COMO BOOST_VERSION_NUMBER(__LIBCOMO_VERSION__,0,0)
-#endif
-
-#if BOOST_LIB_STD_COMO
-# define BOOST_LIB_STD_COMO_AVAILABLE
-#endif
-
-#define BOOST_LIB_STD_COMO_NAME "Comeau Computing"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_STD_COMO,BOOST_LIB_STD_COMO_NAME)
diff --git a/include/boost/predef/library/std/modena.h b/include/boost/predef/library/std/modena.h
deleted file mode 100644
index b67ac62f..00000000
--- a/include/boost/predef/library/std/modena.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_STD_MODENA_H
-#define BOOST_PREDEF_LIBRARY_STD_MODENA_H
-
-#include <boost/predef/library/std/_prefix.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LIB_STD_MSIPL`]
-
-[@http://modena.us/ Modena Software Lib++] Standard C++ Library.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`MSIPL_COMPILE_H`] [__predef_detection__]]
- [[`__MSIPL_COMPILE_H`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_LIB_STD_MSIPL BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(MSIPL_COMPILE_H) || defined(__MSIPL_COMPILE_H)
-# undef BOOST_LIB_STD_MSIPL
-# define BOOST_LIB_STD_MSIPL BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_LIB_STD_MSIPL
-# define BOOST_LIB_STD_MSIPL_AVAILABLE
-#endif
-
-#define BOOST_LIB_STD_MSIPL_NAME "Modena Software Lib++"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_STD_MSIPL,BOOST_LIB_STD_MSIPL_NAME)
diff --git a/include/boost/predef/library/std/msl.h b/include/boost/predef/library/std/msl.h
deleted file mode 100644
index d73c74c6..00000000
--- a/include/boost/predef/library/std/msl.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_STD_MSL_H
-#define BOOST_PREDEF_LIBRARY_STD_MSL_H
-
-#include <boost/predef/library/std/_prefix.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LIB_STD_MSL`]
-
-[@http://www.freescale.com/ Metrowerks] Standard C++ Library.
-Version number available as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__MSL_CPP__`] [__predef_detection__]]
- [[`__MSL__`] [__predef_detection__]]
-
- [[`__MSL_CPP__`] [V.R.P]]
- [[`__MSL__`] [V.R.P]]
- ]
- */
-
-#define BOOST_LIB_STD_MSL BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__MSL_CPP__) || defined(__MSL__)
-# undef BOOST_LIB_STD_MSL
-# if defined(__MSL_CPP__)
-# define BOOST_LIB_STD_MSL BOOST_PREDEF_MAKE_0X_VRPP(__MSL_CPP__)
-# else
-# define BOOST_LIB_STD_MSL BOOST_PREDEF_MAKE_0X_VRPP(__MSL__)
-# endif
-#endif
-
-#if BOOST_LIB_STD_MSL
-# define BOOST_LIB_STD_MSL_AVAILABLE
-#endif
-
-#define BOOST_LIB_STD_MSL_NAME "Metrowerks"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_STD_MSL,BOOST_LIB_STD_MSL_NAME)
diff --git a/include/boost/predef/library/std/roguewave.h b/include/boost/predef/library/std/roguewave.h
deleted file mode 100644
index 9c3f288b..00000000
--- a/include/boost/predef/library/std/roguewave.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_STD_ROGUEWAVE_H
-#define BOOST_PREDEF_LIBRARY_STD_ROGUEWAVE_H
-
-#include <boost/predef/library/std/_prefix.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LIB_STD_RW`]
-
-[@http://stdcxx.apache.org/ Roguewave] Standard C++ library.
-If available version number as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__STD_RWCOMPILER_H__`] [__predef_detection__]]
- [[`_RWSTD_VER`] [__predef_detection__]]
-
- [[`_RWSTD_VER`] [V.R.P]]
- ]
- */
-
-#define BOOST_LIB_STD_RW BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__STD_RWCOMPILER_H__) || defined(_RWSTD_VER)
-# undef BOOST_LIB_STD_RW
-# if defined(_RWSTD_VER)
-# if _RWSTD_VER < 0x010000
-# define BOOST_LIB_STD_RW BOOST_PREDEF_MAKE_0X_VVRRP(_RWSTD_VER)
-# else
-# define BOOST_LIB_STD_RW BOOST_PREDEF_MAKE_0X_VVRRPP(_RWSTD_VER)
-# endif
-# else
-# define BOOST_LIB_STD_RW BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#if BOOST_LIB_STD_RW
-# define BOOST_LIB_STD_RW_AVAILABLE
-#endif
-
-#define BOOST_LIB_STD_RW_NAME "Roguewave"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_STD_RW,BOOST_LIB_STD_RW_NAME)
diff --git a/include/boost/predef/library/std/sgi.h b/include/boost/predef/library/std/sgi.h
deleted file mode 100644
index 5d19bbac..00000000
--- a/include/boost/predef/library/std/sgi.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_STD_SGI_H
-#define BOOST_PREDEF_LIBRARY_STD_SGI_H
-
-#include <boost/predef/library/std/_prefix.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LIB_STD_SGI`]
-
-[@http://www.sgi.com/tech/stl/ SGI] Standard C++ library.
-If available version number as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__STL_CONFIG_H`] [__predef_detection__]]
-
- [[`__SGI_STL`] [V.R.P]]
- ]
- */
-
-#define BOOST_LIB_STD_SGI BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__STL_CONFIG_H)
-# undef BOOST_LIB_STD_SGI
-# if defined(__SGI_STL)
-# define BOOST_LIB_STD_SGI BOOST_PREDEF_MAKE_0X_VRP(__SGI_STL)
-# else
-# define BOOST_LIB_STD_SGI BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#if BOOST_LIB_STD_SGI
-# define BOOST_LIB_STD_SGI_AVAILABLE
-#endif
-
-#define BOOST_LIB_STD_SGI_NAME "SGI"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_STD_SGI,BOOST_LIB_STD_SGI_NAME)
diff --git a/include/boost/predef/library/std/stdcpp3.h b/include/boost/predef/library/std/stdcpp3.h
deleted file mode 100644
index c9802924..00000000
--- a/include/boost/predef/library/std/stdcpp3.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_STD_STDCPP3_H
-#define BOOST_PREDEF_LIBRARY_STD_STDCPP3_H
-
-#include <boost/predef/library/std/_prefix.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LIB_STD_GNU`]
-
-[@http://gcc.gnu.org/libstdc++/ GNU libstdc++] Standard C++ library.
-Version number available as year (from 1970), month, and day.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__GLIBCXX__`] [__predef_detection__]]
- [[`__GLIBCPP__`] [__predef_detection__]]
-
- [[`__GLIBCXX__`] [V.R.P]]
- [[`__GLIBCPP__`] [V.R.P]]
- ]
- */
-
-#define BOOST_LIB_STD_GNU BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__GLIBCPP__) || defined(__GLIBCXX__)
-# undef BOOST_LIB_STD_GNU
-# if defined(__GLIBCXX__)
-# define BOOST_LIB_STD_GNU BOOST_PREDEF_MAKE_YYYYMMDD(__GLIBCXX__)
-# else
-# define BOOST_LIB_STD_GNU BOOST_PREDEF_MAKE_YYYYMMDD(__GLIBCPP__)
-# endif
-#endif
-
-#if BOOST_LIB_STD_GNU
-# define BOOST_LIB_STD_GNU_AVAILABLE
-#endif
-
-#define BOOST_LIB_STD_GNU_NAME "GNU"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_STD_GNU,BOOST_LIB_STD_GNU_NAME)
diff --git a/include/boost/predef/library/std/stlport.h b/include/boost/predef/library/std/stlport.h
deleted file mode 100644
index c09483bd..00000000
--- a/include/boost/predef/library/std/stlport.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_STD_STLPORT_H
-#define BOOST_PREDEF_LIBRARY_STD_STLPORT_H
-
-#include <boost/predef/library/std/_prefix.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LIB_STD_STLPORT`]
-
-[@http://sourceforge.net/projects/stlport/ STLport Standard C++] library.
-Version number available as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__SGI_STL_PORT`] [__predef_detection__]]
- [[`_STLPORT_VERSION`] [__predef_detection__]]
-
- [[`_STLPORT_MAJOR`, `_STLPORT_MINOR`, `_STLPORT_PATCHLEVEL`] [V.R.P]]
- [[`_STLPORT_VERSION`] [V.R.P]]
- [[`__SGI_STL_PORT`] [V.R.P]]
- ]
- */
-
-#define BOOST_LIB_STD_STLPORT BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
-# undef BOOST_LIB_STD_STLPORT
-# if !defined(BOOST_LIB_STD_STLPORT) && defined(_STLPORT_MAJOR)
-# define BOOST_LIB_STD_STLPORT \
- BOOST_VERSION_NUMBER(_STLPORT_MAJOR,_STLPORT_MINOR,_STLPORT_PATCHLEVEL)
-# endif
-# if !defined(BOOST_LIB_STD_STLPORT) && defined(_STLPORT_VERSION)
-# define BOOST_LIB_STD_STLPORT BOOST_PREDEF_MAKE_0X_VRP(_STLPORT_VERSION)
-# endif
-# if !defined(BOOST_LIB_STD_STLPORT)
-# define BOOST_LIB_STD_STLPORT BOOST_PREDEF_MAKE_0X_VRP(__SGI_STL_PORT)
-# endif
-#endif
-
-#if BOOST_LIB_STD_STLPORT
-# define BOOST_LIB_STD_STLPORT_AVAILABLE
-#endif
-
-#define BOOST_LIB_STD_STLPORT_NAME "STLport"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_STD_STLPORT,BOOST_LIB_STD_STLPORT_NAME)
diff --git a/include/boost/predef/library/std/vacpp.h b/include/boost/predef/library/std/vacpp.h
deleted file mode 100644
index 632f846c..00000000
--- a/include/boost/predef/library/std/vacpp.h
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_LIBRARY_STD_VACPP_H
-#define BOOST_PREDEF_LIBRARY_STD_VACPP_H
-
-#include <boost/predef/library/std/_prefix.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_LIB_STD_IBM`]
-
-[@http://www.ibm.com/software/awdtools/xlcpp/ IBM VACPP Standard C++] library.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__IBMCPP__`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_LIB_STD_IBM BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__IBMCPP__)
-# undef BOOST_LIB_STD_IBM
-# define BOOST_LIB_STD_IBM BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_LIB_STD_IBM
-# define BOOST_LIB_STD_IBM_AVAILABLE
-#endif
-
-#define BOOST_LIB_STD_IBM_NAME "IBM VACPP"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_LIB_STD_IBM,BOOST_LIB_STD_IBM_NAME)
diff --git a/include/boost/predef/make.h b/include/boost/predef/make.h
deleted file mode 100644
index 4f2f9ee7..00000000
--- a/include/boost/predef/make.h
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-#include <boost/predef/detail/test.h>
-
-#ifndef BOOST_PREDEF_MAKE_H
-#define BOOST_PREDEF_MAKE_H
-
-/*
-Shorthands for the common version number formats used by vendors...
-*/
-
-/*`
-[heading `BOOST_PREDEF_MAKE_..` macros]
-
-These set of macros decompose common vendor version number
-macros which are composed version, revision, and patch digits.
-The naming convention indicates:
-
-* The base of the specified version number. "`BOOST_PREDEF_MAKE_0X`" for
- hexadecimal digits, and "`BOOST_PREDEF_MAKE_10`" for decimal digits.
-* The format of the vendor version number. Where "`V`" indicates the version digits,
- "`R`" indicates the revision digits, "`P`" indicates the patch digits, and "`0`"
- indicates an ignored digit.
-
-Macros are:
-*/
-/*` `BOOST_PREDEF_MAKE_0X_VRP(V)` */
-#define BOOST_PREDEF_MAKE_0X_VRP(V) BOOST_VERSION_NUMBER((V&0xF00)>>8,(V&0xF0)>>4,(V&0xF))
-/*` `BOOST_PREDEF_MAKE_0X_VVRP(V)` */
-#define BOOST_PREDEF_MAKE_0X_VVRP(V) BOOST_VERSION_NUMBER((V&0xFF00)>>8,(V&0xF0)>>4,(V&0xF))
-/*` `BOOST_PREDEF_MAKE_0X_VRPP(V)` */
-#define BOOST_PREDEF_MAKE_0X_VRPP(V) BOOST_VERSION_NUMBER((V&0xF000)>>12,(V&0xF00)>>8,(V&0xFF))
-/*` `BOOST_PREDEF_MAKE_0X_VVRR(V)` */
-#define BOOST_PREDEF_MAKE_0X_VVRR(V) BOOST_VERSION_NUMBER((V&0xFF00)>>8,(V&0xFF),0)
-/*` `BOOST_PREDEF_MAKE_0X_VRRPPPP(V)` */
-#define BOOST_PREDEF_MAKE_0X_VRRPPPP(V) BOOST_VERSION_NUMBER((V&0xF000000)>>24,(V&0xFF0000)>>16,(V&0xFFFF))
-/*` `BOOST_PREDEF_MAKE_0X_VVRRP(V)` */
-#define BOOST_PREDEF_MAKE_0X_VVRRP(V) BOOST_VERSION_NUMBER((V&0xFF000)>>12,(V&0xFF0)>>4,(V&0xF))
-/*` `BOOST_PREDEF_MAKE_0X_VRRPP000(V)` */
-#define BOOST_PREDEF_MAKE_0X_VRRPP000(V) BOOST_VERSION_NUMBER((V&0xF0000000)>>28,(V&0xFF00000)>>20,(V&0xFF000)>>12)
-/*` `BOOST_PREDEF_MAKE_0X_VVRRPP(V)` */
-#define BOOST_PREDEF_MAKE_0X_VVRRPP(V) BOOST_VERSION_NUMBER((V&0xFF0000)>>16,(V&0xFF00)>>8,(V&0xFF))
-/*` `BOOST_PREDEF_MAKE_10_VPPP(V)` */
-#define BOOST_PREDEF_MAKE_10_VPPP(V) BOOST_VERSION_NUMBER(((V)/1000)%10,0,(V)%1000)
-/*` `BOOST_PREDEF_MAKE_10_VRP(V)` */
-#define BOOST_PREDEF_MAKE_10_VRP(V) BOOST_VERSION_NUMBER(((V)/100)%10,((V)/10)%10,(V)%10)
-/*` `BOOST_PREDEF_MAKE_10_VRP000(V)` */
-#define BOOST_PREDEF_MAKE_10_VRP000(V) BOOST_VERSION_NUMBER(((V)/100000)%10,((V)/10000)%10,((V)/1000)%10)
-/*` `BOOST_PREDEF_MAKE_10_VRPP(V)` */
-#define BOOST_PREDEF_MAKE_10_VRPP(V) BOOST_VERSION_NUMBER(((V)/1000)%10,((V)/100)%10,(V)%100)
-/*` `BOOST_PREDEF_MAKE_10_VRR(V)` */
-#define BOOST_PREDEF_MAKE_10_VRR(V) BOOST_VERSION_NUMBER(((V)/100)%10,(V)%100,0)
-/*` `BOOST_PREDEF_MAKE_10_VRRPP(V)` */
-#define BOOST_PREDEF_MAKE_10_VRRPP(V) BOOST_VERSION_NUMBER(((V)/10000)%10,((V)/100)%100,(V)%100)
-/*` `BOOST_PREDEF_MAKE_10_VRR000(V)` */
-#define BOOST_PREDEF_MAKE_10_VRR000(V) BOOST_VERSION_NUMBER(((V)/100000)%10,((V)/1000)%100,0)
-/*` `BOOST_PREDEF_MAKE_10_VV00(V)` */
-#define BOOST_PREDEF_MAKE_10_VV00(V) BOOST_VERSION_NUMBER(((V)/100)%100,0,0)
-/*` `BOOST_PREDEF_MAKE_10_VVRR(V)` */
-#define BOOST_PREDEF_MAKE_10_VVRR(V) BOOST_VERSION_NUMBER(((V)/100)%100,(V)%100,0)
-/*` `BOOST_PREDEF_MAKE_10_VVRRPP(V)` */
-#define BOOST_PREDEF_MAKE_10_VVRRPP(V) BOOST_VERSION_NUMBER(((V)/10000)%100,((V)/100)%100,(V)%100)
-/*` `BOOST_PREDEF_MAKE_10_VVRR0PP00(V)` */
-#define BOOST_PREDEF_MAKE_10_VVRR0PP00(V) BOOST_VERSION_NUMBER(((V)/10000000)%100,((V)/100000)%100,((V)/100)%100)
-/*` `BOOST_PREDEF_MAKE_10_VVRR0PPPP(V)` */
-#define BOOST_PREDEF_MAKE_10_VVRR0PPPP(V) BOOST_VERSION_NUMBER(((V)/10000000)%100,((V)/100000)%100,(V)%10000)
-/*` `BOOST_PREDEF_MAKE_10_VVRR00PP00(V)` */
-#define BOOST_PREDEF_MAKE_10_VVRR00PP00(V) BOOST_VERSION_NUMBER(((V)/100000000)%100,((V)/1000000)%100,((V)/100)%100)
-/*`
-[heading `BOOST_PREDEF_MAKE_*..` date macros]
-
-Date decomposition macros return a date in the relative to the 1970
-Epoch date. If the month is not available, January 1st is used as the month and day.
-If the day is not available, but the month is, the 1st of the month is used as the day.
-*/
-/*` `BOOST_PREDEF_MAKE_DATE(Y,M,D)` */
-#define BOOST_PREDEF_MAKE_DATE(Y,M,D) BOOST_VERSION_NUMBER((Y)%10000-1970,(M)%100,(D)%100)
-/*` `BOOST_PREDEF_MAKE_YYYYMMDD(V)` */
-#define BOOST_PREDEF_MAKE_YYYYMMDD(V) BOOST_PREDEF_MAKE_DATE(((V)/10000)%10000,((V)/100)%100,(V)%100)
-/*` `BOOST_PREDEF_MAKE_YYYY(V)` */
-#define BOOST_PREDEF_MAKE_YYYY(V) BOOST_PREDEF_MAKE_DATE(V,1,1)
-/*` `BOOST_PREDEF_MAKE_YYYYMM(V)` */
-#define BOOST_PREDEF_MAKE_YYYYMM(V) BOOST_PREDEF_MAKE_DATE((V)/100,(V)%100,1)
-
-#endif
diff --git a/include/boost/predef/os.h b/include/boost/predef/os.h
deleted file mode 100644
index bedf99ec..00000000
--- a/include/boost/predef/os.h
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Copyright Franz Detro 2014
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#if !defined(BOOST_PREDEF_OS_H) || defined(BOOST_PREDEF_INTERNAL_GENERATE_TESTS)
-#ifndef BOOST_PREDEF_OS_H
-#define BOOST_PREDEF_OS_H
-#endif
-
-#include <boost/predef/os/aix.h>
-#include <boost/predef/os/amigaos.h>
-#include <boost/predef/os/android.h>
-#include <boost/predef/os/beos.h>
-#include <boost/predef/os/bsd.h>
-#include <boost/predef/os/cygwin.h>
-#include <boost/predef/os/haiku.h>
-#include <boost/predef/os/hpux.h>
-#include <boost/predef/os/irix.h>
-#include <boost/predef/os/ios.h>
-#include <boost/predef/os/linux.h>
-#include <boost/predef/os/macos.h>
-#include <boost/predef/os/os400.h>
-#include <boost/predef/os/qnxnto.h>
-#include <boost/predef/os/solaris.h>
-#include <boost/predef/os/unix.h>
-#include <boost/predef/os/vms.h>
-#include <boost/predef/os/windows.h>
-
-#endif
diff --git a/include/boost/predef/os/aix.h b/include/boost/predef/os/aix.h
deleted file mode 100644
index 3e5a953f..00000000
--- a/include/boost/predef/os/aix.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_OS_AIX_H
-#define BOOST_PREDEF_OS_AIX_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_AIX`]
-
-[@http://en.wikipedia.org/wiki/AIX_operating_system IBM AIX] operating system.
-Version number available as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`_AIX`] [__predef_detection__]]
- [[`__TOS_AIX__`] [__predef_detection__]]
-
- [[`_AIX43`] [4.3.0]]
- [[`_AIX41`] [4.1.0]]
- [[`_AIX32`] [3.2.0]]
- [[`_AIX3`] [3.0.0]]
- ]
- */
-
-#define BOOST_OS_AIX BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
- defined(_AIX) || defined(__TOS_AIX__) \
- )
-# undef BOOST_OS_AIX
-# if !defined(BOOST_OS_AIX) && defined(_AIX43)
-# define BOOST_OS_AIX BOOST_VERSION_NUMBER(4,3,0)
-# endif
-# if !defined(BOOST_OS_AIX) && defined(_AIX41)
-# define BOOST_OS_AIX BOOST_VERSION_NUMBER(4,1,0)
-# endif
-# if !defined(BOOST_OS_AIX) && defined(_AIX32)
-# define BOOST_OS_AIX BOOST_VERSION_NUMBER(3,2,0)
-# endif
-# if !defined(BOOST_OS_AIX) && defined(_AIX3)
-# define BOOST_OS_AIX BOOST_VERSION_NUMBER(3,0,0)
-# endif
-# if !defined(BOOST_OS_AIX)
-# define BOOST_OS_AIX BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#if BOOST_OS_AIX
-# define BOOST_OS_AIX_AVAILABLE
-# include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_AIX_NAME "IBM AIX"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_AIX,BOOST_OS_AIX_NAME)
diff --git a/include/boost/predef/os/amigaos.h b/include/boost/predef/os/amigaos.h
deleted file mode 100644
index 7b32ddf5..00000000
--- a/include/boost/predef/os/amigaos.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_OS_AMIGAOS_H
-#define BOOST_PREDEF_OS_AMIGAOS_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_AMIGAOS`]
-
-[@http://en.wikipedia.org/wiki/AmigaOS AmigaOS] operating system.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`AMIGA`] [__predef_detection__]]
- [[`__amigaos__`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_OS_AMIGAOS BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
- defined(AMIGA) || defined(__amigaos__) \
- )
-# undef BOOST_OS_AMIGAOS
-# define BOOST_OS_AMIGAOS BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_OS_AMIGAOS
-# define BOOST_OS_AMIGAOS_AVAILABLE
-# include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_AMIGAOS_NAME "AmigaOS"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_AMIGAOS,BOOST_OS_AMIGAOS_NAME)
diff --git a/include/boost/predef/os/android.h b/include/boost/predef/os/android.h
deleted file mode 100644
index 00836e7f..00000000
--- a/include/boost/predef/os/android.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-Copyright Rene Rivera 2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_OS_ADROID_H
-#define BOOST_PREDEF_OS_ADROID_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_ANDROID`]
-
-[@http://en.wikipedia.org/wiki/Android_%28operating_system%29 Android] operating system.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__ANDROID__`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_OS_ANDROID BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
- defined(__ANDROID__) \
- )
-# undef BOOST_OS_ANDROID
-# define BOOST_OS_ANDROID BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_OS_ANDROID
-# define BOOST_OS_ANDROID_AVAILABLE
-# include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_ANDROID_NAME "Android"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_ANDROID,BOOST_OS_ANDROID_NAME)
diff --git a/include/boost/predef/os/beos.h b/include/boost/predef/os/beos.h
deleted file mode 100644
index 19f4cb71..00000000
--- a/include/boost/predef/os/beos.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_OS_BEOS_H
-#define BOOST_PREDEF_OS_BEOS_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_BEOS`]
-
-[@http://en.wikipedia.org/wiki/BeOS BeOS] operating system.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__BEOS__`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_OS_BEOS BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
- defined(__BEOS__) \
- )
-# undef BOOST_OS_BEOS
-# define BOOST_OS_BEOS BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_OS_BEOS
-# define BOOST_OS_BEOS_AVAILABLE
-# include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_BEOS_NAME "BeOS"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_BEOS,BOOST_OS_BEOS_NAME)
diff --git a/include/boost/predef/os/bsd.h b/include/boost/predef/os/bsd.h
deleted file mode 100644
index fad9aed7..00000000
--- a/include/boost/predef/os/bsd.h
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_OS_BSD_H
-#define BOOST_PREDEF_OS_BSD_H
-
-/* Special case: OSX will define BSD predefs if the sys/param.h
- * header is included. We can guard against that, but only if we
- * detect OSX first. Hence we will force include OSX detection
- * before doing any BSD detection.
- */
-#include <boost/predef/os/macos.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_BSD`]
-
-[@http://en.wikipedia.org/wiki/Berkeley_Software_Distribution BSD] operating system.
-
-BSD has various branch operating systems possible and each detected
-individually. This detects the following variations and sets a specific
-version number macro to match:
-
-* `BOOST_OS_BSD_DRAGONFLY` [@http://en.wikipedia.org/wiki/DragonFly_BSD DragonFly BSD]
-* `BOOST_OS_BSD_FREE` [@http://en.wikipedia.org/wiki/Freebsd FreeBSD]
-* `BOOST_OS_BSD_BSDI` [@http://en.wikipedia.org/wiki/BSD/OS BSDi BSD/OS]
-* `BOOST_OS_BSD_NET` [@http://en.wikipedia.org/wiki/Netbsd NetBSD]
-* `BOOST_OS_BSD_OPEN` [@http://en.wikipedia.org/wiki/Openbsd OpenBSD]
-
-[note The general `BOOST_OS_BSD` is set in all cases to indicate some form
-of BSD. If the above variants is detected the corresponding macro is also set.]
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`BSD`] [__predef_detection__]]
- [[`_SYSTYPE_BSD`] [__predef_detection__]]
-
- [[`BSD4_2`] [4.2.0]]
- [[`BSD4_3`] [4.3.0]]
- [[`BSD4_4`] [4.4.0]]
- [[`BSD`] [V.R.0]]
- ]
- */
-
-#include <boost/predef/os/bsd/bsdi.h>
-#include <boost/predef/os/bsd/dragonfly.h>
-#include <boost/predef/os/bsd/free.h>
-#include <boost/predef/os/bsd/open.h>
-#include <boost/predef/os/bsd/net.h>
-
-#ifndef BOOST_OS_BSD
-#define BOOST_OS_BSD BOOST_VERSION_NUMBER_NOT_AVAILABLE
-#endif
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
- defined(BSD) || \
- defined(_SYSTYPE_BSD) \
- )
-# undef BOOST_OS_BSD
-# include <sys/param.h>
-# if !defined(BOOST_OS_BSD) && defined(BSD4_4)
-# define BOOST_OS_BSD BOOST_VERSION_NUMBER(4,4,0)
-# endif
-# if !defined(BOOST_OS_BSD) && defined(BSD4_3)
-# define BOOST_OS_BSD BOOST_VERSION_NUMBER(4,3,0)
-# endif
-# if !defined(BOOST_OS_BSD) && defined(BSD4_2)
-# define BOOST_OS_BSD BOOST_VERSION_NUMBER(4,2,0)
-# endif
-# if !defined(BOOST_OS_BSD) && defined(BSD)
-# define BOOST_OS_BSD BOOST_PREDEF_MAKE_10_VVRR(BSD)
-# endif
-# if !defined(BOOST_OS_BSD)
-# define BOOST_OS_BSD BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#if BOOST_OS_BSD
-# define BOOST_OS_BSD_AVAILABLE
-# include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_BSD_NAME "BSD"
-
-#else
-
-#include <boost/predef/os/bsd/bsdi.h>
-#include <boost/predef/os/bsd/dragonfly.h>
-#include <boost/predef/os/bsd/free.h>
-#include <boost/predef/os/bsd/open.h>
-#include <boost/predef/os/bsd/net.h>
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_BSD,BOOST_OS_BSD_NAME)
diff --git a/include/boost/predef/os/bsd/bsdi.h b/include/boost/predef/os/bsd/bsdi.h
deleted file mode 100644
index afdcd3eb..00000000
--- a/include/boost/predef/os/bsd/bsdi.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/*
-Copyright Rene Rivera 2012-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_OS_BSD_BSDI_H
-#define BOOST_PREDEF_OS_BSD_BSDI_H
-
-#include <boost/predef/os/bsd.h>
-
-/*`
-[heading `BOOST_OS_BSD_BSDI`]
-
-[@http://en.wikipedia.org/wiki/BSD/OS BSDi BSD/OS] operating system.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__bsdi__`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_OS_BSD_BSDI BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
- defined(__bsdi__) \
- )
-# ifndef BOOST_OS_BSD_AVAILABLE
-# define BOOST_OS_BSD BOOST_VERSION_NUMBER_AVAILABLE
-# define BOOST_OS_BSD_AVAILABLE
-# endif
-# undef BOOST_OS_BSD_BSDI
-# define BOOST_OS_BSD_BSDI BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_OS_BSD_BSDI
-# define BOOST_OS_BSD_BSDI_AVAILABLE
-# include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_BSD_BSDI_NAME "BSDi BSD/OS"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_BSD_BSDI,BOOST_OS_BSD_BSDI_NAME)
diff --git a/include/boost/predef/os/bsd/dragonfly.h b/include/boost/predef/os/bsd/dragonfly.h
deleted file mode 100644
index 1d075798..00000000
--- a/include/boost/predef/os/bsd/dragonfly.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
-Copyright Rene Rivera 2012-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_OS_BSD_DRAGONFLY_H
-#define BOOST_PREDEF_OS_BSD_DRAGONFLY_H
-
-#include <boost/predef/os/bsd.h>
-
-/*`
-[heading `BOOST_OS_BSD_DRAGONFLY`]
-
-[@http://en.wikipedia.org/wiki/DragonFly_BSD DragonFly BSD] operating system.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__DragonFly__`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_OS_BSD_DRAGONFLY BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
- defined(__DragonFly__) \
- )
-# ifndef BOOST_OS_BSD_AVAILABLE
-# define BOOST_OS_BSD BOOST_VERSION_NUMBER_AVAILABLE
-# define BOOST_OS_BSD_AVAILABLE
-# endif
-# undef BOOST_OS_BSD_DRAGONFLY
-# if defined(__DragonFly__)
-# define BOOST_OS_DRAGONFLY_BSD BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#if BOOST_OS_BSD_DRAGONFLY
-# define BOOST_OS_BSD_DRAGONFLY_AVAILABLE
-# include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_BSD_DRAGONFLY_NAME "DragonFly BSD"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_BSD_DRAGONFLY,BOOST_OS_BSD_DRAGONFLY_NAME)
diff --git a/include/boost/predef/os/bsd/free.h b/include/boost/predef/os/bsd/free.h
deleted file mode 100644
index 248011ae..00000000
--- a/include/boost/predef/os/bsd/free.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
-Copyright Rene Rivera 2012-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_OS_BSD_FREE_H
-#define BOOST_PREDEF_OS_BSD_FREE_H
-
-#include <boost/predef/os/bsd.h>
-
-/*`
-[heading `BOOST_OS_BSD_FREE`]
-
-[@http://en.wikipedia.org/wiki/Freebsd FreeBSD] operating system.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__FreeBSD__`] [__predef_detection__]]
-
- [[`__FreeBSD_version`] [V.R.P]]
- ]
- */
-
-#define BOOST_OS_BSD_FREE BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
- defined(__FreeBSD__) \
- )
-# ifndef BOOST_OS_BSD_AVAILABLE
-# define BOOST_OS_BSD BOOST_VERSION_NUMBER_AVAILABLE
-# define BOOST_OS_BSD_AVAILABLE
-# endif
-# undef BOOST_OS_BSD_FREE
-# if defined(__FreeBSD_version)
-# if __FreeBSD_version < 500000
-# define BOOST_OS_BSD_FREE \
- BOOST_PREDEF_MAKE_10_VRP000(__FreeBSD_version)
-# else
-# define BOOST_OS_BSD_FREE \
- BOOST_PREDEF_MAKE_10_VRR000(__FreeBSD_version)
-# endif
-# else
-# define BOOST_OS_BSD_FREE BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#if BOOST_OS_BSD_FREE
-# define BOOST_OS_BSD_FREE_AVAILABLE
-# include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_BSD_FREE_NAME "Free BSD"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_BSD_FREE,BOOST_OS_BSD_FREE_NAME)
diff --git a/include/boost/predef/os/bsd/net.h b/include/boost/predef/os/bsd/net.h
deleted file mode 100644
index 387cbde5..00000000
--- a/include/boost/predef/os/bsd/net.h
+++ /dev/null
@@ -1,84 +0,0 @@
-/*
-Copyright Rene Rivera 2012-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_OS_BSD_NET_H
-#define BOOST_PREDEF_OS_BSD_NET_H
-
-#include <boost/predef/os/bsd.h>
-
-/*`
-[heading `BOOST_OS_BSD_NET`]
-
-[@http://en.wikipedia.org/wiki/Netbsd NetBSD] operating system.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__NETBSD__`] [__predef_detection__]]
- [[`__NetBSD__`] [__predef_detection__]]
-
- [[`__NETBSD_version`] [V.R.P]]
- [[`NetBSD0_8`] [0.8.0]]
- [[`NetBSD0_9`] [0.9.0]]
- [[`NetBSD1_0`] [1.0.0]]
- [[`__NetBSD_Version`] [V.R.P]]
- ]
- */
-
-#define BOOST_OS_BSD_NET BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
- defined(__NETBSD__) || defined(__NetBSD__) \
- )
-# ifndef BOOST_OS_BSD_AVAILABLE
-# define BOOST_OS_BSD BOOST_VERSION_NUMBER_AVAILABLE
-# define BOOST_OS_BSD_AVAILABLE
-# endif
-# undef BOOST_OS_BSD_NET
-# if defined(__NETBSD__)
-# if defined(__NETBSD_version)
-# if __NETBSD_version < 500000
-# define BOOST_OS_BSD_NET \
- BOOST_PREDEF_MAKE_10_VRP000(__NETBSD_version)
-# else
-# define BOOST_OS_BSD_NET \
- BOOST_PREDEF_MAKE_10_VRR000(__NETBSD_version)
-# endif
-# else
-# define BOOST_OS_BSD_NET BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-# elif defined(__NetBSD__)
-# if !defined(BOOST_OS_BSD_NET) && defined(NetBSD0_8)
-# define BOOST_OS_BSD_NET BOOST_VERSION_NUMBER(0,8,0)
-# endif
-# if !defined(BOOST_OS_BSD_NET) && defined(NetBSD0_9)
-# define BOOST_OS_BSD_NET BOOST_VERSION_NUMBER(0,9,0)
-# endif
-# if !defined(BOOST_OS_BSD_NET) && defined(NetBSD1_0)
-# define BOOST_OS_BSD_NET BOOST_VERSION_NUMBER(1,0,0)
-# endif
-# if !defined(BOOST_OS_BSD_NET) && defined(__NetBSD_Version)
-# define BOOST_OS_BSD_NET \
- BOOST_PREDEF_MAKE_10_VVRR00PP00(__NetBSD_Version)
-# endif
-# if !defined(BOOST_OS_BSD_NET)
-# define BOOST_OS_BSD_NET BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-# endif
-#endif
-
-#if BOOST_OS_BSD_NET
-# define BOOST_OS_BSD_NET_AVAILABLE
-# include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_BSD_NET_NAME "DragonFly BSD"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_BSD_NET,BOOST_OS_BSD_NET_NAME)
diff --git a/include/boost/predef/os/bsd/open.h b/include/boost/predef/os/bsd/open.h
deleted file mode 100644
index 423103ac..00000000
--- a/include/boost/predef/os/bsd/open.h
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
-Copyright Rene Rivera 2012-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_OS_BSD_OPEN_H
-#define BOOST_PREDEF_OS_BSD_OPEN_H
-
-#include <boost/predef/os/bsd.h>
-
-/*`
-[heading `BOOST_OS_BSD_OPEN`]
-
-[@http://en.wikipedia.org/wiki/Openbsd OpenBSD] operating system.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__OpenBSD__`] [__predef_detection__]]
-
- [[`OpenBSD2_0`] [2.0.0]]
- [[`OpenBSD2_1`] [2.1.0]]
- [[`OpenBSD2_2`] [2.2.0]]
- [[`OpenBSD2_3`] [2.3.0]]
- [[`OpenBSD2_4`] [2.4.0]]
- [[`OpenBSD2_5`] [2.5.0]]
- [[`OpenBSD2_6`] [2.6.0]]
- [[`OpenBSD2_7`] [2.7.0]]
- [[`OpenBSD2_8`] [2.8.0]]
- [[`OpenBSD2_9`] [2.9.0]]
- [[`OpenBSD3_0`] [3.0.0]]
- [[`OpenBSD3_1`] [3.1.0]]
- [[`OpenBSD3_2`] [3.2.0]]
- [[`OpenBSD3_3`] [3.3.0]]
- [[`OpenBSD3_4`] [3.4.0]]
- [[`OpenBSD3_5`] [3.5.0]]
- [[`OpenBSD3_6`] [3.6.0]]
- [[`OpenBSD3_7`] [3.7.0]]
- [[`OpenBSD3_8`] [3.8.0]]
- [[`OpenBSD3_9`] [3.9.0]]
- [[`OpenBSD4_0`] [4.0.0]]
- [[`OpenBSD4_1`] [4.1.0]]
- [[`OpenBSD4_2`] [4.2.0]]
- [[`OpenBSD4_3`] [4.3.0]]
- [[`OpenBSD4_4`] [4.4.0]]
- [[`OpenBSD4_5`] [4.5.0]]
- [[`OpenBSD4_6`] [4.6.0]]
- [[`OpenBSD4_7`] [4.7.0]]
- [[`OpenBSD4_8`] [4.8.0]]
- [[`OpenBSD4_9`] [4.9.0]]
- ]
- */
-
-#define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
- defined(__OpenBSD__) \
- )
-# ifndef BOOST_OS_BSD_AVAILABLE
-# define BOOST_OS_BSD BOOST_VERSION_NUMBER_AVAILABLE
-# define BOOST_OS_BSD_AVAILABLE
-# endif
-# undef BOOST_OS_BSD_OPEN
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_0)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,0,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_1)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,1,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_2)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,2,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_3)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,3,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_4)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,4,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_5)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,5,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_6)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,6,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_7)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,7,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_8)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,8,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD2_9)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(2,9,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_0)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,0,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_1)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,1,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_2)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,2,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_3)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,3,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_4)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,4,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_5)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,5,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_6)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,6,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_7)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,7,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_8)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,8,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD3_9)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(3,9,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_0)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,0,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_1)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,1,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_2)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,2,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_3)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,3,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_4)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,4,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_5)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,5,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_6)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,6,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_7)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,7,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_8)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,8,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN) && defined(OpenBSD4_9)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER(4,9,0)
-# endif
-# if !defined(BOOST_OS_BSD_OPEN)
-# define BOOST_OS_BSD_OPEN BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#if BOOST_OS_BSD_OPEN
-# define BOOST_OS_BSD_OPEN_AVAILABLE
-# include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_BSD_OPEN_NAME "OpenBSD"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_BSD_OPEN,BOOST_OS_BSD_OPEN_NAME)
diff --git a/include/boost/predef/os/cygwin.h b/include/boost/predef/os/cygwin.h
deleted file mode 100644
index 9d36f0f3..00000000
--- a/include/boost/predef/os/cygwin.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_OS_CYGWIN_H
-#define BOOST_PREDEF_OS_CYGWIN_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_CYGWIN`]
-
-[@http://en.wikipedia.org/wiki/Cygwin Cygwin] evironment.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__CYGWIN__`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_OS_CYGWIN BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
- defined(__CYGWIN__) \
- )
-# undef BOOST_OS_CYGWIN
-# define BOOST_OS_CYGWIN BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_OS_CYGWIN
-# define BOOST_OS_CYGWIN_AVAILABLE
-# include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_CYGWIN_NAME "Cygwin"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_CYGWIN,BOOST_OS_CYGWIN_NAME)
diff --git a/include/boost/predef/os/haiku.h b/include/boost/predef/os/haiku.h
deleted file mode 100644
index d79dbeac..00000000
--- a/include/boost/predef/os/haiku.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-Copyright Jessica Hamilton 2014
-Copyright Rene Rivera 2014-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_OS_HAIKU_H
-#define BOOST_PREDEF_OS_HAIKU_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_HAIKU`]
-
-[@http://en.wikipedia.org/wiki/Haiku_(operating_system) Haiku] operating system.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__HAIKU__`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_OS_HAIKU BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
- defined(__HAIKU__) \
- )
-# undef BOOST_OS_HAIKU
-# define BOOST_OS_HAIKU BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_OS_HAIKU
-# define BOOST_OS_HAIKU_AVAILABLE
-# include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_HAIKU_NAME "Haiku"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_HAIKU,BOOST_OS_HAIKU_NAME)
diff --git a/include/boost/predef/os/hpux.h b/include/boost/predef/os/hpux.h
deleted file mode 100644
index 29243f48..00000000
--- a/include/boost/predef/os/hpux.h
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_OS_HPUX_H
-#define BOOST_PREDEF_OS_HPUX_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_HPUX`]
-
-[@http://en.wikipedia.org/wiki/HP-UX HP-UX] operating system.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`hpux`] [__predef_detection__]]
- [[`_hpux`] [__predef_detection__]]
- [[`__hpux`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_OS_HPUX BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
- defined(hpux) || defined(_hpux) || defined(__hpux) \
- )
-# undef BOOST_OS_HPUX
-# define BOOST_OS_HPUX BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_OS_HPUX
-# define BOOST_OS_HPUX_AVAILABLE
-# include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_HPUX_NAME "HP-UX"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_HPUX,BOOST_OS_HPUX_NAME)
diff --git a/include/boost/predef/os/ios.h b/include/boost/predef/os/ios.h
deleted file mode 100644
index f853815a..00000000
--- a/include/boost/predef/os/ios.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-Copyright Franz Detro 2014
-Copyright Rene Rivera 2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_OS_IOS_H
-#define BOOST_PREDEF_OS_IOS_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_IOS`]
-
-[@http://en.wikipedia.org/wiki/iOS iOS] operating system.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__APPLE__`] [__predef_detection__]]
- [[`__MACH__`] [__predef_detection__]]
- [[`__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__`] [__predef_detection__]]
-
- [[`__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__`] [__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__*1000]]
- ]
- */
-
-#define BOOST_OS_IOS BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
- defined(__APPLE__) && defined(__MACH__) && \
- defined(__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__) \
- )
-# undef BOOST_OS_IOS
-# define BOOST_OS_IOS (__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__*1000)
-#endif
-
-#if BOOST_OS_IOS
-# define BOOST_OS_IOS_AVAILABLE
-# include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_IOS_NAME "iOS"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_IOS,BOOST_OS_IOS_NAME)
diff --git a/include/boost/predef/os/irix.h b/include/boost/predef/os/irix.h
deleted file mode 100644
index fa6ac41d..00000000
--- a/include/boost/predef/os/irix.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_OS_IRIX_H
-#define BOOST_PREDEF_OS_IRIX_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_IRIX`]
-
-[@http://en.wikipedia.org/wiki/Irix IRIX] operating system.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`sgi`] [__predef_detection__]]
- [[`__sgi`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_OS_IRIX BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
- defined(sgi) || defined(__sgi) \
- )
-# undef BOOST_OS_IRIX
-# define BOOST_OS_IRIX BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_OS_IRIX
-# define BOOST_OS_IRIX_AVAILABLE
-# include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_IRIX_NAME "IRIX"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_IRIX,BOOST_OS_IRIX_NAME)
diff --git a/include/boost/predef/os/linux.h b/include/boost/predef/os/linux.h
deleted file mode 100644
index a297d089..00000000
--- a/include/boost/predef/os/linux.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_OS_LINUX_H
-#define BOOST_PREDEF_OS_LINUX_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_LINUX`]
-
-[@http://en.wikipedia.org/wiki/Linux Linux] operating system.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`linux`] [__predef_detection__]]
- [[`__linux`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_OS_LINUX BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
- defined(linux) || defined(__linux) \
- )
-# undef BOOST_OS_LINUX
-# define BOOST_OS_LINUX BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_OS_LINUX
-# define BOOST_OS_LINUX_AVAILABLE
-# include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_LINUX_NAME "Linux"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_LINUX,BOOST_OS_LINUX_NAME)
diff --git a/include/boost/predef/os/macos.h b/include/boost/predef/os/macos.h
deleted file mode 100644
index 4afb30d0..00000000
--- a/include/boost/predef/os/macos.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Copyright Franz Detro 2014
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_OS_MACOS_H
-#define BOOST_PREDEF_OS_MACOS_H
-
-/* Special case: iOS will define the same predefs as MacOS, and additionally
- '__ENVIRONMENT_IPHONE_OS_VERSION_MIN_REQUIRED__'. We can guard against that,
- but only if we detect iOS first. Hence we will force include iOS detection
- * before doing any MacOS detection.
- */
-#include <boost/predef/os/ios.h>
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_MACOS`]
-
-[@http://en.wikipedia.org/wiki/Mac_OS Mac OS] operating system.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`macintosh`] [__predef_detection__]]
- [[`Macintosh`] [__predef_detection__]]
- [[`__APPLE__`] [__predef_detection__]]
- [[`__MACH__`] [__predef_detection__]]
-
- [[`__APPLE__`, `__MACH__`] [10.0.0]]
- [[ /otherwise/ ] [9.0.0]]
- ]
- */
-
-#define BOOST_OS_MACOS BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
- defined(macintosh) || defined(Macintosh) || \
- (defined(__APPLE__) && defined(__MACH__)) \
- )
-# undef BOOST_OS_MACOS
-# if !defined(BOOST_OS_MACOS) && defined(__APPLE__) && defined(__MACH__)
-# define BOOST_OS_MACOS BOOST_VERSION_NUMBER(10,0,0)
-# endif
-# if !defined(BOOST_OS_MACOS)
-# define BOOST_OS_MACOS BOOST_VERSION_NUMBER(9,0,0)
-# endif
-#endif
-
-#if BOOST_OS_MACOS
-# define BOOST_OS_MACOS_AVAILABLE
-# include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_MACOS_NAME "Mac OS"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_MACOS,BOOST_OS_MACOS_NAME)
diff --git a/include/boost/predef/os/os400.h b/include/boost/predef/os/os400.h
deleted file mode 100644
index b3446c26..00000000
--- a/include/boost/predef/os/os400.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-Copyright Rene Rivera 2011-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_OS_OS400_H
-#define BOOST_PREDEF_OS_OS400_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_OS400`]
-
-[@http://en.wikipedia.org/wiki/IBM_i IBM OS/400] operating system.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__OS400__`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_OS_OS400 BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
- defined(__OS400__) \
- )
-# undef BOOST_OS_OS400
-# define BOOST_OS_OS400 BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_OS_OS400
-# define BOOST_OS_OS400_AVAILABLE
-# include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_OS400_NAME "IBM OS/400"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_OS400,BOOST_OS_OS400_NAME)
diff --git a/include/boost/predef/os/qnxnto.h b/include/boost/predef/os/qnxnto.h
deleted file mode 100644
index e76fbf27..00000000
--- a/include/boost/predef/os/qnxnto.h
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_OS_QNXNTO_H
-#define BOOST_PREDEF_OS_QNXNTO_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_QNX`]
-
-[@http://en.wikipedia.org/wiki/QNX QNX] operating system.
-Version number available as major, and minor if possible. And
-version 4 is specifically detected.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__QNX__`] [__predef_detection__]]
- [[`__QNXNTO__`] [__predef_detection__]]
-
- [[`_NTO_VERSION`] [V.R.0]]
- [[`__QNX__`] [4.0.0]]
- ]
- */
-
-#define BOOST_OS_QNX BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
- defined(__QNX__) || defined(__QNXNTO__) \
- )
-# undef BOOST_OS_QNX
-# if !defined(BOOST_OS_QNX) && defined(_NTO_VERSION)
-# define BOOST_OS_QNX BOOST_PREDEF_MAKE_10_VVRR(_NTO_VERSION)
-# endif
-# if !defined(BOOST_OS_QNX) && defined(__QNX__)
-# define BOOST_OS_QNX BOOST_VERSION_NUMBER(4,0,0)
-# endif
-# if !defined(BOOST_OS_QNX)
-# define BOOST_OS_QNX BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#if BOOST_OS_QNX
-# define BOOST_OS_QNX_AVAILABLE
-# include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_QNX_NAME "QNX"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_QNX,BOOST_OS_QNX_NAME)
diff --git a/include/boost/predef/os/solaris.h b/include/boost/predef/os/solaris.h
deleted file mode 100644
index 75ddc91d..00000000
--- a/include/boost/predef/os/solaris.h
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_OS_SOLARIS_H
-#define BOOST_PREDEF_OS_SOLARIS_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_SOLARIS`]
-
-[@http://en.wikipedia.org/wiki/Solaris_Operating_Environment Solaris] operating system.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`sun`] [__predef_detection__]]
- [[`__sun`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_OS_SOLARIS BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
- defined(sun) || defined(__sun) \
- )
-# undef BOOST_OS_SOLARIS
-# define BOOST_OS_SOLARIS BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_OS_SOLARIS
-# define BOOST_OS_SOLARIS_AVAILABLE
-# include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_SOLARIS_NAME "Solaris"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_SOLARIS,BOOST_OS_SOLARIS_NAME)
diff --git a/include/boost/predef/os/unix.h b/include/boost/predef/os/unix.h
deleted file mode 100644
index a6071042..00000000
--- a/include/boost/predef/os/unix.h
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_OS_UNIX_H
-#define BOOST_PREDEF_OS_UNIX_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_UNIX`]
-
-[@http://en.wikipedia.org/wiki/Unix Unix Environment] operating system.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`unix`] [__predef_detection__]]
- [[`__unix`] [__predef_detection__]]
- [[`_XOPEN_SOURCE`] [__predef_detection__]]
- [[`_POSIX_SOURCE`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_OS_UNIX BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(unix) || defined(__unix) || \
- defined(_XOPEN_SOURCE) || defined(_POSIX_SOURCE)
-# undef BOOST_OS_UNIX
-# define BOOST_OS_UNIX BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_OS_UNIX
-# define BOOST_OS_UNIX_AVAILABLE
-#endif
-
-#define BOOST_OS_UNIX_NAME "Unix Environment"
-
-/*`
-[heading `BOOST_OS_SVR4`]
-
-[@http://en.wikipedia.org/wiki/UNIX_System_V SVR4 Environment] operating system.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__sysv__`] [__predef_detection__]]
- [[`__SVR4`] [__predef_detection__]]
- [[`__svr4__`] [__predef_detection__]]
- [[`_SYSTYPE_SVR4`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_OS_SVR4 BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__sysv__) || defined(__SVR4) || \
- defined(__svr4__) || defined(_SYSTYPE_SVR4)
-# undef BOOST_OS_SVR4
-# define BOOST_OS_SVR4 BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_OS_SVR4
-# define BOOST_OS_SVR4_AVAILABLE
-#endif
-
-#define BOOST_OS_SVR4_NAME "SVR4 Environment"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_UNIX,BOOST_OS_UNIX_NAME)
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_SVR4,BOOST_OS_SVR4_NAME)
diff --git a/include/boost/predef/os/vms.h b/include/boost/predef/os/vms.h
deleted file mode 100644
index 2f8f786d..00000000
--- a/include/boost/predef/os/vms.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
-Copyright Rene Rivera 2011-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_OS_VMS_H
-#define BOOST_PREDEF_OS_VMS_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_VMS`]
-
-[@http://en.wikipedia.org/wiki/Vms VMS] operating system.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`VMS`] [__predef_detection__]]
- [[`__VMS`] [__predef_detection__]]
-
- [[`__VMS_VER`] [V.R.P]]
- ]
- */
-
-#define BOOST_OS_VMS BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
- defined(VMS) || defined(__VMS) \
- )
-# undef BOOST_OS_VMS
-# if defined(__VMS_VER)
-# define BOOST_OS_VMS BOOST_PREDEF_MAKE_10_VVRR00PP00(__VMS_VER)
-# else
-# define BOOST_OS_VMS BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#if BOOST_OS_VMS
-# define BOOST_OS_VMS_AVAILABLE
-# include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_VMS_NAME "VMS"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_VMS,BOOST_OS_VMS_NAME)
diff --git a/include/boost/predef/os/windows.h b/include/boost/predef/os/windows.h
deleted file mode 100644
index 9db43909..00000000
--- a/include/boost/predef/os/windows.h
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_OS_WINDOWS_H
-#define BOOST_PREDEF_OS_WINDOWS_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_OS_WINDOWS`]
-
-[@http://en.wikipedia.org/wiki/Category:Microsoft_Windows Microsoft Windows] operating system.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`_WIN32`] [__predef_detection__]]
- [[`_WIN64`] [__predef_detection__]]
- [[`__WIN32__`] [__predef_detection__]]
- [[`__TOS_WIN__`] [__predef_detection__]]
- [[`__WINDOWS__`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_OS_WINDOWS BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if !defined(BOOST_PREDEF_DETAIL_OS_DETECTED) && ( \
- defined(_WIN32) || defined(_WIN64) || \
- defined(__WIN32__) || defined(__TOS_WIN__) || \
- defined(__WINDOWS__) \
- )
-# undef BOOST_OS_WINDOWS
-# define BOOST_OS_WINDOWS BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_OS_WINDOWS
-# define BOOST_OS_WINDOWS_AVAILABLE
-# include <boost/predef/detail/os_detected.h>
-#endif
-
-#define BOOST_OS_WINDOWS_NAME "Microsoft Windows"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_OS_WINDOWS,BOOST_OS_WINDOWS_NAME)
diff --git a/include/boost/predef/other.h b/include/boost/predef/other.h
deleted file mode 100644
index c09ad494..00000000
--- a/include/boost/predef/other.h
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
-Copyright Rene Rivera 2013-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#if !defined(BOOST_PREDEF_OTHER_H) || defined(BOOST_PREDEF_INTERNAL_GENERATE_TESTS)
-#ifndef BOOST_PREDEF_OTHER_H
-#define BOOST_PREDEF_OTHER_H
-#endif
-
-#include <boost/predef/other/endian.h>
-/*#include <boost/predef/other/.h>*/
-
-#endif
diff --git a/include/boost/predef/other/endian.h b/include/boost/predef/other/endian.h
deleted file mode 100644
index 6d1f43ff..00000000
--- a/include/boost/predef/other/endian.h
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
-Copyright Rene Rivera 2013-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_ENDIAN_H
-#define BOOST_PREDEF_ENDIAN_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-#include <boost/predef/library/c/gnu.h>
-#include <boost/predef/os/macos.h>
-#include <boost/predef/os/bsd.h>
-#include <boost/predef/os/android.h>
-
-/*`
-[heading `BOOST_ENDIAN_*`]
-
-Detection of endian memory ordering. There are four defined macros
-in this header that define the various generally possible endian
-memory orderings:
-
-* `BOOST_ENDIAN_BIG_BYTE`, byte-swapped big-endian.
-* `BOOST_ENDIAN_BIG_WORD`, word-swapped big-endian.
-* `BOOST_ENDIAN_LITTLE_BYTE`, byte-swapped little-endian.
-* `BOOST_ENDIAN_LITTLE_WORD`, word-swapped little-endian.
-
-The detection is conservative in that it only identifies endianness
-that it knows for certain. In particular bi-endianness is not
-indicated as is it not practically possible to determine the
-endianness from anything but an operating system provided
-header. And the currently known headers do not define that
-programatic bi-endianness is available.
-
-This implementation is a compilation of various publicly available
-information and acquired knowledge:
-
-# The indispensable documentation of "Pre-defined Compiler Macros"
- [@http://sourceforge.net/p/predef/wiki/Endianness Endianness].
-# The various endian specifications available in the
- [@http://wikipedia.org/ Wikipedia] computer architecture pages.
-# Generally available searches for headers that define endianness.
- */
-
-#define BOOST_ENDIAN_BIG_BYTE BOOST_VERSION_NUMBER_NOT_AVAILABLE
-#define BOOST_ENDIAN_BIG_WORD BOOST_VERSION_NUMBER_NOT_AVAILABLE
-#define BOOST_ENDIAN_LITTLE_BYTE BOOST_VERSION_NUMBER_NOT_AVAILABLE
-#define BOOST_ENDIAN_LITTLE_WORD BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-/* GNU libc provides a header defining __BYTE_ORDER, or _BYTE_ORDER.
- * And some OSs provide some for of endian header also.
- */
-#if !BOOST_ENDIAN_BIG_BYTE && !BOOST_ENDIAN_BIG_WORD && \
- !BOOST_ENDIAN_LITTLE_BYTE && !BOOST_ENDIAN_LITTLE_WORD
-# if BOOST_LIB_C_GNU || BOOST_OS_ANDROID
-# include <endian.h>
-# else
-# if BOOST_OS_MACOS
-# include <machine/endian.h>
-# else
-# if BOOST_OS_BSD
-# if BOOST_OS_BSD_OPEN
-# include <machine/endian.h>
-# else
-# include <sys/endian.h>
-# endif
-# endif
-# endif
-# endif
-# if defined(__BYTE_ORDER)
-# if defined(__BIG_ENDIAN) && (__BYTE_ORDER == __BIG_ENDIAN)
-# undef BOOST_ENDIAN_BIG_BYTE
-# define BOOST_ENDIAN_BIG_BYTE BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-# if defined(__LITTLE_ENDIAN) && (__BYTE_ORDER == __LITTLE_ENDIAN)
-# undef BOOST_ENDIAN_LITTLE_BYTE
-# define BOOST_ENDIAN_LITTLE_BYTE BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-# if defined(__PDP_ENDIAN) && (__BYTE_ORDER == __PDP_ENDIAN)
-# undef BOOST_ENDIAN_LITTLE_WORD
-# define BOOST_ENDIAN_LITTLE_WORD BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-# endif
-# if !defined(__BYTE_ORDER) && defined(_BYTE_ORDER)
-# if defined(_BIG_ENDIAN) && (_BYTE_ORDER == _BIG_ENDIAN)
-# undef BOOST_ENDIAN_BIG_BYTE
-# define BOOST_ENDIAN_BIG_BYTE BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-# if defined(_LITTLE_ENDIAN) && (_BYTE_ORDER == _LITTLE_ENDIAN)
-# undef BOOST_ENDIAN_LITTLE_BYTE
-# define BOOST_ENDIAN_LITTLE_BYTE BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-# if defined(_PDP_ENDIAN) && (_BYTE_ORDER == _PDP_ENDIAN)
-# undef BOOST_ENDIAN_LITTLE_WORD
-# define BOOST_ENDIAN_LITTLE_WORD BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-# endif
-#endif
-
-/* Built-in byte-swpped big-endian macros.
- */
-#if !BOOST_ENDIAN_BIG_BYTE && !BOOST_ENDIAN_BIG_WORD && \
- !BOOST_ENDIAN_LITTLE_BYTE && !BOOST_ENDIAN_LITTLE_WORD
-# if (defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__)) || \
- (defined(_BIG_ENDIAN) && !defined(_LITTLE_ENDIAN)) || \
- defined(__ARMEB__) || \
- defined(__THUMBEB__) || \
- defined(__AARCH64EB__) || \
- defined(_MIPSEB) || \
- defined(__MIPSEB) || \
- defined(__MIPSEB__)
-# undef BOOST_ENDIAN_BIG_BYTE
-# define BOOST_ENDIAN_BIG_BYTE BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-/* Built-in byte-swpped little-endian macros.
- */
-#if !BOOST_ENDIAN_BIG_BYTE && !BOOST_ENDIAN_BIG_WORD && \
- !BOOST_ENDIAN_LITTLE_BYTE && !BOOST_ENDIAN_LITTLE_WORD
-# if (defined(__LITTLE_ENDIAN__) && !defined(__BIG_ENDIAN__)) || \
- (defined(_LITTLE_ENDIAN) && !defined(_BIG_ENDIAN)) || \
- defined(__ARMEL__) || \
- defined(__THUMBEL__) || \
- defined(__AARCH64EL__) || \
- defined(_MIPSEL) || \
- defined(__MIPSEL) || \
- defined(__MIPSEL__)
-# undef BOOST_ENDIAN_LITTLE_BYTE
-# define BOOST_ENDIAN_LITTLE_BYTE BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-/* Some architectures are strictly one endianess (as opposed
- * the current common bi-endianess).
- */
-#if !BOOST_ENDIAN_BIG_BYTE && !BOOST_ENDIAN_BIG_WORD && \
- !BOOST_ENDIAN_LITTLE_BYTE && !BOOST_ENDIAN_LITTLE_WORD
-# include <boost/predef/architecture.h>
-# if BOOST_ARCH_M68K || \
- BOOST_ARCH_PARISC || \
- BOOST_ARCH_SPARC || \
- BOOST_ARCH_SYS370 || \
- BOOST_ARCH_SYS390 || \
- BOOST_ARCH_Z
-# undef BOOST_ENDIAN_BIG_BYTE
-# define BOOST_ENDIAN_BIG_BYTE BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-# if BOOST_ARCH_AMD64 || \
- BOOST_ARCH_IA64 || \
- BOOST_ARCH_X86 || \
- BOOST_ARCH_BLACKFIN
-# undef BOOST_ENDIAN_LITTLE_BYTE
-# define BOOST_ENDIAN_LITTLE_BYTE BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-/* Windows on ARM, if not otherwise detected/specified, is always
- * byte-swaped little-endian.
- */
-#if !BOOST_ENDIAN_BIG_BYTE && !BOOST_ENDIAN_BIG_WORD && \
- !BOOST_ENDIAN_LITTLE_BYTE && !BOOST_ENDIAN_LITTLE_WORD
-# if BOOST_ARCH_ARM
-# include <boost/predef/os/windows.h>
-# if BOOST_OS_WINDOWS
-# undef BOOST_ENDIAN_LITTLE_BYTE
-# define BOOST_ENDIAN_LITTLE_BYTE BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-# endif
-#endif
-
-#if BOOST_ENDIAN_BIG_BYTE
-# define BOOST_ENDIAN_BIG_BYTE_AVAILABLE
-#endif
-#if BOOST_ENDIAN_BIG_WORD
-# define BOOST_ENDIAN_BIG_WORD_BYTE_AVAILABLE
-#endif
-#if BOOST_ENDIAN_LITTLE_BYTE
-# define BOOST_ENDIAN_LITTLE_BYTE_AVAILABLE
-#endif
-#if BOOST_ENDIAN_LITTLE_WORD
-# define BOOST_ENDIAN_LITTLE_WORD_BYTE_AVAILABLE
-#endif
-
-#define BOOST_ENDIAN_BIG_BYTE_NAME "Byte-Swapped Big-Endian"
-#define BOOST_ENDIAN_BIG_WORD_NAME "Word-Swapped Big-Endian"
-#define BOOST_ENDIAN_LITTLE_BYTE_NAME "Byte-Swapped Little-Endian"
-#define BOOST_ENDIAN_LITTLE_WORD_NAME "Word-Swapped Little-Endian"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ENDIAN_BIG_BYTE,BOOST_ENDIAN_BIG_BYTE_NAME)
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ENDIAN_BIG_WORD,BOOST_ENDIAN_BIG_WORD_NAME)
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ENDIAN_LITTLE_BYTE,BOOST_ENDIAN_LITTLE_BYTE_NAME)
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_ENDIAN_LITTLE_WORD,BOOST_ENDIAN_LITTLE_WORD_NAME)
diff --git a/include/boost/predef/platform.h b/include/boost/predef/platform.h
deleted file mode 100644
index c0c8706e..00000000
--- a/include/boost/predef/platform.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-Copyright Rene Rivera 2013-2015
-Copyright (c) Microsoft Corporation 2014
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#if !defined(BOOST_PREDEF_PLATFORM_H) || defined(BOOST_PREDEF_INTERNAL_GENERATE_TESTS)
-#ifndef BOOST_PREDEF_PLATFORM_H
-#define BOOST_PREDEF_PLATFORM_H
-#endif
-
-#include <boost/predef/platform/mingw.h>
-#include <boost/predef/platform/windows_desktop.h>
-#include <boost/predef/platform/windows_store.h>
-#include <boost/predef/platform/windows_phone.h>
-#include <boost/predef/platform/windows_runtime.h>
-/*#include <boost/predef/platform/.h>*/
-
-#endif
diff --git a/include/boost/predef/platform/mingw.h b/include/boost/predef/platform/mingw.h
deleted file mode 100644
index 64c58373..00000000
--- a/include/boost/predef/platform/mingw.h
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
-Copyright Rene Rivera 2008-2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_COMPILER_MINGW_H
-#define BOOST_PREDEF_COMPILER_MINGW_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-
-/*`
-[heading `BOOST_PLAT_MINGW`]
-
-[@http://en.wikipedia.org/wiki/MinGW MinGW] platform.
-Version number available as major, minor, and patch.
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`__MINGW32__`] [__predef_detection__]]
- [[`__MINGW64__`] [__predef_detection__]]
-
- [[`__MINGW64_VERSION_MAJOR`, `__MINGW64_VERSION_MINOR`] [V.R.0]]
- [[`__MINGW32_VERSION_MAJOR`, `__MINGW32_VERSION_MINOR`] [V.R.0]]
- ]
- */
-
-#define BOOST_PLAT_MINGW BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if defined(__MINGW32__) || defined(__MINGW64__)
-# include <_mingw.h>
-# if !defined(BOOST_PLAT_MINGW_DETECTION) && (defined(__MINGW64_VERSION_MAJOR) && defined(__MINGW64_VERSION_MINOR))
-# define BOOST_PLAT_MINGW_DETECTION \
- BOOST_VERSION_NUMBER(__MINGW64_VERSION_MAJOR,__MINGW64_VERSION_MINOR,0)
-# endif
-# if !defined(BOOST_PLAT_MINGW_DETECTION) && (defined(__MINGW32_VERSION_MAJOR) && defined(__MINGW32_VERSION_MINOR))
-# define BOOST_PLAT_MINGW_DETECTION \
- BOOST_VERSION_NUMBER(__MINGW32_MAJOR_VERSION,__MINGW32_MINOR_VERSION,0)
-# endif
-# if !defined(BOOST_PLAT_MINGW_DETECTION)
-# define BOOST_PLAT_MINGW_DETECTION BOOST_VERSION_NUMBER_AVAILABLE
-# endif
-#endif
-
-#ifdef BOOST_PLAT_MINGW_DETECTION
-# define BOOST_PLAT_MINGW_AVAILABLE
-# if defined(BOOST_PREDEF_DETAIL_PLAT_DETECTED)
-# define BOOST_PLAT_MINGW_EMULATED BOOST_PLAT_MINGW_DETECTION
-# else
-# undef BOOST_PLAT_MINGW
-# define BOOST_PLAT_MINGW BOOST_PLAT_MINGW_DETECTION
-# endif
-# include <boost/predef/detail/platform_detected.h>
-#endif
-
-#define BOOST_PLAT_MINGW_NAME "MinGW"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_MINGW,BOOST_PLAT_MINGW_NAME)
-
-#ifdef BOOST_PLAT_MINGW_EMULATED
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_MINGW_EMULATED,BOOST_PLAT_MINGW_NAME)
-#endif
diff --git a/include/boost/predef/platform/windows_desktop.h b/include/boost/predef/platform/windows_desktop.h
deleted file mode 100644
index 62719b42..00000000
--- a/include/boost/predef/platform/windows_desktop.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-Copyright (c) Microsoft Corporation 2014
-Copyright Rene Rivera 2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_PLAT_WINDOWS_DESKTOP_H
-#define BOOST_PREDEF_PLAT_WINDOWS_DESKTOP_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-#include <boost/predef/os/windows.h>
-
-/*`
-[heading `BOOST_PLAT_WINDOWS_DESKTOP`]
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`!WINAPI_FAMILY`] [__predef_detection__]]
- [[`WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_PLAT_WINDOWS_DESKTOP BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if BOOST_OS_WINDOWS && \
- ( !defined(WINAPI_FAMILY) || (WINAPI_FAMILY == WINAPI_FAMILY_DESKTOP_APP) )
-# undef BOOST_PLAT_WINDOWS_DESKTOP
-# define BOOST_PLAT_WINDOWS_DESKTOP BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_PLAT_WINDOWS_DESKTOP
-# define BOOST_PLAT_WINDOWS_DESKTOP_AVAILABLE
-# include <boost/predef/detail/platform_detected.h>
-#endif
-
-#define BOOST_PLAT_WINDOWS_DESKTOP_NAME "Windows Desktop"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_WINDOWS_DESKTOP,BOOST_PLAT_WINDOWS_DESKTOP_NAME)
diff --git a/include/boost/predef/platform/windows_phone.h b/include/boost/predef/platform/windows_phone.h
deleted file mode 100644
index df583adc..00000000
--- a/include/boost/predef/platform/windows_phone.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-Copyright (c) Microsoft Corporation 2014
-Copyright Rene Rivera 2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_PLAT_WINDOWS_PHONE_H
-#define BOOST_PREDEF_PLAT_WINDOWS_PHONE_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-#include <boost/predef/os/windows.h>
-
-/*`
-[heading `BOOST_PLAT_WINDOWS_PHONE`]
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_PLAT_WINDOWS_PHONE BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if BOOST_OS_WINDOWS && defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP
-# undef BOOST_PLAT_WINDOWS_PHONE
-# define BOOST_PLAT_WINDOWS_PHONE BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_PLAT_WINDOWS_PHONE
-# define BOOST_PLAT_WINDOWS_PHONE_AVAILABLE
-# include <boost/predef/detail/platform_detected.h>
-#endif
-
-#define BOOST_PLAT_WINDOWS_PHONE_NAME "Windows Phone"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_WINDOWS_PHONE,BOOST_PLAT_WINDOWS_PHONE_NAME)
diff --git a/include/boost/predef/platform/windows_runtime.h b/include/boost/predef/platform/windows_runtime.h
deleted file mode 100644
index 03be5140..00000000
--- a/include/boost/predef/platform/windows_runtime.h
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
-Copyright (c) Microsoft Corporation 2014
-Copyright Rene Rivera 2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_PLAT_WINDOWS_RUNTIME_H
-#define BOOST_PREDEF_PLAT_WINDOWS_RUNTIME_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-#include <boost/predef/os/windows.h>
-
-/*`
-[heading `BOOST_PLAT_WINDOWS_RUNTIME`]
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`WINAPI_FAMILY == WINAPI_FAMILY_APP`] [__predef_detection__]]
- [[`WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_PLAT_WINDOWS_RUNTIME BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if BOOST_OS_WINDOWS && defined(WINAPI_FAMILY) && \
- ( WINAPI_FAMILY == WINAPI_FAMILY_APP || WINAPI_FAMILY == WINAPI_FAMILY_PHONE_APP )
-# undef BOOST_PLAT_WINDOWS_RUNTIME
-# define BOOST_PLAT_WINDOWS_RUNTIME BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_PLAT_WINDOWS_RUNTIME
-# define BOOST_PLAT_WINDOWS_RUNTIME_AVAILABLE
-# include <boost/predef/detail/platform_detected.h>
-#endif
-
-#define BOOST_PLAT_WINDOWS_RUNTIME_NAME "Windows Runtime"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_WINDOWS_RUNTIME,BOOST_PLAT_WINDOWS_RUNTIME_NAME)
diff --git a/include/boost/predef/platform/windows_store.h b/include/boost/predef/platform/windows_store.h
deleted file mode 100644
index a34968b3..00000000
--- a/include/boost/predef/platform/windows_store.h
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
-Copyright (c) Microsoft Corporation 2014
-Copyright Rene Rivera 2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_PLAT_WINDOWS_STORE_H
-#define BOOST_PREDEF_PLAT_WINDOWS_STORE_H
-
-#include <boost/predef/version_number.h>
-#include <boost/predef/make.h>
-#include <boost/predef/os/windows.h>
-
-/*`
-[heading `BOOST_PLAT_WINDOWS_STORE`]
-
-[table
- [[__predef_symbol__] [__predef_version__]]
-
- [[`WINAPI_FAMILY == WINAPI_FAMILY_APP`] [__predef_detection__]]
- ]
- */
-
-#define BOOST_PLAT_WINDOWS_STORE BOOST_VERSION_NUMBER_NOT_AVAILABLE
-
-#if BOOST_OS_WINDOWS && defined(WINAPI_FAMILY) && WINAPI_FAMILY == WINAPI_FAMILY_APP
-# undef BOOST_PLAT_WINDOWS_STORE
-# define BOOST_PLAT_WINDOWS_STORE BOOST_VERSION_NUMBER_AVAILABLE
-#endif
-
-#if BOOST_PLAT_WINDOWS_STORE
-# define BOOST_PLAT_WINDOWS_STORE_AVAILABLE
-# include <boost/predef/detail/platform_detected.h>
-#endif
-
-#define BOOST_PLAT_WINDOWS_STORE_NAME "Windows Store"
-
-#endif
-
-#include <boost/predef/detail/test.h>
-BOOST_PREDEF_DECLARE_TEST(BOOST_PLAT_WINDOWS_STORE,BOOST_PLAT_WINDOWS_STORE_NAME)
diff --git a/include/boost/predef/version.h b/include/boost/predef/version.h
deleted file mode 100644
index 2fcdefa6..00000000
--- a/include/boost/predef/version.h
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
-Copyright Rene Rivera 2015
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_VERSION_H
-#define BOOST_PREDEF_VERSION_H
-
-#include <boost/predef/version_number.h>
-
-#define BOOST_PREDEF_VERSION BOOST_VERSION_NUMBER(1,4,0)
-
-#endif
diff --git a/include/boost/predef/version_number.h b/include/boost/predef/version_number.h
deleted file mode 100644
index 3903a36b..00000000
--- a/include/boost/predef/version_number.h
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
-Copyright Rene Rivera 2005, 2008-2013
-Distributed under the Boost Software License, Version 1.0.
-(See accompanying file LICENSE_1_0.txt or copy at
-http://www.boost.org/LICENSE_1_0.txt)
-*/
-
-#ifndef BOOST_PREDEF_VERSION_NUMBER_H
-#define BOOST_PREDEF_VERSION_NUMBER_H
-
-/*`
-[heading `BOOST_VERSION_NUMBER`]
-
-``
-BOOST_VERSION_NUMBER(major,minor,patch)
-``
-
-Defines standard version numbers, with these properties:
-
-* Decimal base whole numbers in the range \[0,1000000000).
- The number range is designed to allow for a (2,2,5) triplet.
- Which fits within a 32 bit value.
-* The `major` number can be in the \[0,99\] range.
-* The `minor` number can be in the \[0,99\] range.
-* The `patch` number can be in the \[0,99999\] range.
-* Values can be specified in any base. As the defined value
- is an constant expression.
-* Value can be directly used in both preprocessor and compiler
- expressions for comparison to other similarly defined values.
-* The implementation enforces the individual ranges for the
- major, minor, and patch numbers. And values over the ranges
- are truncated (modulo).
-
-*/
-#define BOOST_VERSION_NUMBER(major,minor,patch) \
- ( (((major)%100)*10000000) + (((minor)%100)*100000) + ((patch)%100000) )
-
-#define BOOST_VERSION_NUMBER_MAX \
- BOOST_VERSION_NUMBER(99,99,99999)
-
-#define BOOST_VERSION_NUMBER_ZERO \
- BOOST_VERSION_NUMBER(0,0,0)
-
-#define BOOST_VERSION_NUMBER_MIN \
- BOOST_VERSION_NUMBER(0,0,1)
-
-#define BOOST_VERSION_NUMBER_AVAILABLE \
- BOOST_VERSION_NUMBER_MIN
-
-#define BOOST_VERSION_NUMBER_NOT_AVAILABLE \
- BOOST_VERSION_NUMBER_ZERO
-
-#endif
diff --git a/include/boost/signalslib.hpp b/include/boost/signalslib.hpp
deleted file mode 100644
index 6517ddba..00000000
--- a/include/boost/signalslib.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- * Walkaroung for Boost, Qt namespace clash
- *
- * Taken from boost documantation:
- * http://www.boost.org/doc/libs/1_55_0/doc/html/signals/s04.html
- */
-
-
-#ifndef SIGNALSLIB_HPP_INCLUDED
-#define SIGNALSLIB_HPP_INCLUDED
-
-#if defined(signals) && defined(QOBJECTDEFS_H) && \
- !defined(QT_MOC_CPP)
-# undef signals
-# define signals signals
-#endif
-
-#include <boost/signal.hpp>
-namespace boost
-{
- namespace signalslib = signals;
-}
-
-#if defined(signals) && defined(QOBJECTDEFS_H) && \
- !defined(QT_MOC_CPP)
-# undef signals
-// Restore the macro definition of "signals", as it was
-// defined by Qt's <qobjectdefs.h>.
-# define signals protected
-#endif
-
-#endif
-
diff --git a/include/boost/utility/explicit_operator_bool.hpp b/include/boost/utility/explicit_operator_bool.hpp
deleted file mode 100644
index a8936e2c..00000000
--- a/include/boost/utility/explicit_operator_bool.hpp
+++ /dev/null
@@ -1,154 +0,0 @@
-/*
- * Copyright Andrey Semashev 2007 - 2013.
- * Distributed under the Boost Software License, Version 1.0.
- * (See accompanying file LICENSE_1_0.txt or copy at
- * http://www.boost.org/LICENSE_1_0.txt)
- */
-
-/*!
- * \file explicit_operator_bool.hpp
- * \author Andrey Semashev
- * \date 08.03.2009
- *
- * This header defines a compatibility macro that implements an unspecified
- * \c bool operator idiom, which is superseded with explicit conversion operators in
- * C++11.
- */
-
-#ifndef BOOST_CORE_EXPLICIT_OPERATOR_BOOL_HPP
-#define BOOST_CORE_EXPLICIT_OPERATOR_BOOL_HPP
-
-#include <boost/config.hpp>
-
-#ifdef BOOST_HAS_PRAGMA_ONCE
-#pragma once
-#endif
-
-#if !defined(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS)
-
-/*!
- * \brief The macro defines an explicit operator of conversion to \c bool
- *
- * The macro should be used inside the definition of a class that has to
- * support the conversion. The class should also implement <tt>operator!</tt>,
- * in terms of which the conversion operator will be implemented.
- */
-#define BOOST_EXPLICIT_OPERATOR_BOOL()\
- BOOST_FORCEINLINE explicit operator bool () const\
- {\
- return !this->operator! ();\
- }
-
-/*!
- * \brief The macro defines a noexcept explicit operator of conversion to \c bool
- *
- * The macro should be used inside the definition of a class that has to
- * support the conversion. The class should also implement <tt>operator!</tt>,
- * in terms of which the conversion operator will be implemented.
- */
-#define BOOST_EXPLICIT_OPERATOR_BOOL_NOEXCEPT()\
- BOOST_FORCEINLINE explicit operator bool () const BOOST_NOEXCEPT\
- {\
- return !this->operator! ();\
- }
-
-/*!
- * \brief The macro defines a constexpr explicit operator of conversion to \c bool
- *
- * The macro should be used inside the definition of a class that has to
- * support the conversion. The class should also implement <tt>operator!</tt>,
- * in terms of which the conversion operator will be implemented.
- */
-#define BOOST_CONSTEXPR_EXPLICIT_OPERATOR_BOOL()\
- BOOST_FORCEINLINE BOOST_CONSTEXPR explicit operator bool () const BOOST_NOEXCEPT\
- {\
- return !this->operator! ();\
- }
-
-#else // !defined(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS)
-
-#if (defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x530)) && !defined(BOOST_NO_COMPILER_CONFIG)
-// Sun C++ 5.3 can't handle the safe_bool idiom, so don't use it
-#define BOOST_NO_UNSPECIFIED_BOOL
-#endif // (defined(__SUNPRO_CC) && (__SUNPRO_CC <= 0x530)) && !defined(BOOST_NO_COMPILER_CONFIG)
-
-#if !defined(BOOST_NO_UNSPECIFIED_BOOL)
-
-namespace boost {
-
-namespace detail {
-
-#if !defined(_MSC_VER) && !defined(__IBMCPP__)
-
- struct unspecified_bool
- {
- // NOTE TO THE USER: If you see this in error messages then you tried
- // to apply an unsupported operator on the object that supports
- // explicit conversion to bool.
- struct OPERATORS_NOT_ALLOWED;
- static void true_value(OPERATORS_NOT_ALLOWED*) {}
- };
- typedef void (*unspecified_bool_type)(unspecified_bool::OPERATORS_NOT_ALLOWED*);
-
-#else
-
- // MSVC and VACPP are too eager to convert pointer to function to void* even though they shouldn't
- struct unspecified_bool
- {
- // NOTE TO THE USER: If you see this in error messages then you tried
- // to apply an unsupported operator on the object that supports
- // explicit conversion to bool.
- struct OPERATORS_NOT_ALLOWED;
- void true_value(OPERATORS_NOT_ALLOWED*) {}
- };
- typedef void (unspecified_bool::*unspecified_bool_type)(unspecified_bool::OPERATORS_NOT_ALLOWED*);
-
-#endif
-
-} // namespace detail
-
-} // namespace boost
-
-#define BOOST_EXPLICIT_OPERATOR_BOOL()\
- BOOST_FORCEINLINE operator boost::detail::unspecified_bool_type () const\
- {\
- return (!this->operator! () ? &boost::detail::unspecified_bool::true_value : (boost::detail::unspecified_bool_type)0);\
- }
-
-#define BOOST_EXPLICIT_OPERATOR_BOOL_NOEXCEPT()\
- BOOST_FORCEINLINE operator boost::detail::unspecified_bool_type () const BOOST_NOEXCEPT\
- {\
- return (!this->operator! () ? &boost::detail::unspecified_bool::true_value : (boost::detail::unspecified_bool_type)0);\
- }
-
-#define BOOST_CONSTEXPR_EXPLICIT_OPERATOR_BOOL()\
- BOOST_FORCEINLINE BOOST_CONSTEXPR operator boost::detail::unspecified_bool_type () const BOOST_NOEXCEPT\
- {\
- return (!this->operator! () ? &boost::detail::unspecified_bool::true_value : (boost::detail::unspecified_bool_type)0);\
- }
-
-#else // !defined(BOOST_NO_UNSPECIFIED_BOOL)
-
-#define BOOST_EXPLICIT_OPERATOR_BOOL()\
- BOOST_FORCEINLINE operator bool () const\
- {\
- return !this->operator! ();\
- }
-
-#define BOOST_EXPLICIT_OPERATOR_BOOL_NOEXCEPT()\
- BOOST_FORCEINLINE operator bool () const BOOST_NOEXCEPT\
- {\
- return !this->operator! ();\
- }
-
-#define BOOST_CONSTEXPR_EXPLICIT_OPERATOR_BOOL()\
- BOOST_FORCEINLINE BOOST_CONSTEXPR operator bool () const BOOST_NOEXCEPT\
- {\
- return !this->operator! ();\
- }
-
-#endif // !defined(BOOST_NO_UNSPECIFIED_BOOL)
-
-#endif // !defined(BOOST_NO_CXX11_EXPLICIT_CONVERSION_OPERATORS)
-
-#endif // BOOST_CORE_EXPLICIT_OPERATOR_BOOL_HPP
diff --git a/include/transport/Conversation.h b/include/transport/Conversation.h
index ebd02667..f9253312 100644
--- a/include/transport/Conversation.h
+++ b/include/transport/Conversation.h
@@ -23,6 +23,7 @@
#include <string>
#include <algorithm>
#include <list>
+#include <map>
#include "Swiften/Elements/Message.h"
#include "Swiften/Elements/Presence.h"
diff --git a/include/transport/FileTransferManager.h b/include/transport/FileTransferManager.h
deleted file mode 100644
index bee5b990..00000000
--- a/include/transport/FileTransferManager.h
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- * libtransport -- C++ library for easy XMPP Transports development
- *
- * Copyright (C) 2011, Jan Kaluza <hanzz.k@gmail.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
- */
-
-#pragma once
-
-#include <Swiften/Elements/StreamInitiationFileInfo.h>
-#include <Swiften/FileTransfer/CombinedOutgoingFileTransferManager.h>
-#include <Swiften/FileTransfer/IncomingFileTransferManager.h>
-#include <Swiften/FileTransfer/SOCKS5BytestreamRegistry.h>
-#include <Swiften/FileTransfer/SOCKS5BytestreamServer.h>
-
-
-#include <Swiften/FileTransfer/SOCKS5BytestreamProxiesManager.h>
-#include <Swiften/FileTransfer/SOCKS5BytestreamServerManager.h>
-
-namespace Transport {
-
-class UserManager;
-class User;
-class Component;
-class Buddy;
-
-class FileTransferManager {
- public:
- typedef struct Transfer {
- std::shared_ptr<Swift::OutgoingFileTransfer> ft;
- Swift::JID from;
- Swift::JID to;
- std::shared_ptr<Swift::ReadBytestream> readByteStream;
- } Transfer;
-
- FileTransferManager(Component *component, UserManager *userManager);
- virtual ~FileTransferManager();
-
- FileTransferManager::Transfer sendFile(User *user, Buddy *buddy, std::shared_ptr<Swift::ReadBytestream> byteStream, const Swift::StreamInitiationFileInfo &info);
-
- private:
- Component *m_component;
- UserManager *m_userManager;
- Swift::CombinedOutgoingFileTransferManager* m_outgoingFTManager;
- Swift::RemoteJingleTransportCandidateSelectorFactory* m_remoteCandidateSelectorFactory;
- Swift::LocalJingleTransportCandidateGeneratorFactory* m_localCandidateGeneratorFactory;
- Swift::JingleSessionManager *m_jingleSessionManager;
- Swift::SOCKS5BytestreamRegistry* m_bytestreamRegistry;
- Swift::SOCKS5BytestreamServerManager* m_proxyServerManager;
- Swift::SOCKS5BytestreamProxiesManager *m_proxyManager;
-};
-
-}
diff --git a/include/transport/MemoryReadBytestream.h b/include/transport/MemoryReadBytestream.h
deleted file mode 100644
index 762ebbbd..00000000
--- a/include/transport/MemoryReadBytestream.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * libtransport -- C++ library for easy XMPP Transports development
- *
- * Copyright (C) 2011, Jan Kaluza <hanzz.k@gmail.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
- */
-
-#pragma once
-
-#include <string>
-#include <map>
-
-#include "Swiften/FileTransfer/ReadBytestream.h"
-
-namespace Transport {
-
-class MemoryReadBytestream : public Swift::ReadBytestream {
- public:
- MemoryReadBytestream(unsigned long size);
- virtual ~MemoryReadBytestream();
-
- unsigned long appendData(const std::string &data);
-
- virtual std::shared_ptr<std::vector<unsigned char> > read(size_t size);
-
- void setFinished() { m_finished = true; }
- bool isFinished() const;
-
- boost::signals2::signal<void ()> onDataNeeded;
-
- private:
- bool m_finished;
- std::string m_data;
- bool neededData;
- unsigned long m_sent;
- unsigned long m_size;
-};
-
-}
diff --git a/include/transport/MySQLBackend.h b/include/transport/MySQLBackend.h
index 944299b3..7256e6f6 100644
--- a/include/transport/MySQLBackend.h
+++ b/include/transport/MySQLBackend.h
@@ -86,6 +86,8 @@ class MySQLBackend : public StorageBackend
bool getUsers(std::vector<std::string> &users);
+ bool getLegacyNetworkUsers(std::vector<std::string> &users);
+
long addBuddy(long userId, const BuddyInfo &buddyInfo);
void updateBuddy(long userId, const BuddyInfo &buddyInfo);
@@ -160,6 +162,7 @@ class MySQLBackend : public StorageBackend
Statement *m_setUserOnline;
Statement *m_getOnlineUsers;
Statement *m_getUsers;
+ Statement *m_getLegacyNetworkUsers;
};
}
diff --git a/include/transport/NetworkPlugin.h b/include/transport/NetworkPlugin.h
index f8fd3770..8be3ad13 100644
--- a/include/transport/NetworkPlugin.h
+++ b/include/transport/NetworkPlugin.h
@@ -136,7 +136,9 @@ class NetworkPlugin {
/// \param nickname Nickname of buddy in room. Empty if it's normal chat message.
/// \param xhtml XHTML message.
/// \param carbon If set, the message is a carbon copy of our own message, sent in a different legacy network client. The message should be treated as sent FROM us, not TO us.
- void handleMessage(const std::string &user, const std::string &legacyName, const std::string &message, const std::string &nickname = "", const std::string &xhtml = "", const std::string &timestamp = "", bool headline = false, bool pm = false, bool carbon = false);
+ void handleMessage(const std::string &user, const std::string &legacyName, const std::string &message, const std::string &nickname = "",
+ const std::string &xhtml = "", const std::string &timestamp = "", bool headline = false, bool pm = false, bool carbon = false,
+ const std::vector<pbnetwork::Attachment> &attachments = {});
void handleMessageAck(const std::string &user, const std::string &legacyName, const std::string &id);
@@ -188,11 +190,6 @@ class NetworkPlugin {
/// \param message Message.
void handleAttention(const std::string &user, const std::string &buddyName, const std::string &message);
- void handleFTStart(const std::string &user, const std::string &buddyName, const std::string fileName, unsigned long size);
- void handleFTFinish(const std::string &user, const std::string &buddyName, const std::string fileName, unsigned long size, unsigned long ftid);
-
- void handleFTData(unsigned long ftID, const std::string &data);
-
void handleRoomList(const std::string &user, const std::list<std::string> &rooms, const std::list<std::string> &names);
/// Called when XMPP user wants to connect legacy network.
@@ -263,11 +260,6 @@ class NetworkPlugin {
virtual void handleStoppedTypingRequest(const std::string &/*user*/, const std::string &/*buddyName*/) {}
virtual void handleAttentionRequest(const std::string &/*user*/, const std::string &/*buddyName*/, const std::string &/*message*/) {}
- virtual void handleFTStartRequest(const std::string &/*user*/, const std::string &/*buddyName*/, const std::string &/*fileName*/, unsigned long size, unsigned long ftID) {}
- virtual void handleFTFinishRequest(const std::string &/*user*/, const std::string &/*buddyName*/, const std::string &/*fileName*/, unsigned long size, unsigned long ftID) {}
- virtual void handleFTPauseRequest(unsigned long ftID) {}
- virtual void handleFTContinueRequest(unsigned long ftID) {}
-
virtual void handleRawXML(const std::string &xml) {}
virtual void handleMemoryUsage(double &res, double &shared) {res = 0; shared = 0;}
@@ -290,10 +282,6 @@ class NetworkPlugin {
void handleBuddyRemovedPayload(const std::string &payload);
void handleChatStatePayload(const std::string &payload, int type);
void handleAttentionPayload(const std::string &payload);
- void handleFTStartPayload(const std::string &payload);
- void handleFTFinishPayload(const std::string &payload);
- void handleFTPausePayload(const std::string &payload);
- void handleFTContinuePayload(const std::string &payload);
void handleRoomSubjectChangedPayload(const std::string &payload);
void send(const std::string &data);
diff --git a/include/transport/NetworkPluginServer.h b/include/transport/NetworkPluginServer.h
index 233e5452..51d0f4d8 100644
--- a/include/transport/NetworkPluginServer.h
+++ b/include/transport/NetworkPluginServer.h
@@ -20,11 +20,8 @@
#pragma once
-#include "transport/FileTransferManager.h"
-
#include <time.h>
#include <vector>
-#include "Swiften/Presence/PresenceOracle.h"
#include "Swiften/Disco/EntityCapsManager.h"
#include "Swiften/Network/BoostConnectionServer.h"
#include "Swiften/Network/Connection.h"
@@ -40,7 +37,6 @@
#include "Swiften/Parser/XMPPParser.h"
#include "Swiften/Parser/XMPPParserClient.h"
#include "Swiften/Serializer/XMPPSerializer.h"
-#include <Swiften/FileTransfer/FileTransfer.h>
#include "transport/protocol.pb.h"
#define NETWORK_PLUGIN_API_VERSION (1)
@@ -59,8 +55,6 @@ class RosterResponder;
class BlockResponder;
class DummyReadBytestream;
class AdminInterface;
-class FileTransferManager;
-class FileTransfer;
class NetworkPluginServer : Swift::XMPPParserClient {
public:
@@ -78,7 +72,7 @@ class NetworkPluginServer : Swift::XMPPParserClient {
std::string id;
};
- NetworkPluginServer(Component *component, Config *config, UserManager *userManager, FileTransferManager *ftManager);
+ NetworkPluginServer(Component *component, Config *config, UserManager *userManager);
virtual ~NetworkPluginServer();
@@ -125,9 +119,6 @@ class NetworkPluginServer : Swift::XMPPParserClient {
void handleAuthorizationPayload(const std::string &payload);
void handleAttentionPayload(const std::string &payload);
void handleStatsPayload(Backend *c, const std::string &payload);
- void handleFTStartPayload(const std::string &payload);
- void handleFTFinishPayload(const std::string &payload);
- void handleFTDataPayload(Backend *b, const std::string &payload);
void handleQueryPayload(Backend *b, const std::string &payload);
void handleBackendConfigPayload(const std::string &payload);
void handleRoomListPayload(const std::string &payload);
@@ -151,11 +142,6 @@ class NetworkPluginServer : Swift::XMPPParserClient {
void handleVCardUpdated(User *user, std::shared_ptr<Swift::VCard> vcard);
void handleVCardRequired(User *user, const std::string &name, unsigned int id);
- void handleFTStateChanged(Swift::FileTransfer::State state, const std::string &userName, const std::string &buddyName, const std::string &fileName, unsigned long size, unsigned long id);
- void handleFTAccepted(User *user, const std::string &buddyName, const std::string &fileName, unsigned long size, unsigned long ftID);
- void handleFTRejected(User *user, const std::string &buddyName, const std::string &fileName, unsigned long size);
- void handleFTDataNeeded(Backend *b, unsigned long ftid);
-
void handlePIDTerminated(unsigned long pid);
std::vector<std::shared_ptr<Swift::Message> > wrapIncomingMedia(std::shared_ptr<Swift::Message>& msg);
@@ -175,6 +161,7 @@ class NetworkPluginServer : Swift::XMPPParserClient {
void handleStreamStart(const Swift::ProtocolHeader&) {}
void handleElement(std::shared_ptr<Swift::ToplevelElement> element);
void handleStreamEnd() {}
+ void addOobPayload(Swift::Message::ref message, const std::string &url);
UserManager *m_userManager;
VCardResponder *m_vcardResponder;
@@ -190,8 +177,6 @@ class NetworkPluginServer : Swift::XMPPParserClient {
Component *m_component;
std::list<User *> m_waitingUsers;
bool m_isNextLongRun;
- std::map<unsigned long, FileTransferManager::Transfer> m_filetransfers;
- FileTransferManager *m_ftManager;
std::vector<std::string> m_crashedBackends;
AdminInterface *m_adminInterface;
bool m_startingBackend;
diff --git a/include/transport/PQXXBackend.h b/include/transport/PQXXBackend.h
index 89ce1e17..8ce96eee 100644
--- a/include/transport/PQXXBackend.h
+++ b/include/transport/PQXXBackend.h
@@ -85,6 +85,8 @@ class PQXXBackend : public StorageBackend
bool getUsers(std::vector<std::string> &users);
+ bool getLegacyNetworkUsers(std::vector<std::string> &users);
+
long addBuddy(long userId, const BuddyInfo &buddyInfo);
void updateBuddy(long userId, const BuddyInfo &buddyInfo);
diff --git a/include/transport/SQLite3Backend.h b/include/transport/SQLite3Backend.h
index 237b8c40..7a88a45a 100644
--- a/include/transport/SQLite3Backend.h
+++ b/include/transport/SQLite3Backend.h
@@ -74,6 +74,8 @@ class SQLite3Backend : public StorageBackend
bool getUsers(std::vector<std::string> &users);
+ bool getLegacyNetworkUsers(std::vector<std::string> &users);
+
/// Removes user and all connected data from database.
/// \param id id of user - UserInfo.id
/// \return true if user has been found in database and removed
@@ -127,6 +129,7 @@ class SQLite3Backend : public StorageBackend
sqlite3_stmt *m_setUserOnline;
sqlite3_stmt *m_getOnlineUsers;
sqlite3_stmt *m_getUsers;
+ sqlite3_stmt *m_getLegacyNetworkUsers;
};
}
diff --git a/include/transport/StorageBackend.h b/include/transport/StorageBackend.h
index cf2f7238..e497588e 100644
--- a/include/transport/StorageBackend.h
+++ b/include/transport/StorageBackend.h
@@ -125,6 +125,8 @@ class StorageBackend
virtual bool getUsers(std::vector<std::string> &users) = 0;
+ virtual bool getLegacyNetworkUsers(std::vector<std::string> &users) = 0;
+
virtual long addBuddy(long userId, const BuddyInfo &buddyInfo) = 0;
virtual void updateBuddy(long userId, const BuddyInfo &buddyInfo) = 0;
virtual void removeBuddy(long id) = 0;
diff --git a/include/transport/User.h b/include/transport/User.h
index e5f6d7ce..f688a36d 100644
--- a/include/transport/User.h
+++ b/include/transport/User.h
@@ -25,7 +25,6 @@
#include <boost/signals2.hpp>
#include "transport/StorageBackend.h"
-#include <Swiften/FileTransfer/OutgoingFileTransfer.h>
#include "Swiften/Elements/SpectrumErrorPayload.h"
#include "Swiften/JID/JID.h"
#include "Swiften/Elements/Presence.h"
@@ -175,7 +174,6 @@ class User {
std::shared_ptr<Swift::Connection> connection;
time_t m_lastActivity;
std::map<Swift::JID, Swift::DiscoInfo::ref> m_legacyCaps;
- std::vector<std::shared_ptr<Swift::OutgoingFileTransfer> > m_filetransfers;
int m_resources;
int m_reconnectCounter;
std::list<Swift::Presence::ref> m_joinedRooms;
diff --git a/include/transport/protocol.proto b/include/transport/protocol.proto
index 9710eece..749c7e7a 100644
--- a/include/transport/protocol.proto
+++ b/include/transport/protocol.proto
@@ -81,6 +81,7 @@ message ConversationMessage {
optional string id = 8;
optional bool pm = 9;
optional bool carbon = 10;
+ repeated Attachment attachment = 11;
}
message Room {
@@ -141,17 +142,10 @@ message Stats {
required string id = 4;
}
-message File {
- required string userName = 1;
- required string buddyName = 2;
- required string fileName = 3;
- required int32 size = 4;
- optional int32 ftID = 5;
-}
-
-message FileTransferData {
- required int32 ftID = 1;
- required bytes data = 2;
+message Attachment {
+ required string url = 1;
+ optional string mimeType = 2;
+ optional string description = 3;
}
message BackendConfig {
diff --git a/libtransport/CMakeLists.txt b/libtransport/CMakeLists.txt
index c7c3cd77..2e49ca93 100644
--- a/libtransport/CMakeLists.txt
+++ b/libtransport/CMakeLists.txt
@@ -45,9 +45,9 @@ endif(PROTOBUF_FOUND)
find_package(CURL)
if(WIN32)
- target_link_libraries(transport transport-plugin ${PQXX_LIBRARIES} ${CURL_LIBRARIES} ${PQ_LIBRARY} ${MYSQL_LIBRARIES} ${SWIFTEN_LIBRARY} ${LOG4CXX_LIBRARIES} ${PROTOBUF_LIBRARY} ${JSONCPP_LIBRARY} psapi.lib bcrypt.lib)
+ target_link_libraries(transport transport-plugin ${PQXX_LIBRARIES} ${CURL_LIBRARIES} ${PQ_LIBRARY} ${MYSQL_LIBRARIES} ${SWIFTEN_LIBRARY} ${LOG4CXX_LIBRARIES} ${PROTOBUF_LIBRARY} JsonCpp::JsonCpp psapi.lib bcrypt.lib)
else()
- target_link_libraries(transport transport-plugin ${PQXX_LIBRARIES} ${CURL_LIBRARIES} ${PQ_LIBRARY} ${SQLITE3_LIBRARIES} ${MYSQL_LIBRARIES} ${SWIFTEN_LIBRARY} ${LOG4CXX_LIBRARIES} ${POPT_LIBRARY} ${PROTOBUF_LIBRARY} ${JSONCPP_LIBRARY})
+ target_link_libraries(transport transport-plugin ${PQXX_LIBRARIES} ${CURL_LIBRARIES} ${PQ_LIBRARY} ${SQLITE3_LIBRARIES} ${MYSQL_LIBRARIES} ${SWIFTEN_LIBRARY} ${LOG4CXX_LIBRARIES} ${POPT_LIBRARY} ${PROTOBUF_LIBRARY} JsonCpp::JsonCpp)
endif()
set_target_properties(transport PROPERTIES
diff --git a/libtransport/FileTransferManager.cpp b/libtransport/FileTransferManager.cpp
deleted file mode 100644
index 8792fcac..00000000
--- a/libtransport/FileTransferManager.cpp
+++ /dev/null
@@ -1,102 +0,0 @@
-/**
- * libtransport -- C++ library for easy XMPP Transports development
- *
- * Copyright (C) 2011, Jan Kaluza <hanzz.k@gmail.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
- */
-
-#include "transport/FileTransferManager.h"
-#include "transport/Transport.h"
-#include "transport/UserManager.h"
-#include "transport/User.h"
-#include "transport/Buddy.h"
-#include "transport/Logging.h"
-#include "Swiften/Network/ConnectionServerFactory.h"
-
-namespace Transport {
-
-DEFINE_LOGGER(logger, "FileTransferManager");
-
-FileTransferManager::FileTransferManager(Component *component, UserManager *userManager) {
-// m_component = component;
-// m_userManager = userManager;
-//
-// m_jingleSessionManager = new Swift::JingleSessionManager(m_component->getIQRouter());
-// #if !HAVE_SWIFTEN_3
-// m_connectivityManager = new Swift::ConnectivityManager(m_component->getNetworkFactories()->getNATTraverser());
-// #endif
-// m_bytestreamRegistry = new Swift::SOCKS5BytestreamRegistry();
-// #if !HAVE_SWIFTEN_3
-// m_bytestreamProxy = new Swift::SOCKS5BytestreamProxy(m_component->getNetworkFactories()->getConnectionFactory(), m_component->getNetworkFactories()->getTimerFactory());
-// m_localCandidateGeneratorFactory = new Swift::DefaultLocalJingleTransportCandidateGeneratorFactory(m_connectivityManager, m_bytestreamRegistry, m_bytestreamProxy, "thishouldnotbeused");
-// m_remoteCandidateSelectorFactory = new Swift::DefaultRemoteJingleTransportCandidateSelectorFactory(m_component->getNetworkFactories()->getConnectionFactory(), m_component->getNetworkFactories()->getTimerFactory());
-// #else
-// m_proxyManager = new Swift::SOCKS5BytestreamProxiesManager(m_component->getNetworkFactories()->getConnectionFactory(), m_component->getNetworkFactories()->getTimerFactory(), m_component->getNetworkFactories()->getDomainNameResolver(), m_component->getIQRouter(), "bar.com");
-// #endif
-// std::shared_ptr<Swift::ConnectionServer> server = m_component->getNetworkFactories()->getConnectionServerFactory()->createConnectionServer(19645);
-// server->start();
-// #if HAVE_SWIFTEN_3
-// m_proxyServerManager = new Swift::SOCKS5BytestreamServerManager(m_bytestreamRegistry, m_component->getNetworkFactories()->getConnectionServerFactory(), m_component->getNetworkFactories()->getNetworkEnvironment(), m_component->getNetworkFactories()->getNATTraverser());
-// #else
-// m_bytestreamServer = new Swift::SOCKS5BytestreamServer(server, m_bytestreamRegistry);
-// m_bytestreamServer->start();
-// m_outgoingFTManager = new Swift::CombinedOutgoingFileTransferManager(m_jingleSessionManager, m_component->getIQRouter(),
-// m_userManager, m_remoteCandidateSelectorFactory,
-// m_localCandidateGeneratorFactory, m_bytestreamRegistry,
-// m_bytestreamProxy, m_component->getPresenceOracle(),
-// m_bytestreamServer);
-// #endif
-
-
-
-// WARNING: Swiften crashes when this is uncommented... But we probably need it for working Jingle FT
-// m_connectivityManager->addListeningPort(19645);
-}
-
-FileTransferManager::~FileTransferManager() {
-// #if !HAVE_SWIFTEN_3
-// m_bytestreamServer->stop();
-// delete m_remoteCandidateSelectorFactory;
-// delete m_localCandidateGeneratorFactory;
-// #endif
-// delete m_outgoingFTManager;
-// delete m_jingleSessionManager;
-// delete m_bytestreamRegistry;
-// #if !HAVE_SWIFTEN_3
-// delete m_bytestreamServer;
-// delete m_bytestreamProxy;
-// delete m_connectivityManager;
-// #endif
-}
-
-FileTransferManager::Transfer FileTransferManager::sendFile(User *user, Buddy *buddy, std::shared_ptr<Swift::ReadBytestream> byteStream, const Swift::StreamInitiationFileInfo &info) {
- FileTransferManager::Transfer transfer;
-// transfer.from = buddy->getJID();
-// transfer.to = user->getJID();
-// transfer.readByteStream = byteStream;
-//
-// LOG4CXX_INFO(logger, "Starting FT from '" << transfer.from << "' to '" << transfer.to << "'")
-//
-// transfer.ft = m_outgoingFTManager->createOutgoingFileTransfer(transfer.from, transfer.to, transfer.readByteStream, info);
-// // if (transfer.ft) {
-// // m_filetransfers.push_back(ft);
-// // ft->onStateChange.connect(boost::bind(&User::handleFTStateChanged, this, _1, Buddy::JIDToLegacyName(from), info.getName(), info.getSize(), id));
-// // transfer.ft->start();
-// // }
- return transfer;
-}
-
-}
diff --git a/libtransport/MemoryReadByteStream.cpp b/libtransport/MemoryReadByteStream.cpp
deleted file mode 100644
index b343c013..00000000
--- a/libtransport/MemoryReadByteStream.cpp
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * libtransport -- C++ library for easy XMPP Transports development
- *
- * Copyright (C) 2011, Jan Kaluza <hanzz.k@gmail.com>
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program 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 General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
- */
-
-#include "transport/MemoryReadBytestream.h"
-#include <boost/foreach.hpp>
-
-namespace Transport {
-
-MemoryReadBytestream::MemoryReadBytestream(unsigned long size) {
- neededData = false;
- m_finished = false;
- m_sent = 0;
- m_size = size;
-}
-
-MemoryReadBytestream::~MemoryReadBytestream() {
-
-}
-
-unsigned long MemoryReadBytestream::appendData(const std::string &data) {
- m_data += data;
- onDataAvailable();
- neededData = false;
- return m_data.size();
-}
-
-std::shared_ptr<std::vector<unsigned char> > MemoryReadBytestream::read(size_t size) {
- if (m_data.empty()) {
- onDataNeeded();
- return std::shared_ptr<std::vector<unsigned char> >(new std::vector<unsigned char>());
- }
-
- if (m_data.size() < size) {
- std::shared_ptr<std::vector<unsigned char> > ptr(new std::vector<unsigned char>(m_data.begin(), m_data.end()));
- m_sent += m_data.size();
- m_data.clear();
- if (m_sent == m_size)
- m_finished = true;
- onDataNeeded();
- return ptr;
- }
- std::shared_ptr<std::vector<unsigned char> > ptr(new std::vector<unsigned char>(m_data.begin(), m_data.begin() + size));
- m_data.erase(m_data.begin(), m_data.begin() + size);
- m_sent += size;
- if (m_sent == m_size)
- m_finished = true;
- if (m_data.size() < 500000 && !neededData) {
- neededData = true;
- onDataNeeded();
- }
- return ptr;
-}
-
-bool MemoryReadBytestream::isFinished() const {
-// std::cout << "finished? " << m_finished << "\n";
- return m_finished;
-}
-
-}
diff --git a/libtransport/MySQLBackend.cpp b/libtransport/MySQLBackend.cpp
index d848954e..97d781d6 100644
--- a/libtransport/MySQLBackend.cpp
+++ b/libtransport/MySQLBackend.cpp
@@ -62,7 +62,7 @@ MySQLBackend::Statement::Statement(MYSQL *conn, const std::string &format, const
m_params.resize(m_params.size() + 1);
memset(&m_params.back(), 0, sizeof(MYSQL_BIND));
- m_params.back().buffer_type= MYSQL_TYPE_STRING;
+ m_params.back().buffer_type= MYSQL_TYPE_VAR_STRING;
m_params.back().buffer= (char *) malloc(sizeof(char) * 4096);
m_params.back().buffer_length= 4096;
m_params.back().is_null= 0;
@@ -98,7 +98,7 @@ MySQLBackend::Statement::Statement(MYSQL *conn, const std::string &format, const
m_results.resize(m_results.size() + 1);
memset(&m_results.back(), 0, sizeof(MYSQL_BIND));
- m_results.back().buffer_type= MYSQL_TYPE_STRING;
+ m_results.back().buffer_type= MYSQL_TYPE_VAR_STRING;
m_results.back().buffer= (char *) malloc(sizeof(char) * 4096);
m_results.back().buffer_length= 4096;
m_results.back().is_null= 0;
@@ -256,6 +256,7 @@ void MySQLBackend::disconnect() {
delete m_setUserOnline;
delete m_getOnlineUsers;
delete m_getUsers;
+ delete m_getLegacyNetworkUsers;
}
bool MySQLBackend::connect() {
@@ -287,14 +288,14 @@ bool MySQLBackend::connect() {
m_removeUserSettings = new Statement(&m_conn, "i", "DELETE FROM " + m_prefix + "users_settings WHERE user_id=?");
m_removeUserBuddiesSettings = new Statement(&m_conn, "i", "DELETE FROM " + m_prefix + "buddies_settings WHERE user_id=?");
- m_addBuddy = new Statement(&m_conn, "issssi", "INSERT INTO " + m_prefix + "buddies (user_id, uin, subscription, groups, nickname, flags) VALUES (?, ?, ?, ?, ?, ?)");
+ m_addBuddy = new Statement(&m_conn, "issssi", "INSERT INTO " + m_prefix + "buddies (user_id, uin, subscription, `groups`, nickname, flags) VALUES (?, ?, ?, ?, ?, ?)");
m_removeBuddy = new Statement(&m_conn, "i", "DELETE FROM " + m_prefix + "buddies WHERE id=?");
m_removeBuddySettings = new Statement(&m_conn, "i", "DELETE FROM " + m_prefix + "buddies_settings WHERE buddy_id=?");
- m_updateBuddy = new Statement(&m_conn, "ssisis", "UPDATE " + m_prefix + "buddies SET groups=?, nickname=?, flags=?, subscription=? WHERE user_id=? AND uin=?");
- m_getBuddies = new Statement(&m_conn, "i|issssi", "SELECT id, uin, subscription, nickname, groups, flags FROM " + m_prefix + "buddies WHERE user_id=? ORDER BY id ASC");
+ m_updateBuddy = new Statement(&m_conn, "ssisis", "UPDATE " + m_prefix + "buddies SET `groups`=?, nickname=?, flags=?, subscription=? WHERE user_id=? AND uin=?");
+ m_getBuddies = new Statement(&m_conn, "i|issssi", "SELECT id, uin, subscription, nickname, `groups`, flags FROM " + m_prefix + "buddies WHERE user_id=? ORDER BY id ASC");
m_getBuddiesSettings = new Statement(&m_conn, "i|iiss", "SELECT buddy_id, type, var, value FROM " + m_prefix + "buddies_settings WHERE user_id=? ORDER BY buddy_id ASC");
m_updateBuddySetting = new Statement(&m_conn, "iisiss", "INSERT INTO " + m_prefix + "buddies_settings (user_id, buddy_id, var, type, value) VALUES (?, ?, ?, ?, ?) ON DUPLICATE KEY UPDATE value=?");
- m_getBuddySetting = new Statement(&m_conn, "is|is", "SELECT type, value FROM " + m_prefix + "buddies_settings WHERE user_id=? AND buddy_id=? AND var=?");
+ m_getBuddySetting = new Statement(&m_conn, "iss|is", "SELECT type, value FROM " + m_prefix + "buddies_settings WHERE user_id=? AND buddy_id=? AND var=?");
m_getUserSetting = new Statement(&m_conn, "is|is", "SELECT type, value FROM " + m_prefix + "users_settings WHERE user_id=? AND var=?");
m_setUserSetting = new Statement(&m_conn, "isis", "INSERT INTO " + m_prefix + "users_settings (user_id, var, type, value) VALUES (?,?,?,?)");
@@ -303,7 +304,7 @@ bool MySQLBackend::connect() {
m_setUserOnline = new Statement(&m_conn, "bi", "UPDATE " + m_prefix + "users SET online=?, last_login=NOW() WHERE id=?");
m_getOnlineUsers = new Statement(&m_conn, "|s", "SELECT jid FROM " + m_prefix + "users WHERE online=1");
m_getUsers = new Statement(&m_conn, "|s", "SELECT jid FROM " + m_prefix + "users");
-
+ m_getLegacyNetworkUsers = new Statement(&m_conn, "|s", "SELECT uin FROM " + m_prefix + "users");
return true;
}
@@ -451,6 +452,20 @@ bool MySQLBackend::getUsers(std::vector<std::string> &users) {
return true;
}
+bool MySQLBackend::getLegacyNetworkUsers(std::vector<std::string> &users) {
+ EXEC(m_getLegacyNetworkUsers, getLegacyNetworkUsers(users));
+ if (!exec_ok)
+ return false;
+
+ std::string jid;
+ while (m_getLegacyNetworkUsers->fetch() == 0) {
+ *m_getLegacyNetworkUsers >> jid;
+ users.push_back(jid);
+ }
+
+ return true;
+}
+
long MySQLBackend::addBuddy(long userId, const BuddyInfo &buddyInfo) {
// "INSERT INTO " + m_prefix + "buddies (user_id, uin, subscription, groups, nickname, flags) VALUES (?, ?, ?, ?, ?, ?)"
std::string groups = StorageBackend::serializeGroups(buddyInfo.groups);
diff --git a/libtransport/NetworkPluginServer.cpp b/libtransport/NetworkPluginServer.cpp
index c50a8829..e19416bf 100644
--- a/libtransport/NetworkPluginServer.cpp
+++ b/libtransport/NetworkPluginServer.cpp
@@ -19,6 +19,7 @@
*/
#include "transport/NetworkPluginServer.h"
+#include "transport/PresenceOracle.h"
#include "transport/User.h"
#include "transport/Transport.h"
#include "transport/RosterManager.h"
@@ -27,7 +28,6 @@
#include "transport/LocalBuddy.h"
#include "transport/Config.h"
#include "transport/Conversation.h"
-#include "transport/MemoryReadBytestream.h"
#include "transport/Logging.h"
#include "transport/AdminInterface.h"
#include "transport/Frontend.h"
@@ -54,9 +54,6 @@
#include "transport/utf8.h"
-#include <Swiften/FileTransfer/ReadBytestream.h>
-#include <Swiften/Elements/StreamInitiationFileInfo.h>
-
#ifdef _WIN32
#include "windows.h"
#include <stdint.h>
@@ -259,9 +256,8 @@ static void handleBuddyPayload(LocalBuddy *buddy, const pbnetwork::Buddy &payloa
buddy->setBlocked(payload.blocked());
}
-NetworkPluginServer::NetworkPluginServer(Component *component, Config *config, UserManager *userManager, FileTransferManager *ftManager) {
+NetworkPluginServer::NetworkPluginServer(Component *component, Config *config, UserManager *userManager) {
_server = this;
- m_ftManager = ftManager;
m_userManager = userManager;
m_config = config;
m_component = component;
@@ -721,6 +717,10 @@ void NetworkPluginServer::handleConvMessagePayload(const std::string &data, bool
msg->addPayload(std::make_shared<Swift::XHTMLIMPayload>(payload.xhtml()));
}
+ for (const pbnetwork::Attachment &att : payload.attachment()) {
+ addOobPayload(msg, att.url());
+ }
+
// Split the message if configured, or just preprocess
LOG4CXX_TRACE(logger, "handleConvMessagePayload: wrapping media");
typedef std::vector<std::shared_ptr<Swift::Message> > MsgList;
@@ -817,109 +817,6 @@ void NetworkPluginServer::handleStatsPayload(Backend *c, const std::string &data
c->id = payload.id();
}
-void NetworkPluginServer::handleFTStartPayload(const std::string &data) {
- pbnetwork::File payload;
- if (payload.ParseFromString(data) == false) {
- // TODO: ERROR
- return;
- }
-
- User *user = m_userManager->getUser(payload.username());
- if (!user)
- return;
-
- LOG4CXX_INFO(logger, "handleFTStartPayload " << payload.filename() << " " << payload.buddyname());
-
- LocalBuddy *buddy = (LocalBuddy *) user->getRosterManager()->getBuddy(payload.buddyname());
- if (!buddy) {
- // TODO: escape? reject?
- return;
- }
-
- Swift::StreamInitiationFileInfo fileInfo;
- fileInfo.setSize(payload.size());
- fileInfo.setName(payload.filename());
-
- Backend *c = (Backend *) user->getData();
- std::shared_ptr<MemoryReadBytestream> bytestream(new MemoryReadBytestream(payload.size()));
- bytestream->onDataNeeded.connect(boost::bind(&NetworkPluginServer::handleFTDataNeeded, this, c, bytestream_id + 1));
-
- LOG4CXX_INFO(logger, "jid=" << buddy->getJID());
-
- FileTransferManager::Transfer transfer = m_ftManager->sendFile(user, buddy, bytestream, fileInfo);
- if (!transfer.ft) {
- handleFTRejected(user, payload.buddyname(), payload.filename(), payload.size());
- return;
- }
-
- m_filetransfers[++bytestream_id] = transfer;
-}
-
-void NetworkPluginServer::handleFTFinishPayload(const std::string &data) {
- pbnetwork::File payload;
- if (payload.ParseFromString(data) == false) {
- // TODO: ERROR
- return;
- }
-
- if (payload.has_ftid()) {
- if (m_filetransfers.find(payload.ftid()) != m_filetransfers.end()) {
- FileTransferManager::Transfer &transfer = m_filetransfers[payload.ftid()];
- transfer.ft->cancel();
- }
- else {
- LOG4CXX_ERROR(logger, "FTFinishPayload for unknown ftid=" << payload.ftid());
- }
- }
-
-}
-
-void NetworkPluginServer::handleFTDataPayload(Backend *b, const std::string &data) {
- pbnetwork::FileTransferData payload;
- if (payload.ParseFromString(data) == false) {
- // TODO: ERROR
- return;
- }
-
-// User *user = m_userManager->getUser(payload.username());
-// if (!user)
-// return;
-
- if (m_filetransfers.find(payload.ftid()) == m_filetransfers.end()) {
- LOG4CXX_ERROR(logger, "Uknown filetransfer with id " << payload.ftid());
- return;
- }
-
- FileTransferManager::Transfer &transfer = m_filetransfers[payload.ftid()];
- MemoryReadBytestream *bytestream = (MemoryReadBytestream *) transfer.readByteStream.get();
-
- if (bytestream->appendData(payload.data()) > 5000000) {
- pbnetwork::FileTransferData f;
- f.set_ftid(payload.ftid());
- f.set_data("");
-
- std::string message;
- f.SerializeToString(&message);
-
- WRAP(message, pbnetwork::WrapperMessage_Type_TYPE_FT_PAUSE);
-
- send(b->connection, message);
- }
-}
-
-void NetworkPluginServer::handleFTDataNeeded(Backend *b, unsigned long ftid) {
- pbnetwork::FileTransferData f;
- f.set_ftid(ftid);
- f.set_data("");
-
- std::string message;
- f.SerializeToString(&message);
-
- WRAP(message, pbnetwork::WrapperMessage_Type_TYPE_FT_CONTINUE);
-
- send(b->connection, message);
-}
-
void NetworkPluginServer::connectWaitingUsers() {
// some users are in queue waiting for this backend
while (!m_waitingUsers.empty()) {
@@ -1265,15 +1162,6 @@ void NetworkPluginServer::handleDataRead(Backend *c, std::shared_ptr<Swift::Safe
case pbnetwork::WrapperMessage_Type_TYPE_STATS:
handleStatsPayload(c, wrapper.payload());
break;
- case pbnetwork::WrapperMessage_Type_TYPE_FT_START:
- handleFTStartPayload(wrapper.payload());
- break;
- case pbnetwork::WrapperMessage_Type_TYPE_FT_FINISH:
- handleFTFinishPayload(wrapper.payload());
- break;
- case pbnetwork::WrapperMessage_Type_TYPE_FT_DATA:
- handleFTDataPayload(c, wrapper.payload());
- break;
case pbnetwork::WrapperMessage_Type_TYPE_BUDDY_REMOVED:
handleBuddyRemovedPayload(wrapper.payload());
break;
@@ -1843,6 +1731,15 @@ enum OobMode {
OobSplit = 3, //3. Split into multiple text-only/media-only messages.
};
+void NetworkPluginServer::addOobPayload(Swift::Message::ref message, const std::string &url) {
+ //Add OOB tag
+ std::shared_ptr<Swift::RawXMLPayload>
+ oob_payload(new Swift::RawXMLPayload(
+ "<x xmlns='jabber:x:oob'><url>" + url + "</url>" + "</x>"));
+ // todo: add the payload itself as a caption
+ message->addPayload(oob_payload);
+}
+
std::vector<std::shared_ptr<Swift::Message> >
NetworkPluginServer::wrapIncomingMedia(std::shared_ptr<Swift::Message>& msg) {
std::vector<std::shared_ptr<Swift::Message> > result;
@@ -1923,16 +1820,7 @@ NetworkPluginServer::wrapIncomingMedia(std::shared_ptr<Swift::Message>& msg) {
this_msg = msg;
}
- //Add OOB tag
- std::shared_ptr<Swift::RawXMLPayload>
- oob_payload(new Swift::RawXMLPayload(
- "<x xmlns='jabber:x:oob'><url>"
- + image_url
- + "</url>"
- + "</x>"
- ));
- // todo: add the payload itself as a caption
- this_msg->addPayload(oob_payload);
+ addOobPayload(this_msg, image_url);
//In single-OOB mode there's no point to process further media
if (oobMode == OobExclusive)
@@ -2095,54 +1983,6 @@ void NetworkPluginServer::handleVCardRequired(User *user, const std::string &nam
send(c->connection, message);
}
-void NetworkPluginServer::handleFTAccepted(User *user, const std::string &buddyName, const std::string &fileName, unsigned long size, unsigned long ftID) {
- pbnetwork::File f;
- f.set_username(user->getJID().toBare());
- f.set_buddyname(buddyName);
- f.set_filename(fileName);
- f.set_size(size);
- f.set_ftid(ftID);
-
- std::string message;
- f.SerializeToString(&message);
-
- WRAP(message, pbnetwork::WrapperMessage_Type_TYPE_FT_START);
-
- Backend *c = (Backend *) user->getData();
- if (!c) {
- return;
- }
- send(c->connection, message);
-}
-
-void NetworkPluginServer::handleFTRejected(User *user, const std::string &buddyName, const std::string &fileName, unsigned long size) {
- pbnetwork::File f;
- f.set_username(user->getJID().toBare());
- f.set_buddyname(buddyName);
- f.set_filename(fileName);
- f.set_size(size);
- f.set_ftid(0);
-
- std::string message;
- f.SerializeToString(&message);
-
- WRAP(message, pbnetwork::WrapperMessage_Type_TYPE_FT_FINISH);
-
- Backend *c = (Backend *) user->getData();
- if (!c) {
- return;
- }
- send(c->connection, message);
-}
-
-void NetworkPluginServer::handleFTStateChanged(Swift::FileTransfer::State state, const std::string &userName, const std::string &buddyName, const std::string &fileName, unsigned long size, unsigned long id) {
- User *user = m_userManager->getUser(userName);
- if (!user) {
- // TODO: FIXME We have to remove filetransfer when use disconnects
- return;
- }
-}
-
void NetworkPluginServer::sendPing(Backend *c) {
std::string message;
diff --git a/libtransport/PQXXBackend.cpp b/libtransport/PQXXBackend.cpp
index b0dccb16..df148fac 100644
--- a/libtransport/PQXXBackend.cpp
+++ b/libtransport/PQXXBackend.cpp
@@ -261,6 +261,23 @@ bool PQXXBackend::getUsers(std::vector<std::string> &users) {
return true;
}
+bool PQXXBackend::getLegacyNetworkUsers(std::vector<std::string> &users) {
+ try {
+ pqxx::nontransaction txn(*m_conn);
+ pqxx::result r = txn.exec("SELECT uin FROM " + m_prefix + "users");
+
+ for (pqxx::result::const_iterator it = r.begin(); it != r.end(); it++) {
+ users.push_back((*it)[0].as<std::string>());
+ }
+ }
+ catch (std::exception& e) {
+ LOG4CXX_ERROR(pxxLogger, e.what());
+ return false;
+ }
+
+ return true;
+}
+
long PQXXBackend::addBuddy(long userId, const BuddyInfo &buddyInfo) {
try {
pqxx::nontransaction txn(*m_conn);
diff --git a/libtransport/SQLite3Backend.cpp b/libtransport/SQLite3Backend.cpp
index 6288b32a..678310af 100644
--- a/libtransport/SQLite3Backend.cpp
+++ b/libtransport/SQLite3Backend.cpp
@@ -102,6 +102,7 @@ SQLite3Backend::~SQLite3Backend(){
FINALIZE_STMT(m_setUserOnline);
FINALIZE_STMT(m_getOnlineUsers);
FINALIZE_STMT(m_getUsers);
+ FINALIZE_STMT(m_getLegacyNetworkUsers);
sqlite3_close(m_db);
}
}
@@ -143,7 +144,7 @@ bool SQLite3Backend::connect() {
PREP_STMT(m_setUserOnline, "UPDATE " + m_prefix + "users SET online=?, last_login=DATETIME('NOW') WHERE id=?");
PREP_STMT(m_getOnlineUsers, "SELECT jid FROM " + m_prefix + "users WHERE online=1");
PREP_STMT(m_getUsers, "SELECT jid FROM " + m_prefix + "users");
-
+ PREP_STMT(m_getLegacyNetworkUsers, "SELECT uin FROM " + m_prefix + "users");
return true;
}
@@ -301,6 +302,23 @@ bool SQLite3Backend::getUsers(std::vector<std::string> &users) {
return true;
}
+bool SQLite3Backend::getLegacyNetworkUsers(std::vector<std::string> &users) {
+ sqlite3_reset(m_getLegacyNetworkUsers);
+
+ int ret;
+ while ((ret = sqlite3_step(m_getLegacyNetworkUsers)) == SQLITE_ROW) {
+ std::string jid = (const char *) sqlite3_column_text(m_getLegacyNetworkUsers, 0);
+ users.push_back(jid);
+ }
+
+ if (ret != SQLITE_DONE) {
+ LOG4CXX_ERROR(sqlite3Logger, "getLegacyNetworkUsers query"<< (sqlite3_errmsg(m_db) == NULL ? "" : sqlite3_errmsg(m_db)));
+ return false;
+ }
+
+ return true;
+}
+
long SQLite3Backend::addBuddy(long userId, const BuddyInfo &buddyInfo) {
// "INSERT INTO " + m_prefix + "buddies (user_id, uin, subscription, groups, nickname, flags) VALUES (?, ?, ?, ?, ?, ?)"
std::string groups = StorageBackend::serializeGroups(buddyInfo.groups);
diff --git a/libtransport/Util.cpp b/libtransport/Util.cpp
index ec652fdc..92a79cce 100644
--- a/libtransport/Util.cpp
+++ b/libtransport/Util.cpp
@@ -166,31 +166,11 @@ std::string urlencode( const std::string &c )
#ifdef _WIN32
std::wstring utf8ToUtf16(const std::string& str)
{
- try
- {
- if (str.empty())
- return L"";
-
- // First request the size of the required UTF-16 buffer
- int numRequiredBytes = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), boost::numeric_cast<int>(str.size()), NULL, 0);
- if (!numRequiredBytes)
- return L"";
-
- // Allocate memory for the UTF-16 string
- std::vector<wchar_t> utf16Str(numRequiredBytes);
-
- int numConverted = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), boost::numeric_cast<int>(str.size()), &utf16Str[0], numRequiredBytes);
- if (!numConverted)
- return L"";
-
- std::wstring wstr(&utf16Str[0], numConverted);
- return wstr;
- }
- catch (...)
- {
- // I don't believe libtransport is exception-safe so we'll just return an empty string instead
- return L"";
- }
+ int numRequiredBytes = MultiByteToWideChar(CP_UTF8, 0, str.c_str(), -1, NULL, 0);
+ std::wstring result;
+ result.resize(numRequiredBytes);
+ MultiByteToWideChar(CP_UTF8, 0, str.c_str(), str.size(), result.data(), numRequiredBytes);
+ return result;
}
#endif // _WIN32
diff --git a/packaging/docker/run.sh b/packaging/docker/run.sh
index 3f7b62ea..3e1d4b63 100755
--- a/packaging/docker/run.sh
+++ b/packaging/docker/run.sh
@@ -1,4 +1,14 @@
-#!/bin/bash
+#!/bin/bash -e
+set -e
+
+web_dir=/var/lib/spectrum2/media
+
+if [ -d "$web_dir" ]; then
+ web_dir_owner="$(stat -c %u "$web_dir")"
+ if [[ "$(id -u www-data)" != "$web_dir_owner" ]]; then
+ usermod -u "$web_dir_owner" www-data
+ fi
+fi
echo "Trying to start Spectrum 2 instances."
echo "You should mount the directory with configuration files to /etc/spectrum2/transports/."
diff --git a/plugin/cpp/networkplugin.cpp b/plugin/cpp/networkplugin.cpp
index 8e375f8f..74e1ff60 100644
--- a/plugin/cpp/networkplugin.cpp
+++ b/plugin/cpp/networkplugin.cpp
@@ -44,12 +44,6 @@ namespace Transport {
wrap.set_payload(MESSAGE); \
wrap.SerializeToString(&MESSAGE);
-template <class T> std::string stringOf(T object) {
- std::ostringstream os;
- os << object;
- return (os.str());
-}
-
NetworkPlugin::NetworkPlugin() {
m_pingReceived = false;
@@ -84,7 +78,7 @@ void NetworkPlugin::sendConfig(const PluginConfig &cfg) {
m.SerializeToString(&message);
WRAP(message, pbnetwork::WrapperMessage_Type_TYPE_BACKEND_CONFIG);
-
+ LOG4CXX_INFO(logger, "Sending data: " << message);
send(message);
}
@@ -94,7 +88,10 @@ void NetworkPlugin::sendRawXML(std::string &xml) {
send(xml);
}
-void NetworkPlugin::handleMessage(const std::string &user, const std::string &legacyName, const std::string &msg, const std::string &nickname, const std::string &xhtml, const std::string &timestamp, bool headline, bool pm, bool carbon) {
+void NetworkPlugin::handleMessage(const std::string &user, const std::string &legacyName, const std::string &msg,
+ const std::string &nickname, const std::string &xhtml, const std::string &timestamp,
+ bool headline, bool pm, bool carbon, const std::vector<pbnetwork::Attachment> &attachments)
+{
pbnetwork::ConversationMessage m;
m.set_username(user);
m.set_buddyname(legacyName);
@@ -106,6 +103,11 @@ void NetworkPlugin::handleMessage(const std::string &user, const std::string &le
m.set_pm(pm);
m.set_carbon(carbon);
+ for (const pbnetwork::Attachment &att : attachments) {
+ auto attach = m.add_attachment();
+ attach->CopyFrom(att);
+ }
+
std::string message;
m.SerializeToString(&message);
@@ -322,52 +324,6 @@ void NetworkPlugin::handleRoomNicknameChanged(const std::string &user, const std
send(message);
}
-void NetworkPlugin::handleFTStart(const std::string &user, const std::string &buddyName, const std::string fileName, unsigned long size) {
- pbnetwork::File room;
- room.set_username(user);
- room.set_buddyname(buddyName);
- room.set_filename(fileName);
- room.set_size(size);
-
- std::string message;
- room.SerializeToString(&message);
-
- WRAP(message, pbnetwork::WrapperMessage_Type_TYPE_FT_START);
-
- send(message);
-}
-
-void NetworkPlugin::handleFTFinish(const std::string &user, const std::string &buddyName, const std::string fileName, unsigned long size, unsigned long ftid) {
- pbnetwork::File room;
- room.set_username(user);
- room.set_buddyname(buddyName);
- room.set_filename(fileName);
- room.set_size(size);
- if (ftid) {
- room.set_ftid(ftid);
- }
-
- std::string message;
- room.SerializeToString(&message);
-
- WRAP(message, pbnetwork::WrapperMessage_Type_TYPE_FT_FINISH);
-
- send(message);
-}
-
-void NetworkPlugin::handleFTData(unsigned long ftID, const std::string &data) {
- pbnetwork::FileTransferData d;
- d.set_ftid(ftID);
- d.set_data(data);
-
- std::string message;
- d.SerializeToString(&message);
-
- WRAP(message, pbnetwork::WrapperMessage_Type_TYPE_FT_DATA);
-
- send(message);
-}
-
void NetworkPlugin::handleRoomList(const std::string &user, const std::list<std::string> &rooms, const std::list<std::string> &names) {
pbnetwork::RoomList d;
for (std::list<std::string>::const_iterator it = rooms.begin(); it != rooms.end(); it++) {
@@ -446,46 +402,6 @@ void NetworkPlugin::handleAttentionPayload(const std::string &data) {
handleAttentionRequest(payload.username(), payload.buddyname(), payload.message());
}
-void NetworkPlugin::handleFTStartPayload(const std::string &data) {
- pbnetwork::File payload;
- if (payload.ParseFromString(data) == false) {
- // TODO: ERROR
- return;
- }
-
- handleFTStartRequest(payload.username(), payload.buddyname(), payload.filename(), payload.size(), payload.ftid());
-}
-
-void NetworkPlugin::handleFTFinishPayload(const std::string &data) {
- pbnetwork::File payload;
- if (payload.ParseFromString(data) == false) {
- // TODO: ERROR
- return;
- }
-
- handleFTFinishRequest(payload.username(), payload.buddyname(), payload.filename(), payload.size(), payload.ftid());
-}
-
-void NetworkPlugin::handleFTPausePayload(const std::string &data) {
- pbnetwork::FileTransferData payload;
- if (payload.ParseFromString(data) == false) {
- // TODO: ERROR
- return;
- }
-
- handleFTPauseRequest(payload.ftid());
-}
-
-void NetworkPlugin::handleFTContinuePayload(const std::string &data) {
- pbnetwork::FileTransferData payload;
- if (payload.ParseFromString(data) == false) {
- // TODO: ERROR
- return;
- }
-
- handleFTContinueRequest(payload.ftid());
-}
-
void NetworkPlugin::handleJoinRoomPayload(const std::string &data) {
pbnetwork::Room payload;
if (payload.ParseFromString(data) == false) {
@@ -645,18 +561,6 @@ void NetworkPlugin::handleDataRead(std::string &data) {
case pbnetwork::WrapperMessage_Type_TYPE_ATTENTION:
handleAttentionPayload(wrapper.payload());
break;
- case pbnetwork::WrapperMessage_Type_TYPE_FT_START:
- handleFTStartPayload(wrapper.payload());
- break;
- case pbnetwork::WrapperMessage_Type_TYPE_FT_FINISH:
- handleFTFinishPayload(wrapper.payload());
- break;
- case pbnetwork::WrapperMessage_Type_TYPE_FT_PAUSE:
- handleFTPausePayload(wrapper.payload());
- break;
- case pbnetwork::WrapperMessage_Type_TYPE_FT_CONTINUE:
- handleFTContinuePayload(wrapper.payload());
- break;
case pbnetwork::WrapperMessage_Type_TYPE_EXIT:
handleExitRequest();
break;
@@ -710,7 +614,7 @@ void NetworkPlugin::sendMemoryUsage() {
stats.set_res(res + e_res);
stats.set_shared(shared + e_shared);
- stats.set_id(stringOf(getpid()));
+ stats.set_id(std::to_string(getpid()));
std::string message;
stats.SerializeToString(&message);
diff --git a/plugin/python/CMakeLists.txt b/plugin/python/CMakeLists.txt
index 60be2eec..294207e6 100644
--- a/plugin/python/CMakeLists.txt
+++ b/plugin/python/CMakeLists.txt
@@ -1,5 +1,3 @@
-cmake_minimum_required(VERSION 2.6)
-
if(PROTOBUF_FOUND)
add_custom_command(
OUTPUT ${CMAKE_CURRENT_SOURCE_DIR}/protocol_pb2.py
diff --git a/plugin/python/NetworkPlugin.py b/plugin/python/NetworkPlugin.py
index 85daef8f..cd13fcdb 100644
--- a/plugin/python/NetworkPlugin.py
+++ b/plugin/python/NetworkPlugin.py
@@ -183,40 +183,6 @@ class NetworkPlugin:
message = WRAP(roomList.SerializeToString(), protocol_pb2.WrapperMessage.TYPE_ROOM_LIST)
self.send(message);
-
- def handleFTStart(self, user, buddyName, fileName, size):
- room = protocol_pb2.File()
- room.userName = user
- room.buddyName = buddyName
- room.fileName = fileName
- room.size = size
-
- message = WRAP(room.SerializeToString(), protocol_pb2.WrapperMessage.TYPE_FT_START)
- self.send(message);
-
- def handleFTFinish(self, user, buddyName, fileName, size, ftid):
- room = protocol_pb2.File()
- room.userName = user
- room.buddyName = buddyName
- room.fileName = fileName
- room.size = size
-
- # Check later
- if ftid != 0:
- room.ftID = ftid
-
- message = WRAP(room.SerializeToString(), protocol_pb2.WrapperMessage.TYPE_FT_FINISH)
- self.send(message)
-
-
- def handleFTData(self, ftID, data):
- d = protocol_pb2.FileTransferData()
- d.ftid = ftID
- d.data = data
-
- message = WRAP(d.SerializeToString(), protocol_pb2.WrapperMessage.TYPE_FT_DATA);
- self.send(message)
-
def handleBackendConfig(self, section, key, value):
c = protocol_pb2.BackendConfig()
c.config = "[%s]\n%s = %s\n" % (section, key, value)
@@ -267,34 +233,6 @@ class NetworkPlugin:
#TODO: ERROR
return
self.handleAttentionRequest(payload.userName, payload.buddyName, payload.message)
-
- def handleFTStartPayload(self, data):
- payload = protocol_pb2.File()
- if (payload.ParseFromString(data) == False):
- #TODO: ERROR
- return
- self.handleFTStartRequest(payload.userName, payload.buddyName, payload.fileName, payload.size, payload.ftID);
-
- def handleFTFinishPayload(self, data):
- payload = protocol_pb2.File()
- if (payload.ParseFromString(data) == False):
- #TODO: ERROR
- return
- self.handleFTFinishRequest(payload.userName, payload.buddyName, payload.fileName, payload.size, payload.ftID)
-
- def handleFTPausePayload(self, data):
- payload = protocol_pb2.FileTransferData()
- if (payload.ParseFromString(data) == False):
- #TODO: ERROR
- return
- self.handleFTPauseRequest(payload.ftID)
-
- def handleFTContinuePayload(self, data):
- payload = protocol_pb2.FileTransferData()
- if (payload.ParseFromString(data) == False):
- #TODO: ERROR
- return
- self.handleFTContinueRequest(payload.ftID)
def handleJoinRoomPayload(self, data):
payload = protocol_pb2.Room()
@@ -406,14 +344,6 @@ class NetworkPlugin:
self.handleChatStatePayload(wrapper.payload, protocol_pb2.WrapperMessage.TYPE_BUDDY_STOPPED_TYPING)
elif wrapper.type == protocol_pb2.WrapperMessage.TYPE_ATTENTION:
self.handleAttentionPayload(wrapper.payload)
- elif wrapper.type == protocol_pb2.WrapperMessage.TYPE_FT_START:
- self.handleFTStartPayload(wrapper.payload)
- elif wrapper.type == protocol_pb2.WrapperMessage.TYPE_FT_FINISH:
- self.handleFTFinishPayload(wrapper.payload)
- elif wrapper.type == protocol_pb2.WrapperMessage.TYPE_FT_PAUSE:
- self.handleFTPausePayload(wrapper.payload)
- elif wrapper.type == protocol_pb2.WrapperMessage.TYPE_FT_CONTINUE:
- self.handleFTContinuePayload(wrapper.payload)
elif wrapper.type == protocol_pb2.WrapperMessage.TYPE_EXIT:
self.handleExitRequest()
elif wrapper.type == protocol_pb2.WrapperMessage.TYPE_CONV_MESSAGE_ACK:
@@ -575,18 +505,6 @@ class NetworkPlugin:
def handleAttentionRequest(self, user, buddyName, message):
pass
-
- def handleFTStartRequest(self, user, buddyName, fileName, size, ftID):
- pass
-
- def handleFTFinishRequest(self, user, buddyName, fileName, size, ftID):
- pass
-
- def handleFTPauseRequest(self, ftID):
- pass
-
- def handleFTContinueRequest(self, ftID):
- pass
def handleMemoryUsage(self):
diff --git a/spectrum/src/frontends/slack/CMakeLists.txt b/spectrum/src/frontends/slack/CMakeLists.txt
index 676faec7..fb184063 100644
--- a/spectrum/src/frontends/slack/CMakeLists.txt
+++ b/spectrum/src/frontends/slack/CMakeLists.txt
@@ -1,5 +1,3 @@
-cmake_minimum_required(VERSION 2.6)
-
file(GLOB SRC *.cpp *.h)
file(GLOB HEADERS ${CMAKE_SOURCE_DIR}/include/transport/*.h)
diff --git a/spectrum/src/frontends/xmpp/CMakeLists.txt b/spectrum/src/frontends/xmpp/CMakeLists.txt
index 36bf8101..b48ee23d 100644
--- a/spectrum/src/frontends/xmpp/CMakeLists.txt
+++ b/spectrum/src/frontends/xmpp/CMakeLists.txt
@@ -1,5 +1,3 @@
-cmake_minimum_required(VERSION 2.6)
-
file(GLOB SRC *.cpp *.h)
file(GLOB HEADERS ${CMAKE_SOURCE_DIR}/include/transport/*.h)
diff --git a/spectrum/src/frontends/xmpp/XMPPUser.h b/spectrum/src/frontends/xmpp/XMPPUser.h
index 1e83f1ff..c7a2f3c1 100644
--- a/spectrum/src/frontends/xmpp/XMPPUser.h
+++ b/spectrum/src/frontends/xmpp/XMPPUser.h
@@ -25,7 +25,6 @@
#include <time.h>
#include "Swiften/Disco/EntityCapsManager.h"
#include "Swiften/Disco/EntityCapsProvider.h"
-#include <Swiften/FileTransfer/OutgoingFileTransfer.h>
#include "Swiften/Elements/SpectrumErrorPayload.h"
#include "Swiften/Network/Timer.h"
#include "Swiften/Network/Connection.h"
diff --git a/spectrum/src/frontends/xmpp/XMPPUserRegistration.cpp b/spectrum/src/frontends/xmpp/XMPPUserRegistration.cpp
index e0510347..ac942e91 100644
--- a/spectrum/src/frontends/xmpp/XMPPUserRegistration.cpp
+++ b/spectrum/src/frontends/xmpp/XMPPUserRegistration.cpp
@@ -378,7 +378,9 @@ bool XMPPUserRegistration::handleSetRequest(const Swift::JID& from, const Swift:
}
}
- if (!payload->getUsername() || (!payload->getPassword() && CONFIG_BOOL_DEFAULTED(m_config, "registration.needPassword", true))) {
+ bool needPassword = CONFIG_BOOL_DEFAULTED(m_config, "registration.needPassword", true);
+
+ if (!payload->getUsername() || (!payload->getPassword() && needPassword)) {
sendError(from, id, ErrorPayload::NotAcceptable, ErrorPayload::Modify);
return true;
}
@@ -393,18 +395,20 @@ bool XMPPUserRegistration::handleSetRequest(const Swift::JID& from, const Swift:
return true;
}
- // TODO: Move this check to backend somehow
- if (CONFIG_STRING(m_config, "service.protocol") == "prpl-jabber") {
- // User tries to register himself.
+ // User tries to register himself (XMPP backends)
+ if (JID::parse(*payload->getUsername())) {
if ((Swift::JID(*payload->getUsername()).toBare() == from.toBare())) {
sendError(from, id, ErrorPayload::NotAcceptable, ErrorPayload::Modify);
return true;
}
+ }
- // User tries to register someone who's already registered.
- UserInfo user_row;
- bool registered = m_storageBackend->getUser(Swift::JID(*payload->getUsername()).toBare().toString(), user_row);
- if (registered) {
+ // User tries to register someone who's already registered (password-less backends)
+ if (!needPassword) {
+ std::vector<std::string> legacyNetworkUsers;
+ m_storageBackend->getLegacyNetworkUsers(legacyNetworkUsers);
+ bool legacyUserExists = std::find(legacyNetworkUsers.begin(), legacyNetworkUsers.end(), *payload->getUsername()) != legacyNetworkUsers.end();
+ if (legacyUserExists) {
sendError(from, id, ErrorPayload::NotAcceptable, ErrorPayload::Modify);
return true;
}
diff --git a/spectrum/src/frontends/xmpp/discoinforesponder.cpp b/spectrum/src/frontends/xmpp/discoinforesponder.cpp
index 83752a45..aaa2fcde 100644
--- a/spectrum/src/frontends/xmpp/discoinforesponder.cpp
+++ b/spectrum/src/frontends/xmpp/discoinforesponder.cpp
@@ -148,6 +148,7 @@ bool DiscoInfoResponder::handleGetRequest(const Swift::JID& from, const Swift::J
if (m_commands.find(info->getNode()) != m_commands.end()) {
std::shared_ptr<DiscoInfo> res(new DiscoInfo());
res->addFeature("http://jabber.org/protocol/commands");
+ res->addFeature("http://jabber.org/protocol/disco#items");
res->addFeature("jabber:x:data");
res->addIdentity(DiscoInfo::Identity(m_commands[info->getNode()], "automation", "command-node"));
res->setNode(info->getNode());
diff --git a/spectrum/src/main.cpp b/spectrum/src/main.cpp
index 2702a923..ba2e98c2 100644
--- a/spectrum/src/main.cpp
+++ b/spectrum/src/main.cpp
@@ -1,6 +1,5 @@
#include "transport/Config.h"
#include "transport/Transport.h"
-#include "transport/FileTransferManager.h"
#include "transport/UserManager.h"
#include "transport/SQLite3Backend.h"
#include "transport/MySQLBackend.h"
@@ -272,9 +271,7 @@ int mainloop() {
LOG4CXX_WARN(logger, "Registrations won't work, you have specified [database] type=none in config file.");
}
- FileTransferManager ftManager(&transport, userManager);
-
- NetworkPluginServer plugin(&transport, config_, userManager, &ftManager);
+ NetworkPluginServer plugin(&transport, config_, userManager);
plugin.start();
AdminInterface adminInterface(&transport, userManager, &plugin, storageBackend, userRegistration);
diff --git a/spectrum_manager/src/CMakeLists.txt b/spectrum_manager/src/CMakeLists.txt
index 7a720a00..9fd258c2 100644
--- a/spectrum_manager/src/CMakeLists.txt
+++ b/spectrum_manager/src/CMakeLists.txt
@@ -1,5 +1,3 @@
-cmake_minimum_required(VERSION 2.6)
-
file(GLOB SRC *.cpp *.c)
add_executable(spectrum2_manager ${SRC})
diff --git a/spectrum_manager/src/html/header.shtml b/spectrum_manager/src/html/header.shtml
index 38a54985..3d6a8525 100644
--- a/spectrum_manager/src/html/header.shtml
+++ b/spectrum_manager/src/html/header.shtml
@@ -5,16 +5,17 @@
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<meta name="description" content="Spectrum 2 : Spectrum 2 IM transports">
- <link rel="stylesheet" type="text/css" href="/bootstrap.min.css">
+ <link rel="stylesheet" type="text/css" href="https://netdna.bootstrapcdn.com/bootstrap/3.3.2/css/bootstrap.min.css">
<link href="/style.css" rel="stylesheet" type="text/css" media="all">
<link href="/form.css" rel="stylesheet" type="text/css" media="all">
<link href="https://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.css" rel="stylesheet" type="text/css" media="all">
- <script src="/js/jquery.js"></script>
- <script src="/js/jquery-ui.js"></script>
- <script src="/js/jquery.cookie.js"></script>
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/1.12.1/jquery.min.js"></script>
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.10.0/jquery-ui.min.js"></script>
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-cookie/1.4.1/jquery.cookie.min.js"></script>
<script src="/js/config.js"></script>
- <script src="/js/bootstrap.min.js"></script>
- <script src="/js/bootbox.min.js"></script>
+ <script src="https://netdna.bootstrapcdn.com/bootstrap/3.3.2/js/bootstrap.min.js"></script>
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/bootbox.js/4.4.0/bootbox.min.js"></script>
+ <script src="https://unpkg.com/@ungap/url-search-params"></script>
<script src="/js/app.js"></script>
<title>Spectrum 2</title>
</head>
diff --git a/spectrum_manager/src/html/js/app.js b/spectrum_manager/src/html/js/app.js
index 5aada543..e884f301 100644
--- a/spectrum_manager/src/html/js/app.js
+++ b/spectrum_manager/src/html/js/app.js
@@ -1,15 +1,8 @@
-function getQueryParams(qs) {
- qs = qs.split('+').join(' ');
-
- var params = {},
- tokens,
- re = /[?&]?([^=]+)=([^&]*)/g;
-
- while (tokens = re.exec(qs)) {
- params[decodeURIComponent(tokens[1])] = decodeURIComponent(tokens[2]);
- }
-
- return params;
+function htmlEncode(s) {
+ var el = document.createElement("div");
+ el.innerText = el.textContent = s;
+ s = el.innerHTML;
+ return s;
}
function show_instances() {
@@ -113,8 +106,8 @@ function fill_users_register_form() {
$('#error').text(data.message);
}
else {
- var query = getQueryParams(document.location.search);
- if (query.back_to_list == "1") {
+ var query = new URL(document.location.href).searchParams;
+ if (query.get("back_to_list") == "1") {
window.location.replace("list.shtml");
}
else {
@@ -263,14 +256,14 @@ function execute_command(instance, command) {
}
function show_instance() {
- var query = getQueryParams(document.location.search);
+ var query = new URL(document.location.href).searchParams;
- $("#main_content").html("<h2>Instance: " + query.id + "</h2><h4>Available commands:</h4><table id='commands'><tr><th>Name<th>Category</th><th>Description</th></tr></table><h4>Available variables:</h4><table id='variables'><tr><th>Name<th>Value</th><th>Read-only</th><th>Desc</th></tr></table>");
+ $("#main_content").html("<h2>Instance: " + htmlEncode(query.get("id")) + "</h2><h4>Available commands:</h4><table id='commands'><tr><th>Name<th>Category</th><th>Description</th></tr></table><h4>Available variables:</h4><table id='variables'><tr><th>Name<th>Value</th><th>Read-only</th><th>Desc</th></tr></table>");
- $.get($.cookie("base_location") + "api/v1/instances/commands/" + query.id, function(data) {
+ $.get($.cookie("base_location") + "api/v1/instances/commands/" + htmlEncode(query.get("id")), function(data) {
$.each(data.commands, function(i, command) {
var row = '<tr>'
- row += '<td><a class="button_command" command="' + command.name + '" instance="' + query.id + '" href="' + $.cookie("base_location") + 'api/v1/instances/command_args/' + query.id + '?command=' + command.name +'">' + command.label + '</a></td>';
+ row += '<td><a class="button_command" command="' + command.name + '" instance="' + htmlEncode(query.get("id")) + '" href="' + $.cookie("base_location") + 'api/v1/instances/command_args/' + htmlEncode(query.get("id")) + '?command=' + command.name +'">' + command.label + '</a></td>';
row += '<td>' + command.category + '</td>';
row += '<td>' + command.desc + '</td>';
row += '</tr>';
diff --git a/spectrum_manager/src/html/js/bootbox.min.js b/spectrum_manager/src/html/js/bootbox.min.js
deleted file mode 100644
index 0dc0cbd5..00000000
--- a/spectrum_manager/src/html/js/bootbox.min.js
+++ /dev/null
@@ -1,6 +0,0 @@
-/**
- * bootbox.js v4.4.0
- *
- * http://bootboxjs.com/license.txt
- */
-!function(a,b){"use strict";"function"==typeof define&&define.amd?define(["jquery"],b):"object"==typeof exports?module.exports=b(require("jquery")):a.bootbox=b(a.jQuery)}(this,function a(b,c){"use strict";function d(a){var b=q[o.locale];return b?b[a]:q.en[a]}function e(a,c,d){a.stopPropagation(),a.preventDefault();var e=b.isFunction(d)&&d.call(c,a)===!1;e||c.modal("hide")}function f(a){var b,c=0;for(b in a)c++;return c}function g(a,c){var d=0;b.each(a,function(a,b){c(a,b,d++)})}function h(a){var c,d;if("object"!=typeof a)throw new Error("Please supply an object of options");if(!a.message)throw new Error("Please specify a message");return a=b.extend({},o,a),a.buttons||(a.buttons={}),c=a.buttons,d=f(c),g(c,function(a,e,f){if(b.isFunction(e)&&(e=c[a]={callback:e}),"object"!==b.type(e))throw new Error("button with key "+a+" must be an object");e.label||(e.label=a),e.className||(e.className=2>=d&&f===d-1?"btn-primary":"btn-default")}),a}function i(a,b){var c=a.length,d={};if(1>c||c>2)throw new Error("Invalid argument length");return 2===c||"string"==typeof a[0]?(d[b[0]]=a[0],d[b[1]]=a[1]):d=a[0],d}function j(a,c,d){return b.extend(!0,{},a,i(c,d))}function k(a,b,c,d){var e={className:"bootbox-"+a,buttons:l.apply(null,b)};return m(j(e,d,c),b)}function l(){for(var a={},b=0,c=arguments.length;c>b;b++){var e=arguments[b],f=e.toLowerCase(),g=e.toUpperCase();a[f]={label:d(g)}}return a}function m(a,b){var d={};return g(b,function(a,b){d[b]=!0}),g(a.buttons,function(a){if(d[a]===c)throw new Error("button key "+a+" is not allowed (options are "+b.join("\n")+")")}),a}var n={dialog:"<div class='bootbox modal' tabindex='-1' role='dialog'><div class='modal-dialog'><div class='modal-content'><div class='modal-body'><div class='bootbox-body'></div></div></div></div></div>",header:"<div class='modal-header'><h4 class='modal-title'></h4></div>",footer:"<div class='modal-footer'></div>",closeButton:"<button type='button' class='bootbox-close-button close' data-dismiss='modal' aria-hidden='true'>&times;</button>",form:"<form class='bootbox-form'></form>",inputs:{text:"<input class='bootbox-input bootbox-input-text form-control' autocomplete=off type=text />",textarea:"<textarea class='bootbox-input bootbox-input-textarea form-control'></textarea>",email:"<input class='bootbox-input bootbox-input-email form-control' autocomplete='off' type='email' />",select:"<select class='bootbox-input bootbox-input-select form-control'></select>",checkbox:"<div class='checkbox'><label><input class='bootbox-input bootbox-input-checkbox' type='checkbox' /></label></div>",date:"<input class='bootbox-input bootbox-input-date form-control' autocomplete=off type='date' />",time:"<input class='bootbox-input bootbox-input-time form-control' autocomplete=off type='time' />",number:"<input class='bootbox-input bootbox-input-number form-control' autocomplete=off type='number' />",password:"<input class='bootbox-input bootbox-input-password form-control' autocomplete='off' type='password' />"}},o={locale:"en",backdrop:"static",animate:!0,className:null,closeButton:!0,show:!0,container:"body"},p={};p.alert=function(){var a;if(a=k("alert",["ok"],["message","callback"],arguments),a.callback&&!b.isFunction(a.callback))throw new Error("alert requires callback property to be a function when provided");return a.buttons.ok.callback=a.onEscape=function(){return b.isFunction(a.callback)?a.callback.call(this):!0},p.dialog(a)},p.confirm=function(){var a;if(a=k("confirm",["cancel","confirm"],["message","callback"],arguments),a.buttons.cancel.callback=a.onEscape=function(){return a.callback.call(this,!1)},a.buttons.confirm.callback=function(){return a.callback.call(this,!0)},!b.isFunction(a.callback))throw new Error("confirm requires a callback");return p.dialog(a)},p.prompt=function(){var a,d,e,f,h,i,k;if(f=b(n.form),d={className:"bootbox-prompt",buttons:l("cancel","confirm"),value:"",inputType:"text"},a=m(j(d,arguments,["title","callback"]),["cancel","confirm"]),i=a.show===c?!0:a.show,a.message=f,a.buttons.cancel.callback=a.onEscape=function(){return a.callback.call(this,null)},a.buttons.confirm.callback=function(){var c;switch(a.inputType){case"text":case"textarea":case"email":case"select":case"date":case"time":case"number":case"password":c=h.val();break;case"checkbox":var d=h.find("input:checked");c=[],g(d,function(a,d){c.push(b(d).val())})}return a.callback.call(this,c)},a.show=!1,!a.title)throw new Error("prompt requires a title");if(!b.isFunction(a.callback))throw new Error("prompt requires a callback");if(!n.inputs[a.inputType])throw new Error("invalid prompt type");switch(h=b(n.inputs[a.inputType]),a.inputType){case"text":case"textarea":case"email":case"date":case"time":case"number":case"password":h.val(a.value);break;case"select":var o={};if(k=a.inputOptions||[],!b.isArray(k))throw new Error("Please pass an array of input options");if(!k.length)throw new Error("prompt with select requires options");g(k,function(a,d){var e=h;if(d.value===c||d.text===c)throw new Error("given options in wrong format");d.group&&(o[d.group]||(o[d.group]=b("<optgroup/>").attr("label",d.group)),e=o[d.group]),e.append("<option value='"+d.value+"'>"+d.text+"</option>")}),g(o,function(a,b){h.append(b)}),h.val(a.value);break;case"checkbox":var q=b.isArray(a.value)?a.value:[a.value];if(k=a.inputOptions||[],!k.length)throw new Error("prompt with checkbox requires options");if(!k[0].value||!k[0].text)throw new Error("given options in wrong format");h=b("<div/>"),g(k,function(c,d){var e=b(n.inputs[a.inputType]);e.find("input").attr("value",d.value),e.find("label").append(d.text),g(q,function(a,b){b===d.value&&e.find("input").prop("checked",!0)}),h.append(e)})}return a.placeholder&&h.attr("placeholder",a.placeholder),a.pattern&&h.attr("pattern",a.pattern),a.maxlength&&h.attr("maxlength",a.maxlength),f.append(h),f.on("submit",function(a){a.preventDefault(),a.stopPropagation(),e.find(".btn-primary").click()}),e=p.dialog(a),e.off("shown.bs.modal"),e.on("shown.bs.modal",function(){h.focus()}),i===!0&&e.modal("show"),e},p.dialog=function(a){a=h(a);var d=b(n.dialog),f=d.find(".modal-dialog"),i=d.find(".modal-body"),j=a.buttons,k="",l={onEscape:a.onEscape};if(b.fn.modal===c)throw new Error("$.fn.modal is not defined; please double check you have included the Bootstrap JavaScript library. See http://getbootstrap.com/javascript/ for more details.");if(g(j,function(a,b){k+="<button data-bb-handler='"+a+"' type='button' class='btn "+b.className+"'>"+b.label+"</button>",l[a]=b.callback}),i.find(".bootbox-body").html(a.message),a.animate===!0&&d.addClass("fade"),a.className&&d.addClass(a.className),"large"===a.size?f.addClass("modal-lg"):"small"===a.size&&f.addClass("modal-sm"),a.title&&i.before(n.header),a.closeButton){var m=b(n.closeButton);a.title?d.find(".modal-header").prepend(m):m.css("margin-top","-10px").prependTo(i)}return a.title&&d.find(".modal-title").html(a.title),k.length&&(i.after(n.footer),d.find(".modal-footer").html(k)),d.on("hidden.bs.modal",function(a){a.target===this&&d.remove()}),d.on("shown.bs.modal",function(){d.find(".btn-primary:first").focus()}),"static"!==a.backdrop&&d.on("click.dismiss.bs.modal",function(a){d.children(".modal-backdrop").length&&(a.currentTarget=d.children(".modal-backdrop").get(0)),a.target===a.currentTarget&&d.trigger("escape.close.bb")}),d.on("escape.close.bb",function(a){l.onEscape&&e(a,d,l.onEscape)}),d.on("click",".modal-footer button",function(a){var c=b(this).data("bb-handler");e(a,d,l[c])}),d.on("click",".bootbox-close-button",function(a){e(a,d,l.onEscape)}),d.on("keyup",function(a){27===a.which&&d.trigger("escape.close.bb")}),b(a.container).append(d),d.modal({backdrop:a.backdrop?"static":!1,keyboard:!1,show:!1}),a.show&&d.modal("show"),d},p.setDefaults=function(){var a={};2===arguments.length?a[arguments[0]]=arguments[1]:a=arguments[0],b.extend(o,a)},p.hideAll=function(){return b(".bootbox").modal("hide"),p};var q={bg_BG:{OK:"Ок",CANCEL:"Отказ",CONFIRM:"Потвърждавам"},br:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Sim"},cs:{OK:"OK",CANCEL:"Zrušit",CONFIRM:"Potvrdit"},da:{OK:"OK",CANCEL:"Annuller",CONFIRM:"Accepter"},de:{OK:"OK",CANCEL:"Abbrechen",CONFIRM:"Akzeptieren"},el:{OK:"Εντάξει",CANCEL:"Ακύρωση",CONFIRM:"Επιβεβαίωση"},en:{OK:"OK",CANCEL:"Cancel",CONFIRM:"OK"},es:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Aceptar"},et:{OK:"OK",CANCEL:"Katkesta",CONFIRM:"OK"},fa:{OK:"قبول",CANCEL:"لغو",CONFIRM:"تایید"},fi:{OK:"OK",CANCEL:"Peruuta",CONFIRM:"OK"},fr:{OK:"OK",CANCEL:"Annuler",CONFIRM:"D'accord"},he:{OK:"אישור",CANCEL:"ביטול",CONFIRM:"אישור"},hu:{OK:"OK",CANCEL:"Mégsem",CONFIRM:"Megerősít"},hr:{OK:"OK",CANCEL:"Odustani",CONFIRM:"Potvrdi"},id:{OK:"OK",CANCEL:"Batal",CONFIRM:"OK"},it:{OK:"OK",CANCEL:"Annulla",CONFIRM:"Conferma"},ja:{OK:"OK",CANCEL:"キャンセル",CONFIRM:"確認"},lt:{OK:"Gerai",CANCEL:"Atšaukti",CONFIRM:"Patvirtinti"},lv:{OK:"Labi",CANCEL:"Atcelt",CONFIRM:"Apstiprināt"},nl:{OK:"OK",CANCEL:"Annuleren",CONFIRM:"Accepteren"},no:{OK:"OK",CANCEL:"Avbryt",CONFIRM:"OK"},pl:{OK:"OK",CANCEL:"Anuluj",CONFIRM:"Potwierdź"},pt:{OK:"OK",CANCEL:"Cancelar",CONFIRM:"Confirmar"},ru:{OK:"OK",CANCEL:"Отмена",CONFIRM:"Применить"},sq:{OK:"OK",CANCEL:"Anulo",CONFIRM:"Prano"},sv:{OK:"OK",CANCEL:"Avbryt",CONFIRM:"OK"},th:{OK:"ตกลง",CANCEL:"ยกเลิก",CONFIRM:"ยืนยัน"},tr:{OK:"Tamam",CANCEL:"İptal",CONFIRM:"Onayla"},zh_CN:{OK:"OK",CANCEL:"取消",CONFIRM:"确认"},zh_TW:{OK:"OK",CANCEL:"取消",CONFIRM:"確認"}};return p.addLocale=function(a,c){return b.each(["OK","CANCEL","CONFIRM"],function(a,b){if(!c[b])throw new Error("Please supply a translation for '"+b+"'")}),q[a]={OK:c.OK,CANCEL:c.CANCEL,CONFIRM:c.CONFIRM},p},p.removeLocale=function(a){return delete q[a],p},p.setLocale=function(a){return p.setDefaults("locale",a)},p.init=function(c){return a(c||b)},p}); \ No newline at end of file
diff --git a/spectrum_manager/src/html/js/bootstrap.min.js b/spectrum_manager/src/html/js/bootstrap.min.js
deleted file mode 100644
index c6d36920..00000000
--- a/spectrum_manager/src/html/js/bootstrap.min.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/*!
- * Bootstrap v3.3.2 (http://getbootstrap.com)
- * Copyright 2011-2015 Twitter, Inc.
- * Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
- */
-if("undefined"==typeof jQuery)throw new Error("Bootstrap's JavaScript requires jQuery");+function(a){"use strict";var b=a.fn.jquery.split(" ")[0].split(".");if(b[0]<2&&b[1]<9||1==b[0]&&9==b[1]&&b[2]<1)throw new Error("Bootstrap's JavaScript requires jQuery version 1.9.1 or higher")}(jQuery),+function(a){"use strict";function b(){var a=document.createElement("bootstrap"),b={WebkitTransition:"webkitTransitionEnd",MozTransition:"transitionend",OTransition:"oTransitionEnd otransitionend",transition:"transitionend"};for(var c in b)if(void 0!==a.style[c])return{end:b[c]};return!1}a.fn.emulateTransitionEnd=function(b){var c=!1,d=this;a(this).one("bsTransitionEnd",function(){c=!0});var e=function(){c||a(d).trigger(a.support.transition.end)};return setTimeout(e,b),this},a(function(){a.support.transition=b(),a.support.transition&&(a.event.special.bsTransitionEnd={bindType:a.support.transition.end,delegateType:a.support.transition.end,handle:function(b){return a(b.target).is(this)?b.handleObj.handler.apply(this,arguments):void 0}})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var c=a(this),e=c.data("bs.alert");e||c.data("bs.alert",e=new d(this)),"string"==typeof b&&e[b].call(c)})}var c='[data-dismiss="alert"]',d=function(b){a(b).on("click",c,this.close)};d.VERSION="3.3.2",d.TRANSITION_DURATION=150,d.prototype.close=function(b){function c(){g.detach().trigger("closed.bs.alert").remove()}var e=a(this),f=e.attr("data-target");f||(f=e.attr("href"),f=f&&f.replace(/.*(?=#[^\s]*$)/,""));var g=a(f);b&&b.preventDefault(),g.length||(g=e.closest(".alert")),g.trigger(b=a.Event("close.bs.alert")),b.isDefaultPrevented()||(g.removeClass("in"),a.support.transition&&g.hasClass("fade")?g.one("bsTransitionEnd",c).emulateTransitionEnd(d.TRANSITION_DURATION):c())};var e=a.fn.alert;a.fn.alert=b,a.fn.alert.Constructor=d,a.fn.alert.noConflict=function(){return a.fn.alert=e,this},a(document).on("click.bs.alert.data-api",c,d.prototype.close)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.button"),f="object"==typeof b&&b;e||d.data("bs.button",e=new c(this,f)),"toggle"==b?e.toggle():b&&e.setState(b)})}var c=function(b,d){this.$element=a(b),this.options=a.extend({},c.DEFAULTS,d),this.isLoading=!1};c.VERSION="3.3.2",c.DEFAULTS={loadingText:"loading..."},c.prototype.setState=function(b){var c="disabled",d=this.$element,e=d.is("input")?"val":"html",f=d.data();b+="Text",null==f.resetText&&d.data("resetText",d[e]()),setTimeout(a.proxy(function(){d[e](null==f[b]?this.options[b]:f[b]),"loadingText"==b?(this.isLoading=!0,d.addClass(c).attr(c,c)):this.isLoading&&(this.isLoading=!1,d.removeClass(c).removeAttr(c))},this),0)},c.prototype.toggle=function(){var a=!0,b=this.$element.closest('[data-toggle="buttons"]');if(b.length){var c=this.$element.find("input");"radio"==c.prop("type")&&(c.prop("checked")&&this.$element.hasClass("active")?a=!1:b.find(".active").removeClass("active")),a&&c.prop("checked",!this.$element.hasClass("active")).trigger("change")}else this.$element.attr("aria-pressed",!this.$element.hasClass("active"));a&&this.$element.toggleClass("active")};var d=a.fn.button;a.fn.button=b,a.fn.button.Constructor=c,a.fn.button.noConflict=function(){return a.fn.button=d,this},a(document).on("click.bs.button.data-api",'[data-toggle^="button"]',function(c){var d=a(c.target);d.hasClass("btn")||(d=d.closest(".btn")),b.call(d,"toggle"),c.preventDefault()}).on("focus.bs.button.data-api blur.bs.button.data-api",'[data-toggle^="button"]',function(b){a(b.target).closest(".btn").toggleClass("focus",/^focus(in)?$/.test(b.type))})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.carousel"),f=a.extend({},c.DEFAULTS,d.data(),"object"==typeof b&&b),g="string"==typeof b?b:f.slide;e||d.data("bs.carousel",e=new c(this,f)),"number"==typeof b?e.to(b):g?e[g]():f.interval&&e.pause().cycle()})}var c=function(b,c){this.$element=a(b),this.$indicators=this.$element.find(".carousel-indicators"),this.options=c,this.paused=this.sliding=this.interval=this.$active=this.$items=null,this.options.keyboard&&this.$element.on("keydown.bs.carousel",a.proxy(this.keydown,this)),"hover"==this.options.pause&&!("ontouchstart"in document.documentElement)&&this.$element.on("mouseenter.bs.carousel",a.proxy(this.pause,this)).on("mouseleave.bs.carousel",a.proxy(this.cycle,this))};c.VERSION="3.3.2",c.TRANSITION_DURATION=600,c.DEFAULTS={interval:5e3,pause:"hover",wrap:!0,keyboard:!0},c.prototype.keydown=function(a){if(!/input|textarea/i.test(a.target.tagName)){switch(a.which){case 37:this.prev();break;case 39:this.next();break;default:return}a.preventDefault()}},c.prototype.cycle=function(b){return b||(this.paused=!1),this.interval&&clearInterval(this.interval),this.options.interval&&!this.paused&&(this.interval=setInterval(a.proxy(this.next,this),this.options.interval)),this},c.prototype.getItemIndex=function(a){return this.$items=a.parent().children(".item"),this.$items.index(a||this.$active)},c.prototype.getItemForDirection=function(a,b){var c=this.getItemIndex(b),d="prev"==a&&0===c||"next"==a&&c==this.$items.length-1;if(d&&!this.options.wrap)return b;var e="prev"==a?-1:1,f=(c+e)%this.$items.length;return this.$items.eq(f)},c.prototype.to=function(a){var b=this,c=this.getItemIndex(this.$active=this.$element.find(".item.active"));return a>this.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a(this.options.trigger).filter('[href="#'+b.id+'"], [data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.2",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0,trigger:'[data-toggle="collapse"]'},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":a.extend({},e.data(),{trigger:this});c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=c(d),f={relatedTarget:this};e.hasClass("open")&&(e.trigger(b=a.Event("hide.bs.dropdown",f)),b.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f)))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.2",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('<div class="dropdown-backdrop"/>').insertAfter(a(this)).on("click",b);var h={relatedTarget:this};if(f.trigger(d=a.Event("show.bs.dropdown",h)),d.isDefaultPrevented())return;e.trigger("focus").attr("aria-expanded","true"),f.toggleClass("open").trigger("shown.bs.dropdown",h)}return!1}},g.prototype.keydown=function(b){if(/(38|40|27|32)/.test(b.which)&&!/input|textarea/i.test(b.target.tagName)){var d=a(this);if(b.preventDefault(),b.stopPropagation(),!d.is(".disabled, :disabled")){var e=c(d),g=e.hasClass("open");if(!g&&27!=b.which||g&&27==b.which)return 27==b.which&&e.find(f).trigger("focus"),d.trigger("click");var h=" li:not(.divider):visible a",i=e.find('[role="menu"]'+h+', [role="listbox"]'+h);if(i.length){var j=i.index(b.target);38==b.which&&j>0&&j--,40==b.which&&j<i.length-1&&j++,~j||(j=0),i.eq(j).trigger("focus")}}}};var h=a.fn.dropdown;a.fn.dropdown=d,a.fn.dropdown.Constructor=g,a.fn.dropdown.noConflict=function(){return a.fn.dropdown=h,this},a(document).on("click.bs.dropdown.data-api",b).on("click.bs.dropdown.data-api",".dropdown form",function(a){a.stopPropagation()}).on("click.bs.dropdown.data-api",f,g.prototype.toggle).on("keydown.bs.dropdown.data-api",f,g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="menu"]',g.prototype.keydown).on("keydown.bs.dropdown.data-api",'[role="listbox"]',g.prototype.keydown)}(jQuery),+function(a){"use strict";function b(b,d){return this.each(function(){var e=a(this),f=e.data("bs.modal"),g=a.extend({},c.DEFAULTS,e.data(),"object"==typeof b&&b);f||e.data("bs.modal",f=new c(this,g)),"string"==typeof b?f[b](d):g.show&&f.show(d)})}var c=function(b,c){this.options=c,this.$body=a(document.body),this.$element=a(b),this.$backdrop=this.isShown=null,this.scrollbarWidth=0,this.options.remote&&this.$element.find(".modal-content").load(this.options.remote,a.proxy(function(){this.$element.trigger("loaded.bs.modal")},this))};c.VERSION="3.3.2",c.TRANSITION_DURATION=300,c.BACKDROP_TRANSITION_DURATION=150,c.DEFAULTS={backdrop:!0,keyboard:!0,show:!0},c.prototype.toggle=function(a){return this.isShown?this.hide():this.show(a)},c.prototype.show=function(b){var d=this,e=a.Event("show.bs.modal",{relatedTarget:b});this.$element.trigger(e),this.isShown||e.isDefaultPrevented()||(this.isShown=!0,this.checkScrollbar(),this.setScrollbar(),this.$body.addClass("modal-open"),this.escape(),this.resize(),this.$element.on("click.dismiss.bs.modal",'[data-dismiss="modal"]',a.proxy(this.hide,this)),this.backdrop(function(){var e=a.support.transition&&d.$element.hasClass("fade");d.$element.parent().length||d.$element.appendTo(d.$body),d.$element.show().scrollTop(0),d.options.backdrop&&d.adjustBackdrop(),d.adjustDialog(),e&&d.$element[0].offsetWidth,d.$element.addClass("in").attr("aria-hidden",!1),d.enforceFocus();var f=a.Event("shown.bs.modal",{relatedTarget:b});e?d.$element.find(".modal-dialog").one("bsTransitionEnd",function(){d.$element.trigger("focus").trigger(f)}).emulateTransitionEnd(c.TRANSITION_DURATION):d.$element.trigger("focus").trigger(f)}))},c.prototype.hide=function(b){b&&b.preventDefault(),b=a.Event("hide.bs.modal"),this.$element.trigger(b),this.isShown&&!b.isDefaultPrevented()&&(this.isShown=!1,this.escape(),this.resize(),a(document).off("focusin.bs.modal"),this.$element.removeClass("in").attr("aria-hidden",!0).off("click.dismiss.bs.modal"),a.support.transition&&this.$element.hasClass("fade")?this.$element.one("bsTransitionEnd",a.proxy(this.hideModal,this)).emulateTransitionEnd(c.TRANSITION_DURATION):this.hideModal())},c.prototype.enforceFocus=function(){a(document).off("focusin.bs.modal").on("focusin.bs.modal",a.proxy(function(a){this.$element[0]===a.target||this.$element.has(a.target).length||this.$element.trigger("focus")},this))},c.prototype.escape=function(){this.isShown&&this.options.keyboard?this.$element.on("keydown.dismiss.bs.modal",a.proxy(function(a){27==a.which&&this.hide()},this)):this.isShown||this.$element.off("keydown.dismiss.bs.modal")},c.prototype.resize=function(){this.isShown?a(window).on("resize.bs.modal",a.proxy(this.handleUpdate,this)):a(window).off("resize.bs.modal")},c.prototype.hideModal=function(){var a=this;this.$element.hide(),this.backdrop(function(){a.$body.removeClass("modal-open"),a.resetAdjustments(),a.resetScrollbar(),a.$element.trigger("hidden.bs.modal")})},c.prototype.removeBackdrop=function(){this.$backdrop&&this.$backdrop.remove(),this.$backdrop=null},c.prototype.backdrop=function(b){var d=this,e=this.$element.hasClass("fade")?"fade":"";if(this.isShown&&this.options.backdrop){var f=a.support.transition&&e;if(this.$backdrop=a('<div class="modal-backdrop '+e+'" />').prependTo(this.$element).on("click.dismiss.bs.modal",a.proxy(function(a){a.target===a.currentTarget&&("static"==this.options.backdrop?this.$element[0].focus.call(this.$element[0]):this.hide.call(this))},this)),f&&this.$backdrop[0].offsetWidth,this.$backdrop.addClass("in"),!b)return;f?this.$backdrop.one("bsTransitionEnd",b).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):b()}else if(!this.isShown&&this.$backdrop){this.$backdrop.removeClass("in");var g=function(){d.removeBackdrop(),b&&b()};a.support.transition&&this.$element.hasClass("fade")?this.$backdrop.one("bsTransitionEnd",g).emulateTransitionEnd(c.BACKDROP_TRANSITION_DURATION):g()}else b&&b()},c.prototype.handleUpdate=function(){this.options.backdrop&&this.adjustBackdrop(),this.adjustDialog()},c.prototype.adjustBackdrop=function(){this.$backdrop.css("height",0).css("height",this.$element[0].scrollHeight)},c.prototype.adjustDialog=function(){var a=this.$element[0].scrollHeight>document.documentElement.clientHeight;this.$element.css({paddingLeft:!this.bodyIsOverflowing&&a?this.scrollbarWidth:"",paddingRight:this.bodyIsOverflowing&&!a?this.scrollbarWidth:""})},c.prototype.resetAdjustments=function(){this.$element.css({paddingLeft:"",paddingRight:""})},c.prototype.checkScrollbar=function(){this.bodyIsOverflowing=document.body.scrollHeight>document.documentElement.clientHeight,this.scrollbarWidth=this.measureScrollbar()},c.prototype.setScrollbar=function(){var a=parseInt(this.$body.css("padding-right")||0,10);this.bodyIsOverflowing&&this.$body.css("padding-right",a+this.scrollbarWidth)},c.prototype.resetScrollbar=function(){this.$body.css("padding-right","")},c.prototype.measureScrollbar=function(){var a=document.createElement("div");a.className="modal-scrollbar-measure",this.$body.append(a);var b=a.offsetWidth-a.clientWidth;return this.$body[0].removeChild(a),b};var d=a.fn.modal;a.fn.modal=b,a.fn.modal.Constructor=c,a.fn.modal.noConflict=function(){return a.fn.modal=d,this},a(document).on("click.bs.modal.data-api",'[data-toggle="modal"]',function(c){var d=a(this),e=d.attr("href"),f=a(d.attr("data-target")||e&&e.replace(/.*(?=#[^\s]+$)/,"")),g=f.data("bs.modal")?"toggle":a.extend({remote:!/#/.test(e)&&e},f.data(),d.data());d.is("a")&&c.preventDefault(),f.one("show.bs.modal",function(a){a.isDefaultPrevented()||f.one("hidden.bs.modal",function(){d.is(":visible")&&d.trigger("focus")})}),b.call(f,g,this)})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tooltip"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.tooltip",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.type=this.options=this.enabled=this.timeout=this.hoverState=this.$element=null,this.init("tooltip",a,b)};c.VERSION="3.3.2",c.TRANSITION_DURATION=150,c.DEFAULTS={animation:!0,placement:"top",selector:!1,template:'<div class="tooltip" role="tooltip"><div class="tooltip-arrow"></div><div class="tooltip-inner"></div></div>',trigger:"hover focus",title:"",delay:0,html:!1,container:!1,viewport:{selector:"body",padding:0}},c.prototype.init=function(b,c,d){this.enabled=!0,this.type=b,this.$element=a(c),this.options=this.getOptions(d),this.$viewport=this.options.viewport&&a(this.options.viewport.selector||this.options.viewport);for(var e=this.options.trigger.split(" "),f=e.length;f--;){var g=e[f];if("click"==g)this.$element.on("click."+this.type,this.options.selector,a.proxy(this.toggle,this));else if("manual"!=g){var h="hover"==g?"mouseenter":"focusin",i="hover"==g?"mouseleave":"focusout";this.$element.on(h+"."+this.type,this.options.selector,a.proxy(this.enter,this)),this.$element.on(i+"."+this.type,this.options.selector,a.proxy(this.leave,this))}}this.options.selector?this._options=a.extend({},this.options,{trigger:"manual",selector:""}):this.fixTitle()},c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.getOptions=function(b){return b=a.extend({},this.getDefaults(),this.$element.data(),b),b.delay&&"number"==typeof b.delay&&(b.delay={show:b.delay,hide:b.delay}),b},c.prototype.getDelegateOptions=function(){var b={},c=this.getDefaults();return this._options&&a.each(this._options,function(a,d){c[a]!=d&&(b[a]=d)}),b},c.prototype.enter=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c&&c.$tip&&c.$tip.is(":visible")?void(c.hoverState="in"):(c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="in",c.options.delay&&c.options.delay.show?void(c.timeout=setTimeout(function(){"in"==c.hoverState&&c.show()},c.options.delay.show)):c.show())},c.prototype.leave=function(b){var c=b instanceof this.constructor?b:a(b.currentTarget).data("bs."+this.type);return c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c)),clearTimeout(c.timeout),c.hoverState="out",c.options.delay&&c.options.delay.hide?void(c.timeout=setTimeout(function(){"out"==c.hoverState&&c.hide()},c.options.delay.hide)):c.hide()},c.prototype.show=function(){var b=a.Event("show.bs."+this.type);if(this.hasContent()&&this.enabled){this.$element.trigger(b);var d=a.contains(this.$element[0].ownerDocument.documentElement,this.$element[0]);if(b.isDefaultPrevented()||!d)return;var e=this,f=this.tip(),g=this.getUID(this.type);this.setContent(),f.attr("id",g),this.$element.attr("aria-describedby",g),this.options.animation&&f.addClass("fade");var h="function"==typeof this.options.placement?this.options.placement.call(this,f[0],this.$element[0]):this.options.placement,i=/\s?auto?\s?/i,j=i.test(h);j&&(h=h.replace(i,"")||"top"),f.detach().css({top:0,left:0,display:"block"}).addClass(h).data("bs."+this.type,this),this.options.container?f.appendTo(this.options.container):f.insertAfter(this.$element);var k=this.getPosition(),l=f[0].offsetWidth,m=f[0].offsetHeight;if(j){var n=h,o=this.options.container?a(this.options.container):this.$element.parent(),p=this.getPosition(o);h="bottom"==h&&k.bottom+m>p.bottom?"top":"top"==h&&k.top-m<p.top?"bottom":"right"==h&&k.right+l>p.width?"left":"left"==h&&k.left-l<p.left?"right":h,f.removeClass(n).addClass(h)}var q=this.getCalculatedOffset(h,k,l,m);this.applyPlacement(q,h);var r=function(){var a=e.hoverState;e.$element.trigger("shown.bs."+e.type),e.hoverState=null,"out"==a&&e.leave(e)};a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",r).emulateTransitionEnd(c.TRANSITION_DURATION):r()}},c.prototype.applyPlacement=function(b,c){var d=this.tip(),e=d[0].offsetWidth,f=d[0].offsetHeight,g=parseInt(d.css("margin-top"),10),h=parseInt(d.css("margin-left"),10);isNaN(g)&&(g=0),isNaN(h)&&(h=0),b.top=b.top+g,b.left=b.left+h,a.offset.setOffset(d[0],a.extend({using:function(a){d.css({top:Math.round(a.top),left:Math.round(a.left)})}},b),0),d.addClass("in");var i=d[0].offsetWidth,j=d[0].offsetHeight;"top"==c&&j!=f&&(b.top=b.top+f-j);var k=this.getViewportAdjustedDelta(c,b,i,j);k.left?b.left+=k.left:b.top+=k.top;var l=/top|bottom/.test(c),m=l?2*k.left-e+i:2*k.top-f+j,n=l?"offsetWidth":"offsetHeight";d.offset(b),this.replaceArrow(m,d[0][n],l)},c.prototype.replaceArrow=function(a,b,c){this.arrow().css(c?"left":"top",50*(1-a/b)+"%").css(c?"top":"left","")},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle();a.find(".tooltip-inner")[this.options.html?"html":"text"](b),a.removeClass("fade in top bottom left right")},c.prototype.hide=function(b){function d(){"in"!=e.hoverState&&f.detach(),e.$element.removeAttr("aria-describedby").trigger("hidden.bs."+e.type),b&&b()}var e=this,f=this.tip(),g=a.Event("hide.bs."+this.type);return this.$element.trigger(g),g.isDefaultPrevented()?void 0:(f.removeClass("in"),a.support.transition&&this.$tip.hasClass("fade")?f.one("bsTransitionEnd",d).emulateTransitionEnd(c.TRANSITION_DURATION):d(),this.hoverState=null,this)},c.prototype.fixTitle=function(){var a=this.$element;(a.attr("title")||"string"!=typeof a.attr("data-original-title"))&&a.attr("data-original-title",a.attr("title")||"").attr("title","")},c.prototype.hasContent=function(){return this.getTitle()},c.prototype.getPosition=function(b){b=b||this.$element;var c=b[0],d="BODY"==c.tagName,e=c.getBoundingClientRect();null==e.width&&(e=a.extend({},e,{width:e.right-e.left,height:e.bottom-e.top}));var f=d?{top:0,left:0}:b.offset(),g={scroll:d?document.documentElement.scrollTop||document.body.scrollTop:b.scrollTop()},h=d?{width:a(window).width(),height:a(window).height()}:null;return a.extend({},e,g,h,f)},c.prototype.getCalculatedOffset=function(a,b,c,d){return"bottom"==a?{top:b.top+b.height,left:b.left+b.width/2-c/2}:"top"==a?{top:b.top-d,left:b.left+b.width/2-c/2}:"left"==a?{top:b.top+b.height/2-d/2,left:b.left-c}:{top:b.top+b.height/2-d/2,left:b.left+b.width}},c.prototype.getViewportAdjustedDelta=function(a,b,c,d){var e={top:0,left:0};if(!this.$viewport)return e;var f=this.options.viewport&&this.options.viewport.padding||0,g=this.getPosition(this.$viewport);if(/right|left/.test(a)){var h=b.top-f-g.scroll,i=b.top+f-g.scroll+d;h<g.top?e.top=g.top-h:i>g.top+g.height&&(e.top=g.top+g.height-i)}else{var j=b.left-f,k=b.left+f+c;j<g.left?e.left=g.left-j:k>g.width&&(e.left=g.left+g.width-k)}return e},c.prototype.getTitle=function(){var a,b=this.$element,c=this.options;return a=b.attr("data-original-title")||("function"==typeof c.title?c.title.call(b[0]):c.title)},c.prototype.getUID=function(a){do a+=~~(1e6*Math.random());while(document.getElementById(a));return a},c.prototype.tip=function(){return this.$tip=this.$tip||a(this.options.template)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".tooltip-arrow")},c.prototype.enable=function(){this.enabled=!0},c.prototype.disable=function(){this.enabled=!1},c.prototype.toggleEnabled=function(){this.enabled=!this.enabled},c.prototype.toggle=function(b){var c=this;b&&(c=a(b.currentTarget).data("bs."+this.type),c||(c=new this.constructor(b.currentTarget,this.getDelegateOptions()),a(b.currentTarget).data("bs."+this.type,c))),c.tip().hasClass("in")?c.leave(c):c.enter(c)},c.prototype.destroy=function(){var a=this;clearTimeout(this.timeout),this.hide(function(){a.$element.off("."+a.type).removeData("bs."+a.type)})};var d=a.fn.tooltip;a.fn.tooltip=b,a.fn.tooltip.Constructor=c,a.fn.tooltip.noConflict=function(){return a.fn.tooltip=d,this}}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.popover"),f="object"==typeof b&&b;(e||"destroy"!=b)&&(e||d.data("bs.popover",e=new c(this,f)),"string"==typeof b&&e[b]())})}var c=function(a,b){this.init("popover",a,b)};if(!a.fn.tooltip)throw new Error("Popover requires tooltip.js");c.VERSION="3.3.2",c.DEFAULTS=a.extend({},a.fn.tooltip.Constructor.DEFAULTS,{placement:"right",trigger:"click",content:"",template:'<div class="popover" role="tooltip"><div class="arrow"></div><h3 class="popover-title"></h3><div class="popover-content"></div></div>'}),c.prototype=a.extend({},a.fn.tooltip.Constructor.prototype),c.prototype.constructor=c,c.prototype.getDefaults=function(){return c.DEFAULTS},c.prototype.setContent=function(){var a=this.tip(),b=this.getTitle(),c=this.getContent();a.find(".popover-title")[this.options.html?"html":"text"](b),a.find(".popover-content").children().detach().end()[this.options.html?"string"==typeof c?"html":"append":"text"](c),a.removeClass("fade top bottom left right in"),a.find(".popover-title").html()||a.find(".popover-title").hide()},c.prototype.hasContent=function(){return this.getTitle()||this.getContent()},c.prototype.getContent=function(){var a=this.$element,b=this.options;return a.attr("data-content")||("function"==typeof b.content?b.content.call(a[0]):b.content)},c.prototype.arrow=function(){return this.$arrow=this.$arrow||this.tip().find(".arrow")},c.prototype.tip=function(){return this.$tip||(this.$tip=a(this.options.template)),this.$tip};var d=a.fn.popover;a.fn.popover=b,a.fn.popover.Constructor=c,a.fn.popover.noConflict=function(){return a.fn.popover=d,this}}(jQuery),+function(a){"use strict";function b(c,d){var e=a.proxy(this.process,this);this.$body=a("body"),this.$scrollElement=a(a(c).is("body")?window:c),this.options=a.extend({},b.DEFAULTS,d),this.selector=(this.options.target||"")+" .nav li > a",this.offsets=[],this.targets=[],this.activeTarget=null,this.scrollHeight=0,this.$scrollElement.on("scroll.bs.scrollspy",e),this.refresh(),this.process()}function c(c){return this.each(function(){var d=a(this),e=d.data("bs.scrollspy"),f="object"==typeof c&&c;e||d.data("bs.scrollspy",e=new b(this,f)),"string"==typeof c&&e[c]()})}b.VERSION="3.3.2",b.DEFAULTS={offset:10},b.prototype.getScrollHeight=function(){return this.$scrollElement[0].scrollHeight||Math.max(this.$body[0].scrollHeight,document.documentElement.scrollHeight)},b.prototype.refresh=function(){var b="offset",c=0;a.isWindow(this.$scrollElement[0])||(b="position",c=this.$scrollElement.scrollTop()),this.offsets=[],this.targets=[],this.scrollHeight=this.getScrollHeight();var d=this;this.$body.find(this.selector).map(function(){var d=a(this),e=d.data("target")||d.attr("href"),f=/^#./.test(e)&&a(e);return f&&f.length&&f.is(":visible")&&[[f[b]().top+c,e]]||null}).sort(function(a,b){return a[0]-b[0]}).each(function(){d.offsets.push(this[0]),d.targets.push(this[1])})},b.prototype.process=function(){var a,b=this.$scrollElement.scrollTop()+this.options.offset,c=this.getScrollHeight(),d=this.options.offset+c-this.$scrollElement.height(),e=this.offsets,f=this.targets,g=this.activeTarget;if(this.scrollHeight!=c&&this.refresh(),b>=d)return g!=(a=f[f.length-1])&&this.activate(a);if(g&&b<e[0])return this.activeTarget=null,this.clear();for(a=e.length;a--;)g!=f[a]&&b>=e[a]&&(!e[a+1]||b<=e[a+1])&&this.activate(f[a])},b.prototype.activate=function(b){this.activeTarget=b,this.clear();var c=this.selector+'[data-target="'+b+'"],'+this.selector+'[href="'+b+'"]',d=a(c).parents("li").addClass("active");d.parent(".dropdown-menu").length&&(d=d.closest("li.dropdown").addClass("active")),d.trigger("activate.bs.scrollspy")},b.prototype.clear=function(){a(this.selector).parentsUntil(this.options.target,".active").removeClass("active")};var d=a.fn.scrollspy;a.fn.scrollspy=c,a.fn.scrollspy.Constructor=b,a.fn.scrollspy.noConflict=function(){return a.fn.scrollspy=d,this},a(window).on("load.bs.scrollspy.data-api",function(){a('[data-spy="scroll"]').each(function(){var b=a(this);c.call(b,b.data())})})}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.tab");e||d.data("bs.tab",e=new c(this)),"string"==typeof b&&e[b]()})}var c=function(b){this.element=a(b)};c.VERSION="3.3.2",c.TRANSITION_DURATION=150,c.prototype.show=function(){var b=this.element,c=b.closest("ul:not(.dropdown-menu)"),d=b.data("target");if(d||(d=b.attr("href"),d=d&&d.replace(/.*(?=#[^\s]*$)/,"")),!b.parent("li").hasClass("active")){var e=c.find(".active:last a"),f=a.Event("hide.bs.tab",{relatedTarget:b[0]}),g=a.Event("show.bs.tab",{relatedTarget:e[0]});if(e.trigger(f),b.trigger(g),!g.isDefaultPrevented()&&!f.isDefaultPrevented()){var h=a(d);this.activate(b.closest("li"),c),this.activate(h,h.parent(),function(){e.trigger({type:"hidden.bs.tab",relatedTarget:b[0]}),b.trigger({type:"shown.bs.tab",relatedTarget:e[0]})})}}},c.prototype.activate=function(b,d,e){function f(){g.removeClass("active").find("> .dropdown-menu > .active").removeClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!1),b.addClass("active").find('[data-toggle="tab"]').attr("aria-expanded",!0),h?(b[0].offsetWidth,b.addClass("in")):b.removeClass("fade"),b.parent(".dropdown-menu")&&b.closest("li.dropdown").addClass("active").end().find('[data-toggle="tab"]').attr("aria-expanded",!0),e&&e()
-}var g=d.find("> .active"),h=e&&a.support.transition&&(g.length&&g.hasClass("fade")||!!d.find("> .fade").length);g.length&&h?g.one("bsTransitionEnd",f).emulateTransitionEnd(c.TRANSITION_DURATION):f(),g.removeClass("in")};var d=a.fn.tab;a.fn.tab=b,a.fn.tab.Constructor=c,a.fn.tab.noConflict=function(){return a.fn.tab=d,this};var e=function(c){c.preventDefault(),b.call(a(this),"show")};a(document).on("click.bs.tab.data-api",'[data-toggle="tab"]',e).on("click.bs.tab.data-api",'[data-toggle="pill"]',e)}(jQuery),+function(a){"use strict";function b(b){return this.each(function(){var d=a(this),e=d.data("bs.affix"),f="object"==typeof b&&b;e||d.data("bs.affix",e=new c(this,f)),"string"==typeof b&&e[b]()})}var c=function(b,d){this.options=a.extend({},c.DEFAULTS,d),this.$target=a(this.options.target).on("scroll.bs.affix.data-api",a.proxy(this.checkPosition,this)).on("click.bs.affix.data-api",a.proxy(this.checkPositionWithEventLoop,this)),this.$element=a(b),this.affixed=this.unpin=this.pinnedOffset=null,this.checkPosition()};c.VERSION="3.3.2",c.RESET="affix affix-top affix-bottom",c.DEFAULTS={offset:0,target:window},c.prototype.getState=function(a,b,c,d){var e=this.$target.scrollTop(),f=this.$element.offset(),g=this.$target.height();if(null!=c&&"top"==this.affixed)return c>e?"top":!1;if("bottom"==this.affixed)return null!=c?e+this.unpin<=f.top?!1:"bottom":a-d>=e+g?!1:"bottom";var h=null==this.affixed,i=h?e:f.top,j=h?g:b;return null!=c&&c>=e?"top":null!=d&&i+j>=a-d?"bottom":!1},c.prototype.getPinnedOffset=function(){if(this.pinnedOffset)return this.pinnedOffset;this.$element.removeClass(c.RESET).addClass("affix");var a=this.$target.scrollTop(),b=this.$element.offset();return this.pinnedOffset=b.top-a},c.prototype.checkPositionWithEventLoop=function(){setTimeout(a.proxy(this.checkPosition,this),1)},c.prototype.checkPosition=function(){if(this.$element.is(":visible")){var b=this.$element.height(),d=this.options.offset,e=d.top,f=d.bottom,g=a("body").height();"object"!=typeof d&&(f=e=d),"function"==typeof e&&(e=d.top(this.$element)),"function"==typeof f&&(f=d.bottom(this.$element));var h=this.getState(g,b,e,f);if(this.affixed!=h){null!=this.unpin&&this.$element.css("top","");var i="affix"+(h?"-"+h:""),j=a.Event(i+".bs.affix");if(this.$element.trigger(j),j.isDefaultPrevented())return;this.affixed=h,this.unpin="bottom"==h?this.getPinnedOffset():null,this.$element.removeClass(c.RESET).addClass(i).trigger(i.replace("affix","affixed")+".bs.affix")}"bottom"==h&&this.$element.offset({top:g-b-f})}};var d=a.fn.affix;a.fn.affix=b,a.fn.affix.Constructor=c,a.fn.affix.noConflict=function(){return a.fn.affix=d,this},a(window).on("load",function(){a('[data-spy="affix"]').each(function(){var c=a(this),d=c.data();d.offset=d.offset||{},null!=d.offsetBottom&&(d.offset.bottom=d.offsetBottom),null!=d.offsetTop&&(d.offset.top=d.offsetTop),b.call(c,d)})})}(jQuery); \ No newline at end of file
diff --git a/spectrum_manager/src/html/js/jquery-ui.js b/spectrum_manager/src/html/js/jquery-ui.js
deleted file mode 100644
index 07c3c831..00000000
--- a/spectrum_manager/src/html/js/jquery-ui.js
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery UI - v1.10.0 - 2013-01-17
-* http://jqueryui.com
-* Includes: jquery.ui.core.js, jquery.ui.widget.js, jquery.ui.mouse.js, jquery.ui.draggable.js, jquery.ui.droppable.js, jquery.ui.resizable.js, jquery.ui.selectable.js, jquery.ui.sortable.js, jquery.ui.effect.js, jquery.ui.accordion.js, jquery.ui.autocomplete.js, jquery.ui.button.js, jquery.ui.datepicker.js, jquery.ui.dialog.js, jquery.ui.effect-blind.js, jquery.ui.effect-bounce.js, jquery.ui.effect-clip.js, jquery.ui.effect-drop.js, jquery.ui.effect-explode.js, jquery.ui.effect-fade.js, jquery.ui.effect-fold.js, jquery.ui.effect-highlight.js, jquery.ui.effect-pulsate.js, jquery.ui.effect-scale.js, jquery.ui.effect-shake.js, jquery.ui.effect-slide.js, jquery.ui.effect-transfer.js, jquery.ui.menu.js, jquery.ui.position.js, jquery.ui.progressbar.js, jquery.ui.slider.js, jquery.ui.spinner.js, jquery.ui.tabs.js, jquery.ui.tooltip.js
-* Copyright 2013 jQuery Foundation and other contributors; Licensed MIT */
-(function(e,t){function i(t,n){var r,i,o,u=t.nodeName.toLowerCase();return"area"===u?(r=t.parentNode,i=r.name,!t.href||!i||r.nodeName.toLowerCase()!=="map"?!1:(o=e("img[usemap=#"+i+"]")[0],!!o&&s(o))):(/input|select|textarea|button|object/.test(u)?!t.disabled:"a"===u?t.href||n:n)&&s(t)}function s(t){return e.expr.filters.visible(t)&&!e(t).parents().addBack().filter(function(){return e.css(this,"visibility")==="hidden"}).length}var n=0,r=/^ui-id-\d+$/;e.ui=e.ui||{};if(e.ui.version)return;e.extend(e.ui,{version:"1.10.0",keyCode:{BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38}}),e.fn.extend({_focus:e.fn.focus,focus:function(t,n){return typeof t=="number"?this.each(function(){var r=this;setTimeout(function(){e(r).focus(),n&&n.call(r)},t)}):this._focus.apply(this,arguments)},scrollParent:function(){var t;return e.ui.ie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?t=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(e.css(this,"position"))&&/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0):t=this.parents().filter(function(){return/(auto|scroll)/.test(e.css(this,"overflow")+e.css(this,"overflow-y")+e.css(this,"overflow-x"))}).eq(0),/fixed/.test(this.css("position"))||!t.length?e(document):t},zIndex:function(n){if(n!==t)return this.css("zIndex",n);if(this.length){var r=e(this[0]),i,s;while(r.length&&r[0]!==document){i=r.css("position");if(i==="absolute"||i==="relative"||i==="fixed"){s=parseInt(r.css("zIndex"),10);if(!isNaN(s)&&s!==0)return s}r=r.parent()}}return 0},uniqueId:function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++n)})},removeUniqueId:function(){return this.each(function(){r.test(this.id)&&e(this).removeAttr("id")})}}),e.extend(e.expr[":"],{data:e.expr.createPseudo?e.expr.createPseudo(function(t){return function(n){return!!e.data(n,t)}}):function(t,n,r){return!!e.data(t,r[3])},focusable:function(t){return i(t,!isNaN(e.attr(t,"tabindex")))},tabbable:function(t){var n=e.attr(t,"tabindex"),r=isNaN(n);return(r||n>=0)&&i(t,!r)}}),e("<a>").outerWidth(1).jquery||e.each(["Width","Height"],function(n,r){function u(t,n,r,s){return e.each(i,function(){n-=parseFloat(e.css(t,"padding"+this))||0,r&&(n-=parseFloat(e.css(t,"border"+this+"Width"))||0),s&&(n-=parseFloat(e.css(t,"margin"+this))||0)}),n}var i=r==="Width"?["Left","Right"]:["Top","Bottom"],s=r.toLowerCase(),o={innerWidth:e.fn.innerWidth,innerHeight:e.fn.innerHeight,outerWidth:e.fn.outerWidth,outerHeight:e.fn.outerHeight};e.fn["inner"+r]=function(n){return n===t?o["inner"+r].call(this):this.each(function(){e(this).css(s,u(this,n)+"px")})},e.fn["outer"+r]=function(t,n){return typeof t!="number"?o["outer"+r].call(this,t):this.each(function(){e(this).css(s,u(this,t,!0,n)+"px")})}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}),e("<a>").data("a-b","a").removeData("a-b").data("a-b")&&(e.fn.removeData=function(t){return function(n){return arguments.length?t.call(this,e.camelCase(n)):t.call(this)}}(e.fn.removeData)),e.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase()),e.support.selectstart="onselectstart"in document.createElement("div"),e.fn.extend({disableSelection:function(){return this.bind((e.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(e){e.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),e.extend(e.ui,{plugin:{add:function(t,n,r){var i,s=e.ui[t].prototype;for(i in r)s.plugins[i]=s.plugins[i]||[],s.plugins[i].push([n,r[i]])},call:function(e,t,n){var r,i=e.plugins[t];if(!i||!e.element[0].parentNode||e.element[0].parentNode.nodeType===11)return;for(r=0;r<i.length;r++)e.options[i[r][0]]&&i[r][1].apply(e.element,n)}},hasScroll:function(t,n){if(e(t).css("overflow")==="hidden")return!1;var r=n&&n==="left"?"scrollLeft":"scrollTop",i=!1;return t[r]>0?!0:(t[r]=1,i=t[r]>0,t[r]=0,i)}})})(jQuery),function(e,t){var n=0,r=Array.prototype.slice,i=e.cleanData;e.cleanData=function(t){for(var n=0,r;(r=t[n])!=null;n++)try{e(r).triggerHandler("remove")}catch(s){}i(t)},e.widget=function(t,n,r){var i,s,o,u,a={},f=t.split(".")[0];t=t.split(".")[1],i=f+"-"+t,r||(r=n,n=e.Widget),e.expr[":"][i.toLowerCase()]=function(t){return!!e.data(t,i)},e[f]=e[f]||{},s=e[f][t],o=e[f][t]=function(e,t){if(!this._createWidget)return new o(e,t);arguments.length&&this._createWidget(e,t)},e.extend(o,s,{version:r.version,_proto:e.extend({},r),_childConstructors:[]}),u=new n,u.options=e.widget.extend({},u.options),e.each(r,function(t,r){if(!e.isFunction(r)){a[t]=r;return}a[t]=function(){var e=function(){return n.prototype[t].apply(this,arguments)},i=function(e){return n.prototype[t].apply(this,e)};return function(){var t=this._super,n=this._superApply,s;return this._super=e,this._superApply=i,s=r.apply(this,arguments),this._super=t,this._superApply=n,s}}()}),o.prototype=e.widget.extend(u,{widgetEventPrefix:s?u.widgetEventPrefix:t},a,{constructor:o,namespace:f,widgetName:t,widgetFullName:i}),s?(e.each(s._childConstructors,function(t,n){var r=n.prototype;e.widget(r.namespace+"."+r.widgetName,o,n._proto)}),delete s._childConstructors):n._childConstructors.push(o),e.widget.bridge(t,o)},e.widget.extend=function(n){var i=r.call(arguments,1),s=0,o=i.length,u,a;for(;s<o;s++)for(u in i[s])a=i[s][u],i[s].hasOwnProperty(u)&&a!==t&&(e.isPlainObject(a)?n[u]=e.isPlainObject(n[u])?e.widget.extend({},n[u],a):e.widget.extend({},a):n[u]=a);return n},e.widget.bridge=function(n,i){var s=i.prototype.widgetFullName||n;e.fn[n]=function(o){var u=typeof o=="string",a=r.call(arguments,1),f=this;return o=!u&&a.length?e.widget.extend.apply(null,[o].concat(a)):o,u?this.each(function(){var r,i=e.data(this,s);if(!i)return e.error("cannot call methods on "+n+" prior to initialization; "+"attempted to call method '"+o+"'");if(!e.isFunction(i[o])||o.charAt(0)==="_")return e.error("no such method '"+o+"' for "+n+" widget instance");r=i[o].apply(i,a);if(r!==i&&r!==t)return f=r&&r.jquery?f.pushStack(r.get()):r,!1}):this.each(function(){var t=e.data(this,s);t?t.option(o||{})._init():e.data(this,s,new i(o,this))}),f}},e.Widget=function(){},e.Widget._childConstructors=[],e.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"<div>",options:{disabled:!1,create:null},_createWidget:function(t,r){r=e(r||this.defaultElement||this)[0],this.element=e(r),this.uuid=n++,this.eventNamespace="."+this.widgetName+this.uuid,this.options=e.widget.extend({},this.options,this._getCreateOptions(),t),this.bindings=e(),this.hoverable=e(),this.focusable=e(),r!==this&&(e.data(r,this.widgetFullName,this),this._on(!0,this.element,{remove:function(e){e.target===r&&this.destroy()}}),this.document=e(r.style?r.ownerDocument:r.document||r),this.window=e(this.document[0].defaultView||this.document[0].parentWindow)),this._create(),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:e.noop,_getCreateEventData:e.noop,_create:e.noop,_init:e.noop,destroy:function(){this._destroy(),this.element.unbind(this.eventNamespace).removeData(this.widgetName).removeData(this.widgetFullName).removeData(e.camelCase(this.widgetFullName)),this.widget().unbind(this.eventNamespace).removeAttr("aria-disabled").removeClass(this.widgetFullName+"-disabled "+"ui-state-disabled"),this.bindings.unbind(this.eventNamespace),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")},_destroy:e.noop,widget:function(){return this.element},option:function(n,r){var i=n,s,o,u;if(arguments.length===0)return e.widget.extend({},this.options);if(typeof n=="string"){i={},s=n.split("."),n=s.shift();if(s.length){o=i[n]=e.widget.extend({},this.options[n]);for(u=0;u<s.length-1;u++)o[s[u]]=o[s[u]]||{},o=o[s[u]];n=s.pop();if(r===t)return o[n]===t?null:o[n];o[n]=r}else{if(r===t)return this.options[n]===t?null:this.options[n];i[n]=r}}return this._setOptions(i),this},_setOptions:function(e){var t;for(t in e)this._setOption(t,e[t]);return this},_setOption:function(e,t){return this.options[e]=t,e==="disabled"&&(this.widget().toggleClass(this.widgetFullName+"-disabled ui-state-disabled",!!t).attr("aria-disabled",t),this.hoverable.removeClass("ui-state-hover"),this.focusable.removeClass("ui-state-focus")),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_on:function(t,n,r){var i,s=this;typeof t!="boolean"&&(r=n,n=t,t=!1),r?(n=i=e(n),this.bindings=this.bindings.add(n)):(r=n,n=this.element,i=this.widget()),e.each(r,function(r,o){function u(){if(!t&&(s.options.disabled===!0||e(this).hasClass("ui-state-disabled")))return;return(typeof o=="string"?s[o]:o).apply(s,arguments)}typeof o!="string"&&(u.guid=o.guid=o.guid||u.guid||e.guid++);var a=r.match(/^(\w+)\s*(.*)$/),f=a[1]+s.eventNamespace,l=a[2];l?i.delegate(l,f,u):n.bind(f,u)})},_off:function(e,t){t=(t||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.unbind(t).undelegate(t)},_delay:function(e,t){function n(){return(typeof e=="string"?r[e]:e).apply(r,arguments)}var r=this;return setTimeout(n,t||0)},_hoverable:function(t){this.hoverable=this.hoverable.add(t),this._on(t,{mouseenter:function(t){e(t.currentTarget).addClass("ui-state-hover")},mouseleave:function(t){e(t.currentTarget).removeClass("ui-state-hover")}})},_focusable:function(t){this.focusable=this.focusable.add(t),this._on(t,{focusin:function(t){e(t.currentTarget).addClass("ui-state-focus")},focusout:function(t){e(t.currentTarget).removeClass("ui-state-focus")}})},_trigger:function(t,n,r){var i,s,o=this.options[t];r=r||{},n=e.Event(n),n.type=(t===this.widgetEventPrefix?t:this.widgetEventPrefix+t).toLowerCase(),n.target=this.element[0],s=n.originalEvent;if(s)for(i in s)i in n||(n[i]=s[i]);return this.element.trigger(n,r),!(e.isFunction(o)&&o.apply(this.element[0],[n].concat(r))===!1||n.isDefaultPrevented())}},e.each({show:"fadeIn",hide:"fadeOut"},function(t,n){e.Widget.prototype["_"+t]=function(r,i,s){typeof i=="string"&&(i={effect:i});var o,u=i?i===!0||typeof i=="number"?n:i.effect||n:t;i=i||{},typeof i=="number"&&(i={duration:i}),o=!e.isEmptyObject(i),i.complete=s,i.delay&&r.delay(i.delay),o&&e.effects&&e.effects.effect[u]?r[t](i):u!==t&&r[u]?r[u](i.duration,i.easing,s):r.queue(function(n){e(this)[t](),s&&s.call(r[0]),n()})}})}(jQuery),function(e,t){var n=!1;e(document).mouseup(function(){n=!1}),e.widget("ui.mouse",{version:"1.10.0",options:{cancel:"input,textarea,button,select,option",distance:1,delay:0},_mouseInit:function(){var t=this;this.element.bind("mousedown."+this.widgetName,function(e){return t._mouseDown(e)}).bind("click."+this.widgetName,function(n){if(!0===e.data(n.target,t.widgetName+".preventClickEvent"))return e.removeData(n.target,t.widgetName+".preventClickEvent"),n.stopImmediatePropagation(),!1}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName),this._mouseMoveDelegate&&e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(t){if(n)return;this._mouseStarted&&this._mouseUp(t),this._mouseDownEvent=t;var r=this,i=t.which===1,s=typeof this.options.cancel=="string"&&t.target.nodeName?e(t.target).closest(this.options.cancel).length:!1;if(!i||s||!this._mouseCapture(t))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){r.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)){this._mouseStarted=this._mouseStart(t)!==!1;if(!this._mouseStarted)return t.preventDefault(),!0}return!0===e.data(t.target,this.widgetName+".preventClickEvent")&&e.removeData(t.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(e){return r._mouseMove(e)},this._mouseUpDelegate=function(e){return r._mouseUp(e)},e(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),t.preventDefault(),n=!0,!0},_mouseMove:function(t){return e.ui.ie&&(!document.documentMode||document.documentMode<9)&&!t.button?this._mouseUp(t):this._mouseStarted?(this._mouseDrag(t),t.preventDefault()):(this._mouseDistanceMet(t)&&this._mouseDelayMet(t)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,t)!==!1,this._mouseStarted?this._mouseDrag(t):this._mouseUp(t)),!this._mouseStarted)},_mouseUp:function(t){return e(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,t.target===this._mouseDownEvent.target&&e.data(t.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(t)),!1},_mouseDistanceMet:function(e){return Math.max(Math.abs(this._mouseDownEvent.pageX-e.pageX),Math.abs(this._mouseDownEvent.pageY-e.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}})}(jQuery),function(e,t){e.widget("ui.draggable",e.ui.mouse,{version:"1.10.0",widgetEventPrefix:"drag",options:{addClasses:!0,appendTo:"parent",axis:!1,connectToSortable:!1,containment:!1,cursor:"auto",cursorAt:!1,grid:!1,handle:!1,helper:"original",iframeFix:!1,opacity:!1,refreshPositions:!1,revert:!1,revertDuration:500,scope:"default",scroll:!0,scrollSensitivity:20,scrollSpeed:20,snap:!1,snapMode:"both",snapTolerance:20,stack:!1,zIndex:!1,drag:null,start:null,stop:null},_create:function(){this.options.helper==="original"&&!/^(?:r|a|f)/.test(this.element.css("position"))&&(this.element[0].style.position="relative"),this.options.addClasses&&this.element.addClass("ui-draggable"),this.options.disabled&&this.element.addClass("ui-draggable-disabled"),this._mouseInit()},_destroy:function(){this.element.removeClass("ui-draggable ui-draggable-dragging ui-draggable-disabled"),this._mouseDestroy()},_mouseCapture:function(t){var n=this.options;return this.helper||n.disabled||e(t.target).closest(".ui-resizable-handle").length>0?!1:(this.handle=this._getHandle(t),this.handle?(e(n.iframeFix===!0?"iframe":n.iframeFix).each(function(){e("<div class='ui-draggable-iframeFix' style='background: #fff;'></div>").css({width:this.offsetWidth+"px",height:this.offsetHeight+"px",position:"absolute",opacity:"0.001",zIndex:1e3}).css(e(this).offset()).appendTo("body")}),!0):!1)},_mouseStart:function(t){var n=this.options;return this.helper=this._createHelper(t),this.helper.addClass("ui-draggable-dragging"),this._cacheHelperProportions(),e.ui.ddmanager&&(e.ui.ddmanager.current=this),this._cacheMargins(),this.cssPosition=this.helper.css("position"),this.scrollParent=this.helper.scrollParent(),this.offset=this.positionAbs=this.element.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.originalPosition=this.position=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,n.cursorAt&&this._adjustOffsetFromHelper(n.cursorAt),n.containment&&this._setContainment(),this._trigger("start",t)===!1?(this._clear(),!1):(this._cacheHelperProportions(),e.ui.ddmanager&&!n.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this._mouseDrag(t,!0),e.ui.ddmanager&&e.ui.ddmanager.dragStart(this,t),!0)},_mouseDrag:function(t,n){this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute");if(!n){var r=this._uiHash();if(this._trigger("drag",t,r)===!1)return this._mouseUp({}),!1;this.position=r.position}if(!this.options.axis||this.options.axis!=="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!=="x")this.helper[0].style.top=this.position.top+"px";return e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),!1},_mouseStop:function(t){var n,r=this,i=!1,s=!1;e.ui.ddmanager&&!this.options.dropBehaviour&&(s=e.ui.ddmanager.drop(this,t)),this.dropped&&(s=this.dropped,this.dropped=!1),n=this.element[0];while(n&&(n=n.parentNode))n===document&&(i=!0);return!i&&this.options.helper==="original"?!1:(this.options.revert==="invalid"&&!s||this.options.revert==="valid"&&s||this.options.revert===!0||e.isFunction(this.options.revert)&&this.options.revert.call(this.element,s)?e(this.helper).animate(this.originalPosition,parseInt(this.options.revertDuration,10),function(){r._trigger("stop",t)!==!1&&r._clear()}):this._trigger("stop",t)!==!1&&this._clear(),!1)},_mouseUp:function(t){return e("div.ui-draggable-iframeFix").each(function(){this.parentNode.removeChild(this)}),e.ui.ddmanager&&e.ui.ddmanager.dragStop(this,t),e.ui.mouse.prototype._mouseUp.call(this,t)},cancel:function(){return this.helper.is(".ui-draggable-dragging")?this._mouseUp({}):this._clear(),this},_getHandle:function(t){var n=!this.options.handle||!e(this.options.handle,this.element).length?!0:!1;return e(this.options.handle,this.element).find("*").addBack().each(function(){this===t.target&&(n=!0)}),n},_createHelper:function(t){var n=this.options,r=e.isFunction(n.helper)?e(n.helper.apply(this.element[0],[t])):n.helper==="clone"?this.element.clone().removeAttr("id"):this.element;return r.parents("body").length||r.appendTo(n.appendTo==="parent"?this.element[0].parentNode:n.appendTo),r[0]!==this.element[0]&&!/(fixed|absolute)/.test(r.css("position"))&&r.css("position","absolute"),r},_adjustOffsetFromHelper:function(t){typeof t=="string"&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();this.cssPosition==="absolute"&&this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()==="html"&&e.ui.ie)t={top:0,left:0};return{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition==="relative"){var e=this.element.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.element.css("marginLeft"),10)||0,top:parseInt(this.element.css("marginTop"),10)||0,right:parseInt(this.element.css("marginRight"),10)||0,bottom:parseInt(this.element.css("marginBottom"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,n,r,i=this.options;i.containment==="parent"&&(i.containment=this.helper[0].parentNode);if(i.containment==="document"||i.containment==="window")this.containment=[i.containment==="document"?0:e(window).scrollLeft()-this.offset.relative.left-this.offset.parent.left,i.containment==="document"?0:e(window).scrollTop()-this.offset.relative.top-this.offset.parent.top,(i.containment==="document"?0:e(window).scrollLeft())+e(i.containment==="document"?document:window).width()-this.helperProportions.width-this.margins.left,(i.containment==="document"?0:e(window).scrollTop())+(e(i.containment==="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];if(!/^(document|window|parent)$/.test(i.containment)&&i.containment.constructor!==Array){n=e(i.containment),r=n[0];if(!r)return;t=e(r).css("overflow")!=="hidden",this.containment=[(parseInt(e(r).css("borderLeftWidth"),10)||0)+(parseInt(e(r).css("paddingLeft"),10)||0),(parseInt(e(r).css("borderTopWidth"),10)||0)+(parseInt(e(r).css("paddingTop"),10)||0),(t?Math.max(r.scrollWidth,r.offsetWidth):r.offsetWidth)-(parseInt(e(r).css("borderLeftWidth"),10)||0)-(parseInt(e(r).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left-this.margins.right,(t?Math.max(r.scrollHeight,r.offsetHeight):r.offsetHeight)-(parseInt(e(r).css("borderTopWidth"),10)||0)-(parseInt(e(r).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top-this.margins.bottom],this.relative_container=n}else i.containment.constructor===Array&&(this.containment=i.containment)},_convertPositionTo:function(t,n){n||(n=this.position);var r=t==="absolute"?1:-1,i=this.cssPosition!=="absolute"||this.scrollParent[0]!==document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,s=/(html|body)/i.test(i[0].tagName);return{top:n.top+this.offset.relative.top*r+this.offset.parent.top*r-(this.cssPosition==="fixed"?-this.scrollParent.scrollTop():s?0:i.scrollTop())*r,left:n.left+this.offset.relative.left*r+this.offset.parent.left*r-(this.cssPosition==="fixed"?-this.scrollParent.scrollLeft():s?0:i.scrollLeft())*r}},_generatePosition:function(t){var n,r,i,s,o=this.options,u=this.cssPosition!=="absolute"||this.scrollParent[0]!==document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,a=/(html|body)/i.test(u[0].tagName),f=t.pageX,l=t.pageY;return this.originalPosition&&(this.containment&&(this.relative_container?(r=this.relative_container.offset(),n=[this.containment[0]+r.left,this.containment[1]+r.top,this.containment[2]+r.left,this.containment[3]+r.top]):n=this.containment,t.pageX-this.offset.click.left<n[0]&&(f=n[0]+this.offset.click.left),t.pageY-this.offset.click.top<n[1]&&(l=n[1]+this.offset.click.top),t.pageX-this.offset.click.left>n[2]&&(f=n[2]+this.offset.click.left),t.pageY-this.offset.click.top>n[3]&&(l=n[3]+this.offset.click.top)),o.grid&&(i=o.grid[1]?this.originalPageY+Math.round((l-this.originalPageY)/o.grid[1])*o.grid[1]:this.originalPageY,l=n?i-this.offset.click.top>=n[1]||i-this.offset.click.top>n[3]?i:i-this.offset.click.top>=n[1]?i-o.grid[1]:i+o.grid[1]:i,s=o.grid[0]?this.originalPageX+Math.round((f-this.originalPageX)/o.grid[0])*o.grid[0]:this.originalPageX,f=n?s-this.offset.click.left>=n[0]||s-this.offset.click.left>n[2]?s:s-this.offset.click.left>=n[0]?s-o.grid[0]:s+o.grid[0]:s)),{top:l-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(this.cssPosition==="fixed"?-this.scrollParent.scrollTop():a?0:u.scrollTop()),left:f-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(this.cssPosition==="fixed"?-this.scrollParent.scrollLeft():a?0:u.scrollLeft())}},_clear:function(){this.helper.removeClass("ui-draggable-dragging"),this.helper[0]!==this.element[0]&&!this.cancelHelperRemoval&&this.helper.remove(),this.helper=null,this.cancelHelperRemoval=!1},_trigger:function(t,n,r){return r=r||this._uiHash(),e.ui.plugin.call(this,t,[n,r]),t==="drag"&&(this.positionAbs=this._convertPositionTo("absolute")),e.Widget.prototype._trigger.call(this,t,n,r)},plugins:{},_uiHash:function(){return{helper:this.helper,position:this.position,originalPosition:this.originalPosition,offset:this.positionAbs}}}),e.ui.plugin.add("draggable","connectToSortable",{start:function(t,n){var r=e(this).data("ui-draggable"),i=r.options,s=e.extend({},n,{item:r.element});r.sortables=[],e(i.connectToSortable).each(function(){var n=e.data(this,"ui-sortable");n&&!n.options.disabled&&(r.sortables.push({instance:n,shouldRevert:n.options.revert}),n.refreshPositions(),n._trigger("activate",t,s))})},stop:function(t,n){var r=e(this).data("ui-draggable"),i=e.extend({},n,{item:r.element});e.each(r.sortables,function(){this.instance.isOver?(this.instance.isOver=0,r.cancelHelperRemoval=!0,this.instance.cancelHelperRemoval=!1,this.shouldRevert&&(this.instance.options.revert=!0),this.instance._mouseStop(t),this.instance.options.helper=this.instance.options._helper,r.options.helper==="original"&&this.instance.currentItem.css({top:"auto",left:"auto"})):(this.instance.cancelHelperRemoval=!1,this.instance._trigger("deactivate",t,i))})},drag:function(t,n){var r=e(this).data("ui-draggable"),i=this;e.each(r.sortables,function(){var s=!1,o=this;this.instance.positionAbs=r.positionAbs,this.instance.helperProportions=r.helperProportions,this.instance.offset.click=r.offset.click,this.instance._intersectsWith(this.instance.containerCache)&&(s=!0,e.each(r.sortables,function(){return this.instance.positionAbs=r.positionAbs,this.instance.helperProportions=r.helperProportions,this.instance.offset.click=r.offset.click,this!==o&&this.instance._intersectsWith(this.instance.containerCache)&&e.ui.contains(o.instance.element[0],this.instance.element[0])&&(s=!1),s})),s?(this.instance.isOver||(this.instance.isOver=1,this.instance.currentItem=e(i).clone().removeAttr("id").appendTo(this.instance.element).data("ui-sortable-item",!0),this.instance.options._helper=this.instance.options.helper,this.instance.options.helper=function(){return n.helper[0]},t.target=this.instance.currentItem[0],this.instance._mouseCapture(t,!0),this.instance._mouseStart(t,!0,!0),this.instance.offset.click.top=r.offset.click.top,this.instance.offset.click.left=r.offset.click.left,this.instance.offset.parent.left-=r.offset.parent.left-this.instance.offset.parent.left,this.instance.offset.parent.top-=r.offset.parent.top-this.instance.offset.parent.top,r._trigger("toSortable",t),r.dropped=this.instance.element,r.currentItem=r.element,this.instance.fromOutside=r),this.instance.currentItem&&this.instance._mouseDrag(t)):this.instance.isOver&&(this.instance.isOver=0,this.instance.cancelHelperRemoval=!0,this.instance.options.revert=!1,this.instance._trigger("out",t,this.instance._uiHash(this.instance)),this.instance._mouseStop(t,!0),this.instance.options.helper=this.instance.options._helper,this.instance.currentItem.remove(),this.instance.placeholder&&this.instance.placeholder.remove(),r._trigger("fromSortable",t),r.dropped=!1)})}}),e.ui.plugin.add("draggable","cursor",{start:function(){var t=e("body"),n=e(this).data("ui-draggable").options;t.css("cursor")&&(n._cursor=t.css("cursor")),t.css("cursor",n.cursor)},stop:function(){var t=e(this).data("ui-draggable").options;t._cursor&&e("body").css("cursor",t._cursor)}}),e.ui.plugin.add("draggable","opacity",{start:function(t,n){var r=e(n.helper),i=e(this).data("ui-draggable").options;r.css("opacity")&&(i._opacity=r.css("opacity")),r.css("opacity",i.opacity)},stop:function(t,n){var r=e(this).data("ui-draggable").options;r._opacity&&e(n.helper).css("opacity",r._opacity)}}),e.ui.plugin.add("draggable","scroll",{start:function(){var t=e(this).data("ui-draggable");t.scrollParent[0]!==document&&t.scrollParent[0].tagName!=="HTML"&&(t.overflowOffset=t.scrollParent.offset())},drag:function(t){var n=e(this).data("ui-draggable"),r=n.options,i=!1;if(n.scrollParent[0]!==document&&n.scrollParent[0].tagName!=="HTML"){if(!r.axis||r.axis!=="x")n.overflowOffset.top+n.scrollParent[0].offsetHeight-t.pageY<r.scrollSensitivity?n.scrollParent[0].scrollTop=i=n.scrollParent[0].scrollTop+r.scrollSpeed:t.pageY-n.overflowOffset.top<r.scrollSensitivity&&(n.scrollParent[0].scrollTop=i=n.scrollParent[0].scrollTop-r.scrollSpeed);if(!r.axis||r.axis!=="y")n.overflowOffset.left+n.scrollParent[0].offsetWidth-t.pageX<r.scrollSensitivity?n.scrollParent[0].scrollLeft=i=n.scrollParent[0].scrollLeft+r.scrollSpeed:t.pageX-n.overflowOffset.left<r.scrollSensitivity&&(n.scrollParent[0].scrollLeft=i=n.scrollParent[0].scrollLeft-r.scrollSpeed)}else{if(!r.axis||r.axis!=="x")t.pageY-e(document).scrollTop()<r.scrollSensitivity?i=e(document).scrollTop(e(document).scrollTop()-r.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<r.scrollSensitivity&&(i=e(document).scrollTop(e(document).scrollTop()+r.scrollSpeed));if(!r.axis||r.axis!=="y")t.pageX-e(document).scrollLeft()<r.scrollSensitivity?i=e(document).scrollLeft(e(document).scrollLeft()-r.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<r.scrollSensitivity&&(i=e(document).scrollLeft(e(document).scrollLeft()+r.scrollSpeed))}i!==!1&&e.ui.ddmanager&&!r.dropBehaviour&&e.ui.ddmanager.prepareOffsets(n,t)}}),e.ui.plugin.add("draggable","snap",{start:function(){var t=e(this).data("ui-draggable"),n=t.options;t.snapElements=[],e(n.snap.constructor!==String?n.snap.items||":data(ui-draggable)":n.snap).each(function(){var n=e(this),r=n.offset();this!==t.element[0]&&t.snapElements.push({item:this,width:n.outerWidth(),height:n.outerHeight(),top:r.top,left:r.left})})},drag:function(t,n){var r,i,s,o,u,a,f,l,c,h,p=e(this).data("ui-draggable"),d=p.options,v=d.snapTolerance,m=n.offset.left,g=m+p.helperProportions.width,y=n.offset.top,b=y+p.helperProportions.height;for(c=p.snapElements.length-1;c>=0;c--){u=p.snapElements[c].left,a=u+p.snapElements[c].width,f=p.snapElements[c].top,l=f+p.snapElements[c].height;if(!(u-v<m&&m<a+v&&f-v<y&&y<l+v||u-v<m&&m<a+v&&f-v<b&&b<l+v||u-v<g&&g<a+v&&f-v<y&&y<l+v||u-v<g&&g<a+v&&f-v<b&&b<l+v)){p.snapElements[c].snapping&&p.options.snap.release&&p.options.snap.release.call(p.element,t,e.extend(p._uiHash(),{snapItem:p.snapElements[c].item})),p.snapElements[c].snapping=!1;continue}d.snapMode!=="inner"&&(r=Math.abs(f-b)<=v,i=Math.abs(l-y)<=v,s=Math.abs(u-g)<=v,o=Math.abs(a-m)<=v,r&&(n.position.top=p._convertPositionTo("relative",{top:f-p.helperProportions.height,left:0}).top-p.margins.top),i&&(n.position.top=p._convertPositionTo("relative",{top:l,left:0}).top-p.margins.top),s&&(n.position.left=p._convertPositionTo("relative",{top:0,left:u-p.helperProportions.width}).left-p.margins.left),o&&(n.position.left=p._convertPositionTo("relative",{top:0,left:a}).left-p.margins.left)),h=r||i||s||o,d.snapMode!=="outer"&&(r=Math.abs(f-y)<=v,i=Math.abs(l-b)<=v,s=Math.abs(u-m)<=v,o=Math.abs(a-g)<=v,r&&(n.position.top=p._convertPositionTo("relative",{top:f,left:0}).top-p.margins.top),i&&(n.position.top=p._convertPositionTo("relative",{top:l-p.helperProportions.height,left:0}).top-p.margins.top),s&&(n.position.left=p._convertPositionTo("relative",{top:0,left:u}).left-p.margins.left),o&&(n.position.left=p._convertPositionTo("relative",{top:0,left:a-p.helperProportions.width}).left-p.margins.left)),!p.snapElements[c].snapping&&(r||i||s||o||h)&&p.options.snap.snap&&p.options.snap.snap.call(p.element,t,e.extend(p._uiHash(),{snapItem:p.snapElements[c].item})),p.snapElements[c].snapping=r||i||s||o||h}}}),e.ui.plugin.add("draggable","stack",{start:function(){var t,n=e(this).data("ui-draggable").options,r=e.makeArray(e(n.stack)).sort(function(t,n){return(parseInt(e(t).css("zIndex"),10)||0)-(parseInt(e(n).css("zIndex"),10)||0)});if(!r.length)return;t=parseInt(r[0].style.zIndex,10)||0,e(r).each(function(e){this.style.zIndex=t+e}),this[0].style.zIndex=t+r.length}}),e.ui.plugin.add("draggable","zIndex",{start:function(t,n){var r=e(n.helper),i=e(this).data("ui-draggable").options;r.css("zIndex")&&(i._zIndex=r.css("zIndex")),r.css("zIndex",i.zIndex)},stop:function(t,n){var r=e(this).data("ui-draggable").options;r._zIndex&&e(n.helper).css("zIndex",r._zIndex)}})}(jQuery),function(e,t){function n(e,t,n){return e>t&&e<t+n}e.widget("ui.droppable",{version:"1.10.0",widgetEventPrefix:"drop",options:{accept:"*",activeClass:!1,addClasses:!0,greedy:!1,hoverClass:!1,scope:"default",tolerance:"intersect",activate:null,deactivate:null,drop:null,out:null,over:null},_create:function(){var t=this.options,n=t.accept;this.isover=!1,this.isout=!0,this.accept=e.isFunction(n)?n:function(e){return e.is(n)},this.proportions={width:this.element[0].offsetWidth,height:this.element[0].offsetHeight},e.ui.ddmanager.droppables[t.scope]=e.ui.ddmanager.droppables[t.scope]||[],e.ui.ddmanager.droppables[t.scope].push(this),t.addClasses&&this.element.addClass("ui-droppable")},_destroy:function(){var t=0,n=e.ui.ddmanager.droppables[this.options.scope];for(;t<n.length;t++)n[t]===this&&n.splice(t,1);this.element.removeClass("ui-droppable ui-droppable-disabled")},_setOption:function(t,n){t==="accept"&&(this.accept=e.isFunction(n)?n:function(e){return e.is(n)}),e.Widget.prototype._setOption.apply(this,arguments)},_activate:function(t){var n=e.ui.ddmanager.current;this.options.activeClass&&this.element.addClass(this.options.activeClass),n&&this._trigger("activate",t,this.ui(n))},_deactivate:function(t){var n=e.ui.ddmanager.current;this.options.activeClass&&this.element.removeClass(this.options.activeClass),n&&this._trigger("deactivate",t,this.ui(n))},_over:function(t){var n=e.ui.ddmanager.current;if(!n||(n.currentItem||n.element)[0]===this.element[0])return;this.accept.call(this.element[0],n.currentItem||n.element)&&(this.options.hoverClass&&this.element.addClass(this.options.hoverClass),this._trigger("over",t,this.ui(n)))},_out:function(t){var n=e.ui.ddmanager.current;if(!n||(n.currentItem||n.element)[0]===this.element[0])return;this.accept.call(this.element[0],n.currentItem||n.element)&&(this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("out",t,this.ui(n)))},_drop:function(t,n){var r=n||e.ui.ddmanager.current,i=!1;return!r||(r.currentItem||r.element)[0]===this.element[0]?!1:(this.element.find(":data(ui-droppable)").not(".ui-draggable-dragging").each(function(){var t=e.data(this,"ui-droppable");if(t.options.greedy&&!t.options.disabled&&t.options.scope===r.options.scope&&t.accept.call(t.element[0],r.currentItem||r.element)&&e.ui.intersect(r,e.extend(t,{offset:t.element.offset()}),t.options.tolerance))return i=!0,!1}),i?!1:this.accept.call(this.element[0],r.currentItem||r.element)?(this.options.activeClass&&this.element.removeClass(this.options.activeClass),this.options.hoverClass&&this.element.removeClass(this.options.hoverClass),this._trigger("drop",t,this.ui(r)),this.element):!1)},ui:function(e){return{draggable:e.currentItem||e.element,helper:e.helper,position:e.position,offset:e.positionAbs}}}),e.ui.intersect=function(e,t,r){if(!t.offset)return!1;var i,s,o=(e.positionAbs||e.position.absolute).left,u=o+e.helperProportions.width,a=(e.positionAbs||e.position.absolute).top,f=a+e.helperProportions.height,l=t.offset.left,c=l+t.proportions.width,h=t.offset.top,p=h+t.proportions.height;switch(r){case"fit":return l<=o&&u<=c&&h<=a&&f<=p;case"intersect":return l<o+e.helperProportions.width/2&&u-e.helperProportions.width/2<c&&h<a+e.helperProportions.height/2&&f-e.helperProportions.height/2<p;case"pointer":return i=(e.positionAbs||e.position.absolute).left+(e.clickOffset||e.offset.click).left,s=(e.positionAbs||e.position.absolute).top+(e.clickOffset||e.offset.click).top,n(s,h,t.proportions.height)&&n(i,l,t.proportions.width);case"touch":return(a>=h&&a<=p||f>=h&&f<=p||a<h&&f>p)&&(o>=l&&o<=c||u>=l&&u<=c||o<l&&u>c);default:return!1}},e.ui.ddmanager={current:null,droppables:{"default":[]},prepareOffsets:function(t,n){var r,i,s=e.ui.ddmanager.droppables[t.options.scope]||[],o=n?n.type:null,u=(t.currentItem||t.element).find(":data(ui-droppable)").addBack();e:for(r=0;r<s.length;r++){if(s[r].options.disabled||t&&!s[r].accept.call(s[r].element[0],t.currentItem||t.element))continue;for(i=0;i<u.length;i++)if(u[i]===s[r].element[0]){s[r].proportions.height=0;continue e}s[r].visible=s[r].element.css("display")!=="none";if(!s[r].visible)continue;o==="mousedown"&&s[r]._activate.call(s[r],n),s[r].offset=s[r].element.offset(),s[r].proportions={width:s[r].element[0].offsetWidth,height:s[r].element[0].offsetHeight}}},drop:function(t,n){var r=!1;return e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(!this.options)return;!this.options.disabled&&this.visible&&e.ui.intersect(t,this,this.options.tolerance)&&(r=this._drop.call(this,n)||r),!this.options.disabled&&this.visible&&this.accept.call(this.element[0],t.currentItem||t.element)&&(this.isout=!0,this.isover=!1,this._deactivate.call(this,n))}),r},dragStart:function(t,n){t.element.parentsUntil("body").bind("scroll.droppable",function(){t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,n)})},drag:function(t,n){t.options.refreshPositions&&e.ui.ddmanager.prepareOffsets(t,n),e.each(e.ui.ddmanager.droppables[t.options.scope]||[],function(){if(this.options.disabled||this.greedyChild||!this.visible)return;var r,i,s,o=e.ui.intersect(t,this,this.options.tolerance),u=!o&&this.isover?"isout":o&&!this.isover?"isover":null;if(!u)return;this.options.greedy&&(i=this.options.scope,s=this.element.parents(":data(ui-droppable)").filter(function(){return e.data(this,"ui-droppable").options.scope===i}),s.length&&(r=e.data(s[0],"ui-droppable"),r.greedyChild=u==="isover")),r&&u==="isover"&&(r.isover=!1,r.isout=!0,r._out.call(r,n)),this[u]=!0,this[u==="isout"?"isover":"isout"]=!1,this[u==="isover"?"_over":"_out"].call(this,n),r&&u==="isout"&&(r.isout=!1,r.isover=!0,r._over.call(r,n))})},dragStop:function(t,n){t.element.parentsUntil("body").unbind("scroll.droppable"),t.options.refreshPositions||e.ui.ddmanager.prepareOffsets(t,n)}}}(jQuery),function(e,t){function n(e){return parseInt(e,10)||0}function r(e){return!isNaN(parseInt(e,10))}e.widget("ui.resizable",e.ui.mouse,{version:"1.10.0",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_create:function(){var t,n,r,i,s,o=this,u=this.options;this.element.addClass("ui-resizable"),e.extend(this,{_aspectRatio:!!u.aspectRatio,aspectRatio:u.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:u.helper||u.ghost||u.animate?u.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(e("<div class='ui-wrapper' style='overflow: hidden;'></div>").css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("ui-resizable",this.element.data("ui-resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=u.handles||(e(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se");if(this.handles.constructor===String){this.handles==="all"&&(this.handles="n,e,s,w,se,sw,ne,nw"),t=this.handles.split(","),this.handles={};for(n=0;n<t.length;n++)r=e.trim(t[n]),s="ui-resizable-"+r,i=e("<div class='ui-resizable-handle "+s+"'></div>"),i.css({zIndex:u.zIndex}),"se"===r&&i.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[r]=".ui-resizable-"+r,this.element.append(i)}this._renderAxis=function(t){var n,r,i,s;t=t||this.element;for(n in this.handles){this.handles[n].constructor===String&&(this.handles[n]=e(this.handles[n],this.element).show()),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)&&(r=e(this.handles[n],this.element),s=/sw|ne|nw|se|n|s/.test(n)?r.outerHeight():r.outerWidth(),i=["padding",/ne|nw|n/.test(n)?"Top":/se|sw|s/.test(n)?"Bottom":/^e$/.test(n)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize());if(!e(this.handles[n]).length)continue}},this._renderAxis(this.element),this._handles=e(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){o.resizing||(this.className&&(i=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),o.axis=i&&i[1]?i[1]:"se")}),u.autoHide&&(this._handles.hide(),e(this.element).addClass("ui-resizable-autohide").mouseenter(function(){if(u.disabled)return;e(this).removeClass("ui-resizable-autohide"),o._handles.show()}).mouseleave(function(){if(u.disabled)return;o.resizing||(e(this).addClass("ui-resizable-autohide"),o._handles.hide())})),this._mouseInit()},_destroy:function(){this._mouseDestroy();var t,n=function(t){e(t).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").removeData("ui-resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(n(this.element),t=this.element,this.originalElement.css({position:t.css("position"),width:t.outerWidth(),height:t.outerHeight(),top:t.css("top"),left:t.css("left")}).insertAfter(t),t.remove()),this.originalElement.css("resize",this.originalResizeStyle),n(this.originalElement),this},_mouseCapture:function(t){var n,r,i=!1;for(n in this.handles){r=e(this.handles[n])[0];if(r===t.target||e.contains(r,t.target))i=!0}return!this.options.disabled&&i},_mouseStart:function(t){var r,i,s,o=this.options,u=this.element.position(),a=this.element;return this.resizing=!0,/absolute/.test(a.css("position"))?a.css({position:"absolute",top:a.css("top"),left:a.css("left")}):a.is(".ui-draggable")&&a.css({position:"absolute",top:u.top,left:u.left}),this._renderProxy(),r=n(this.helper.css("left")),i=n(this.helper.css("top")),o.containment&&(r+=e(o.containment).scrollLeft()||0,i+=e(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:r,top:i},this.size=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.originalPosition={left:r,top:i},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio=typeof o.aspectRatio=="number"?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=e(".ui-resizable-"+this.axis).css("cursor"),e("body").css("cursor",s==="auto"?this.axis+"-resize":s),a.addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var n,r=this.helper,i={},s=this.originalMousePosition,o=this.axis,u=this.position.top,a=this.position.left,f=this.size.width,l=this.size.height,c=t.pageX-s.left||0,h=t.pageY-s.top||0,p=this._change[o];if(!p)return!1;n=p.apply(this,[t,c,h]),this._updateVirtualBoundaries(t.shiftKey);if(this._aspectRatio||t.shiftKey)n=this._updateRatio(n,t);return n=this._respectSize(n,t),this._updateCache(n),this._propagate("resize",t),this.position.top!==u&&(i.top=this.position.top+"px"),this.position.left!==a&&(i.left=this.position.left+"px"),this.size.width!==f&&(i.width=this.size.width+"px"),this.size.height!==l&&(i.height=this.size.height+"px"),r.css(i),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),e.isEmptyObject(i)||this._trigger("resize",t,this.ui()),!1},_mouseStop:function(t){this.resizing=!1;var n,r,i,s,o,u,a,f=this.options,l=this;return this._helper&&(n=this._proportionallyResizeElements,r=n.length&&/textarea/i.test(n[0].nodeName),i=r&&e.ui.hasScroll(n[0],"left")?0:l.sizeDiff.height,s=r?0:l.sizeDiff.width,o={width:l.helper.width()-s,height:l.helper.height()-i},u=parseInt(l.element.css("left"),10)+(l.position.left-l.originalPosition.left)||null,a=parseInt(l.element.css("top"),10)+(l.position.top-l.originalPosition.top)||null,f.animate||this.element.css(e.extend(o,{top:a,left:u})),l.helper.height(l.size.height),l.helper.width(l.size.width),this._helper&&!f.animate&&this._proportionallyResize()),e("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updateVirtualBoundaries:function(e){var t,n,i,s,o,u=this.options;o={minWidth:r(u.minWidth)?u.minWidth:0,maxWidth:r(u.maxWidth)?u.maxWidth:Infinity,minHeight:r(u.minHeight)?u.minHeight:0,maxHeight:r(u.maxHeight)?u.maxHeight:Infinity};if(this._aspectRatio||e)t=o.minHeight*this.aspectRatio,i=o.minWidth/this.aspectRatio,n=o.maxHeight*this.aspectRatio,s=o.maxWidth/this.aspectRatio,t>o.minWidth&&(o.minWidth=t),i>o.minHeight&&(o.minHeight=i),n<o.maxWidth&&(o.maxWidth=n),s<o.maxHeight&&(o.maxHeight=s);this._vBoundaries=o},_updateCache:function(e){this.offset=this.helper.offset(),r(e.left)&&(this.position.left=e.left),r(e.top)&&(this.position.top=e.top),r(e.height)&&(this.size.height=e.height),r(e.width)&&(this.size.width=e.width)},_updateRatio:function(e){var t=this.position,n=this.size,i=this.axis;return r(e.height)?e.width=e.height*this.aspectRatio:r(e.width)&&(e.height=e.width/this.aspectRatio),i==="sw"&&(e.left=t.left+(n.width-e.width),e.top=null),i==="nw"&&(e.top=t.top+(n.height-e.height),e.left=t.left+(n.width-e.width)),e},_respectSize:function(e){var t=this._vBoundaries,n=this.axis,i=r(e.width)&&t.maxWidth&&t.maxWidth<e.width,s=r(e.height)&&t.maxHeight&&t.maxHeight<e.height,o=r(e.width)&&t.minWidth&&t.minWidth>e.width,u=r(e.height)&&t.minHeight&&t.minHeight>e.height,a=this.originalPosition.left+this.originalSize.width,f=this.position.top+this.size.height,l=/sw|nw|w/.test(n),c=/nw|ne|n/.test(n);return o&&(e.width=t.minWidth),u&&(e.height=t.minHeight),i&&(e.width=t.maxWidth),s&&(e.height=t.maxHeight),o&&l&&(e.left=a-t.minWidth),i&&l&&(e.left=a-t.maxWidth),u&&c&&(e.top=f-t.minHeight),s&&c&&(e.top=f-t.maxHeight),!e.width&&!e.height&&!e.left&&e.top?e.top=null:!e.width&&!e.height&&!e.top&&e.left&&(e.left=null),e},_proportionallyResize:function(){if(!this._proportionallyResizeElements.length)return;var e,t,n,r,i,s=this.helper||this.element;for(e=0;e<this._proportionallyResizeElements.length;e++){i=this._proportionallyResizeElements[e];if(!this.borderDif){this.borderDif=[],n=[i.css("borderTopWidth"),i.css("borderRightWidth"),i.css("borderBottomWidth"),i.css("borderLeftWidth")],r=[i.css("paddingTop"),i.css("paddingRight"),i.css("paddingBottom"),i.css("paddingLeft")];for(t=0;t<n.length;t++)this.borderDif[t]=(parseInt(n[t],10)||0)+(parseInt(r[t],10)||0)}i.css({height:s.height()-this.borderDif[0]-this.borderDif[2]||0,width:s.width()-this.borderDif[1]-this.borderDif[3]||0})}},_renderProxy:function(){var t=this.element,n=this.options;this.elementOffset=t.offset(),this._helper?(this.helper=this.helper||e("<div style='overflow:hidden;'></div>"),this.helper.addClass(this._helper).css({width:this.element.outerWidth()-1,height:this.element.outerHeight()-1,position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++n.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(e,t){return{width:this.originalSize.width+t}},w:function(e,t){var n=this.originalSize,r=this.originalPosition;return{left:r.left+t,width:n.width-t}},n:function(e,t,n){var r=this.originalSize,i=this.originalPosition;return{top:i.top+n,height:r.height-n}},s:function(e,t,n){return{height:this.originalSize.height+n}},se:function(t,n,r){return e.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,n,r]))},sw:function(t,n,r){return e.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,n,r]))},ne:function(t,n,r){return e.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,n,r]))},nw:function(t,n,r){return e.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,n,r]))}},_propagate:function(t,n){e.ui.plugin.call(this,t,[n,this.ui()]),t!=="resize"&&this._trigger(t,n,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),e.ui.plugin.add("resizable","animate",{stop:function(t){var n=e(this).data("ui-resizable"),r=n.options,i=n._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),o=s&&e.ui.hasScroll(i[0],"left")?0:n.sizeDiff.height,u=s?0:n.sizeDiff.width,a={width:n.size.width-u,height:n.size.height-o},f=parseInt(n.element.css("left"),10)+(n.position.left-n.originalPosition.left)||null,l=parseInt(n.element.css("top"),10)+(n.position.top-n.originalPosition.top)||null;n.element.animate(e.extend(a,l&&f?{top:l,left:f}:{}),{duration:r.animateDuration,easing:r.animateEasing,step:function(){var r={width:parseInt(n.element.css("width"),10),height:parseInt(n.element.css("height"),10),top:parseInt(n.element.css("top"),10),left:parseInt(n.element.css("left"),10)};i&&i.length&&e(i[0]).css({width:r.width,height:r.height}),n._updateCache(r),n._propagate("resize",t)}})}}),e.ui.plugin.add("resizable","containment",{start:function(){var t,r,i,s,o,u,a,f=e(this).data("ui-resizable"),l=f.options,c=f.element,h=l.containment,p=h instanceof e?h.get(0):/parent/.test(h)?c.parent().get(0):h;if(!p)return;f.containerElement=e(p),/document/.test(h)||h===document?(f.containerOffset={left:0,top:0},f.containerPosition={left:0,top:0},f.parentData={element:e(document),left:0,top:0,width:e(document).width(),height:e(document).height()||document.body.parentNode.scrollHeight}):(t=e(p),r=[],e(["Top","Right","Left","Bottom"]).each(function(e,i){r[e]=n(t.css("padding"+i))}),f.containerOffset=t.offset(),f.containerPosition=t.position(),f.containerSize={height:t.innerHeight()-r[3],width:t.innerWidth()-r[1]},i=f.containerOffset,s=f.containerSize.height,o=f.containerSize.width,u=e.ui.hasScroll(p,"left")?p.scrollWidth:o,a=e.ui.hasScroll(p)?p.scrollHeight:s,f.parentData={element:p,left:i.left,top:i.top,width:u,height:a})},resize:function(t){var n,r,i,s,o=e(this).data("ui-resizable"),u=o.options,a=o.containerOffset,f=o.position,l=o._aspectRatio||t.shiftKey,c={top:0,left:0},h=o.containerElement;h[0]!==document&&/static/.test(h.css("position"))&&(c=a),f.left<(o._helper?a.left:0)&&(o.size.width=o.size.width+(o._helper?o.position.left-a.left:o.position.left-c.left),l&&(o.size.height=o.size.width/o.aspectRatio),o.position.left=u.helper?a.left:0),f.top<(o._helper?a.top:0)&&(o.size.height=o.size.height+(o._helper?o.position.top-a.top:o.position.top),l&&(o.size.width=o.size.height*o.aspectRatio),o.position.top=o._helper?a.top:0),o.offset.left=o.parentData.left+o.position.left,o.offset.top=o.parentData.top+o.position.top,n=Math.abs((o._helper?o.offset.left-c.left:o.offset.left-c.left)+o.sizeDiff.width),r=Math.abs((o._helper?o.offset.top-c.top:o.offset.top-a.top)+o.sizeDiff.height),i=o.containerElement.get(0)===o.element.parent().get(0),s=/relative|absolute/.test(o.containerElement.css("position")),i&&s&&(n-=o.parentData.left),n+o.size.width>=o.parentData.width&&(o.size.width=o.parentData.width-n,l&&(o.size.height=o.size.width/o.aspectRatio)),r+o.size.height>=o.parentData.height&&(o.size.height=o.parentData.height-r,l&&(o.size.width=o.size.height*o.aspectRatio))},stop:function(){var t=e(this).data("ui-resizable"),n=t.options,r=t.containerOffset,i=t.containerPosition,s=t.containerElement,o=e(t.helper),u=o.offset(),a=o.outerWidth()-t.sizeDiff.width,f=o.outerHeight()-t.sizeDiff.height;t._helper&&!n.animate&&/relative/.test(s.css("position"))&&e(this).css({left:u.left-i.left-r.left,width:a,height:f}),t._helper&&!n.animate&&/static/.test(s.css("position"))&&e(this).css({left:u.left-i.left-r.left,width:a,height:f})}}),e.ui.plugin.add("resizable","alsoResize",{start:function(){var t=e(this).data("ui-resizable"),n=t.options,r=function(t){e(t).each(function(){var t=e(this);t.data("ui-resizable-alsoresize",{width:parseInt(t.width(),10),height:parseInt(t.height(),10),left:parseInt(t.css("left"),10),top:parseInt(t.css("top"),10)})})};typeof n.alsoResize=="object"&&!n.alsoResize.parentNode?n.alsoResize.length?(n.alsoResize=n.alsoResize[0],r(n.alsoResize)):e.each(n.alsoResize,function(e){r(e)}):r(n.alsoResize)},resize:function(t,n){var r=e(this).data("ui-resizable"),i=r.options,s=r.originalSize,o=r.originalPosition,u={height:r.size.height-s.height||0,width:r.size.width-s.width||0,top:r.position.top-o.top||0,left:r.position.left-o.left||0},a=function(t,r){e(t).each(function(){var t=e(this),i=e(this).data("ui-resizable-alsoresize"),s={},o=r&&r.length?r:t.parents(n.originalElement[0]).length?["width","height"]:["width","height","top","left"];e.each(o,function(e,t){var n=(i[t]||0)+(u[t]||0);n&&n>=0&&(s[t]=n||null)}),t.css(s)})};typeof i.alsoResize=="object"&&!i.alsoResize.nodeType?e.each(i.alsoResize,function(e,t){a(e,t)}):a(i.alsoResize)},stop:function(){e(this).removeData("resizable-alsoresize")}}),e.ui.plugin.add("resizable","ghost",{start:function(){var t=e(this).data("ui-resizable"),n=t.options,r=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:r.height,width:r.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof n.ghost=="string"?n.ghost:""),t.ghost.appendTo(t.helper)},resize:function(){var t=e(this).data("ui-resizable");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=e(this).data("ui-resizable");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),e.ui.plugin.add("resizable","grid",{resize:function(){var t=e(this).data("ui-resizable"),n=t.options,r=t.size,i=t.originalSize,s=t.originalPosition,o=t.axis,u=typeof n.grid=="number"?[n.grid,n.grid]:n.grid,a=u[0]||1,f=u[1]||1,l=Math.round((r.width-i.width)/a)*a,c=Math.round((r.height-i.height)/f)*f,h=i.width+l,p=i.height+c,d=n.maxWidth&&n.maxWidth<h,v=n.maxHeight&&n.maxHeight<p,m=n.minWidth&&n.minWidth>h,g=n.minHeight&&n.minHeight>p;n.grid=u,m&&(h+=a),g&&(p+=f),d&&(h-=a),v&&(p-=f),/^(se|s|e)$/.test(o)?(t.size.width=h,t.size.height=p):/^(ne)$/.test(o)?(t.size.width=h,t.size.height=p,t.position.top=s.top-c):/^(sw)$/.test(o)?(t.size.width=h,t.size.height=p,t.position.left=s.left-l):(t.size.width=h,t.size.height=p,t.position.top=s.top-c,t.position.left=s.left-l)}})}(jQuery),function(e,t){e.widget("ui.selectable",e.ui.mouse,{version:"1.10.0",options:{appendTo:"body",autoRefresh:!0,distance:0,filter:"*",tolerance:"touch",selected:null,selecting:null,start:null,stop:null,unselected:null,unselecting:null},_create:function(){var t,n=this;this.element.addClass("ui-selectable"),this.dragged=!1,this.refresh=function(){t=e(n.options.filter,n.element[0]),t.addClass("ui-selectee"),t.each(function(){var t=e(this),n=t.offset();e.data(this,"selectable-item",{element:this,$element:t,left:n.left,top:n.top,right:n.left+t.outerWidth(),bottom:n.top+t.outerHeight(),startselected:!1,selected:t.hasClass("ui-selected"),selecting:t.hasClass("ui-selecting"),unselecting:t.hasClass("ui-unselecting")})})},this.refresh(),this.selectees=t.addClass("ui-selectee"),this._mouseInit(),this.helper=e("<div class='ui-selectable-helper'></div>")},_destroy:function(){this.selectees.removeClass("ui-selectee").removeData("selectable-item"),this.element.removeClass("ui-selectable ui-selectable-disabled"),this._mouseDestroy()},_mouseStart:function(t){var n=this,r=this.options;this.opos=[t.pageX,t.pageY];if(this.options.disabled)return;this.selectees=e(r.filter,this.element[0]),this._trigger("start",t),e(r.appendTo).append(this.helper),this.helper.css({left:t.pageX,top:t.pageY,width:0,height:0}),r.autoRefresh&&this.refresh(),this.selectees.filter(".ui-selected").each(function(){var r=e.data(this,"selectable-item");r.startselected=!0,!t.metaKey&&!t.ctrlKey&&(r.$element.removeClass("ui-selected"),r.selected=!1,r.$element.addClass("ui-unselecting"),r.unselecting=!0,n._trigger("unselecting",t,{unselecting:r.element}))}),e(t.target).parents().addBack().each(function(){var r,i=e.data(this,"selectable-item");if(i)return r=!t.metaKey&&!t.ctrlKey||!i.$element.hasClass("ui-selected"),i.$element.removeClass(r?"ui-unselecting":"ui-selected").addClass(r?"ui-selecting":"ui-unselecting"),i.unselecting=!r,i.selecting=r,i.selected=r,r?n._trigger("selecting",t,{selecting:i.element}):n._trigger("unselecting",t,{unselecting:i.element}),!1})},_mouseDrag:function(t){this.dragged=!0;if(this.options.disabled)return;var n,r=this,i=this.options,s=this.opos[0],o=this.opos[1],u=t.pageX,a=t.pageY;return s>u&&(n=u,u=s,s=n),o>a&&(n=a,a=o,o=n),this.helper.css({left:s,top:o,width:u-s,height:a-o}),this.selectees.each(function(){var n=e.data(this,"selectable-item"),f=!1;if(!n||n.element===r.element[0])return;i.tolerance==="touch"?f=!(n.left>u||n.right<s||n.top>a||n.bottom<o):i.tolerance==="fit"&&(f=n.left>s&&n.right<u&&n.top>o&&n.bottom<a),f?(n.selected&&(n.$element.removeClass("ui-selected"),n.selected=!1),n.unselecting&&(n.$element.removeClass("ui-unselecting"),n.unselecting=!1),n.selecting||(n.$element.addClass("ui-selecting"),n.selecting=!0,r._trigger("selecting",t,{selecting:n.element}))):(n.selecting&&((t.metaKey||t.ctrlKey)&&n.startselected?(n.$element.removeClass("ui-selecting"),n.selecting=!1,n.$element.addClass("ui-selected"),n.selected=!0):(n.$element.removeClass("ui-selecting"),n.selecting=!1,n.startselected&&(n.$element.addClass("ui-unselecting"),n.unselecting=!0),r._trigger("unselecting",t,{unselecting:n.element}))),n.selected&&!t.metaKey&&!t.ctrlKey&&!n.startselected&&(n.$element.removeClass("ui-selected"),n.selected=!1,n.$element.addClass("ui-unselecting"),n.unselecting=!0,r._trigger("unselecting",t,{unselecting:n.element})))}),!1},_mouseStop:function(t){var n=this;return this.dragged=!1,e(".ui-unselecting",this.element[0]).each(function(){var r=e.data(this,"selectable-item");r.$element.removeClass("ui-unselecting"),r.unselecting=!1,r.startselected=!1,n._trigger("unselected",t,{unselected:r.element})}),e(".ui-selecting",this.element[0]).each(function(){var r=e.data(this,"selectable-item");r.$element.removeClass("ui-selecting").addClass("ui-selected"),r.selecting=!1,r.selected=!0,r.startselected=!0,n._trigger("selected",t,{selected:r.element})}),this._trigger("stop",t),this.helper.remove(),!1}})}(jQuery),function(e,t){function n(e,t,n){return e>t&&e<t+n}e.widget("ui.sortable",e.ui.mouse,{version:"1.10.0",widgetEventPrefix:"sort",ready:!1,options:{appendTo:"parent",axis:!1,connectWith:!1,containment:!1,cursor:"auto",cursorAt:!1,dropOnEmpty:!0,forcePlaceholderSize:!1,forceHelperSize:!1,grid:!1,handle:!1,helper:"original",items:"> *",opacity:!1,placeholder:!1,revert:!1,scroll:!0,scrollSensitivity:20,scrollSpeed:20,scope:"default",tolerance:"intersect",zIndex:1e3,activate:null,beforeStop:null,change:null,deactivate:null,out:null,over:null,receive:null,remove:null,sort:null,start:null,stop:null,update:null},_create:function(){var e=this.options;this.containerCache={},this.element.addClass("ui-sortable"),this.refresh(),this.floating=this.items.length?e.axis==="x"||/left|right/.test(this.items[0].item.css("float"))||/inline|table-cell/.test(this.items[0].item.css("display")):!1,this.offset=this.element.offset(),this._mouseInit(),this.ready=!0},_destroy:function(){this.element.removeClass("ui-sortable ui-sortable-disabled"),this._mouseDestroy();for(var e=this.items.length-1;e>=0;e--)this.items[e].item.removeData(this.widgetName+"-item");return this},_setOption:function(t,n){t==="disabled"?(this.options[t]=n,this.widget().toggleClass("ui-sortable-disabled",!!n)):e.Widget.prototype._setOption.apply(this,arguments)},_mouseCapture:function(t,n){var r=null,i=!1,s=this;if(this.reverting)return!1;if(this.options.disabled||this.options.type==="static")return!1;this._refreshItems(t),e(t.target).parents().each(function(){if(e.data(this,s.widgetName+"-item")===s)return r=e(this),!1}),e.data(t.target,s.widgetName+"-item")===s&&(r=e(t.target));if(!r)return!1;if(this.options.handle&&!n){e(this.options.handle,r).find("*").addBack().each(function(){this===t.target&&(i=!0)});if(!i)return!1}return this.currentItem=r,this._removeCurrentsFromItems(),!0},_mouseStart:function(t,n,r){var i,s=this.options;this.currentContainer=this,this.refreshPositions(),this.helper=this._createHelper(t),this._cacheHelperProportions(),this._cacheMargins(),this.scrollParent=this.helper.scrollParent(),this.offset=this.currentItem.offset(),this.offset={top:this.offset.top-this.margins.top,left:this.offset.left-this.margins.left},e.extend(this.offset,{click:{left:t.pageX-this.offset.left,top:t.pageY-this.offset.top},parent:this._getParentOffset(),relative:this._getRelativeOffset()}),this.helper.css("position","absolute"),this.cssPosition=this.helper.css("position"),this.originalPosition=this._generatePosition(t),this.originalPageX=t.pageX,this.originalPageY=t.pageY,s.cursorAt&&this._adjustOffsetFromHelper(s.cursorAt),this.domPosition={prev:this.currentItem.prev()[0],parent:this.currentItem.parent()[0]},this.helper[0]!==this.currentItem[0]&&this.currentItem.hide(),this._createPlaceholder(),s.containment&&this._setContainment(),s.cursor&&(e("body").css("cursor")&&(this._storedCursor=e("body").css("cursor")),e("body").css("cursor",s.cursor)),s.opacity&&(this.helper.css("opacity")&&(this._storedOpacity=this.helper.css("opacity")),this.helper.css("opacity",s.opacity)),s.zIndex&&(this.helper.css("zIndex")&&(this._storedZIndex=this.helper.css("zIndex")),this.helper.css("zIndex",s.zIndex)),this.scrollParent[0]!==document&&this.scrollParent[0].tagName!=="HTML"&&(this.overflowOffset=this.scrollParent.offset()),this._trigger("start",t,this._uiHash()),this._preserveHelperProportions||this._cacheHelperProportions();if(!r)for(i=this.containers.length-1;i>=0;i--)this.containers[i]._trigger("activate",t,this._uiHash(this));return e.ui.ddmanager&&(e.ui.ddmanager.current=this),e.ui.ddmanager&&!s.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t),this.dragging=!0,this.helper.addClass("ui-sortable-helper"),this._mouseDrag(t),!0},_mouseDrag:function(t){var n,r,i,s,o=this.options,u=!1;this.position=this._generatePosition(t),this.positionAbs=this._convertPositionTo("absolute"),this.lastPositionAbs||(this.lastPositionAbs=this.positionAbs),this.options.scroll&&(this.scrollParent[0]!==document&&this.scrollParent[0].tagName!=="HTML"?(this.overflowOffset.top+this.scrollParent[0].offsetHeight-t.pageY<o.scrollSensitivity?this.scrollParent[0].scrollTop=u=this.scrollParent[0].scrollTop+o.scrollSpeed:t.pageY-this.overflowOffset.top<o.scrollSensitivity&&(this.scrollParent[0].scrollTop=u=this.scrollParent[0].scrollTop-o.scrollSpeed),this.overflowOffset.left+this.scrollParent[0].offsetWidth-t.pageX<o.scrollSensitivity?this.scrollParent[0].scrollLeft=u=this.scrollParent[0].scrollLeft+o.scrollSpeed:t.pageX-this.overflowOffset.left<o.scrollSensitivity&&(this.scrollParent[0].scrollLeft=u=this.scrollParent[0].scrollLeft-o.scrollSpeed)):(t.pageY-e(document).scrollTop()<o.scrollSensitivity?u=e(document).scrollTop(e(document).scrollTop()-o.scrollSpeed):e(window).height()-(t.pageY-e(document).scrollTop())<o.scrollSensitivity&&(u=e(document).scrollTop(e(document).scrollTop()+o.scrollSpeed)),t.pageX-e(document).scrollLeft()<o.scrollSensitivity?u=e(document).scrollLeft(e(document).scrollLeft()-o.scrollSpeed):e(window).width()-(t.pageX-e(document).scrollLeft())<o.scrollSensitivity&&(u=e(document).scrollLeft(e(document).scrollLeft()+o.scrollSpeed))),u!==!1&&e.ui.ddmanager&&!o.dropBehaviour&&e.ui.ddmanager.prepareOffsets(this,t)),this.positionAbs=this._convertPositionTo("absolute");if(!this.options.axis||this.options.axis!=="y")this.helper[0].style.left=this.position.left+"px";if(!this.options.axis||this.options.axis!=="x")this.helper[0].style.top=this.position.top+"px";for(n=this.items.length-1;n>=0;n--){r=this.items[n],i=r.item[0],s=this._intersectsWithPointer(r);if(!s)continue;if(r.instance!==this.currentContainer)continue;if(i!==this.currentItem[0]&&this.placeholder[s===1?"next":"prev"]()[0]!==i&&!e.contains(this.placeholder[0],i)&&(this.options.type==="semi-dynamic"?!e.contains(this.element[0],i):!0)){this.direction=s===1?"down":"up";if(this.options.tolerance!=="pointer"&&!this._intersectsWithSides(r))break;this._rearrange(t,r),this._trigger("change",t,this._uiHash());break}}return this._contactContainers(t),e.ui.ddmanager&&e.ui.ddmanager.drag(this,t),this._trigger("sort",t,this._uiHash()),this.lastPositionAbs=this.positionAbs,!1},_mouseStop:function(t,n){if(!t)return;e.ui.ddmanager&&!this.options.dropBehaviour&&e.ui.ddmanager.drop(this,t);if(this.options.revert){var r=this,i=this.placeholder.offset();this.reverting=!0,e(this.helper).animate({left:i.left-this.offset.parent.left-this.margins.left+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollLeft),top:i.top-this.offset.parent.top-this.margins.top+(this.offsetParent[0]===document.body?0:this.offsetParent[0].scrollTop)},parseInt(this.options.revert,10)||500,function(){r._clear(t)})}else this._clear(t,n);return!1},cancel:function(){if(this.dragging){this._mouseUp({target:null}),this.options.helper==="original"?this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper"):this.currentItem.show();for(var t=this.containers.length-1;t>=0;t--)this.containers[t]._trigger("deactivate",null,this._uiHash(this)),this.containers[t].containerCache.over&&(this.containers[t]._trigger("out",null,this._uiHash(this)),this.containers[t].containerCache.over=0)}return this.placeholder&&(this.placeholder[0].parentNode&&this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.options.helper!=="original"&&this.helper&&this.helper[0].parentNode&&this.helper.remove(),e.extend(this,{helper:null,dragging:!1,reverting:!1,_noFinalSort:null}),this.domPosition.prev?e(this.domPosition.prev).after(this.currentItem):e(this.domPosition.parent).prepend(this.currentItem)),this},serialize:function(t){var n=this._getItemsAsjQuery(t&&t.connected),r=[];return t=t||{},e(n).each(function(){var n=(e(t.item||this).attr(t.attribute||"id")||"").match(t.expression||/(.+)[\-=_](.+)/);n&&r.push((t.key||n[1]+"[]")+"="+(t.key&&t.expression?n[1]:n[2]))}),!r.length&&t.key&&r.push(t.key+"="),r.join("&")},toArray:function(t){var n=this._getItemsAsjQuery(t&&t.connected),r=[];return t=t||{},n.each(function(){r.push(e(t.item||this).attr(t.attribute||"id")||"")}),r},_intersectsWith:function(e){var t=this.positionAbs.left,n=t+this.helperProportions.width,r=this.positionAbs.top,i=r+this.helperProportions.height,s=e.left,o=s+e.width,u=e.top,a=u+e.height,f=this.offset.click.top,l=this.offset.click.left,c=r+f>u&&r+f<a&&t+l>s&&t+l<o;return this.options.tolerance==="pointer"||this.options.forcePointerForContainers||this.options.tolerance!=="pointer"&&this.helperProportions[this.floating?"width":"height"]>e[this.floating?"width":"height"]?c:s<t+this.helperProportions.width/2&&n-this.helperProportions.width/2<o&&u<r+this.helperProportions.height/2&&i-this.helperProportions.height/2<a},_intersectsWithPointer:function(e){var t=this.options.axis==="x"||n(this.positionAbs.top+this.offset.click.top,e.top,e.height),r=this.options.axis==="y"||n(this.positionAbs.left+this.offset.click.left,e.left,e.width),i=t&&r,s=this._getDragVerticalDirection(),o=this._getDragHorizontalDirection();return i?this.floating?o&&o==="right"||s==="down"?2:1:s&&(s==="down"?2:1):!1},_intersectsWithSides:function(e){var t=n(this.positionAbs.top+this.offset.click.top,e.top+e.height/2,e.height),r=n(this.positionAbs.left+this.offset.click.left,e.left+e.width/2,e.width),i=this._getDragVerticalDirection(),s=this._getDragHorizontalDirection();return this.floating&&s?s==="right"&&r||s==="left"&&!r:i&&(i==="down"&&t||i==="up"&&!t)},_getDragVerticalDirection:function(){var e=this.positionAbs.top-this.lastPositionAbs.top;return e!==0&&(e>0?"down":"up")},_getDragHorizontalDirection:function(){var e=this.positionAbs.left-this.lastPositionAbs.left;return e!==0&&(e>0?"right":"left")},refresh:function(e){return this._refreshItems(e),this.refreshPositions(),this},_connectWith:function(){var e=this.options;return e.connectWith.constructor===String?[e.connectWith]:e.connectWith},_getItemsAsjQuery:function(t){var n,r,i,s,o=[],u=[],a=this._connectWith();if(a&&t)for(n=a.length-1;n>=0;n--){i=e(a[n]);for(r=i.length-1;r>=0;r--)s=e.data(i[r],this.widgetFullName),s&&s!==this&&!s.options.disabled&&u.push([e.isFunction(s.options.items)?s.options.items.call(s.element):e(s.options.items,s.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),s])}u.push([e.isFunction(this.options.items)?this.options.items.call(this.element,null,{options:this.options,item:this.currentItem}):e(this.options.items,this.element).not(".ui-sortable-helper").not(".ui-sortable-placeholder"),this]);for(n=u.length-1;n>=0;n--)u[n][0].each(function(){o.push(this)});return e(o)},_removeCurrentsFromItems:function(){var t=this.currentItem.find(":data("+this.widgetName+"-item)");this.items=e.grep(this.items,function(e){for(var n=0;n<t.length;n++)if(t[n]===e.item[0])return!1;return!0})},_refreshItems:function(t){this.items=[],this.containers=[this];var n,r,i,s,o,u,a,f,l=this.items,c=[[e.isFunction(this.options.items)?this.options.items.call(this.element[0],t,{item:this.currentItem}):e(this.options.items,this.element),this]],h=this._connectWith();if(h&&this.ready)for(n=h.length-1;n>=0;n--){i=e(h[n]);for(r=i.length-1;r>=0;r--)s=e.data(i[r],this.widgetFullName),s&&s!==this&&!s.options.disabled&&(c.push([e.isFunction(s.options.items)?s.options.items.call(s.element[0],t,{item:this.currentItem}):e(s.options.items,s.element),s]),this.containers.push(s))}for(n=c.length-1;n>=0;n--){o=c[n][1],u=c[n][0];for(r=0,f=u.length;r<f;r++)a=e(u[r]),a.data(this.widgetName+"-item",o),l.push({item:a,instance:o,width:0,height:0,left:0,top:0})}},refreshPositions:function(t){this.offsetParent&&this.helper&&(this.offset.parent=this._getParentOffset());var n,r,i,s;for(n=this.items.length-1;n>=0;n--){r=this.items[n];if(r.instance!==this.currentContainer&&this.currentContainer&&r.item[0]!==this.currentItem[0])continue;i=this.options.toleranceElement?e(this.options.toleranceElement,r.item):r.item,t||(r.width=i.outerWidth(),r.height=i.outerHeight()),s=i.offset(),r.left=s.left,r.top=s.top}if(this.options.custom&&this.options.custom.refreshContainers)this.options.custom.refreshContainers.call(this);else for(n=this.containers.length-1;n>=0;n--)s=this.containers[n].element.offset(),this.containers[n].containerCache.left=s.left,this.containers[n].containerCache.top=s.top,this.containers[n].containerCache.width=this.containers[n].element.outerWidth(),this.containers[n].containerCache.height=this.containers[n].element.outerHeight();return this},_createPlaceholder:function(t){t=t||this;var n,r=t.options;if(!r.placeholder||r.placeholder.constructor===String)n=r.placeholder,r.placeholder={element:function(){var r=e(document.createElement(t.currentItem[0].nodeName)).addClass(n||t.currentItem[0].className+" ui-sortable-placeholder").removeClass("ui-sortable-helper")[0];return n||(r.style.visibility="hidden"),r},update:function(e,i){if(n&&!r.forcePlaceholderSize)return;i.height()||i.height(t.currentItem.innerHeight()-parseInt(t.currentItem.css("paddingTop")||0,10)-parseInt(t.currentItem.css("paddingBottom")||0,10)),i.width()||i.width(t.currentItem.innerWidth()-parseInt(t.currentItem.css("paddingLeft")||0,10)-parseInt(t.currentItem.css("paddingRight")||0,10))}};t.placeholder=e(r.placeholder.element.call(t.element,t.currentItem)),t.currentItem.after(t.placeholder),r.placeholder.update(t,t.placeholder)},_contactContainers:function(t){var n,r,i,s,o,u,a,f,l,c=null,h=null;for(n=this.containers.length-1;n>=0;n--){if(e.contains(this.currentItem[0],this.containers[n].element[0]))continue;if(this._intersectsWith(this.containers[n].containerCache)){if(c&&e.contains(this.containers[n].element[0],c.element[0]))continue;c=this.containers[n],h=n}else this.containers[n].containerCache.over&&(this.containers[n]._trigger("out",t,this._uiHash(this)),this.containers[n].containerCache.over=0)}if(!c)return;if(this.containers.length===1)this.containers[h]._trigger("over",t,this._uiHash(this)),this.containers[h].containerCache.over=1;else{i=1e4,s=null,o=this.containers[h].floating?"left":"top",u=this.containers[h].floating?"width":"height",a=this.positionAbs[o]+this.offset.click[o];for(r=this.items.length-1;r>=0;r--){if(!e.contains(this.containers[h].element[0],this.items[r].item[0]))continue;if(this.items[r].item[0]===this.currentItem[0])continue;f=this.items[r].item.offset()[o],l=!1,Math.abs(f-a)>Math.abs(f+this.items[r][u]-a)&&(l=!0,f+=this.items[r][u]),Math.abs(f-a)<i&&(i=Math.abs(f-a),s=this.items[r],this.direction=l?"up":"down")}if(!s&&!this.options.dropOnEmpty)return;this.currentContainer=this.containers[h],s?this._rearrange(t,s,null,!0):this._rearrange(t,null,this.containers[h].element,!0),this._trigger("change",t,this._uiHash()),this.containers[h]._trigger("change",t,this._uiHash(this)),this.options.placeholder.update(this.currentContainer,this.placeholder),this.containers[h]._trigger("over",t,this._uiHash(this)),this.containers[h].containerCache.over=1}},_createHelper:function(t){var n=this.options,r=e.isFunction(n.helper)?e(n.helper.apply(this.element[0],[t,this.currentItem])):n.helper==="clone"?this.currentItem.clone():this.currentItem;return r.parents("body").length||e(n.appendTo!=="parent"?n.appendTo:this.currentItem[0].parentNode)[0].appendChild(r[0]),r[0]===this.currentItem[0]&&(this._storedCSS={width:this.currentItem[0].style.width,height:this.currentItem[0].style.height,position:this.currentItem.css("position"),top:this.currentItem.css("top"),left:this.currentItem.css("left")}),(!r[0].style.width||n.forceHelperSize)&&r.width(this.currentItem.width()),(!r[0].style.height||n.forceHelperSize)&&r.height(this.currentItem.height()),r},_adjustOffsetFromHelper:function(t){typeof t=="string"&&(t=t.split(" ")),e.isArray(t)&&(t={left:+t[0],top:+t[1]||0}),"left"in t&&(this.offset.click.left=t.left+this.margins.left),"right"in t&&(this.offset.click.left=this.helperProportions.width-t.right+this.margins.left),"top"in t&&(this.offset.click.top=t.top+this.margins.top),"bottom"in t&&(this.offset.click.top=this.helperProportions.height-t.bottom+this.margins.top)},_getParentOffset:function(){this.offsetParent=this.helper.offsetParent();var t=this.offsetParent.offset();this.cssPosition==="absolute"&&this.scrollParent[0]!==document&&e.contains(this.scrollParent[0],this.offsetParent[0])&&(t.left+=this.scrollParent.scrollLeft(),t.top+=this.scrollParent.scrollTop());if(this.offsetParent[0]===document.body||this.offsetParent[0].tagName&&this.offsetParent[0].tagName.toLowerCase()==="html"&&e.ui.ie)t={top:0,left:0};return{top:t.top+(parseInt(this.offsetParent.css("borderTopWidth"),10)||0),left:t.left+(parseInt(this.offsetParent.css("borderLeftWidth"),10)||0)}},_getRelativeOffset:function(){if(this.cssPosition==="relative"){var e=this.currentItem.position();return{top:e.top-(parseInt(this.helper.css("top"),10)||0)+this.scrollParent.scrollTop(),left:e.left-(parseInt(this.helper.css("left"),10)||0)+this.scrollParent.scrollLeft()}}return{top:0,left:0}},_cacheMargins:function(){this.margins={left:parseInt(this.currentItem.css("marginLeft"),10)||0,top:parseInt(this.currentItem.css("marginTop"),10)||0}},_cacheHelperProportions:function(){this.helperProportions={width:this.helper.outerWidth(),height:this.helper.outerHeight()}},_setContainment:function(){var t,n,r,i=this.options;i.containment==="parent"&&(i.containment=this.helper[0].parentNode);if(i.containment==="document"||i.containment==="window")this.containment=[0-this.offset.relative.left-this.offset.parent.left,0-this.offset.relative.top-this.offset.parent.top,e(i.containment==="document"?document:window).width()-this.helperProportions.width-this.margins.left,(e(i.containment==="document"?document:window).height()||document.body.parentNode.scrollHeight)-this.helperProportions.height-this.margins.top];/^(document|window|parent)$/.test(i.containment)||(t=e(i.containment)[0],n=e(i.containment).offset(),r=e(t).css("overflow")!=="hidden",this.containment=[n.left+(parseInt(e(t).css("borderLeftWidth"),10)||0)+(parseInt(e(t).css("paddingLeft"),10)||0)-this.margins.left,n.top+(parseInt(e(t).css("borderTopWidth"),10)||0)+(parseInt(e(t).css("paddingTop"),10)||0)-this.margins.top,n.left+(r?Math.max(t.scrollWidth,t.offsetWidth):t.offsetWidth)-(parseInt(e(t).css("borderLeftWidth"),10)||0)-(parseInt(e(t).css("paddingRight"),10)||0)-this.helperProportions.width-this.margins.left,n.top+(r?Math.max(t.scrollHeight,t.offsetHeight):t.offsetHeight)-(parseInt(e(t).css("borderTopWidth"),10)||0)-(parseInt(e(t).css("paddingBottom"),10)||0)-this.helperProportions.height-this.margins.top])},_convertPositionTo:function(t,n){n||(n=this.position);var r=t==="absolute"?1:-1,i=this.cssPosition!=="absolute"||this.scrollParent[0]!==document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,s=/(html|body)/i.test(i[0].tagName);return{top:n.top+this.offset.relative.top*r+this.offset.parent.top*r-(this.cssPosition==="fixed"?-this.scrollParent.scrollTop():s?0:i.scrollTop())*r,left:n.left+this.offset.relative.left*r+this.offset.parent.left*r-(this.cssPosition==="fixed"?-this.scrollParent.scrollLeft():s?0:i.scrollLeft())*r}},_generatePosition:function(t){var n,r,i=this.options,s=t.pageX,o=t.pageY,u=this.cssPosition!=="absolute"||this.scrollParent[0]!==document&&!!e.contains(this.scrollParent[0],this.offsetParent[0])?this.scrollParent:this.offsetParent,a=/(html|body)/i.test(u[0].tagName);return this.cssPosition==="relative"&&(this.scrollParent[0]===document||this.scrollParent[0]===this.offsetParent[0])&&(this.offset.relative=this._getRelativeOffset()),this.originalPosition&&(this.containment&&(t.pageX-this.offset.click.left<this.containment[0]&&(s=this.containment[0]+this.offset.click.left),t.pageY-this.offset.click.top<this.containment[1]&&(o=this.containment[1]+this.offset.click.top),t.pageX-this.offset.click.left>this.containment[2]&&(s=this.containment[2]+this.offset.click.left),t.pageY-this.offset.click.top>this.containment[3]&&(o=this.containment[3]+this.offset.click.top)),i.grid&&(n=this.originalPageY+Math.round((o-this.originalPageY)/i.grid[1])*i.grid[1],o=this.containment?n-this.offset.click.top>=this.containment[1]&&n-this.offset.click.top<=this.containment[3]?n:n-this.offset.click.top>=this.containment[1]?n-i.grid[1]:n+i.grid[1]:n,r=this.originalPageX+Math.round((s-this.originalPageX)/i.grid[0])*i.grid[0],s=this.containment?r-this.offset.click.left>=this.containment[0]&&r-this.offset.click.left<=this.containment[2]?r:r-this.offset.click.left>=this.containment[0]?r-i.grid[0]:r+i.grid[0]:r)),{top:o-this.offset.click.top-this.offset.relative.top-this.offset.parent.top+(this.cssPosition==="fixed"?-this.scrollParent.scrollTop():a?0:u.scrollTop()),left:s-this.offset.click.left-this.offset.relative.left-this.offset.parent.left+(this.cssPosition==="fixed"?-this.scrollParent.scrollLeft():a?0:u.scrollLeft())}},_rearrange:function(e,t,n,r){n?n[0].appendChild(this.placeholder[0]):t.item[0].parentNode.insertBefore(this.placeholder[0],this.direction==="down"?t.item[0]:t.item[0].nextSibling),this.counter=this.counter?++this.counter:1;var i=this.counter;this._delay(function(){i===this.counter&&this.refreshPositions(!r)})},_clear:function(t,n){this.reverting=!1;var r,i=[];!this._noFinalSort&&this.currentItem.parent().length&&this.placeholder.before(this.currentItem),this._noFinalSort=null;if(this.helper[0]===this.currentItem[0]){for(r in this._storedCSS)if(this._storedCSS[r]==="auto"||this._storedCSS[r]==="static")this._storedCSS[r]="";this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper")}else this.currentItem.show();this.fromOutside&&!n&&i.push(function(e){this._trigger("receive",e,this._uiHash(this.fromOutside))}),(this.fromOutside||this.domPosition.prev!==this.currentItem.prev().not(".ui-sortable-helper")[0]||this.domPosition.parent!==this.currentItem.parent()[0])&&!n&&i.push(function(e){this._trigger("update",e,this._uiHash())}),this!==this.currentContainer&&(n||(i.push(function(e){this._trigger("remove",e,this._uiHash())}),i.push(function(e){return function(t){e._trigger("receive",t,this._uiHash(this))}}.call(this,this.currentContainer)),i.push(function(e){return function(t){e._trigger("update",t,this._uiHash(this))}}.call(this,this.currentContainer))));for(r=this.containers.length-1;r>=0;r--)n||i.push(function(e){return function(t){e._trigger("deactivate",t,this._uiHash(this))}}.call(this,this.containers[r])),this.containers[r].containerCache.over&&(i.push(function(e){return function(t){e._trigger("out",t,this._uiHash(this))}}.call(this,this.containers[r])),this.containers[r].containerCache.over=0);this._storedCursor&&e("body").css("cursor",this._storedCursor),this._storedOpacity&&this.helper.css("opacity",this._storedOpacity),this._storedZIndex&&this.helper.css("zIndex",this._storedZIndex==="auto"?"":this._storedZIndex),this.dragging=!1;if(this.cancelHelperRemoval){if(!n){this._trigger("beforeStop",t,this._uiHash());for(r=0;r<i.length;r++)i[r].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!1}n||this._trigger("beforeStop",t,this._uiHash()),this.placeholder[0].parentNode.removeChild(this.placeholder[0]),this.helper[0]!==this.currentItem[0]&&this.helper.remove(),this.helper=null;if(!n){for(r=0;r<i.length;r++)i[r].call(this,t);this._trigger("stop",t,this._uiHash())}return this.fromOutside=!1,!0},_trigger:function(){e.Widget.prototype._trigger.apply(this,arguments)===!1&&this.cancel()},_uiHash:function(t){var n=t||this;return{helper:n.helper,placeholder:n.placeholder||e([]),position:n.position,originalPosition:n.originalPosition,offset:n.positionAbs,item:n.currentItem,sender:t?t.element:null}}})}(jQuery),jQuery.effects||function(e,t){var n="ui-effects-";e.effects={effect:{}},function(e,t){function h(e,t,n){var r=u[t.type]||{};return e==null?n||!t.def?null:t.def:(e=r.floor?~~e:parseFloat(e),isNaN(e)?t.def:r.mod?(e+r.mod)%r.mod:0>e?0:r.max<e?r.max:e)}function p(t){var n=s(),r=n._rgba=[];return t=t.toLowerCase(),c(i,function(e,i){var s,u=i.re.exec(t),a=u&&i.parse(u),f=i.space||"rgba";if(a)return s=n[f](a),n[o[f].cache]=s[o[f].cache],r=n._rgba=s._rgba,!1}),r.length?(r.join()==="0,0,0,0"&&e.extend(r,l.transparent),n):l[t]}function d(e,t,n){return n=(n+1)%1,n*6<1?e+(t-e)*n*6:n*2<1?t:n*3<2?e+(t-e)*(2/3-n)*6:e}var n="backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color columnRuleColor outlineColor textDecorationColor textEmphasisColor",r=/^([\-+])=\s*(\d+\.?\d*)/,i=[{re:/rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1],e[2],e[3],e[4]]}},{re:/rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,parse:function(e){return[e[1]*2.55,e[2]*2.55,e[3]*2.55,e[4]]}},{re:/#([a-f0-9]{2})([a-f0-9]{2})([a-f0-9]{2})/,parse:function(e){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}},{re:/#([a-f0-9])([a-f0-9])([a-f0-9])/,parse:function(e){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}},{re:/hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d?(?:\.\d+)?)\s*)?\)/,space:"hsla",parse:function(e){return[e[1],e[2]/100,e[3]/100,e[4]]}}],s=e.Color=function(t,n,r,i){return new e.Color.fn.parse(t,n,r,i)},o={rgba:{props:{red:{idx:0,type:"byte"},green:{idx:1,type:"byte"},blue:{idx:2,type:"byte"}}},hsla:{props:{hue:{idx:0,type:"degrees"},saturation:{idx:1,type:"percent"},lightness:{idx:2,type:"percent"}}}},u={"byte":{floor:!0,max:255},percent:{max:1},degrees:{mod:360,floor:!0}},a=s.support={},f=e("<p>")[0],l,c=e.each;f.style.cssText="background-color:rgba(1,1,1,.5)",a.rgba=f.style.backgroundColor.indexOf("rgba")>-1,c(o,function(e,t){t.cache="_"+e,t.props.alpha={idx:3,type:"percent",def:1}}),s.fn=e.extend(s.prototype,{parse:function(n,r,i,u){if(n===t)return this._rgba=[null,null,null,null],this;if(n.jquery||n.nodeType)n=e(n).css(r),r=t;var a=this,f=e.type(n),d=this._rgba=[];r!==t&&(n=[n,r,i,u],f="array");if(f==="string")return this.parse(p(n)||l._default);if(f==="array")return c(o.rgba.props,function(e,t){d[t.idx]=h(n[t.idx],t)}),this;if(f==="object")return n instanceof s?c(o,function(e,t){n[t.cache]&&(a[t.cache]=n[t.cache].slice())}):c(o,function(t,r){var i=r.cache;c(r.props,function(e,t){if(!a[i]&&r.to){if(e==="alpha"||n[e]==null)return;a[i]=r.to(a._rgba)}a[i][t.idx]=h(n[e],t,!0)}),a[i]&&e.inArray(null,a[i].slice(0,3))<0&&(a[i][3]=1,r.from&&(a._rgba=r.from(a[i])))}),this},is:function(e){var t=s(e),n=!0,r=this;return c(o,function(e,i){var s,o=t[i.cache];return o&&(s=r[i.cache]||i.to&&i.to(r._rgba)||[],c(i.props,function(e,t){if(o[t.idx]!=null)return n=o[t.idx]===s[t.idx],n})),n}),n},_space:function(){var e=[],t=this;return c(o,function(n,r){t[r.cache]&&e.push(n)}),e.pop()},transition:function(e,t){var n=s(e),r=n._space(),i=o[r],a=this.alpha()===0?s("transparent"):this,f=a[i.cache]||i.to(a._rgba),l=f.slice();return n=n[i.cache],c(i.props,function(e,r){var i=r.idx,s=f[i],o=n[i],a=u[r.type]||{};if(o===null)return;s===null?l[i]=o:(a.mod&&(o-s>a.mod/2?s+=a.mod:s-o>a.mod/2&&(s-=a.mod)),l[i]=h((o-s)*t+s,r))}),this[r](l)},blend:function(t){if(this._rgba[3]===1)return this;var n=this._rgba.slice(),r=n.pop(),i=s(t)._rgba;return s(e.map(n,function(e,t){return(1-r)*i[t]+r*e}))},toRgbaString:function(){var t="rgba(",n=e.map(this._rgba,function(e,t){return e==null?t>2?1:0:e});return n[3]===1&&(n.pop(),t="rgb("),t+n.join()+")"},toHslaString:function(){var t="hsla(",n=e.map(this.hsla(),function(e,t){return e==null&&(e=t>2?1:0),t&&t<3&&(e=Math.round(e*100)+"%"),e});return n[3]===1&&(n.pop(),t="hsl("),t+n.join()+")"},toHexString:function(t){var n=this._rgba.slice(),r=n.pop();return t&&n.push(~~(r*255)),"#"+e.map(n,function(e){return e=(e||0).toString(16),e.length===1?"0"+e:e}).join("")},toString:function(){return this._rgba[3]===0?"transparent":this.toRgbaString()}}),s.fn.parse.prototype=s.fn,o.hsla.to=function(e){if(e[0]==null||e[1]==null||e[2]==null)return[null,null,null,e[3]];var t=e[0]/255,n=e[1]/255,r=e[2]/255,i=e[3],s=Math.max(t,n,r),o=Math.min(t,n,r),u=s-o,a=s+o,f=a*.5,l,c;return o===s?l=0:t===s?l=60*(n-r)/u+360:n===s?l=60*(r-t)/u+120:l=60*(t-n)/u+240,u===0?c=0:f<=.5?c=u/a:c=u/(2-a),[Math.round(l)%360,c,f,i==null?1:i]},o.hsla.from=function(e){if(e[0]==null||e[1]==null||e[2]==null)return[null,null,null,e[3]];var t=e[0]/360,n=e[1],r=e[2],i=e[3],s=r<=.5?r*(1+n):r+n-r*n,o=2*r-s;return[Math.round(d(o,s,t+1/3)*255),Math.round(d(o,s,t)*255),Math.round(d(o,s,t-1/3)*255),i]},c(o,function(n,i){var o=i.props,u=i.cache,a=i.to,f=i.from;s.fn[n]=function(n){a&&!this[u]&&(this[u]=a(this._rgba));if(n===t)return this[u].slice();var r,i=e.type(n),l=i==="array"||i==="object"?n:arguments,p=this[u].slice();return c(o,function(e,t){var n=l[i==="object"?e:t.idx];n==null&&(n=p[t.idx]),p[t.idx]=h(n,t)}),f?(r=s(f(p)),r[u]=p,r):s(p)},c(o,function(t,i){if(s.fn[t])return;s.fn[t]=function(s){var o=e.type(s),u=t==="alpha"?this._hsla?"hsla":"rgba":n,a=this[u](),f=a[i.idx],l;return o==="undefined"?f:(o==="function"&&(s=s.call(this,f),o=e.type(s)),s==null&&i.empty?this:(o==="string"&&(l=r.exec(s),l&&(s=f+parseFloat(l[2])*(l[1]==="+"?1:-1))),a[i.idx]=s,this[u](a)))}})}),s.hook=function(t){var n=t.split(" ");c(n,function(t,n){e.cssHooks[n]={set:function(t,r){var i,o,u="";if(r!=="transparent"&&(e.type(r)!=="string"||(i=p(r)))){r=s(i||r);if(!a.rgba&&r._rgba[3]!==1){o=n==="backgroundColor"?t.parentNode:t;while((u===""||u==="transparent")&&o&&o.style)try{u=e.css(o,"backgroundColor"),o=o.parentNode}catch(f){}r=r.blend(u&&u!=="transparent"?u:"_default")}r=r.toRgbaString()}try{t.style[n]=r}catch(f){}}},e.fx.step[n]=function(t){t.colorInit||(t.start=s(t.elem,n),t.end=s(t.end),t.colorInit=!0),e.cssHooks[n].set(t.elem,t.start.transition(t.end,t.pos))}})},s.hook(n),e.cssHooks.borderColor={expand:function(e){var t={};return c(["Top","Right","Bottom","Left"],function(n,r){t["border"+r+"Color"]=e}),t}},l=e.Color.names={aqua:"#00ffff",black:"#000000",blue:"#0000ff",fuchsia:"#ff00ff",gray:"#808080",green:"#008000",lime:"#00ff00",maroon:"#800000",navy:"#000080",olive:"#808000",purple:"#800080",red:"#ff0000",silver:"#c0c0c0",teal:"#008080",white:"#ffffff",yellow:"#ffff00",transparent:[null,null,null,0],_default:"#ffffff"}}(jQuery),function(){function i(t){var n,r,i=t.ownerDocument.defaultView?t.ownerDocument.defaultView.getComputedStyle(t,null):t.currentStyle,s={};if(i&&i.length&&i[0]&&i[i[0]]){r=i.length;while(r--)n=i[r],typeof i[n]=="string"&&(s[e.camelCase(n)]=i[n])}else for(n in i)typeof i[n]=="string"&&(s[n]=i[n]);return s}function s(t,n){var i={},s,o;for(s in n)o=n[s],t[s]!==o&&!r[s]&&(e.fx.step[s]||!isNaN(parseFloat(o)))&&(i[s]=o);return i}var n=["add","remove","toggle"],r={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};e.each(["borderLeftStyle","borderRightStyle","borderBottomStyle","borderTopStyle"],function(t,n){e.fx.step[n]=function(e){if(e.end!=="none"&&!e.setAttr||e.pos===1&&!e.setAttr)jQuery.style(e.elem,n,e.end),e.setAttr=!0}}),e.fn.addBack||(e.fn.addBack=function(e){return this.add(e==null?this.prevObject:this.prevObject.filter(e))}),e.effects.animateClass=function(t,r,o,u){var a=e.speed(r,o,u);return this.queue(function(){var r=e(this),o=r.attr("class")||"",u,f=a.children?r.find("*").addBack():r;f=f.map(function(){var t=e(this);return{el:t,start:i(this)}}),u=function(){e.each(n,function(e,n){t[n]&&r[n+"Class"](t[n])})},u(),f=f.map(function(){return this.end=i(this.el[0]),this.diff=s(this.start,this.end),this}),r.attr("class",o),f=f.map(function(){var t=this,n=e.Deferred(),r=e.extend({},a,{queue:!1,complete:function(){n.resolve(t)}});return this.el.animate(this.diff,r),n.promise()}),e.when.apply(e,f.get()).done(function(){u(),e.each(arguments,function(){var t=this.el;e.each(this.diff,function(e){t.css(e,"")})}),a.complete.call(r[0])})})},e.fn.extend({_addClass:e.fn.addClass,addClass:function(t,n,r,i){return n?e.effects.animateClass.call(this,{add:t},n,r,i):this._addClass(t)},_removeClass:e.fn.removeClass,removeClass:function(t,n,r,i){return n?e.effects.animateClass.call(this,{remove:t},n,r,i):this._removeClass(t)},_toggleClass:e.fn.toggleClass,toggleClass:function(n,r,i,s,o){return typeof r=="boolean"||r===t?i?e.effects.animateClass.call(this,r?{add:n}:{remove:n},i,s,o):this._toggleClass(n,r):e.effects.animateClass.call(this,{toggle:n},r,i,s)},switchClass:function(t,n,r,i,s){return e.effects.animateClass.call(this,{add:n,remove:t},r,i,s)}})}(),function(){function r(t,n,r,i){e.isPlainObject(t)&&(n=t,t=t.effect),t={effect:t},n==null&&(n={}),e.isFunction(n)&&(i=n,r=null,n={});if(typeof n=="number"||e.fx.speeds[n])i=r,r=n,n={};return e.isFunction(r)&&(i=r,r=null),n&&e.extend(t,n),r=r||n.duration,t.duration=e.fx.off?0:typeof r=="number"?r:r in e.fx.speeds?e.fx.speeds[r]:e.fx.speeds._default,t.complete=i||n.complete,t}function i(t){return!t||typeof t=="number"||e.fx.speeds[t]?!0:typeof t=="string"&&!e.effects.effect[t]}e.extend(e.effects,{version:"1.10.0",save:function(e,t){for(var r=0;r<t.length;r++)t[r]!==null&&e.data(n+t[r],e[0].style[t[r]])},restore:function(e,r){var i,s;for(s=0;s<r.length;s++)r[s]!==null&&(i=e.data(n+r[s]),i===t&&(i=""),e.css(r[s],i))},setMode:function(e,t){return t==="toggle"&&(t=e.is(":hidden")?"show":"hide"),t},getBaseline:function(e,t){var n,r;switch(e[0]){case"top":n=0;break;case"middle":n=.5;break;case"bottom":n=1;break;default:n=e[0]/t.height}switch(e[1]){case"left":r=0;break;case"center":r=.5;break;case"right":r=1;break;default:r=e[1]/t.width}return{x:r,y:n}},createWrapper:function(t){if(t.parent().is(".ui-effects-wrapper"))return t.parent();var n={width:t.outerWidth(!0),height:t.outerHeight(!0),"float":t.css("float")},r=e("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0}),i={width:t.width(),height:t.height()},s=document.activeElement;try{s.id}catch(o){s=document.body}return t.wrap(r),(t[0]===s||e.contains(t[0],s))&&e(s).focus(),r=t.parent(),t.css("position")==="static"?(r.css({position:"relative"}),t.css({position:"relative"})):(e.extend(n,{position:t.css("position"),zIndex:t.css("z-index")}),e.each(["top","left","bottom","right"],function(e,r){n[r]=t.css(r),isNaN(parseInt(n[r],10))&&(n[r]="auto")}),t.css({position:"relative",top:0,left:0,right:"auto",bottom:"auto"})),t.css(i),r.css(n).show()},removeWrapper:function(t){var n=document.activeElement;return t.parent().is(".ui-effects-wrapper")&&(t.parent().replaceWith(t),(t[0]===n||e.contains(t[0],n))&&e(n).focus()),t},setTransition:function(t,n,r,i){return i=i||{},e.each(n,function(e,n){var s=t.cssUnit(n);s[0]>0&&(i[n]=s[0]*r+s[1])}),i}}),e.fn.extend({effect:function(){function o(n){function u(){e.isFunction(i)&&i.call(r[0]),e.isFunction(n)&&n()}var r=e(this),i=t.complete,o=t.mode;(r.is(":hidden")?o==="hide":o==="show")?u():s.call(r[0],t,u)}var t=r.apply(this,arguments),n=t.mode,i=t.queue,s=e.effects.effect[t.effect];return e.fx.off||!s?n?this[n](t.duration,t.complete):this.each(function(){t.complete&&t.complete.call(this)}):i===!1?this.each(o):this.queue(i||"fx",o)},_show:e.fn.show,show:function(e){if(i(e))return this._show.apply(this,arguments);var t=r.apply(this,arguments);return t.mode="show",this.effect.call(this,t)},_hide:e.fn.hide,hide:function(e){if(i(e))return this._hide.apply(this,arguments);var t=r.apply(this,arguments);return t.mode="hide",this.effect.call(this,t)},__toggle:e.fn.toggle,toggle:function(t){if(i(t)||typeof t=="boolean"||e.isFunction(t))return this.__toggle.apply(this,arguments);var n=r.apply(this,arguments);return n.mode="toggle",this.effect.call(this,n)},cssUnit:function(t){var n=this.css(t),r=[];return e.each(["em","px","%","pt"],function(e,t){n.indexOf(t)>0&&(r=[parseFloat(n),t])}),r}})}(),function(){var t={};e.each(["Quad","Cubic","Quart","Quint","Expo"],function(e,n){t[n]=function(t){return Math.pow(t,e+2)}}),e.extend(t,{Sine:function(e){return 1-Math.cos(e*Math.PI/2)},Circ:function(e){return 1-Math.sqrt(1-e*e)},Elastic:function(e){return e===0||e===1?e:-Math.pow(2,8*(e-1))*Math.sin(((e-1)*80-7.5)*Math.PI/15)},Back:function(e){return e*e*(3*e-2)},Bounce:function(e){var t,n=4;while(e<((t=Math.pow(2,--n))-1)/11);return 1/Math.pow(4,3-n)-7.5625*Math.pow((t*3-2)/22-e,2)}}),e.each(t,function(t,n){e.easing["easeIn"+t]=n,e.easing["easeOut"+t]=function(e){return 1-n(1-e)},e.easing["easeInOut"+t]=function(e){return e<.5?n(e*2)/2:1-n(e*-2+2)/2}})}()}(jQuery),function(e,t){var n=0,r={},i={};r.height=r.paddingTop=r.paddingBottom=r.borderTopWidth=r.borderBottomWidth="hide",i.height=i.paddingTop=i.paddingBottom=i.borderTopWidth=i.borderBottomWidth="show",e.widget("ui.accordion",{version:"1.10.0",options:{active:0,animate:{},collapsible:!1,event:"click",header:"> li > :first-child,> :not(li):even",heightStyle:"auto",icons:{activeHeader:"ui-icon-triangle-1-s",header:"ui-icon-triangle-1-e"},activate:null,beforeActivate:null},_create:function(){var t=this.options;this.prevShow=this.prevHide=e(),this.element.addClass("ui-accordion ui-widget ui-helper-reset").attr("role","tablist"),!t.collapsible&&(t.active===!1||t.active==null)&&(t.active=0),this._processPanels(),t.active<0&&(t.active+=this.headers.length),this._refresh()},_getCreateEventData:function(){return{header:this.active,content:this.active.length?this.active.next():e()}},_createIcons:function(){var t=this.options.icons;t&&(e("<span>").addClass("ui-accordion-header-icon ui-icon "+t.header).prependTo(this.headers),this.active.children(".ui-accordion-header-icon").removeClass(t.header).addClass(t.activeHeader),this.headers.addClass("ui-accordion-icons"))},_destroyIcons:function(){this.headers.removeClass("ui-accordion-icons").children(".ui-accordion-header-icon").remove()},_destroy:function(){var e;this.element.removeClass("ui-accordion ui-widget ui-helper-reset").removeAttr("role"),this.headers.removeClass("ui-accordion-header ui-accordion-header-active ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top").removeAttr("role").removeAttr("aria-selected").removeAttr("aria-controls").removeAttr("tabIndex").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this._destroyIcons(),e=this.headers.next().css("display","").removeAttr("role").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-state-disabled").each(function(){/^ui-accordion/.test(this.id)&&this.removeAttribute("id")}),this.options.heightStyle!=="content"&&e.css("height","")},_setOption:function(e,t){if(e==="active"){this._activate(t);return}e==="event"&&(this.options.event&&this._off(this.headers,this.options.event),this._setupEvents(t)),this._super(e,t),e==="collapsible"&&!t&&this.options.active===!1&&this._activate(0),e==="icons"&&(this._destroyIcons(),t&&this._createIcons()),e==="disabled"&&this.headers.add(this.headers.next()).toggleClass("ui-state-disabled",!!t)},_keydown:function(t){if(t.altKey||t.ctrlKey)return;var n=e.ui.keyCode,r=this.headers.length,i=this.headers.index(t.target),s=!1;switch(t.keyCode){case n.RIGHT:case n.DOWN:s=this.headers[(i+1)%r];break;case n.LEFT:case n.UP:s=this.headers[(i-1+r)%r];break;case n.SPACE:case n.ENTER:this._eventHandler(t);break;case n.HOME:s=this.headers[0];break;case n.END:s=this.headers[r-1]}s&&(e(t.target).attr("tabIndex",-1),e(s).attr("tabIndex",0),s.focus(),t.preventDefault())},_panelKeyDown:function(t){t.keyCode===e.ui.keyCode.UP&&t.ctrlKey&&e(t.currentTarget).prev().focus()},refresh:function(){var t=this.options;this._processPanels();if(t.active===!1&&t.collapsible===!0||!this.headers.length)t.active=!1,this.active=e();t.active===!1?this._activate(0):this.active.length&&!e.contains(this.element[0],this.active[0])?this.headers.length===this.headers.find(".ui-state-disabled").length?(t.active=!1,this.active=e()):this._activate(Math.max(0,t.active-1)):t.active=this.headers.index(this.active),this._destroyIcons(),this._refresh()},_processPanels:function(){this.headers=this.element.find(this.options.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all"),this.headers.next().addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom").filter(":not(.ui-accordion-content-active)").hide()},_refresh:function(){var t,r=this.options,i=r.heightStyle,s=this.element.parent(),o=this.accordionId="ui-accordion-"+(this.element.attr("id")||++n);this.active=this._findActive(r.active).addClass("ui-accordion-header-active ui-state-active").toggleClass("ui-corner-all ui-corner-top"),this.active.next().addClass("ui-accordion-content-active").show(),this.headers.attr("role","tab").each(function(t){var n=e(this),r=n.attr("id"),i=n.next(),s=i.attr("id");r||(r=o+"-header-"+t,n.attr("id",r)),s||(s=o+"-panel-"+t,i.attr("id",s)),n.attr("aria-controls",s),i.attr("aria-labelledby",r)}).next().attr("role","tabpanel"),this.headers.not(this.active).attr({"aria-selected":"false",tabIndex:-1}).next().attr({"aria-expanded":"false","aria-hidden":"true"}).hide(),this.active.length?this.active.attr({"aria-selected":"true",tabIndex:0}).next().attr({"aria-expanded":"true","aria-hidden":"false"}):this.headers.eq(0).attr("tabIndex",0),this._createIcons(),this._setupEvents(r.event),i==="fill"?(t=s.height(),this.element.siblings(":visible").each(function(){var n=e(this),r=n.css("position");if(r==="absolute"||r==="fixed")return;t-=n.outerHeight(!0)}),this.headers.each(function(){t-=e(this).outerHeight(!0)}),this.headers.next().each(function(){e(this).height(Math.max(0,t-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):i==="auto"&&(t=0,this.headers.next().each(function(){t=Math.max(t,e(this).css("height","").height())}).height(t))},_activate:function(t){var n=this._findActive(t)[0];if(n===this.active[0])return;n=n||this.active[0],this._eventHandler({target:n,currentTarget:n,preventDefault:e.noop})},_findActive:function(t){return typeof t=="number"?this.headers.eq(t):e()},_setupEvents:function(t){var n={keydown:"_keydown"};t&&e.each(t.split(" "),function(e,t){n[t]="_eventHandler"}),this._off(this.headers.add(this.headers.next())),this._on(this.headers,n),this._on(this.headers.next(),{keydown:"_panelKeyDown"}),this._hoverable(this.headers),this._focusable(this.headers)},_eventHandler:function(t){var n=this.options,r=this.active,i=e(t.currentTarget),s=i[0]===r[0],o=s&&n.collapsible,u=o?e():i.next(),a=r.next(),f={oldHeader:r,oldPanel:a,newHeader:o?e():i,newPanel:u};t.preventDefault();if(s&&!n.collapsible||this._trigger("beforeActivate",t,f)===!1)return;n.active=o?!1:this.headers.index(i),this.active=s?e():i,this._toggle(f),r.removeClass("ui-accordion-header-active ui-state-active"),n.icons&&r.children(".ui-accordion-header-icon").removeClass(n.icons.activeHeader).addClass(n.icons.header),s||(i.removeClass("ui-corner-all").addClass("ui-accordion-header-active ui-state-active ui-corner-top"),n.icons&&i.children(".ui-accordion-header-icon").removeClass(n.icons.header).addClass(n.icons.activeHeader),i.next().addClass("ui-accordion-content-active"))},_toggle:function(t){var n=t.newPanel,r=this.prevShow.length?this.prevShow:t.oldPanel;this.prevShow.add(this.prevHide).stop(!0,!0),this.prevShow=n,this.prevHide=r,this.options.animate?this._animate(n,r,t):(r.hide(),n.show(),this._toggleComplete(t)),r.attr({"aria-expanded":"false","aria-hidden":"true"}),r.prev().attr("aria-selected","false"),n.length&&r.length?r.prev().attr("tabIndex",-1):n.length&&this.headers.filter(function(){return e(this).attr("tabIndex")===0}).attr("tabIndex",-1),n.attr({"aria-expanded":"true","aria-hidden":"false"}).prev().attr({"aria-selected":"true",tabIndex:0})},_animate:function(e,t,n){var s,o,u,a=this,f=0,l=e.length&&(!t.length||e.index()<t.index()),c=this.options.animate||{},h=l&&c.down||c,p=function(){a._toggleComplete(n)};typeof h=="number"&&(u=h),typeof h=="string"&&(o=h),o=o||h.easing||c.easing,u=u||h.duration||c.duration;if(!t.length)return e.animate(i,u,o,p);if(!e.length)return t.animate(r,u,o,p);s=e.show().outerHeight(),t.animate(r,{duration:u,easing:o,step:function(e,t){t.now=Math.round(e)}}),e.hide().animate(i,{duration:u,easing:o,complete:p,step:function(e,n){n.now=Math.round(e),n.prop!=="height"?f+=n.now:a.options.heightStyle!=="content"&&(n.now=Math.round(s-t.outerHeight()-f),f=0)}})},_toggleComplete:function(e){var t=e.oldPanel;t.removeClass("ui-accordion-content-active").prev().removeClass("ui-corner-top").addClass("ui-corner-all"),t.length&&(t.parent()[0].className=t.parent()[0].className),this._trigger("activate",null,e)}})}(jQuery),function(e,t){var n=0;e.widget("ui.autocomplete",{version:"1.10.0",defaultElement:"<input>",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},pending:0,_create:function(){var t,n,r;this.isMultiLine=this._isMultiLine(),this.valueMethod=this.element[this.element.is("input,textarea")?"val":"text"],this.isNewMenu=!0,this.element.addClass("ui-autocomplete-input").attr("autocomplete","off"),this._on(this.element,{keydown:function(i){if(this.element.prop("readOnly")){t=!0,r=!0,n=!0;return}t=!1,r=!1,n=!1;var s=e.ui.keyCode;switch(i.keyCode){case s.PAGE_UP:t=!0,this._move("previousPage",i);break;case s.PAGE_DOWN:t=!0,this._move("nextPage",i);break;case s.UP:t=!0,this._keyEvent("previous",i);break;case s.DOWN:t=!0,this._keyEvent("next",i);break;case s.ENTER:case s.NUMPAD_ENTER:this.menu.active&&(t=!0,i.preventDefault(),this.menu.select(i));break;case s.TAB:this.menu.active&&this.menu.select(i);break;case s.ESCAPE:this.menu.element.is(":visible")&&(this._value(this.term),this.close(i),i.preventDefault());break;default:n=!0,this._searchTimeout(i)}},keypress:function(r){if(t){t=!1,r.preventDefault();return}if(n)return;var i=e.ui.keyCode;switch(r.keyCode){case i.PAGE_UP:this._move("previousPage",r);break;case i.PAGE_DOWN:this._move("nextPage",r);break;case i.UP:this._keyEvent("previous",r);break;case i.DOWN:this._keyEvent("next",r)}},input:function(e){if(r){r=!1,e.preventDefault();return}this._searchTimeout(e)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(e){if(this.cancelBlur){delete this.cancelBlur;return}clearTimeout(this.searching),this.close(e),this._change(e)}}),this._initSource(),this.menu=e("<ul>").addClass("ui-autocomplete").appendTo(this._appendTo()).menu({input:e(),role:null}).zIndex(this.element.zIndex()+1).hide().data("ui-menu"),this._on(this.menu.element,{mousedown:function(t){t.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur});var n=this.menu.element[0];e(t.target).closest(".ui-menu-item").length||this._delay(function(){var t=this;this.document.one("mousedown",function(r){r.target!==t.element[0]&&r.target!==n&&!e.contains(n,r.target)&&t.close()})})},menufocus:function(t,n){if(this.isNewMenu){this.isNewMenu=!1;if(t.originalEvent&&/^mouse/.test(t.originalEvent.type)){this.menu.blur(),this.document.one("mousemove",function(){e(t.target).trigger(t.originalEvent)});return}}var r=n.item.data("ui-autocomplete-item");!1!==this._trigger("focus",t,{item:r})?t.originalEvent&&/^key/.test(t.originalEvent.type)&&this._value(r.value):this.liveRegion.text(r.value)},menuselect:function(e,t){var n=t.item.data("ui-autocomplete-item"),r=this.previous;this.element[0]!==this.document[0].activeElement&&(this.element.focus(),this.previous=r,this._delay(function(){this.previous=r,this.selectedItem=n})),!1!==this._trigger("select",e,{item:n})&&this._value(n.value),this.term=this._value(),this.close(e),this.selectedItem=n}}),this.liveRegion=e("<span>",{role:"status","aria-live":"polite"}).addClass("ui-helper-hidden-accessible").insertAfter(this.element),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeClass("ui-autocomplete-input").removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(e,t){this._super(e,t),e==="source"&&this._initSource(),e==="appendTo"&&this.menu.element.appendTo(this._appendTo()),e==="disabled"&&t&&this.xhr&&this.xhr.abort()},_appendTo:function(){var t=this.options.appendTo;return t&&(t=t.jquery||t.nodeType?e(t):this.document.find(t).eq(0)),t||(t=this.element.closest(".ui-front")),t.length||(t=this.document[0].body),t},_isMultiLine:function(){return this.element.is("textarea")?!0:this.element.is("input")?!1:this.element.prop("isContentEditable")},_initSource:function(){var t,n,r=this;e.isArray(this.options.source)?(t=this.options.source,this.source=function(n,r){r(e.ui.autocomplete.filter(t,n.term))}):typeof this.options.source=="string"?(n=this.options.source,this.source=function(t,i){r.xhr&&r.xhr.abort(),r.xhr=e.ajax({url:n,data:t,dataType:"json",success:function(e){i(e)},error:function(){i([])}})}):this.source=this.options.source},_searchTimeout:function(e){clearTimeout(this.searching),this.searching=this._delay(function(){this.term!==this._value()&&(this.selectedItem=null,this.search(null,e))},this.options.delay)},search:function(e,t){e=e!=null?e:this._value(),this.term=this._value();if(e.length<this.options.minLength)return this.close(t);if(this._trigger("search",t)===!1)return;return this._search(e)},_search:function(e){this.pending++,this.element.addClass("ui-autocomplete-loading"),this.cancelSearch=!1,this.source({term:e},this._response())},_response:function(){var e=this,t=++n;return function(r){t===n&&e.__response(r),e.pending--,e.pending||e.element.removeClass("ui-autocomplete-loading")}},__response:function(e){e&&(e=this._normalize(e)),this._trigger("response",null,{content:e}),!this.options.disabled&&e&&e.length&&!this.cancelSearch?(this._suggest(e),this._trigger("open")):this._close()},close:function(e){this.cancelSearch=!0,this._close(e)},_close:function(e){this.menu.element.is(":visible")&&(this.menu.element.hide(),this.menu.blur(),this.isNewMenu=!0,this._trigger("close",e))},_change:function(e){this.previous!==this._value()&&this._trigger("change",e,{item:this.selectedItem})},_normalize:function(t){return t.length&&t[0].label&&t[0].value?t:e.map(t,function(t){return typeof t=="string"?{label:t,value:t}:e.extend({label:t.label||t.value,value:t.value||t.label},t)})},_suggest:function(t){var n=this.menu.element.empty().zIndex(this.element.zIndex()+1);this._renderMenu(n,t),this.menu.refresh(),n.show(),this._resizeMenu(),n.position(e.extend({of:this.element},this.options.position)),this.options.autoFocus&&this.menu.next()},_resizeMenu:function(){var e=this.menu.element;e.outerWidth(Math.max(e.width("").outerWidth()+1,this.element.outerWidth()))},_renderMenu:function(t,n){var r=this;e.each(n,function(e,n){r._renderItemData(t,n)})},_renderItemData:function(e,t){return this._renderItem(e,t).data("ui-autocomplete-item",t)},_renderItem:function(t,n){return e("<li>").append(e("<a>").text(n.label)).appendTo(t)},_move:function(e,t){if(!this.menu.element.is(":visible")){this.search(null,t);return}if(this.menu.isFirstItem()&&/^previous/.test(e)||this.menu.isLastItem()&&/^next/.test(e)){this._value(this.term),this.menu.blur();return}this.menu[e](t)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(e,t){if(!this.isMultiLine||this.menu.element.is(":visible"))this._move(e,t),t.preventDefault()}}),e.extend(e.ui.autocomplete,{escapeRegex:function(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(t,n){var r=new RegExp(e.ui.autocomplete.escapeRegex(n),"i");return e.grep(t,function(e){return r.test(e.label||e.value||e)})}}),e.widget("ui.autocomplete",e.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(e){return e+(e>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var t;this._superApply(arguments);if(this.options.disabled||this.cancelSearch)return;e&&e.length?t=this.options.messages.results(e.length):t=this.options.messages.noResults,this.liveRegion.text(t)}})}(jQuery),function(e,t){var n,r,i,s,o="ui-button ui-widget ui-state-default ui-corner-all",u="ui-state-hover ui-state-active ",a="ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",f=function(){var t=e(this).find(":ui-button");setTimeout(function(){t.button("refresh")},1)},l=function(t){var n=t.name,r=t.form,i=e([]);return n&&(n=n.replace(/'/g,"\\'"),r?i=e(r).find("[name='"+n+"']"):i=e("[name='"+n+"']",t.ownerDocument).filter(function(){return!this.form})),i};e.widget("ui.button",{version:"1.10.0",defaultElement:"<button>",options:{disabled:null,text:!0,label:null,icons:{primary:null,secondary:null}},_create:function(){this.element.closest("form").unbind("reset"+this.eventNamespace).bind("reset"+this.eventNamespace,f),typeof this.options.disabled!="boolean"?this.options.disabled=!!this.element.prop("disabled"):this.element.prop("disabled",this.options.disabled),this._determineButtonType(),this.hasTitle=!!this.buttonElement.attr("title");var t=this,u=this.options,a=this.type==="checkbox"||this.type==="radio",c=a?"":"ui-state-active",h="ui-state-focus";u.label===null&&(u.label=this.type==="input"?this.buttonElement.val():this.buttonElement.html()),this._hoverable(this.buttonElement),this.buttonElement.addClass(o).attr("role","button").bind("mouseenter"+this.eventNamespace,function(){if(u.disabled)return;this===n&&e(this).addClass("ui-state-active")}).bind("mouseleave"+this.eventNamespace,function(){if(u.disabled)return;e(this).removeClass(c)}).bind("click"+this.eventNamespace,function(e){u.disabled&&(e.preventDefault(),e.stopImmediatePropagation())}),this.element.bind("focus"+this.eventNamespace,function(){t.buttonElement.addClass(h)}).bind("blur"+this.eventNamespace,function(){t.buttonElement.removeClass(h)}),a&&(this.element.bind("change"+this.eventNamespace,function(){if(s)return;t.refresh()}),this.buttonElement.bind("mousedown"+this.eventNamespace,function(e){if(u.disabled)return;s=!1,r=e.pageX,i=e.pageY}).bind("mouseup"+this.eventNamespace,function(e){if(u.disabled)return;if(r!==e.pageX||i!==e.pageY)s=!0})),this.type==="checkbox"?this.buttonElement.bind("click"+this.eventNamespace,function(){if(u.disabled||s)return!1}):this.type==="radio"?this.buttonElement.bind("click"+this.eventNamespace,function(){if(u.disabled||s)return!1;e(this).addClass("ui-state-active"),t.buttonElement.attr("aria-pressed","true");var n=t.element[0];l(n).not(n).map(function(){return e(this).button("widget")[0]}).removeClass("ui-state-active").attr("aria-pressed","false")}):(this.buttonElement.bind("mousedown"+this.eventNamespace,function(){if(u.disabled)return!1;e(this).addClass("ui-state-active"),n=this,t.document.one("mouseup",function(){n=null})}).bind("mouseup"+this.eventNamespace,function(){if(u.disabled)return!1;e(this).removeClass("ui-state-active")}).bind("keydown"+this.eventNamespace,function(t){if(u.disabled)return!1;(t.keyCode===e.ui.keyCode.SPACE||t.keyCode===e.ui.keyCode.ENTER)&&e(this).addClass("ui-state-active")}).bind("keyup"+this.eventNamespace+" blur"+this.eventNamespace,function(){e(this).removeClass("ui-state-active")}),this.buttonElement.is("a")&&this.buttonElement.keyup(function(t){t.keyCode===e.ui.keyCode.SPACE&&e(this).click()})),this._setOption("disabled",u.disabled),this._resetButton()},_determineButtonType:function(){var e,t,n;this.element.is("[type=checkbox]")?this.type="checkbox":this.element.is("[type=radio]")?this.type="radio":this.element.is("input")?this.type="input":this.type="button",this.type==="checkbox"||this.type==="radio"?(e=this.element.parents().last(),t="label[for='"+this.element.attr("id")+"']",this.buttonElement=e.find(t),this.buttonElement.length||(e=e.length?e.siblings():this.element.siblings(),this.buttonElement=e.filter(t),this.buttonElement.length||(this.buttonElement=e.find(t))),this.element.addClass("ui-helper-hidden-accessible"),n=this.element.is(":checked"),n&&this.buttonElement.addClass("ui-state-active"),this.buttonElement.prop("aria-pressed",n)):this.buttonElement=this.element},widget:function(){return this.buttonElement},_destroy:function(){this.element.removeClass("ui-helper-hidden-accessible"),this.buttonElement.removeClass(o+" "+u+" "+a).removeAttr("role").removeAttr("aria-pressed").html(this.buttonElement.find(".ui-button-text").html()),this.hasTitle||this.buttonElement.removeAttr("title")},_setOption:function(e,t){this._super(e,t);if(e==="disabled"){t?this.element.prop("disabled",!0):this.element.prop("disabled",!1);return}this._resetButton()},refresh:function(){var t=this.element.is("input, button")?this.element.is(":disabled"):this.element.hasClass("ui-button-disabled");t!==this.options.disabled&&this._setOption("disabled",t),this.type==="radio"?l(this.element[0]).each(function(){e(this).is(":checked")?e(this).button("widget").addClass("ui-state-active").attr("aria-pressed","true"):e(this).button("widget").removeClass("ui-state-active").attr("aria-pressed","false")}):this.type==="checkbox"&&(this.element.is(":checked")?this.buttonElement.addClass("ui-state-active").attr("aria-pressed","true"):this.buttonElement.removeClass("ui-state-active").attr("aria-pressed","false"))},_resetButton:function(){if(this.type==="input"){this.options.label&&this.element.val(this.options.label);return}var t=this.buttonElement.removeClass(a),n=e("<span></span>",this.document[0]).addClass("ui-button-text").html(this.options.label).appendTo(t.empty()).text(),r=this.options.icons,i=r.primary&&r.secondary,s=[];r.primary||r.secondary?(this.options.text&&s.push("ui-button-text-icon"+(i?"s":r.primary?"-primary":"-secondary")),r.primary&&t.prepend("<span class='ui-button-icon-primary ui-icon "+r.primary+"'></span>"),r.secondary&&t.append("<span class='ui-button-icon-secondary ui-icon "+r.secondary+"'></span>"),this.options.text||(s.push(i?"ui-button-icons-only":"ui-button-icon-only"),this.hasTitle||t.attr("title",e.trim(n)))):s.push("ui-button-text-only"),t.addClass(s.join(" "))}}),e.widget("ui.buttonset",{version:"1.10.0",options:{items:"button, input[type=button], input[type=submit], input[type=reset], input[type=checkbox], input[type=radio], a, :data(ui-button)"},_create:function(){this.element.addClass("ui-buttonset")},_init:function(){this.refresh()},_setOption:function(e,t){e==="disabled"&&this.buttons.button("option",e,t),this._super(e,t)},refresh:function(){var t=this.element.css("direction")==="rtl";this.buttons=this.element.find(this.options.items).filter(":ui-button").button("refresh").end().not(":ui-button").button().end().map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-all ui-corner-left ui-corner-right").filter(":first").addClass(t?"ui-corner-right":"ui-corner-left").end().filter(":last").addClass(t?"ui-corner-left":"ui-corner-right").end().end()},_destroy:function(){this.element.removeClass("ui-buttonset"),this.buttons.map(function(){return e(this).button("widget")[0]}).removeClass("ui-corner-left ui-corner-right").end().button("destroy")}})}(jQuery),function(e,t){function s(){this._curInst=null,this._keyEvent=!1,this._disabledInputs=[],this._datepickerShowing=!1,this._inDialog=!1,this._mainDivId="ui-datepicker-div",this._inlineClass="ui-datepicker-inline",this._appendClass="ui-datepicker-append",this._triggerClass="ui-datepicker-trigger",this._dialogClass="ui-datepicker-dialog",this._disableClass="ui-datepicker-disabled",this._unselectableClass="ui-datepicker-unselectable",this._currentClass="ui-datepicker-current-day",this._dayOverClass="ui-datepicker-days-cell-over",this.regional=[],this.regional[""]={closeText:"Done",prevText:"Prev",nextText:"Next",currentText:"Today",monthNames:["January","February","March","April","May","June","July","August","September","October","November","December"],monthNamesShort:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],dayNames:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],dayNamesShort:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],dayNamesMin:["Su","Mo","Tu","We","Th","Fr","Sa"],weekHeader:"Wk",dateFormat:"mm/dd/yy",firstDay:0,isRTL:!1,showMonthAfterYear:!1,yearSuffix:""},this._defaults={showOn:"focus",showAnim:"fadeIn",showOptions:{},defaultDate:null,appendText:"",buttonText:"...",buttonImage:"",buttonImageOnly:!1,hideIfNoPrevNext:!1,navigationAsDateFormat:!1,gotoCurrent:!1,changeMonth:!1,changeYear:!1,yearRange:"c-10:c+10",showOtherMonths:!1,selectOtherMonths:!1,showWeek:!1,calculateWeek:this.iso8601Week,shortYearCutoff:"+10",minDate:null,maxDate:null,duration:"fast",beforeShowDay:null,beforeShow:null,onSelect:null,onChangeMonthYear:null,onClose:null,numberOfMonths:1,showCurrentAtPos:0,stepMonths:1,stepBigMonths:12,altField:"",altFormat:"",constrainInput:!0,showButtonPanel:!1,autoSize:!1,disabled:!1},e.extend(this._defaults,this.regional[""]),this.dpDiv=o(e("<div id='"+this._mainDivId+"' class='ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>"))}function o(t){var n="button, .ui-datepicker-prev, .ui-datepicker-next, .ui-datepicker-calendar td a";return t.delegate(n,"mouseout",function(){e(this).removeClass("ui-state-hover"),this.className.indexOf("ui-datepicker-prev")!==-1&&e(this).removeClass("ui-datepicker-prev-hover"),this.className.indexOf("ui-datepicker-next")!==-1&&e(this).removeClass("ui-datepicker-next-hover")}).delegate(n,"mouseover",function(){e.datepicker._isDisabledDatepicker(i.inline?t.parent()[0]:i.input[0])||(e(this).parents(".ui-datepicker-calendar").find("a").removeClass("ui-state-hover"),e(this).addClass("ui-state-hover"),this.className.indexOf("ui-datepicker-prev")!==-1&&e(this).addClass("ui-datepicker-prev-hover"),this.className.indexOf("ui-datepicker-next")!==-1&&e(this).addClass("ui-datepicker-next-hover"))})}function u(t,n){e.extend(t,n);for(var r in n)n[r]==null&&(t[r]=n[r]);return t}e.extend(e.ui,{datepicker:{version:"1.10.0"}});var n="datepicker",r=(new Date).getTime(),i;e.extend(s.prototype,{markerClassName:"hasDatepicker",maxRows:4,_widgetDatepicker:function(){return this.dpDiv},setDefaults:function(e){return u(this._defaults,e||{}),this},_attachDatepicker:function(t,n){var r,i,s;r=t.nodeName.toLowerCase(),i=r==="div"||r==="span",t.id||(this.uuid+=1,t.id="dp"+this.uuid),s=this._newInst(e(t),i),s.settings=e.extend({},n||{}),r==="input"?this._connectDatepicker(t,s):i&&this._inlineDatepicker(t,s)},_newInst:function(t,n){var r=t[0].id.replace(/([^A-Za-z0-9_\-])/g,"\\\\$1");return{id:r,input:t,selectedDay:0,selectedMonth:0,selectedYear:0,drawMonth:0,drawYear:0,inline:n,dpDiv:n?o(e("<div class='"+this._inlineClass+" ui-datepicker ui-widget ui-widget-content ui-helper-clearfix ui-corner-all'></div>")):this.dpDiv}},_connectDatepicker:function(t,r){var i=e(t);r.append=e([]),r.trigger=e([]);if(i.hasClass(this.markerClassName))return;this._attachments(i,r),i.addClass(this.markerClassName).keydown(this._doKeyDown).keypress(this._doKeyPress).keyup(this._doKeyUp),this._autoSize(r),e.data(t,n,r),r.settings.disabled&&this._disableDatepicker(t)},_attachments:function(t,n){var r,i,s,o=this._get(n,"appendText"),u=this._get(n,"isRTL");n.append&&n.append.remove(),o&&(n.append=e("<span class='"+this._appendClass+"'>"+o+"</span>"),t[u?"before":"after"](n.append)),t.unbind("focus",this._showDatepicker),n.trigger&&n.trigger.remove(),r=this._get(n,"showOn"),(r==="focus"||r==="both")&&t.focus(this._showDatepicker);if(r==="button"||r==="both")i=this._get(n,"buttonText"),s=this._get(n,"buttonImage"),n.trigger=e(this._get(n,"buttonImageOnly")?e("<img/>").addClass(this._triggerClass).attr({src:s,alt:i,title:i}):e("<button type='button'></button>").addClass(this._triggerClass).html(s?e("<img/>").attr({src:s,alt:i,title:i}):i)),t[u?"before":"after"](n.trigger),n.trigger.click(function(){return e.datepicker._datepickerShowing&&e.datepicker._lastInput===t[0]?e.datepicker._hideDatepicker():e.datepicker._datepickerShowing&&e.datepicker._lastInput!==t[0]?(e.datepicker._hideDatepicker(),e.datepicker._showDatepicker(t[0])):e.datepicker._showDatepicker(t[0]),!1})},_autoSize:function(e){if(this._get(e,"autoSize")&&!e.inline){var t,n,r,i,s=new Date(2009,11,20),o=this._get(e,"dateFormat");o.match(/[DM]/)&&(t=function(e){n=0,r=0;for(i=0;i<e.length;i++)e[i].length>n&&(n=e[i].length,r=i);return r},s.setMonth(t(this._get(e,o.match(/MM/)?"monthNames":"monthNamesShort"))),s.setDate(t(this._get(e,o.match(/DD/)?"dayNames":"dayNamesShort"))+20-s.getDay())),e.input.attr("size",this._formatDate(e,s).length)}},_inlineDatepicker:function(t,r){var i=e(t);if(i.hasClass(this.markerClassName))return;i.addClass(this.markerClassName).append(r.dpDiv),e.data(t,n,r),this._setDate(r,this._getDefaultDate(r),!0),this._updateDatepicker(r),this._updateAlternate(r),r.settings.disabled&&this._disableDatepicker(t),r.dpDiv.css("display","block")},_dialogDatepicker:function(t,r,i,s,o){var a,f,l,c,h,p=this._dialogInst;return p||(this.uuid+=1,a="dp"+this.uuid,this._dialogInput=e("<input type='text' id='"+a+"' style='position: absolute; top: -100px; width: 0px;'/>"),this._dialogInput.keydown(this._doKeyDown),e("body").append(this._dialogInput),p=this._dialogInst=this._newInst(this._dialogInput,!1),p.settings={},e.data(this._dialogInput[0],n,p)),u(p.settings,s||{}),r=r&&r.constructor===Date?this._formatDate(p,r):r,this._dialogInput.val(r),this._pos=o?o.length?o:[o.pageX,o.pageY]:null,this._pos||(f=document.documentElement.clientWidth,l=document.documentElement.clientHeight,c=document.documentElement.scrollLeft||document.body.scrollLeft,h=document.documentElement.scrollTop||document.body.scrollTop,this._pos=[f/2-100+c,l/2-150+h]),this._dialogInput.css("left",this._pos[0]+20+"px").css("top",this._pos[1]+"px"),p.settings.onSelect=i,this._inDialog=!0,this.dpDiv.addClass(this._dialogClass),this._showDatepicker(this._dialogInput[0]),e.blockUI&&e.blockUI(this.dpDiv),e.data(this._dialogInput[0],n,p),this},_destroyDatepicker:function(t){var r,i=e(t),s=e.data(t,n);if(!i.hasClass(this.markerClassName))return;r=t.nodeName.toLowerCase(),e.removeData(t,n),r==="input"?(s.append.remove(),s.trigger.remove(),i.removeClass(this.markerClassName).unbind("focus",this._showDatepicker).unbind("keydown",this._doKeyDown).unbind("keypress",this._doKeyPress).unbind("keyup",this._doKeyUp)):(r==="div"||r==="span")&&i.removeClass(this.markerClassName).empty()},_enableDatepicker:function(t){var r,i,s=e(t),o=e.data(t,n);if(!s.hasClass(this.markerClassName))return;r=t.nodeName.toLowerCase();if(r==="input")t.disabled=!1,o.trigger.filter("button").each(function(){this.disabled=!1}).end().filter("img").css({opacity:"1.0",cursor:""});else if(r==="div"||r==="span")i=s.children("."+this._inlineClass),i.children().removeClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!1);this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e})},_disableDatepicker:function(t){var r,i,s=e(t),o=e.data(t,n);if(!s.hasClass(this.markerClassName))return;r=t.nodeName.toLowerCase();if(r==="input")t.disabled=!0,o.trigger.filter("button").each(function(){this.disabled=!0}).end().filter("img").css({opacity:"0.5",cursor:"default"});else if(r==="div"||r==="span")i=s.children("."+this._inlineClass),i.children().addClass("ui-state-disabled"),i.find("select.ui-datepicker-month, select.ui-datepicker-year").prop("disabled",!0);this._disabledInputs=e.map(this._disabledInputs,function(e){return e===t?null:e}),this._disabledInputs[this._disabledInputs.length]=t},_isDisabledDatepicker:function(e){if(!e)return!1;for(var t=0;t<this._disabledInputs.length;t++)if(this._disabledInputs[t]===e)return!0;return!1},_getInst:function(t){try{return e.data(t,n)}catch(r){throw"Missing instance data for this datepicker"}},_optionDatepicker:function(n,r,i){var s,o,a,f,l=this._getInst(n);if(arguments.length===2&&typeof r=="string")return r==="defaults"?e.extend({},e.datepicker._defaults):l?r==="all"?e.extend({},l.settings):this._get(l,r):null;s=r||{},typeof r=="string"&&(s={},s[r]=i),l&&(this._curInst===l&&this._hideDatepicker(),o=this._getDateDatepicker(n,!0),a=this._getMinMaxDate(l,"min"),f=this._getMinMaxDate(l,"max"),u(l.settings,s),a!==null&&s.dateFormat!==t&&s.minDate===t&&(l.settings.minDate=this._formatDate(l,a)),f!==null&&s.dateFormat!==t&&s.maxDate===t&&(l.settings.maxDate=this._formatDate(l,f)),"disabled"in s&&(s.disabled?this._disableDatepicker(n):this._enableDatepicker(n)),this._attachments(e(n),l),this._autoSize(l),this._setDate(l,o),this._updateAlternate(l),this._updateDatepicker(l))},_changeDatepicker:function(e,t,n){this._optionDatepicker(e,t,n)},_refreshDatepicker:function(e){var t=this._getInst(e);t&&this._updateDatepicker(t)},_setDateDatepicker:function(e,t){var n=this._getInst(e);n&&(this._setDate(n,t),this._updateDatepicker(n),this._updateAlternate(n))},_getDateDatepicker:function(e,t){var n=this._getInst(e);return n&&!n.inline&&this._setDateFromField(n,t),n?this._getDate(n):null},_doKeyDown:function(t){var n,r,i,s=e.datepicker._getInst(t.target),o=!0,u=s.dpDiv.is(".ui-datepicker-rtl");s._keyEvent=!0;if(e.datepicker._datepickerShowing)switch(t.keyCode){case 9:e.datepicker._hideDatepicker(),o=!1;break;case 13:return i=e("td."+e.datepicker._dayOverClass+":not(."+e.datepicker._currentClass+")",s.dpDiv),i[0]&&e.datepicker._selectDay(t.target,s.selectedMonth,s.selectedYear,i[0]),n=e.datepicker._get(s,"onSelect"),n?(r=e.datepicker._formatDate(s),n.apply(s.input?s.input[0]:null,[r,s])):e.datepicker._hideDatepicker(),!1;case 27:e.datepicker._hideDatepicker();break;case 33:e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(s,"stepBigMonths"):-e.datepicker._get(s,"stepMonths"),"M");break;case 34:e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(s,"stepBigMonths"):+e.datepicker._get(s,"stepMonths"),"M");break;case 35:(t.ctrlKey||t.metaKey)&&e.datepicker._clearDate(t.target),o=t.ctrlKey||t.metaKey;break;case 36:(t.ctrlKey||t.metaKey)&&e.datepicker._gotoToday(t.target),o=t.ctrlKey||t.metaKey;break;case 37:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,u?1:-1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?-e.datepicker._get(s,"stepBigMonths"):-e.datepicker._get(s,"stepMonths"),"M");break;case 38:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,-7,"D"),o=t.ctrlKey||t.metaKey;break;case 39:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,u?-1:1,"D"),o=t.ctrlKey||t.metaKey,t.originalEvent.altKey&&e.datepicker._adjustDate(t.target,t.ctrlKey?+e.datepicker._get(s,"stepBigMonths"):+e.datepicker._get(s,"stepMonths"),"M");break;case 40:(t.ctrlKey||t.metaKey)&&e.datepicker._adjustDate(t.target,7,"D"),o=t.ctrlKey||t.metaKey;break;default:o=!1}else t.keyCode===36&&t.ctrlKey?e.datepicker._showDatepicker(this):o=!1;o&&(t.preventDefault(),t.stopPropagation())},_doKeyPress:function(t){var n,r,i=e.datepicker._getInst(t.target);if(e.datepicker._get(i,"constrainInput"))return n=e.datepicker._possibleChars(e.datepicker._get(i,"dateFormat")),r=String.fromCharCode(t.charCode==null?t.keyCode:t.charCode),t.ctrlKey||t.metaKey||r<" "||!n||n.indexOf(r)>-1},_doKeyUp:function(t){var n,r=e.datepicker._getInst(t.target);if(r.input.val()!==r.lastVal)try{n=e.datepicker.parseDate(e.datepicker._get(r,"dateFormat"),r.input?r.input.val():null,e.datepicker._getFormatConfig(r)),n&&(e.datepicker._setDateFromField(r),e.datepicker._updateAlternate(r),e.datepicker._updateDatepicker(r))}catch(i){}return!0},_showDatepicker:function(t){t=t.target||t,t.nodeName.toLowerCase()!=="input"&&(t=e("input",t.parentNode)[0]);if(e.datepicker._isDisabledDatepicker(t)||e.datepicker._lastInput===t)return;var n,r,i,s,o,a,f;n=e.datepicker._getInst(t),e.datepicker._curInst&&e.datepicker._curInst!==n&&(e.datepicker._curInst.dpDiv.stop(!0,!0),n&&e.datepicker._datepickerShowing&&e.datepicker._hideDatepicker(e.datepicker._curInst.input[0])),r=e.datepicker._get(n,"beforeShow"),i=r?r.apply(t,[t,n]):{};if(i===!1)return;u(n.settings,i),n.lastVal=null,e.datepicker._lastInput=t,e.datepicker._setDateFromField(n),e.datepicker._inDialog&&(t.value=""),e.datepicker._pos||(e.datepicker._pos=e.datepicker._findPos(t),e.datepicker._pos[1]+=t.offsetHeight),s=!1,e(t).parents().each(function(){return s|=e(this).css("position")==="fixed",!s}),o={left:e.datepicker._pos[0],top:e.datepicker._pos[1]},e.datepicker._pos=null,n.dpDiv.empty(),n.dpDiv.css({position:"absolute",display:"block",top:"-1000px"}),e.datepicker._updateDatepicker(n),o=e.datepicker._checkOffset(n,o,s),n.dpDiv.css({position:e.datepicker._inDialog&&e.blockUI?"static":s?"fixed":"absolute",display:"none",left:o.left+"px",top:o.top+"px"}),n.inline||(a=e.datepicker._get(n,"showAnim"),f=e.datepicker._get(n,"duration"),n.dpDiv.zIndex(e(t).zIndex()+1),e.datepicker._datepickerShowing=!0,e.effects&&e.effects.effect[a]?n.dpDiv.show(a,e.datepicker._get(n,"showOptions"),f):n.dpDiv[a||"show"](a?f:null),n.input.is(":visible")&&!n.input.is(":disabled")&&n.input.focus(),e.datepicker._curInst=n)},_updateDatepicker:function(t){this.maxRows=4,i=t,t.dpDiv.empty().append(this._generateHTML(t)),this._attachHandlers(t),t.dpDiv.find("."+this._dayOverClass+" a").mouseover();var n,r=this._getNumberOfMonths(t),s=r[1],o=17;t.dpDiv.removeClass("ui-datepicker-multi-2 ui-datepicker-multi-3 ui-datepicker-multi-4").width(""),s>1&&t.dpDiv.addClass("ui-datepicker-multi-"+s).css("width",o*s+"em"),t.dpDiv[(r[0]!==1||r[1]!==1?"add":"remove")+"Class"]("ui-datepicker-multi"),t.dpDiv[(this._get(t,"isRTL")?"add":"remove")+"Class"]("ui-datepicker-rtl"),t===e.datepicker._curInst&&e.datepicker._datepickerShowing&&t.input&&t.input.is(":visible")&&!t.input.is(":disabled")&&t.input[0]!==document.activeElement&&t.input.focus(),t.yearshtml&&(n=t.yearshtml,setTimeout(function(){n===t.yearshtml&&t.yearshtml&&t.dpDiv.find("select.ui-datepicker-year:first").replaceWith(t.yearshtml),n=t.yearshtml=null},0))},_getBorders:function(e){var t=function(e){return{thin:1,medium:2,thick:3}[e]||e};return[parseFloat(t(e.css("border-left-width"))),parseFloat(t(e.css("border-top-width")))]},_checkOffset:function(t,n,r){var i=t.dpDiv.outerWidth(),s=t.dpDiv.outerHeight(),o=t.input?t.input.outerWidth():0,u=t.input?t.input.outerHeight():0,a=document.documentElement.clientWidth+(r?0:e(document).scrollLeft()),f=document.documentElement.clientHeight+(r?0:e(document).scrollTop());return n.left-=this._get(t,"isRTL")?i-o:0,n.left-=r&&n.left===t.input.offset().left?e(document).scrollLeft():0,n.top-=r&&n.top===t.input.offset().top+u?e(document).scrollTop():0,n.left-=Math.min(n.left,n.left+i>a&&a>i?Math.abs(n.left+i-a):0),n.top-=Math.min(n.top,n.top+s>f&&f>s?Math.abs(s+u):0),n},_findPos:function(t){var n,r=this._getInst(t),i=this._get(r,"isRTL");while(t&&(t.type==="hidden"||t.nodeType!==1||e.expr.filters.hidden(t)))t=t[i?"previousSibling":"nextSibling"];return n=e(t).offset(),[n.left,n.top]},_hideDatepicker:function(t){var r,i,s,o,u=this._curInst;if(!u||t&&u!==e.data(t,n))return;this._datepickerShowing&&(r=this._get(u,"showAnim"),i=this._get(u,"duration"),s=function(){e.datepicker._tidyDialog(u)},e.effects&&(e.effects.effect[r]||e.effects[r])?u.dpDiv.hide(r,e.datepicker._get(u,"showOptions"),i,s):u.dpDiv[r==="slideDown"?"slideUp":r==="fadeIn"?"fadeOut":"hide"](r?i:null,s),r||s(),this._datepickerShowing=!1,o=this._get(u,"onClose"),o&&o.apply(u.input?u.input[0]:null,[u.input?u.input.val():"",u]),this._lastInput=null,this._inDialog&&(this._dialogInput.css({position:"absolute",left:"0",top:"-100px"}),e.blockUI&&(e.unblockUI(),e("body").append(this.dpDiv))),this._inDialog=!1)},_tidyDialog:function(e){e.dpDiv.removeClass(this._dialogClass).unbind(".ui-datepicker-calendar")},_checkExternalClick:function(t){if(!e.datepicker._curInst)return;var n=e(t.target),r=e.datepicker._getInst(n[0]);(n[0].id!==e.datepicker._mainDivId&&n.parents("#"+e.datepicker._mainDivId).length===0&&!n.hasClass(e.datepicker.markerClassName)&&!n.closest("."+e.datepicker._triggerClass).length&&e.datepicker._datepickerShowing&&(!e.datepicker._inDialog||!e.blockUI)||n.hasClass(e.datepicker.markerClassName)&&e.datepicker._curInst!==r)&&e.datepicker._hideDatepicker()},_adjustDate:function(t,n,r){var i=e(t),s=this._getInst(i[0]);if(this._isDisabledDatepicker(i[0]))return;this._adjustInstDate(s,n+(r==="M"?this._get(s,"showCurrentAtPos"):0),r),this._updateDatepicker(s)},_gotoToday:function(t){var n,r=e(t),i=this._getInst(r[0]);this._get(i,"gotoCurrent")&&i.currentDay?(i.selectedDay=i.currentDay,i.drawMonth=i.selectedMonth=i.currentMonth,i.drawYear=i.selectedYear=i.currentYear):(n=new Date,i.selectedDay=n.getDate(),i.drawMonth=i.selectedMonth=n.getMonth(),i.drawYear=i.selectedYear=n.getFullYear()),this._notifyChange(i),this._adjustDate(r)},_selectMonthYear:function(t,n,r){var i=e(t),s=this._getInst(i[0]);s["selected"+(r==="M"?"Month":"Year")]=s["draw"+(r==="M"?"Month":"Year")]=parseInt(n.options[n.selectedIndex].value,10),this._notifyChange(s),this._adjustDate(i)},_selectDay:function(t,n,r,i){var s,o=e(t);if(e(i).hasClass(this._unselectableClass)||this._isDisabledDatepicker(o[0]))return;s=this._getInst(o[0]),s.selectedDay=s.currentDay=e("a",i).html(),s.selectedMonth=s.currentMonth=n,s.selectedYear=s.currentYear=r,this._selectDate(t,this._formatDate(s,s.currentDay,s.currentMonth,s.currentYear))},_clearDate:function(t){var n=e(t);this._selectDate(n,"")},_selectDate:function(t,n){var r,i=e(t),s=this._getInst(i[0]);n=n!=null?n:this._formatDate(s),s.input&&s.input.val(n),this._updateAlternate(s),r=this._get(s,"onSelect"),r?r.apply(s.input?s.input[0]:null,[n,s]):s.input&&s.input.trigger("change"),s.inline?this._updateDatepicker(s):(this._hideDatepicker(),this._lastInput=s.input[0],typeof s.input[0]!="object"&&s.input.focus(),this._lastInput=null)},_updateAlternate:function(t){var n,r,i,s=this._get(t,"altField");s&&(n=this._get(t,"altFormat")||this._get(t,"dateFormat"),r=this._getDate(t),i=this.formatDate(n,r,this._getFormatConfig(t)),e(s).each(function(){e(this).val(i)}))},noWeekends:function(e){var t=e.getDay();return[t>0&&t<6,""]},iso8601Week:function(e){var t,n=new Date(e.getTime());return n.setDate(n.getDate()+4-(n.getDay()||7)),t=n.getTime(),n.setMonth(0),n.setDate(1),Math.floor(Math.round((t-n)/864e5)/7)+1},parseDate:function(t,n,r){if(t==null||n==null)throw"Invalid arguments";n=typeof n=="object"?n.toString():n+"";if(n==="")return null;var i,s,o,u=0,a=(r?r.shortYearCutoff:null)||this._defaults.shortYearCutoff,f=typeof a!="string"?a:(new Date).getFullYear()%100+parseInt(a,10),l=(r?r.dayNamesShort:null)||this._defaults.dayNamesShort,c=(r?r.dayNames:null)||this._defaults.dayNames,h=(r?r.monthNamesShort:null)||this._defaults.monthNamesShort,p=(r?r.monthNames:null)||this._defaults.monthNames,d=-1,v=-1,m=-1,g=-1,y=!1,b,w=function(e){var n=i+1<t.length&&t.charAt(i+1)===e;return n&&i++,n},E=function(e){var t=w(e),r=e==="@"?14:e==="!"?20:e==="y"&&t?4:e==="o"?3:2,i=new RegExp("^\\d{1,"+r+"}"),s=n.substring(u).match(i);if(!s)throw"Missing number at position "+u;return u+=s[0].length,parseInt(s[0],10)},S=function(t,r,i){var s=-1,o=e.map(w(t)?i:r,function(e,t){return[[t,e]]}).sort(function(e,t){return-(e[1].length-t[1].length)});e.each(o,function(e,t){var r=t[1];if(n.substr(u,r.length).toLowerCase()===r.toLowerCase())return s=t[0],u+=r.length,!1});if(s!==-1)return s+1;throw"Unknown name at position "+u},x=function(){if(n.charAt(u)!==t.charAt(i))throw"Unexpected literal at position "+u;u++};for(i=0;i<t.length;i++)if(y)t.charAt(i)==="'"&&!w("'")?y=!1:x();else switch(t.charAt(i)){case"d":m=E("d");break;case"D":S("D",l,c);break;case"o":g=E("o");break;case"m":v=E("m");break;case"M":v=S("M",h,p);break;case"y":d=E("y");break;case"@":b=new Date(E("@")),d=b.getFullYear(),v=b.getMonth()+1,m=b.getDate();break;case"!":b=new Date((E("!")-this._ticksTo1970)/1e4),d=b.getFullYear(),v=b.getMonth()+1,m=b.getDate();break;case"'":w("'")?x():y=!0;break;default:x()}if(u<n.length){o=n.substr(u);if(!/^\s+/.test(o))throw"Extra/unparsed characters found in date: "+o}d===-1?d=(new Date).getFullYear():d<100&&(d+=(new Date).getFullYear()-(new Date).getFullYear()%100+(d<=f?0:-100));if(g>-1){v=1,m=g;do{s=this._getDaysInMonth(d,v-1);if(m<=s)break;v++,m-=s}while(!0)}b=this._daylightSavingAdjust(new Date(d,v-1,m));if(b.getFullYear()!==d||b.getMonth()+1!==v||b.getDate()!==m)throw"Invalid date";return b},ATOM:"yy-mm-dd",COOKIE:"D, dd M yy",ISO_8601:"yy-mm-dd",RFC_822:"D, d M y",RFC_850:"DD, dd-M-y",RFC_1036:"D, d M y",RFC_1123:"D, d M yy",RFC_2822:"D, d M yy",RSS:"D, d M y",TICKS:"!",TIMESTAMP:"@",W3C:"yy-mm-dd",_ticksTo1970:(718685+Math.floor(492.5)-Math.floor(19.7)+Math.floor(4.925))*24*60*60*1e7,formatDate:function(e,t,n){if(!t)return"";var r,i=(n?n.dayNamesShort:null)||this._defaults.dayNamesShort,s=(n?n.dayNames:null)||this._defaults.dayNames,o=(n?n.monthNamesShort:null)||this._defaults.monthNamesShort,u=(n?n.monthNames:null)||this._defaults.monthNames,a=function(t){var n=r+1<e.length&&e.charAt(r+1)===t;return n&&r++,n},f=function(e,t,n){var r=""+t;if(a(e))while(r.length<n)r="0"+r;return r},l=function(e,t,n,r){return a(e)?r[t]:n[t]},c="",h=!1;if(t)for(r=0;r<e.length;r++)if(h)e.charAt(r)==="'"&&!a("'")?h=!1:c+=e.charAt(r);else switch(e.charAt(r)){case"d":c+=f("d",t.getDate(),2);break;case"D":c+=l("D",t.getDay(),i,s);break;case"o":c+=f("o",Math.round(((new Date(t.getFullYear(),t.getMonth(),t.getDate())).getTime()-(new Date(t.getFullYear(),0,0)).getTime())/864e5),3);break;case"m":c+=f("m",t.getMonth()+1,2);break;case"M":c+=l("M",t.getMonth(),o,u);break;case"y":c+=a("y")?t.getFullYear():(t.getYear()%100<10?"0":"")+t.getYear()%100;break;case"@":c+=t.getTime();break;case"!":c+=t.getTime()*1e4+this._ticksTo1970;break;case"'":a("'")?c+="'":h=!0;break;default:c+=e.charAt(r)}return c},_possibleChars:function(e){var t,n="",r=!1,i=function(n){var r=t+1<e.length&&e.charAt(t+1)===n;return r&&t++,r};for(t=0;t<e.length;t++)if(r)e.charAt(t)==="'"&&!i("'")?r=!1:n+=e.charAt(t);else switch(e.charAt(t)){case"d":case"m":case"y":case"@":n+="0123456789";break;case"D":case"M":return null;case"'":i("'")?n+="'":r=!0;break;default:n+=e.charAt(t)}return n},_get:function(e,n){return e.settings[n]!==t?e.settings[n]:this._defaults[n]},_setDateFromField:function(e,t){if(e.input.val()===e.lastVal)return;var n=this._get(e,"dateFormat"),r=e.lastVal=e.input?e.input.val():null,i=this._getDefaultDate(e),s=i,o=this._getFormatConfig(e);try{s=this.parseDate(n,r,o)||i}catch(u){r=t?"":r}e.selectedDay=s.getDate(),e.drawMonth=e.selectedMonth=s.getMonth(),e.drawYear=e.selectedYear=s.getFullYear(),e.currentDay=r?s.getDate():0,e.currentMonth=r?s.getMonth():0,e.currentYear=r?s.getFullYear():0,this._adjustInstDate(e)},_getDefaultDate:function(e){return this._restrictMinMax(e,this._determineDate(e,this._get(e,"defaultDate"),new Date))},_determineDate:function(t,n,r){var i=function(e){var t=new Date;return t.setDate(t.getDate()+e),t},s=function(n){try{return e.datepicker.parseDate(e.datepicker._get(t,"dateFormat"),n,e.datepicker._getFormatConfig(t))}catch(r){}var i=(n.toLowerCase().match(/^c/)?e.datepicker._getDate(t):null)||new Date,s=i.getFullYear(),o=i.getMonth(),u=i.getDate(),a=/([+\-]?[0-9]+)\s*(d|D|w|W|m|M|y|Y)?/g,f=a.exec(n);while(f){switch(f[2]||"d"){case"d":case"D":u+=parseInt(f[1],10);break;case"w":case"W":u+=parseInt(f[1],10)*7;break;case"m":case"M":o+=parseInt(f[1],10),u=Math.min(u,e.datepicker._getDaysInMonth(s,o));break;case"y":case"Y":s+=parseInt(f[1],10),u=Math.min(u,e.datepicker._getDaysInMonth(s,o))}f=a.exec(n)}return new Date(s,o,u)},o=n==null||n===""?r:typeof n=="string"?s(n):typeof n=="number"?isNaN(n)?r:i(n):new Date(n.getTime());return o=o&&o.toString()==="Invalid Date"?r:o,o&&(o.setHours(0),o.setMinutes(0),o.setSeconds(0),o.setMilliseconds(0)),this._daylightSavingAdjust(o)},_daylightSavingAdjust:function(e){return e?(e.setHours(e.getHours()>12?e.getHours()+2:0),e):null},_setDate:function(e,t,n){var r=!t,i=e.selectedMonth,s=e.selectedYear,o=this._restrictMinMax(e,this._determineDate(e,t,new Date));e.selectedDay=e.currentDay=o.getDate(),e.drawMonth=e.selectedMonth=e.currentMonth=o.getMonth(),e.drawYear=e.selectedYear=e.currentYear=o.getFullYear(),(i!==e.selectedMonth||s!==e.selectedYear)&&!n&&this._notifyChange(e),this._adjustInstDate(e),e.input&&e.input.val(r?"":this._formatDate(e))},_getDate:function(e){var t=!e.currentYear||e.input&&e.input.val()===""?null:this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return t},_attachHandlers:function(t){var n=this._get(t,"stepMonths"),i="#"+t.id.replace(/\\\\/g,"\\");t.dpDiv.find("[data-handler]").map(function(){var t={prev:function(){window["DP_jQuery_"+r].datepicker._adjustDate(i,-n,"M")},next:function(){window["DP_jQuery_"+r].datepicker._adjustDate(i,+n,"M")},hide:function(){window["DP_jQuery_"+r].datepicker._hideDatepicker()},today:function(){window["DP_jQuery_"+r].datepicker._gotoToday(i)},selectDay:function(){return window["DP_jQuery_"+r].datepicker._selectDay(i,+this.getAttribute("data-month"),+this.getAttribute("data-year"),this),!1},selectMonth:function(){return window["DP_jQuery_"+r].datepicker._selectMonthYear(i,this,"M"),!1},selectYear:function(){return window["DP_jQuery_"+r].datepicker._selectMonthYear(i,this,"Y"),!1}};e(this).bind(this.getAttribute("data-event"),t[this.getAttribute("data-handler")])})},_generateHTML:function(e){var t,n,r,i,s,o,u,a,f,l,c,h,p,d,v,m,g,y,b,w,E,S,x,T,N,C,k,L,A,O,M,_,D,P,H,B,j,F,I,q=new Date,R=this._daylightSavingAdjust(new Date(q.getFullYear(),q.getMonth(),q.getDate())),U=this._get(e,"isRTL"),z=this._get(e,"showButtonPanel"),W=this._get(e,"hideIfNoPrevNext"),X=this._get(e,"navigationAsDateFormat"),V=this._getNumberOfMonths(e),$=this._get(e,"showCurrentAtPos"),J=this._get(e,"stepMonths"),K=V[0]!==1||V[1]!==1,Q=this._daylightSavingAdjust(e.currentDay?new Date(e.currentYear,e.currentMonth,e.currentDay):new Date(9999,9,9)),G=this._getMinMaxDate(e,"min"),Y=this._getMinMaxDate(e,"max"),Z=e.drawMonth-$,et=e.drawYear;Z<0&&(Z+=12,et--);if(Y){t=this._daylightSavingAdjust(new Date(Y.getFullYear(),Y.getMonth()-V[0]*V[1]+1,Y.getDate())),t=G&&t<G?G:t;while(this._daylightSavingAdjust(new Date(et,Z,1))>t)Z--,Z<0&&(Z=11,et--)}e.drawMonth=Z,e.drawYear=et,n=this._get(e,"prevText"),n=X?this.formatDate(n,this._daylightSavingAdjust(new Date(et,Z-J,1)),this._getFormatConfig(e)):n,r=this._canAdjustMonth(e,-1,et,Z)?"<a class='ui-datepicker-prev ui-corner-all' data-handler='prev' data-event='click' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(U?"e":"w")+"'>"+n+"</span></a>":W?"":"<a class='ui-datepicker-prev ui-corner-all ui-state-disabled' title='"+n+"'><span class='ui-icon ui-icon-circle-triangle-"+(U?"e":"w")+"'>"+n+"</span></a>",i=this._get(e,"nextText"),i=X?this.formatDate(i,this._daylightSavingAdjust(new Date(et,Z+J,1)),this._getFormatConfig(e)):i,s=this._canAdjustMonth(e,1,et,Z)?"<a class='ui-datepicker-next ui-corner-all' data-handler='next' data-event='click' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(U?"w":"e")+"'>"+i+"</span></a>":W?"":"<a class='ui-datepicker-next ui-corner-all ui-state-disabled' title='"+i+"'><span class='ui-icon ui-icon-circle-triangle-"+(U?"w":"e")+"'>"+i+"</span></a>",o=this._get(e,"currentText"),u=this._get(e,"gotoCurrent")&&e.currentDay?Q:R,o=X?this.formatDate(o,u,this._getFormatConfig(e)):o,a=e.inline?"":"<button type='button' class='ui-datepicker-close ui-state-default ui-priority-primary ui-corner-all' data-handler='hide' data-event='click'>"+this._get(e,"closeText")+"</button>",f=z?"<div class='ui-datepicker-buttonpane ui-widget-content'>"+(U?a:"")+(this._isInRange(e,u)?"<button type='button' class='ui-datepicker-current ui-state-default ui-priority-secondary ui-corner-all' data-handler='today' data-event='click'>"+o+"</button>":"")+(U?"":a)+"</div>":"",l=parseInt(this._get(e,"firstDay"),10),l=isNaN(l)?0:l,c=this._get(e,"showWeek"),h=this._get(e,"dayNames"),p=this._get(e,"dayNamesMin"),d=this._get(e,"monthNames"),v=this._get(e,"monthNamesShort"),m=this._get(e,"beforeShowDay"),g=this._get(e,"showOtherMonths"),y=this._get(e,"selectOtherMonths"),b=this._getDefaultDate(e),w="",E;for(S=0;S<V[0];S++){x="",this.maxRows=4;for(T=0;T<V[1];T++){N=this._daylightSavingAdjust(new Date(et,Z,e.selectedDay)),C=" ui-corner-all",k="";if(K){k+="<div class='ui-datepicker-group";if(V[1]>1)switch(T){case 0:k+=" ui-datepicker-group-first",C=" ui-corner-"+(U?"right":"left");break;case V[1]-1:k+=" ui-datepicker-group-last",C=" ui-corner-"+(U?"left":"right");break;default:k+=" ui-datepicker-group-middle",C=""}k+="'>"}k+="<div class='ui-datepicker-header ui-widget-header ui-helper-clearfix"+C+"'>"+(/all|left/.test(C)&&S===0?U?s:r:"")+(/all|right/.test(C)&&S===0?U?r:s:"")+this._generateMonthYearHeader(e,Z,et,G,Y,S>0||T>0,d,v)+"</div><table class='ui-datepicker-calendar'><thead>"+"<tr>",L=c?"<th class='ui-datepicker-week-col'>"+this._get(e,"weekHeader")+"</th>":"";for(E=0;E<7;E++)A=(E+l)%7,L+="<th"+((E+l+6)%7>=5?" class='ui-datepicker-week-end'":"")+">"+"<span title='"+h[A]+"'>"+p[A]+"</span></th>";k+=L+"</tr></thead><tbody>",O=this._getDaysInMonth(et,Z),et===e.selectedYear&&Z===e.selectedMonth&&(e.selectedDay=Math.min(e.selectedDay,O)),M=(this._getFirstDayOfMonth(et,Z)-l+7)%7,_=Math.ceil((M+O)/7),D=K?this.maxRows>_?this.maxRows:_:_,this.maxRows=D,P=this._daylightSavingAdjust(new Date(et,Z,1-M));for(H=0;H<D;H++){k+="<tr>",B=c?"<td class='ui-datepicker-week-col'>"+this._get(e,"calculateWeek")(P)+"</td>":"";for(E=0;E<7;E++)j=m?m.apply(e.input?e.input[0]:null,[P]):[!0,""],F=P.getMonth()!==Z,I=F&&!y||!j[0]||G&&P<G||Y&&P>Y,B+="<td class='"+((E+l+6)%7>=5?" ui-datepicker-week-end":"")+(F?" ui-datepicker-other-month":"")+(P.getTime()===N.getTime()&&Z===e.selectedMonth&&e._keyEvent||b.getTime()===P.getTime()&&b.getTime()===N.getTime()?" "+this._dayOverClass:"")+(I?" "+this._unselectableClass+" ui-state-disabled":"")+(F&&!g?"":" "+j[1]+(P.getTime()===Q.getTime()?" "+this._currentClass:"")+(P.getTime()===R.getTime()?" ui-datepicker-today":""))+"'"+((!F||g)&&j[2]?" title='"+j[2]+"'":"")+(I?"":" data-handler='selectDay' data-event='click' data-month='"+P.getMonth()+"' data-year='"+P.getFullYear()+"'")+">"+(F&&!g?"&#xa0;":I?"<span class='ui-state-default'>"+P.getDate()+"</span>":"<a class='ui-state-default"+(P.getTime()===R.getTime()?" ui-state-highlight":"")+(P.getTime()===Q.getTime()?" ui-state-active":"")+(F?" ui-priority-secondary":"")+"' href='#'>"+P.getDate()+"</a>")+"</td>",P.setDate(P.getDate()+1),P=this._daylightSavingAdjust(P);k+=B+"</tr>"}Z++,Z>11&&(Z=0,et++),k+="</tbody></table>"+(K?"</div>"+(V[0]>0&&T===V[1]-1?"<div class='ui-datepicker-row-break'></div>":""):""),x+=k}w+=x}return w+=f,e._keyEvent=!1,w},_generateMonthYearHeader:function(e,t,n,r,i,s,o,u){var a,f,l,c,h,p,d,v,m=this._get(e,"changeMonth"),g=this._get(e,"changeYear"),y=this._get(e,"showMonthAfterYear"),b="<div class='ui-datepicker-title'>",w="";if(s||!m)w+="<span class='ui-datepicker-month'>"+o[t]+"</span>";else{a=r&&r.getFullYear()===n,f=i&&i.getFullYear()===n,w+="<select class='ui-datepicker-month' data-handler='selectMonth' data-event='change'>";for(l=0;l<12;l++)(!a||l>=r.getMonth())&&(!f||l<=i.getMonth())&&(w+="<option value='"+l+"'"+(l===t?" selected='selected'":"")+">"+u[l]+"</option>");w+="</select>"}y||(b+=w+(s||!m||!g?"&#xa0;":""));if(!e.yearshtml){e.yearshtml="";if(s||!g)b+="<span class='ui-datepicker-year'>"+n+"</span>";else{c=this._get(e,"yearRange").split(":"),h=(new Date).getFullYear(),p=function(e){var t=e.match(/c[+\-].*/)?n+parseInt(e.substring(1),10):e.match(/[+\-].*/)?h+parseInt(e,10):parseInt(e,10);return isNaN(t)?h:t},d=p(c[0]),v=Math.max(d,p(c[1]||"")),d=r?Math.max(d,r.getFullYear()):d,v=i?Math.min(v,i.getFullYear()):v,e.yearshtml+="<select class='ui-datepicker-year' data-handler='selectYear' data-event='change'>";for(;d<=v;d++)e.yearshtml+="<option value='"+d+"'"+(d===n?" selected='selected'":"")+">"+d+"</option>";e.yearshtml+="</select>",b+=e.yearshtml,e.yearshtml=null}}return b+=this._get(e,"yearSuffix"),y&&(b+=(s||!m||!g?"&#xa0;":"")+w),b+="</div>",b},_adjustInstDate:function(e,t,n){var r=e.drawYear+(n==="Y"?t:0),i=e.drawMonth+(n==="M"?t:0),s=Math.min(e.selectedDay,this._getDaysInMonth(r,i))+(n==="D"?t:0),o=this._restrictMinMax(e,this._daylightSavingAdjust(new Date(r,i,s)));e.selectedDay=o.getDate(),e.drawMonth=e.selectedMonth=o.getMonth(),e.drawYear=e.selectedYear=o.getFullYear(),(n==="M"||n==="Y")&&this._notifyChange(e)},_restrictMinMax:function(e,t){var n=this._getMinMaxDate(e,"min"),r=this._getMinMaxDate(e,"max"),i=n&&t<n?n:t;return r&&i>r?r:i},_notifyChange:function(e){var t=this._get(e,"onChangeMonthYear");t&&t.apply(e.input?e.input[0]:null,[e.selectedYear,e.selectedMonth+1,e])},_getNumberOfMonths:function(e){var t=this._get(e,"numberOfMonths");return t==null?[1,1]:typeof t=="number"?[1,t]:t},_getMinMaxDate:function(e,t){return this._determineDate(e,this._get(e,t+"Date"),null)},_getDaysInMonth:function(e,t){return 32-this._daylightSavingAdjust(new Date(e,t,32)).getDate()},_getFirstDayOfMonth:function(e,t){return(new Date(e,t,1)).getDay()},_canAdjustMonth:function(e,t,n,r){var i=this._getNumberOfMonths(e),s=this._daylightSavingAdjust(new Date(n,r+(t<0?t:i[0]*i[1]),1));return t<0&&s.setDate(this._getDaysInMonth(s.getFullYear(),s.getMonth())),this._isInRange(e,s)},_isInRange:function(e,t){var n,r,i=this._getMinMaxDate(e,"min"),s=this._getMinMaxDate(e,"max"),o=null,u=null,a=this._get(e,"yearRange");return a&&(n=a.split(":"),r=(new Date).getFullYear(),o=parseInt(n[0],10)+r,u=parseInt(n[1],10)+r),(!i||t.getTime()>=i.getTime())&&(!s||t.getTime()<=s.getTime())&&(!o||t.getFullYear()>=o)&&(!u||t.getFullYear()<=u)},_getFormatConfig:function(e){var t=this._get(e,"shortYearCutoff");return t=typeof t!="string"?t:(new Date).getFullYear()%100+parseInt(t,10),{shortYearCutoff:t,dayNamesShort:this._get(e,"dayNamesShort"),dayNames:this._get(e,"dayNames"),monthNamesShort:this._get(e,"monthNamesShort"),monthNames:this._get(e,"monthNames")}},_formatDate:function(e,t,n,r){t||(e.currentDay=e.selectedDay,e.currentMonth=e.selectedMonth,e.currentYear=e.selectedYear);var i=t?typeof t=="object"?t:this._daylightSavingAdjust(new Date(r,n,t)):this._daylightSavingAdjust(new Date(e.currentYear,e.currentMonth,e.currentDay));return this.formatDate(this._get(e,"dateFormat"),i,this._getFormatConfig(e))}}),e.fn.datepicker=function(t){if(!this.length)return this;e.datepicker.initialized||(e(document).mousedown(e.datepicker._checkExternalClick),e.datepicker.initialized=!0),e("#"+e.datepicker._mainDivId).length===0&&e("body").append(e.datepicker.dpDiv);var n=Array.prototype.slice.call(arguments,1);return typeof t!="string"||t!=="isDisabled"&&t!=="getDate"&&t!=="widget"?t==="option"&&arguments.length===2&&typeof arguments[1]=="string"?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(n)):this.each(function(){typeof t=="string"?e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this].concat(n)):e.datepicker._attachDatepicker(this,t)}):e.datepicker["_"+t+"Datepicker"].apply(e.datepicker,[this[0]].concat(n))},e.datepicker=new s,e.datepicker.initialized=!1,e.datepicker.uuid=(new Date).getTime(),e.datepicker.version="1.10.0",window["DP_jQuery_"+r]=e}(jQuery),function(e,t){var n={buttons:!0,height:!0,maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0,width:!0},r={maxHeight:!0,maxWidth:!0,minHeight:!0,minWidth:!0};e.widget("ui.dialog",{version:"1.10.0",options:{appendTo:"body",autoOpen:!0,buttons:[],closeOnEscape:!0,closeText:"close",dialogClass:"",draggable:!0,hide:null,height:"auto",maxHeight:null,maxWidth:null,minHeight:150,minWidth:150,modal:!1,position:{my:"center",at:"center",of:window,collision:"fit",using:function(t){var n=e(this).css(t).offset().top;n<0&&e(this).css("top",t.top-n)}},resizable:!0,show:null,title:null,width:300,beforeClose:null,close:null,drag:null,dragStart:null,dragStop:null,focus:null,open:null,resize:null,resizeStart:null,resizeStop:null},_create:function(){this.originalCss={display:this.element[0].style.display,width:this.element[0].style.width,minHeight:this.element[0].style.minHeight,maxHeight:this.element[0].style.maxHeight,height:this.element[0].style.height},this.originalPosition={parent:this.element.parent(),index:this.element.parent().children().index(this.element)},this.originalTitle=this.element.attr("title"),this.options.title=this.options.title||this.originalTitle,this._createWrapper(),this.element.show().removeAttr("title").addClass("ui-dialog-content ui-widget-content").appendTo(this.uiDialog),this._createTitlebar(),this._createButtonPane(),this.options.draggable&&e.fn.draggable&&this._makeDraggable(),this.options.resizable&&e.fn.resizable&&this._makeResizable(),this._isOpen=!1},_init:function(){this.options.autoOpen&&this.open()},_appendTo:function(){var t=this.options.appendTo;return t&&(t.jquery||t.nodeType)?e(t):this.document.find(t||"body").eq(0)},_destroy:function(){var e,t=this.originalPosition;this._destroyOverlay(),this.element.removeUniqueId().removeClass("ui-dialog-content ui-widget-content").css(this.originalCss).detach(),this.uiDialog.stop(!0,!0).remove(),this.originalTitle&&this.element.attr("title",this.originalTitle),e=t.parent.children().eq(t.index),e.length&&e[0]!==this.element[0]?e.before(this.element):t.parent.append(this.element)},widget:function(){return this.uiDialog},disable:e.noop,enable:e.noop,close:function(t){var n=this;if(!this._isOpen||this._trigger("beforeClose",t)===!1)return;this._isOpen=!1,this._destroyOverlay(),this.opener.filter(":focusable").focus().length||e(this.document[0].activeElement).blur(),this._hide(this.uiDialog,this.options.hide,function(){n._trigger("close",t)})},isOpen:function(){return this._isOpen},moveToTop:function(){this._moveToTop()},_moveToTop:function(e,t){var n=!!this.uiDialog.nextAll(":visible").insertBefore(this.uiDialog).length;return n&&!t&&this._trigger("focus",e),n},open:function(){if(this._isOpen){this._moveToTop()&&this._focusTabbable();return}this.opener=e(this.document[0].activeElement),this._size(),this._position(),this._createOverlay(),this._moveToTop(null,!0),this._show(this.uiDialog,this.options.show),this._focusTabbable(),this._isOpen=!0,this._trigger("open"),this._trigger("focus")},_focusTabbable:function(){var e=this.element.find("[autofocus]");e.length||(e=this.element.find(":tabbable")),e.length||(e=this.uiDialogButtonPane.find(":tabbable")),e.length||(e=this.uiDialogTitlebarClose.filter(":tabbable")),e.length||(e=this.uiDialog),e.eq(0).focus()},_keepFocus:function(t){function n(){var t=this.document[0].activeElement,n=this.uiDialog[0]===t||e.contains(this.uiDialog[0],t);n||this._focusTabbable()}t.preventDefault(),n.call(this),this._delay(n)},_createWrapper:function(){this.uiDialog=e("<div>").addClass("ui-dialog ui-widget ui-widget-content ui-corner-all ui-front "+this.options.dialogClass).hide().attr({tabIndex:-1,role:"dialog"}).appendTo(this._appendTo()),this._on(this.uiDialog,{keydown:function(t){if(this.options.closeOnEscape&&!t.isDefaultPrevented()&&t.keyCode&&t.keyCode===e.ui.keyCode.ESCAPE){t.preventDefault(),this.close(t);return}if(t.keyCode!==e.ui.keyCode.TAB)return;var n=this.uiDialog.find(":tabbable"),r=n.filter(":first"),i=n.filter(":last");t.target!==i[0]&&t.target!==this.uiDialog[0]||!!t.shiftKey?(t.target===r[0]||t.target===this.uiDialog[0])&&t.shiftKey&&(i.focus(1),t.preventDefault()):(r.focus(1),t.preventDefault())},mousedown:function(e){this._moveToTop(e)&&this._focusTabbable()}}),this.element.find("[aria-describedby]").length||this.uiDialog.attr({"aria-describedby":this.element.uniqueId().attr("id")})},_createTitlebar:function(){var t;this.uiDialogTitlebar=e("<div>").addClass("ui-dialog-titlebar ui-widget-header ui-corner-all ui-helper-clearfix").prependTo(this.uiDialog),this._on(this.uiDialogTitlebar,{mousedown:function(t){e(t.target).closest(".ui-dialog-titlebar-close")||this.uiDialog.focus()}}),this.uiDialogTitlebarClose=e("<button></button>").button({label:this.options.closeText,icons:{primary:"ui-icon-closethick"},text:!1}).addClass("ui-dialog-titlebar-close").appendTo(this.uiDialogTitlebar),this._on(this.uiDialogTitlebarClose,{click:function(e){e.preventDefault(),this.close(e)}}),t=e("<span>").uniqueId().addClass("ui-dialog-title").prependTo(this.uiDialogTitlebar),this._title(t),this.uiDialog.attr({"aria-labelledby":t.attr("id")})},_title:function(e){this.options.title||e.html("&#160;"),e.text(this.options.title)},_createButtonPane:function(){this.uiDialogButtonPane=e("<div>").addClass("ui-dialog-buttonpane ui-widget-content ui-helper-clearfix"),this.uiButtonSet=e("<div>").addClass("ui-dialog-buttonset").appendTo(this.uiDialogButtonPane),this._createButtons()},_createButtons:function(){var t=this,n=this.options.buttons;this.uiDialogButtonPane.remove(),this.uiButtonSet.empty();if(e.isEmptyObject(n)){this.uiDialog.removeClass("ui-dialog-buttons");return}e.each(n,function(n,r){var i,s;r=e.isFunction(r)?{click:r,text:n}:r,r=e.extend({type:"button"},r),i=r.click,r.click=function(){i.apply(t.element[0],arguments)},s={icons:r.icons,text:r.showText},delete r.icons,delete r.showText,e("<button></button>",r).button(s).appendTo(t.uiButtonSet)}),this.uiDialog.addClass("ui-dialog-buttons"),this.uiDialogButtonPane.appendTo(this.uiDialog)},_makeDraggable:function(){function r(e){return{position:e.position,offset:e.offset}}var t=this,n=this.options;this.uiDialog.draggable({cancel:".ui-dialog-content, .ui-dialog-titlebar-close",handle:".ui-dialog-titlebar",containment:"document",start:function(n,i){e(this).addClass("ui-dialog-dragging"),t._trigger("dragStart",n,r(i))},drag:function(e,n){t._trigger("drag",e,r(n))},stop:function(i,s){n.position=[s.position.left-t.document.scrollLeft(),s.position.top-t.document.scrollTop()],e(this).removeClass("ui-dialog-dragging"),t._trigger("dragStop",i,r(s))}})},_makeResizable:function(){function o(e){return{originalPosition:e.originalPosition,originalSize:e.originalSize,position:e.position,size:e.size}}var t=this,n=this.options,r=n.resizable,i=this.uiDialog.css("position"),s=typeof r=="string"?r:"n,e,s,w,se,sw,ne,nw";this.uiDialog.resizable({cancel:".ui-dialog-content",containment:"document",alsoResize:this.element,maxWidth:n.maxWidth,maxHeight:n.maxHeight,minWidth:n.minWidth,minHeight:this._minHeight(),handles:s,start:function(n,r){e(this).addClass("ui-dialog-resizing"),t._trigger("resizeStart",n,o(r))},resize:function(e,n){t._trigger("resize",e,o(n))},stop:function(r,i){n.height=e(this).height(),n.width=e(this).width(),e(this).removeClass("ui-dialog-resizing"),t._trigger("resizeStop",r,o(i))}}).css("position",i)},_minHeight:function(){var e=this.options;return e.height==="auto"?e.minHeight:Math.min(e.minHeight,e.height)},_position:function(){var e=this.uiDialog.is(":visible");e||this.uiDialog.show(),this.uiDialog.position(this.options.position),e||this.uiDialog.hide()},_setOptions:function(t){var i=this,s=!1,o={};e.each(t,function(e,t){i._setOption(e,t),e in n&&(s=!0),e in r&&(o[e]=t)}),s&&(this._size(),this._position()),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option",o)},_setOption:function(e,t){var n,r,i=this.uiDialog;e==="dialogClass"&&i.removeClass(this.options.dialogClass).addClass(t);if(e==="disabled")return;this._super(e,t),e==="appendTo"&&this.uiDialog.appendTo(this._appendTo()),e==="buttons"&&this._createButtons(),e==="closeText"&&this.uiDialogTitlebarClose.button({label:""+t}),e==="draggable"&&(n=i.is(":data(ui-draggable)"),n&&!t&&i.draggable("destroy"),!n&&t&&this._makeDraggable()),e==="position"&&this._position(),e==="resizable"&&(r=i.is(":data(ui-resizable)"),r&&!t&&i.resizable("destroy"),r&&typeof t=="string"&&i.resizable("option","handles",t),!r&&t!==!1&&this._makeResizable()),e==="title"&&this._title(this.uiDialogTitlebar.find(".ui-dialog-title"))},_size:function(){var e,t,n,r=this.options;this.element.show().css({width:"auto",minHeight:0,maxHeight:"none",height:0}),r.minWidth>r.width&&(r.width=r.minWidth),e=this.uiDialog.css({height:"auto",width:r.width}).outerHeight(),t=Math.max(0,r.minHeight-e),n=typeof r.maxHeight=="number"?Math.max(0,r.maxHeight-e):"none",r.height==="auto"?this.element.css({minHeight:t,maxHeight:n,height:"auto"}):this.element.height(Math.max(0,r.height-e)),this.uiDialog.is(":data(ui-resizable)")&&this.uiDialog.resizable("option","minHeight",this._minHeight())},_createOverlay:function(){if(!this.options.modal)return;e.ui.dialog.overlayInstances||this._delay(function(){e.ui.dialog.overlayInstances&&this._on(this.document,{focusin:function(t){e(t.target).closest(".ui-dialog").length||(t.preventDefault(),e(".ui-dialog:visible:last .ui-dialog-content").data("ui-dialog")._focusTabbable())}})}),this.overlay=e("<div>").addClass("ui-widget-overlay ui-front").appendTo(this.document[0].body),this._on(this.overlay,{mousedown:"_keepFocus"}),e.ui.dialog.overlayInstances++},_destroyOverlay:function(){if(!this.options.modal)return;e.ui.dialog.overlayInstances--,e.ui.dialog.overlayInstances||this._off(this.document,"focusin"),this.overlay.remove()}}),e.ui.dialog.overlayInstances=0,e.uiBackCompat!==!1&&e.widget("ui.dialog",e.ui.dialog,{_position:function(){var t=this.options.position,n=[],r=[0,0],i;if(t){if(typeof t=="string"||typeof t=="object"&&"0"in t)n=t.split?t.split(" "):[t[0],t[1]],n.length===1&&(n[1]=n[0]),e.each(["left","top"],function(e,t){+n[e]===n[e]&&(r[e]=n[e],n[e]=t)}),t={my:n[0]+(r[0]<0?r[0]:"+"+r[0])+" "+n[1]+(r[1]<0?r[1]:"+"+r[1]),at:n.join(" ")};t=e.extend({},e.ui.dialog.prototype.options.position,t)}else t=e.ui.dialog.prototype.options.position;i=this.uiDialog.is(":visible"),i||this.uiDialog.show(),this.uiDialog.position(t),i||this.uiDialog.hide()}})}(jQuery),function(e,t){var n=/up|down|vertical/,r=/up|left|vertical|horizontal/;e.effects.effect.blind=function(t,i){var s=e(this),o=["position","top","bottom","left","right","height","width"],u=e.effects.setMode(s,t.mode||"hide"),a=t.direction||"up",f=n.test(a),l=f?"height":"width",c=f?"top":"left",h=r.test(a),p={},d=u==="show",v,m,g;s.parent().is(".ui-effects-wrapper")?e.effects.save(s.parent(),o):e.effects.save(s,o),s.show(),v=e.effects.createWrapper(s).css({overflow:"hidden"}),m=v[l](),g=parseFloat(v.css(c))||0,p[l]=d?m:0,h||(s.css(f?"bottom":"right",0).css(f?"top":"left","auto").css({position:"absolute"}),p[c]=d?g:m+g),d&&(v.css(l,0),h||v.css(c,g+m)),v.animate(p,{duration:t.duration,easing:t.easing,queue:!1,complete:function(){u==="hide"&&s.hide(),e.effects.restore(s,o),e.effects.removeWrapper(s),i()}})}}(jQuery),function(e,t){e.effects.effect.bounce=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"effect"),o=s==="hide",u=s==="show",a=t.direction||"up",f=t.distance,l=t.times||5,c=l*2+(u||o?1:0),h=t.duration/c,p=t.easing,d=a==="up"||a==="down"?"top":"left",v=a==="up"||a==="left",m,g,y,b=r.queue(),w=b.length;(u||o)&&i.push("opacity"),e.effects.save(r,i),r.show(),e.effects.createWrapper(r),f||(f=r[d==="top"?"outerHeight":"outerWidth"]()/3),u&&(y={opacity:1},y[d]=0,r.css("opacity",0).css(d,v?-f*2:f*2).animate(y,h,p)),o&&(f/=Math.pow(2,l-1)),y={},y[d]=0;for(m=0;m<l;m++)g={},g[d]=(v?"-=":"+=")+f,r.animate(g,h,p).animate(y,h,p),f=o?f*2:f/2;o&&(g={opacity:0},g[d]=(v?"-=":"+=")+f,r.animate(g,h,p)),r.queue(function(){o&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}),w>1&&b.splice.apply(b,[1,0].concat(b.splice(w,c+1))),r.dequeue()}}(jQuery),function(e,t){e.effects.effect.clip=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=t.direction||"vertical",a=u==="vertical",f=a?"height":"width",l=a?"top":"left",c={},h,p,d;e.effects.save(r,i),r.show(),h=e.effects.createWrapper(r).css({overflow:"hidden"}),p=r[0].tagName==="IMG"?h:r,d=p[f](),o&&(p.css(f,0),p.css(l,d/2)),c[f]=o?d:0,c[l]=o?0:d/2,p.animate(c,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){o||r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}}(jQuery),function(e,t){e.effects.effect.drop=function(t,n){var r=e(this),i=["position","top","bottom","left","right","opacity","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=t.direction||"left",a=u==="up"||u==="down"?"top":"left",f=u==="up"||u==="left"?"pos":"neg",l={opacity:o?1:0},c;e.effects.save(r,i),r.show(),e.effects.createWrapper(r),c=t.distance||r[a==="top"?"outerHeight":"outerWidth"](!0)/2,o&&r.css("opacity",0).css(a,f==="pos"?-c:c),l[a]=(o?f==="pos"?"+=":"-=":f==="pos"?"-=":"+=")+c,r.animate(l,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}}(jQuery),function(e,t){e.effects.effect.explode=function(t,n){function y(){c.push(this),c.length===r*i&&b()}function b(){s.css({visibility:"visible"}),e(c).remove(),u||s.hide(),n()}var r=t.pieces?Math.round(Math.sqrt(t.pieces)):3,i=r,s=e(this),o=e.effects.setMode(s,t.mode||"hide"),u=o==="show",a=s.show().css("visibility","hidden").offset(),f=Math.ceil(s.outerWidth()/i),l=Math.ceil(s.outerHeight()/r),c=[],h,p,d,v,m,g;for(h=0;h<r;h++){v=a.top+h*l,g=h-(r-1)/2;for(p=0;p<i;p++)d=a.left+p*f,m=p-(i-1)/2,s.clone().appendTo("body").wrap("<div></div>").css({position:"absolute",visibility:"visible",left:-p*f,top:-h*l}).parent().addClass("ui-effects-explode").css({position:"absolute",overflow:"hidden",width:f,height:l,left:d+(u?m*f:0),top:v+(u?g*l:0),opacity:u?0:1}).animate({left:d+(u?0:m*f),top:v+(u?0:g*l),opacity:u?1:0},t.duration||500,t.easing,y)}}}(jQuery),function(e,t){e.effects.effect.fade=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"toggle");r.animate({opacity:i},{queue:!1,duration:t.duration,easing:t.easing,complete:n})}}(jQuery),function(e,t){e.effects.effect.fold=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"hide"),o=s==="show",u=s==="hide",a=t.size||15,f=/([0-9]+)%/.exec(a),l=!!t.horizFirst,c=o!==l,h=c?["width","height"]:["height","width"],p=t.duration/2,d,v,m={},g={};e.effects.save(r,i),r.show(),d=e.effects.createWrapper(r).css({overflow:"hidden"}),v=c?[d.width(),d.height()]:[d.height(),d.width()],f&&(a=parseInt(f[1],10)/100*v[u?0:1]),o&&d.css(l?{height:0,width:a}:{height:a,width:0}),m[h[0]]=o?v[0]:a,g[h[1]]=o?v[1]:0,d.animate(m,p,t.easing).animate(g,p,t.easing,function(){u&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()})}}(jQuery),function(e,t){e.effects.effect.highlight=function(t,n){var r=e(this),i=["backgroundImage","backgroundColor","opacity"],s=e.effects.setMode(r,t.mode||"show"),o={backgroundColor:r.css("backgroundColor")};s==="hide"&&(o.opacity=0),e.effects.save(r,i),r.show().css({backgroundImage:"none",backgroundColor:t.color||"#ffff99"}).animate(o,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),n()}})}}(jQuery),function(e,t){e.effects.effect.pulsate=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"show"),s=i==="show",o=i==="hide",u=s||i==="hide",a=(t.times||5)*2+(u?1:0),f=t.duration/a,l=0,c=r.queue(),h=c.length,p;if(s||!r.is(":visible"))r.css("opacity",0).show(),l=1;for(p=1;p<a;p++)r.animate({opacity:l},f,t.easing),l=1-l;r.animate({opacity:l},f,t.easing),r.queue(function(){o&&r.hide(),n()}),h>1&&c.splice.apply(c,[1,0].concat(c.splice(h,a+1))),r.dequeue()}}(jQuery),function(e,t){e.effects.effect.puff=function(t,n){var r=e(this),i=e.effects.setMode(r,t.mode||"hide"),s=i==="hide",o=parseInt(t.percent,10)||150,u=o/100,a={height:r.height(),width:r.width(),outerHeight:r.outerHeight(),outerWidth:r.outerWidth()};e.extend(t,{effect:"scale",queue:!1,fade:!0,mode:i,complete:n,percent:s?o:100,from:s?a:{height:a.height*u,width:a.width*u,outerHeight:a.outerHeight*u,outerWidth:a.outerWidth*u}}),r.effect(t)},e.effects.effect.scale=function(t,n){var r=e(this),i=e.extend(!0,{},t),s=e.effects.setMode(r,t.mode||"effect"),o=parseInt(t.percent,10)||(parseInt(t.percent,10)===0?0:s==="hide"?0:100),u=t.direction||"both",a=t.origin,f={height:r.height(),width:r.width(),outerHeight:r.outerHeight(),outerWidth:r.outerWidth()},l={y:u!=="horizontal"?o/100:1,x:u!=="vertical"?o/100:1};i.effect="size",i.queue=!1,i.complete=n,s!=="effect"&&(i.origin=a||["middle","center"],i.restore=!0),i.from=t.from||(s==="show"?{height:0,width:0,outerHeight:0,outerWidth:0}:f),i.to={height:f.height*l.y,width:f.width*l.x,outerHeight:f.outerHeight*l.y,outerWidth:f.outerWidth*l.x},i.fade&&(s==="show"&&(i.from.opacity=0,i.to.opacity=1),s==="hide"&&(i.from.opacity=1,i.to.opacity=0)),r.effect(i)},e.effects.effect.size=function(t,n){var r,i,s,o=e(this),u=["position","top","bottom","left","right","width","height","overflow","opacity"],a=["position","top","bottom","left","right","overflow","opacity"],f=["width","height","overflow"],l=["fontSize"],c=["borderTopWidth","borderBottomWidth","paddingTop","paddingBottom"],h=["borderLeftWidth","borderRightWidth","paddingLeft","paddingRight"],p=e.effects.setMode(o,t.mode||"effect"),d=t.restore||p!=="effect",v=t.scale||"both",m=t.origin||["middle","center"],g=o.css("position"),y=d?u:a,b={height:0,width:0,outerHeight:0,outerWidth:0};p==="show"&&o.show(),r={height:o.height(),width:o.width(),outerHeight:o.outerHeight(),outerWidth:o.outerWidth()},t.mode==="toggle"&&p==="show"?(o.from=t.to||b,o.to=t.from||r):(o.from=t.from||(p==="show"?b:r),o.to=t.to||(p==="hide"?b:r)),s={from:{y:o.from.height/r.height,x:o.from.width/r.width},to:{y:o.to.height/r.height,x:o.to.width/r.width}};if(v==="box"||v==="both")s.from.y!==s.to.y&&(y=y.concat(c),o.from=e.effects.setTransition(o,c,s.from.y,o.from),o.to=e.effects.setTransition(o,c,s.to.y,o.to)),s.from.x!==s.to.x&&(y=y.concat(h),o.from=e.effects.setTransition(o,h,s.from.x,o.from),o.to=e.effects.setTransition(o,h,s.to.x,o.to));(v==="content"||v==="both")&&s.from.y!==s.to.y&&(y=y.concat(l).concat(f),o.from=e.effects.setTransition(o,l,s.from.y,o.from),o.to=e.effects.setTransition(o,l,s.to.y,o.to)),e.effects.save(o,y),o.show(),e.effects.createWrapper(o),o.css("overflow","hidden").css(o.from),m&&(i=e.effects.getBaseline(m,r),o.from.top=(r.outerHeight-o.outerHeight())*i.y,o.from.left=(r.outerWidth-o.outerWidth())*i.x,o.to.top=(r.outerHeight-o.to.outerHeight)*i.y,o.to.left=(r.outerWidth-o.to.outerWidth)*i.x),o.css(o.from);if(v==="content"||v==="both")c=c.concat(["marginTop","marginBottom"]).concat(l),h=h.concat(["marginLeft","marginRight"]),f=u.concat(c).concat(h),o.find("*[width]").each(function(){var n=e(this),r={height:n.height(),width:n.width(),outerHeight:n.outerHeight(),outerWidth:n.outerWidth()};d&&e.effects.save(n,f),n.from={height:r.height*s.from.y,width:r.width*s.from.x,outerHeight:r.outerHeight*s.from.y,outerWidth:r.outerWidth*s.from.x},n.to={height:r.height*s.to.y,width:r.width*s.to.x,outerHeight:r.height*s.to.y,outerWidth:r.width*s.to.x},s.from.y!==s.to.y&&(n.from=e.effects.setTransition(n,c,s.from.y,n.from),n.to=e.effects.setTransition(n,c,s.to.y,n.to)),s.from.x!==s.to.x&&(n.from=e.effects.setTransition(n,h,s.from.x,n.from),n.to=e.effects.setTransition(n,h,s.to.x,n.to)),n.css(n.from),n.animate(n.to,t.duration,t.easing,function(){d&&e.effects.restore(n,f)})});o.animate(o.to,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){o.to.opacity===0&&o.css("opacity",o.from.opacity),p==="hide"&&o.hide(),e.effects.restore(o,y),d||(g==="static"?o.css({position:"relative",top:o.to.top,left:o.to.left}):e.each(["top","left"],function(e,t){o.css(t,function(t,n){var r=parseInt(n,10),i=e?o.to.left:o.to.top;return n==="auto"?i+"px":r+i+"px"})})),e.effects.removeWrapper(o),n()}})}}(jQuery),function(e,t){e.effects.effect.shake=function(t,n){var r=e(this),i=["position","top","bottom","left","right","height","width"],s=e.effects.setMode(r,t.mode||"effect"),o=t.direction||"left",u=t.distance||20,a=t.times||3,f=a*2+1,l=Math.round(t.duration/f),c=o==="up"||o==="down"?"top":"left",h=o==="up"||o==="left",p={},d={},v={},m,g=r.queue(),y=g.length;e.effects.save(r,i),r.show(),e.effects.createWrapper(r),p[c]=(h?"-=":"+=")+u,d[c]=(h?"+=":"-=")+u*2,v[c]=(h?"-=":"+=")+u*2,r.animate(p,l,t.easing);for(m=1;m<a;m++)r.animate(d,l,t.easing).animate(v,l,t.easing);r.animate(d,l,t.easing).animate(p,l/2,t.easing).queue(function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}),y>1&&g.splice.apply(g,[1,0].concat(g.splice(y,f+1))),r.dequeue()}}(jQuery),function(e,t){e.effects.effect.slide=function(t,n){var r=e(this),i=["position","top","bottom","left","right","width","height"],s=e.effects.setMode(r,t.mode||"show"),o=s==="show",u=t.direction||"left",a=u==="up"||u==="down"?"top":"left",f=u==="up"||u==="left",l,c={};e.effects.save(r,i),r.show(),l=t.distance||r[a==="top"?"outerHeight":"outerWidth"](!0),e.effects.createWrapper(r).css({overflow:"hidden"}),o&&r.css(a,f?isNaN(l)?"-"+l:-l:l),c[a]=(o?f?"+=":"-=":f?"-=":"+=")+l,r.animate(c,{queue:!1,duration:t.duration,easing:t.easing,complete:function(){s==="hide"&&r.hide(),e.effects.restore(r,i),e.effects.removeWrapper(r),n()}})}}(jQuery),function(e,t){e.effects.effect.transfer=function(t,n){var r=e(this),i=e(t.to),s=i.css("position")==="fixed",o=e("body"),u=s?o.scrollTop():0,a=s?o.scrollLeft():0,f=i.offset(),l={top:f.top-u,left:f.left-a,height:i.innerHeight(),width:i.innerWidth()},c=r.offset(),h=e("<div class='ui-effects-transfer'></div>").appendTo(document.body).addClass(t.className).css({top:c.top-u,left:c.left-a,height:r.innerHeight(),width:r.innerWidth(),position:s?"fixed":"absolute"}).animate(l,t.duration,t.easing,function(){h.remove(),n()})}}(jQuery),function(e,t){e.widget("ui.menu",{version:"1.10.0",defaultElement:"<ul>",delay:300,options:{icons:{submenu:"ui-icon-carat-1-e"},menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().addClass("ui-menu ui-widget ui-widget-content ui-corner-all").toggleClass("ui-menu-icons",!!this.element.find(".ui-icon").length).attr({role:this.options.role,tabIndex:0}).bind("click"+this.eventNamespace,e.proxy(function(e){this.options.disabled&&e.preventDefault()},this)),this.options.disabled&&this.element.addClass("ui-state-disabled").attr("aria-disabled","true"),this._on({"mousedown .ui-menu-item > a":function(e){e.preventDefault()},"click .ui-state-disabled > a":function(e){e.preventDefault()},"click .ui-menu-item:has(a)":function(t){var n=e(t.target).closest(".ui-menu-item");!this.mouseHandled&&n.not(".ui-state-disabled").length&&(this.mouseHandled=!0,this.select(t),n.has(".ui-menu").length?this.expand(t):this.element.is(":focus")||(this.element.trigger("focus",[!0]),this.active&&this.active.parents(".ui-menu").length===1&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(t){var n=e(t.currentTarget);n.siblings().children(".ui-state-active").removeClass("ui-state-active"),this.focus(t,n)},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(e,t){var n=this.active||this.element.children(".ui-menu-item").eq(0);t||this.focus(e,n)},blur:function(t){this._delay(function(){e.contains(this.element[0],this.document[0].activeElement)||this.collapseAll(t)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){e(t.target).closest(".ui-menu").length||this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeClass("ui-menu ui-widget ui-widget-content ui-corner-all ui-menu-icons").removeAttr("role").removeAttr("tabIndex").removeAttr("aria-labelledby").removeAttr("aria-expanded").removeAttr("aria-hidden").removeAttr("aria-disabled").removeUniqueId().show(),this.element.find(".ui-menu-item").removeClass("ui-menu-item").removeAttr("role").removeAttr("aria-disabled").children("a").removeUniqueId().removeClass("ui-corner-all ui-state-hover").removeAttr("tabIndex").removeAttr("role").removeAttr("aria-haspopup").children().each(function(){var t=e(this);t.data("ui-menu-submenu-carat")&&t.remove()}),this.element.find(".ui-menu-divider").removeClass("ui-menu-divider ui-widget-content")},_keydown:function(t){function a(e){return e.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")}var n,r,i,s,o,u=!0;switch(t.keyCode){case e.ui.keyCode.PAGE_UP:this.previousPage(t);break;case e.ui.keyCode.PAGE_DOWN:this.nextPage(t);break;case e.ui.keyCode.HOME:this._move("first","first",t);break;case e.ui.keyCode.END:this._move("last","last",t);break;case e.ui.keyCode.UP:this.previous(t);break;case e.ui.keyCode.DOWN:this.next(t);break;case e.ui.keyCode.LEFT:this.collapse(t);break;case e.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(t);break;case e.ui.keyCode.ENTER:case e.ui.keyCode.SPACE:this._activate(t);break;case e.ui.keyCode.ESCAPE:this.collapse(t);break;default:u=!1,r=this.previousFilter||"",i=String.fromCharCode(t.keyCode),s=!1,clearTimeout(this.filterTimer),i===r?s=!0:i=r+i,o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())}),n=s&&n.index(this.active.next())!==-1?this.active.nextAll(".ui-menu-item"):n,n.length||(i=String.fromCharCode(t.keyCode),o=new RegExp("^"+a(i),"i"),n=this.activeMenu.children(".ui-menu-item").filter(function(){return o.test(e(this).children("a").text())})),n.length?(this.focus(t,n),n.length>1?(this.previousFilter=i,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter):delete this.previousFilter}u&&t.preventDefault()},_activate:function(e){this.active.is(".ui-state-disabled")||(this.active.children("a[aria-haspopup='true']").length?this.expand(e):this.select(e))},refresh:function(){var t,n=this.options.icons.submenu,r=this.element.find(this.options.menus);r.filter(":not(.ui-menu)").addClass("ui-menu ui-widget ui-widget-content ui-corner-all").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var t=e(this),r=t.prev("a"),i=e("<span>").addClass("ui-menu-icon ui-icon "+n).data("ui-menu-submenu-carat",!0);r.attr("aria-haspopup","true").prepend(i),t.attr("aria-labelledby",r.attr("id"))}),t=r.add(this.element),t.children(":not(.ui-menu-item):has(a)").addClass("ui-menu-item").attr("role","presentation").children("a").uniqueId().addClass("ui-corner-all").attr({tabIndex:-1,role:this._itemRole()}),t.children(":not(.ui-menu-item)").each(function(){var t=e(this);/[^\-—–\s]/.test(t.text())||t.addClass("ui-widget-content ui-menu-divider")}),t.children(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!e.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(e,t){e==="icons"&&this.element.find(".ui-menu-icon").removeClass(this.options.icons.submenu).addClass(t.submenu),this._super(e,t)},focus:function(e,t){var n,r;this.blur(e,e&&e.type==="focus"),this._scrollIntoView(t),this.active=t.first(),r=this.active.children("a").addClass("ui-state-focus"),this.options.role&&this.element.attr("aria-activedescendant",r.attr("id")),this.active.parent().closest(".ui-menu-item").children("a:first").addClass("ui-state-active"),e&&e.type==="keydown"?this._close():this.timer=this._delay(function(){this._close()},this.delay),n=t.children(".ui-menu"),n.length&&/^mouse/.test(e.type)&&this._startOpening(n),this.activeMenu=t.parent(),this._trigger("focus",e,{item:t})},_scrollIntoView:function(t){var n,r,i,s,o,u;this._hasScroll()&&(n=parseFloat(e.css(this.activeMenu[0],"borderTopWidth"))||0,r=parseFloat(e.css(this.activeMenu[0],"paddingTop"))||0,i=t.offset().top-this.activeMenu.offset().top-n-r,s=this.activeMenu.scrollTop(),o=this.activeMenu.height(),u=t.height(),i<0?this.activeMenu.scrollTop(s+i):i+u>o&&this.activeMenu.scrollTop(s+i-o+u))},blur:function(e,t){t||clearTimeout(this.timer);if(!this.active)return;this.active.children("a").removeClass("ui-state-focus"),this.active=null,this._trigger("blur",e,{item:this.active})},_startOpening:function(e){clearTimeout(this.timer);if(e.attr("aria-hidden")!=="true")return;this.timer=this._delay(function(){this._close(),this._open(e)},this.delay)},_open:function(t){var n=e.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(t.parents(".ui-menu")).hide().attr("aria-hidden","true"),t.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(n)},collapseAll:function(t,n){clearTimeout(this.timer),this.timer=this._delay(function(){var r=n?this.element:e(t&&t.target).closest(this.element.find(".ui-menu"));r.length||(r=this.element),this._close(r),this.blur(t),this.activeMenu=r},this.delay)},_close:function(e){e||(e=this.active?this.active.parent():this.element),e.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false").end().find("a.ui-state-active").removeClass("ui-state-active")},collapse:function(e){var t=this.active&&this.active.parent().closest(".ui-menu-item",this.element);t&&t.length&&(this._close(),this.focus(e,t))},expand:function(e){var t=this.active&&this.active.children(".ui-menu ").children(".ui-menu-item").first();t&&t.length&&(this._open(t.parent()),this._delay(function(){this.focus(e,t)}))},next:function(e){this._move("next","first",e)},previous:function(e){this._move("prev","last",e)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(e,t,n){var r;this.active&&(e==="first"||e==="last"?r=this.active[e==="first"?"prevAll":"nextAll"](".ui-menu-item").eq(-1):r=this.active[e+"All"](".ui-menu-item").eq(0));if(!r||!r.length||!this.active)r=this.activeMenu.children(".ui-menu-item")[t]();this.focus(n,r)},nextPage:function(t){var n,r,i;if(!this.active){this.next(t);return}if(this.isLastItem())return;this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r-i<0}),this.focus(t,n)):this.focus(t,this.activeMenu.children(".ui-menu-item")[this.active?"last":"first"]())},previousPage:function(t){var n,r,i;if(!this.active){this.next(t);return}if(this.isFirstItem())return;this._hasScroll()?(r=this.active.offset().top,i=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return n=e(this),n.offset().top-r+i>0}),this.focus(t,n)):this.focus(t,this.activeMenu.children(".ui-menu-item").first())},_hasScroll:function(){return this.element.outerHeight()<this.element.prop("scrollHeight")},select:function(t){this.active=this.active||e(t.target).closest(".ui-menu-item");var n={item:this.active};this.active.has(".ui-menu").length||this.collapseAll(t,!0),this._trigger("select",t,n)}})}(jQuery),function(e,t){function h(e,t,n){return[parseInt(e[0],10)*(l.test(e[0])?t/100:1),parseInt(e[1],10)*(l.test(e[1])?n/100:1)]}function p(t,n){return parseInt(e.css(t,n),10)||0}function d(t){var n=t[0];return n.nodeType===9?{width:t.width(),height:t.height(),offset:{top:0,left:0}}:e.isWindow(n)?{width:t.width(),height:t.height(),offset:{top:t.scrollTop(),left:t.scrollLeft()}}:n.preventDefault?{width:0,height:0,offset:{top:n.pageY,left:n.pageX}}:{width:t.outerWidth(),height:t.outerHeight(),offset:t.offset()}}e.ui=e.ui||{};var n,r=Math.max,i=Math.abs,s=Math.round,o=/left|center|right/,u=/top|center|bottom/,a=/[\+\-]\d+%?/,f=/^\w+/,l=/%$/,c=e.fn.position;e.position={scrollbarWidth:function(){if(n!==t)return n;var r,i,s=e("<div style='display:block;width:50px;height:50px;overflow:hidden;'><div style='height:100px;width:auto;'></div></div>"),o=s.children()[0];return e("body").append(s),r=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,r===i&&(i=s[0].clientWidth),s.remove(),n=r-i},getScrollInfo:function(t){var n=t.isWindow?"":t.element.css("overflow-x"),r=t.isWindow?"":t.element.css("overflow-y"),i=n==="scroll"||n==="auto"&&t.width<t.element[0].scrollWidth,s=r==="scroll"||r==="auto"&&t.height<t.element[0].scrollHeight;return{width:i?e.position.scrollbarWidth():0,height:s?e.position.scrollbarWidth():0}},getWithinInfo:function(t){var n=e(t||window),r=e.isWindow(n[0]);return{element:n,isWindow:r,offset:n.offset()||{left:0,top:0},scrollLeft:n.scrollLeft(),scrollTop:n.scrollTop(),width:r?n.width():n.outerWidth(),height:r?n.height():n.outerHeight()}}},e.fn.position=function(t){if(!t||!t.of)return c.apply(this,arguments);t=e.extend({},t);var n,l,v,m,g,y,b=e(t.of),w=e.position.getWithinInfo(t.within),E=e.position.getScrollInfo(w),S=(t.collision||"flip").split(" "),x={};return y=d(b),b[0].preventDefault&&(t.at="left top"),l=y.width,v=y.height,m=y.offset,g=e.extend({},m),e.each(["my","at"],function(){var e=(t[this]||"").split(" "),n,r;e.length===1&&(e=o.test(e[0])?e.concat(["center"]):u.test(e[0])?["center"].concat(e):["center","center"]),e[0]=o.test(e[0])?e[0]:"center",e[1]=u.test(e[1])?e[1]:"center",n=a.exec(e[0]),r=a.exec(e[1]),x[this]=[n?n[0]:0,r?r[0]:0],t[this]=[f.exec(e[0])[0],f.exec(e[1])[0]]}),S.length===1&&(S[1]=S[0]),t.at[0]==="right"?g.left+=l:t.at[0]==="center"&&(g.left+=l/2),t.at[1]==="bottom"?g.top+=v:t.at[1]==="center"&&(g.top+=v/2),n=h(x.at,l,v),g.left+=n[0],g.top+=n[1],this.each(function(){var o,u,a=e(this),f=a.outerWidth(),c=a.outerHeight(),d=p(this,"marginLeft"),y=p(this,"marginTop"),T=f+d+p(this,"marginRight")+E.width,N=c+y+p(this,"marginBottom")+E.height,C=e.extend({},g),k=h(x.my,a.outerWidth(),a.outerHeight());t.my[0]==="right"?C.left-=f:t.my[0]==="center"&&(C.left-=f/2),t.my[1]==="bottom"?C.top-=c:t.my[1]==="center"&&(C.top-=c/2),C.left+=k[0],C.top+=k[1],e.support.offsetFractions||(C.left=s(C.left),C.top=s(C.top)),o={marginLeft:d,marginTop:y},e.each(["left","top"],function(r,i){e.ui.position[S[r]]&&e.ui.position[S[r]][i](C,{targetWidth:l,targetHeight:v,elemWidth:f,elemHeight:c,collisionPosition:o,collisionWidth:T,collisionHeight:N,offset:[n[0]+k[0],n[1]+k[1]],my:t.my,at:t.at,within:w,elem:a})}),t.using&&(u=function(e){var n=m.left-C.left,s=n+l-f,o=m.top-C.top,u=o+v-c,h={target:{element:b,left:m.left,top:m.top,width:l,height:v},element:{element:a,left:C.left,top:C.top,width:f,height:c},horizontal:s<0?"left":n>0?"right":"center",vertical:u<0?"top":o>0?"bottom":"middle"};l<f&&i(n+s)<l&&(h.horizontal="center"),v<c&&i(o+u)<v&&(h.vertical="middle"),r(i(n),i(s))>r(i(o),i(u))?h.important="horizontal":h.important="vertical",t.using.call(this,e,h)}),a.offset(e.extend(C,{using:u}))})},e.ui.position={fit:{left:function(e,t){var n=t.within,i=n.isWindow?n.scrollLeft:n.offset.left,s=n.width,o=e.left-t.collisionPosition.marginLeft,u=i-o,a=o+t.collisionWidth-s-i,f;t.collisionWidth>s?u>0&&a<=0?(f=e.left+u+t.collisionWidth-s-i,e.left+=u-f):a>0&&u<=0?e.left=i:u>a?e.left=i+s-t.collisionWidth:e.left=i:u>0?e.left+=u:a>0?e.left-=a:e.left=r(e.left-o,e.left)},top:function(e,t){var n=t.within,i=n.isWindow?n.scrollTop:n.offset.top,s=t.within.height,o=e.top-t.collisionPosition.marginTop,u=i-o,a=o+t.collisionHeight-s-i,f;t.collisionHeight>s?u>0&&a<=0?(f=e.top+u+t.collisionHeight-s-i,e.top+=u-f):a>0&&u<=0?e.top=i:u>a?e.top=i+s-t.collisionHeight:e.top=i:u>0?e.top+=u:a>0?e.top-=a:e.top=r(e.top-o,e.top)}},flip:{left:function(e,t){var n=t.within,r=n.offset.left+n.scrollLeft,s=n.width,o=n.isWindow?n.scrollLeft:n.offset.left,u=e.left-t.collisionPosition.marginLeft,a=u-o,f=u+t.collisionWidth-s-o,l=t.my[0]==="left"?-t.elemWidth:t.my[0]==="right"?t.elemWidth:0,c=t.at[0]==="left"?t.targetWidth:t.at[0]==="right"?-t.targetWidth:0,h=-2*t.offset[0],p,d;if(a<0){p=e.left+l+c+h+t.collisionWidth-s-r;if(p<0||p<i(a))e.left+=l+c+h}else if(f>0){d=e.left-t.collisionPosition.marginLeft+l+c+h-o;if(d>0||i(d)<f)e.left+=l+c+h}},top:function(e,t){var n=t.within,r=n.offset.top+n.scrollTop,s=n.height,o=n.isWindow?n.scrollTop:n.offset.top,u=e.top-t.collisionPosition.marginTop,a=u-o,f=u+t.collisionHeight-s-o,l=t.my[1]==="top",c=l?-t.elemHeight:t.my[1]==="bottom"?t.elemHeight:0,h=t.at[1]==="top"?t.targetHeight:t.at[1]==="bottom"?-t.targetHeight:0,p=-2*t.offset[1],d,v;a<0?(v=e.top+c+h+p+t.collisionHeight-s-r,e.top+c+h+p>a&&(v<0||v<i(a))&&(e.top+=c+h+p)):f>0&&(d=e.top-t.collisionPosition.marginTop+c+h+p-o,e.top+c+h+p>f&&(d>0||i(d)<f)&&(e.top+=c+h+p))}},flipfit:{left:function(){e.ui.position.flip.left.apply(this,arguments),e.ui.position.fit.left.apply(this,arguments)},top:function(){e.ui.position.flip.top.apply(this,arguments),e.ui.position.fit.top.apply(this,arguments)}}},function(){var t,n,r,i,s,o=document.getElementsByTagName("body")[0],u=document.createElement("div");t=document.createElement(o?"div":"body"),r={visibility:"hidden",width:0,height:0,border:0,margin:0,background:"none"},o&&e.extend(r,{position:"absolute",left:"-1000px",top:"-1000px"});for(s in r)t.style[s]=r[s];t.appendChild(u),n=o||document.documentElement,n.insertBefore(t,n.firstChild),u.style.cssText="position: absolute; left: 10.7432222px;",i=e(u).offset().left,e.support.offsetFractions=i>10&&i<11,t.innerHTML="",n.removeChild(t)}()}(jQuery),function(e,t){e.widget("ui.progressbar",{version:"1.10.0",options:{max:100,value:0,change:null,complete:null},min:0,_create:function(){this.oldValue=this.options.value=this._constrainedValue(),this.element.addClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").attr({role:"progressbar","aria-valuemin":this.min}),this.valueDiv=e("<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>").appendTo(this.element),this._refreshValue()},_destroy:function(){this.element.removeClass("ui-progressbar ui-widget ui-widget-content ui-corner-all").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.valueDiv.remove()},value:function(e){if(e===t)return this.options.value;this.options.value=this._constrainedValue(e),this._refreshValue()},_constrainedValue:function(e){return e===t&&(e=this.options.value),this.indeterminate=e===!1,typeof e!="number"&&(e=0),this.indeterminate?!1:Math.min(this.options.max,Math.max(this.min,e))},_setOptions:function(e){var t=e.value;delete e.value,this._super(e),this.options.value=this._constrainedValue(t),this._refreshValue()},_setOption:function(e,t){e==="max"&&(t=Math.max(this.min,t)),this._super(e,t)},_percentage:function(){return this.indeterminate?100:100*(this.options.value-this.min)/(this.options.max-this.min)},_refreshValue:function(){var t=this.options.value,n=this._percentage();this.valueDiv.toggle(this.indeterminate||t>this.min).toggleClass("ui-corner-right",t===this.options.max).width(n.toFixed(0)+"%"),this.element.toggleClass("ui-progressbar-indeterminate",this.indeterminate),this.indeterminate?(this.element.removeAttr("aria-valuenow"),this.overlayDiv||(this.overlayDiv=e("<div class='ui-progressbar-overlay'></div>").appendTo(this.valueDiv))):(this.element.attr({"aria-valuemax":this.options.max,"aria-valuenow":t}),this.overlayDiv&&(this.overlayDiv.remove(),this.overlayDiv=null)),this.oldValue!==t&&(this.oldValue=t,this._trigger("change")),t===this.options.max&&this._trigger("complete")}})}(jQuery),function(e,t){var n=5;e.widget("ui.slider",e.ui.mouse,{version:"1.10.0",widgetEventPrefix:"slide",options:{animate:!1,distance:0,max:100,min:0,orientation:"horizontal",range:!1,step:1,value:0,values:null,change:null,slide:null,start:null,stop:null},_create:function(){var t,n,r=this.options,i=this.element.find(".ui-slider-handle").addClass("ui-state-default ui-corner-all"),s="<a class='ui-slider-handle ui-state-default ui-corner-all' href='#'></a>",o=[];this._keySliding=!1,this._mouseSliding=!1,this._animateOff=!0,this._handleIndex=null,this._detectOrientation(),this._mouseInit(),this.element.addClass("ui-slider ui-slider-"+this.orientation+" ui-widget"+" ui-widget-content"+" ui-corner-all"),this.range=e([]),r.range&&(r.range===!0&&(r.values?r.values.length&&r.values.length!==2?r.values=[r.values[0],r.values[0]]:e.isArray(r.values)&&(r.values=r.values.slice(0)):r.values=[this._valueMin(),this._valueMin()]),this.range=e("<div></div>").appendTo(this.element).addClass("ui-slider-range ui-widget-header"+(r.range==="min"||r.range==="max"?" ui-slider-range-"+r.range:""))),n=r.values&&r.values.length||1;for(t=i.length;t<n;t++)o.push(s);this.handles=i.add(e(o.join("")).appendTo(this.element)),this.handle=this.handles.eq(0),this.handles.add(this.range).filter("a").click(function(e){e.preventDefault()}).mouseenter(function(){r.disabled||e(this).addClass("ui-state-hover")}).mouseleave(function(){e(this).removeClass("ui-state-hover")}).focus(function(){r.disabled?e(this).blur():(e(".ui-slider .ui-state-focus").removeClass("ui-state-focus"),e(this).addClass("ui-state-focus"))}).blur(function(){e(this).removeClass("ui-state-focus")}),this.handles.each(function(t){e(this).data("ui-slider-handle-index",t)}),this._setOption("disabled",r.disabled),this._on(this.handles,this._handleEvents),this._refreshValue(),this._animateOff=!1},_destroy:function(){this.handles.remove(),this.range.remove(),this.element.removeClass("ui-slider ui-slider-horizontal ui-slider-vertical ui-widget ui-widget-content ui-corner-all"),this._mouseDestroy()},_mouseCapture:function(t){var n,r,i,s,o,u,a,f,l=this,c=this.options;return c.disabled?!1:(this.elementSize={width:this.element.outerWidth(),height:this.element.outerHeight()},this.elementOffset=this.element.offset(),n={x:t.pageX,y:t.pageY},r=this._normValueFromMouse(n),i=this._valueMax()-this._valueMin()+1,this.handles.each(function(t){var n=Math.abs(r-l.values(t));if(i>n||i===n&&(t===l._lastChangedValue||l.values(t)===c.min))i=n,s=e(this),o=t}),u=this._start(t,o),u===!1?!1:(this._mouseSliding=!0,this._handleIndex=o,s.addClass("ui-state-active").focus(),a=s.offset(),f=!e(t.target).parents().addBack().is(".ui-slider-handle"),this._clickOffset=f?{left:0,top:0}:{left:t.pageX-a.left-s.width()/2,top:t.pageY-a.top-s.height()/2-(parseInt(s.css("borderTopWidth"),10)||0)-(parseInt(s.css("borderBottomWidth"),10)||0)+(parseInt(s.css("marginTop"),10)||0)},this.handles.hasClass("ui-state-hover")||this._slide(t,o,r),this._animateOff=!0,!0))},_mouseStart:function(){return!0},_mouseDrag:function(e){var t={x:e.pageX,y:e.pageY},n=this._normValueFromMouse(t);return this._slide(e,this._handleIndex,n),!1},_mouseStop:function(e){return this.handles.removeClass("ui-state-active"),this._mouseSliding=!1,this._stop(e,this._handleIndex),this._change(e,this._handleIndex),this._handleIndex=null,this._clickOffset=null,this._animateOff=!1,!1},_detectOrientation:function(){this.orientation=this.options.orientation==="vertical"?"vertical":"horizontal"},_normValueFromMouse:function(e){var t,n,r,i,s;return this.orientation==="horizontal"?(t=this.elementSize.width,n=e.x-this.elementOffset.left-(this._clickOffset?this._clickOffset.left:0)):(t=this.elementSize.height,n=e.y-this.elementOffset.top-(this._clickOffset?this._clickOffset.top:0)),r=n/t,r>1&&(r=1),r<0&&(r=0),this.orientation==="vertical"&&(r=1-r),i=this._valueMax()-this._valueMin(),s=this._valueMin()+r*i,this._trimAlignValue(s)},_start:function(e,t){var n={handle:this.handles[t],value:this.value()};return this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("start",e,n)},_slide:function(e,t,n){var r,i,s;this.options.values&&this.options.values.length?(r=this.values(t?0:1),this.options.values.length===2&&this.options.range===!0&&(t===0&&n>r||t===1&&n<r)&&(n=r),n!==this.values(t)&&(i=this.values(),i[t]=n,s=this._trigger("slide",e,{handle:this.handles[t],value:n,values:i}),r=this.values(t?0:1),s!==!1&&this.values(t,n,!0))):n!==this.value()&&(s=this._trigger("slide",e,{handle:this.handles[t],value:n}),s!==!1&&this.value(n))},_stop:function(e,t){var n={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._trigger("stop",e,n)},_change:function(e,t){if(!this._keySliding&&!this._mouseSliding){var n={handle:this.handles[t],value:this.value()};this.options.values&&this.options.values.length&&(n.value=this.values(t),n.values=this.values()),this._lastChangedValue=t,this._trigger("change",e,n)}},value:function(e){if(arguments.length){this.options.value=this._trimAlignValue(e),this._refreshValue(),this._change(null,0);return}return this._value()},values:function(t,n){var r,i,s;if(arguments.length>1){this.options.values[t]=this._trimAlignValue(n),this._refreshValue(),this._change(null,t);return}if(!arguments.length)return this._values();if(!e.isArray(arguments[0]))return this.options.values&&this.options.values.length?this._values(t):this.value();r=this.options.values,i=arguments[0];for(s=0;s<r.length;s+=1)r[s]=this._trimAlignValue(i[s]),this._change(null,s);this._refreshValue()},_setOption:function(t,n){var r,i=0;e.isArray(this.options.values)&&(i=this.options.values.length),e.Widget.prototype._setOption.apply(this,arguments);switch(t){case"disabled":n?(this.handles.filter(".ui-state-focus").blur(),this.handles.removeClass("ui-state-hover"),this.handles.prop("disabled",!0)):this.handles.prop("disabled",!1);break;case"orientation":this._detectOrientation(),this.element.removeClass("ui-slider-horizontal ui-slider-vertical").addClass("ui-slider-"+this.orientation),this._refreshValue();break;case"value":this._animateOff=!0,this._refreshValue(),this._change(null,0),this._animateOff=!1;break;case"values":this._animateOff=!0,this._refreshValue();for(r=0;r<i;r+=1)this._change(null,r);this._animateOff=!1;break;case"min":case"max":this._animateOff=!0,this._refreshValue(),this._animateOff=!1}},_value:function(){var e=this.options.value;return e=this._trimAlignValue(e),e},_values:function(e){var t,n,r;if(arguments.length)return t=this.options.values[e],t=this._trimAlignValue(t),t;n=this.options.values.slice();for(r=0;r<n.length;r+=1)n[r]=this._trimAlignValue(n[r]);return n},_trimAlignValue:function(e){if(e<=this._valueMin())return this._valueMin();if(e>=this._valueMax())return this._valueMax();var t=this.options.step>0?this.options.step:1,n=(e-this._valueMin())%t,r=e-n;return Math.abs(n)*2>=t&&(r+=n>0?t:-t),parseFloat(r.toFixed(5))},_valueMin:function(){return this.options.min},_valueMax:function(){return this.options.max},_refreshValue:function(){var t,n,r,i,s,o=this.options.range,u=this.options,a=this,f=this._animateOff?!1:u.animate,l={};this.options.values&&this.options.values.length?this.handles.each(function(r){n=(a.values(r)-a._valueMin())/(a._valueMax()-a._valueMin())*100,l[a.orientation==="horizontal"?"left":"bottom"]=n+"%",e(this).stop(1,1)[f?"animate":"css"](l,u.animate),a.options.range===!0&&(a.orientation==="horizontal"?(r===0&&a.range.stop(1,1)[f?"animate":"css"]({left:n+"%"},u.animate),r===1&&a.range[f?"animate":"css"]({width:n-t+"%"},{queue:!1,duration:u.animate})):(r===0&&a.range.stop(1,1)[f?"animate":"css"]({bottom:n+"%"},u.animate),r===1&&a.range[f?"animate":"css"]({height:n-t+"%"},{queue:!1,duration:u.animate}))),t=n}):(r=this.value(),i=this._valueMin(),s=this._valueMax(),n=s!==i?(r-i)/(s-i)*100:0,l[this.orientation==="horizontal"?"left":"bottom"]=n+"%",this.handle.stop(1,1)[f?"animate":"css"](l,u.animate),o==="min"&&this.orientation==="horizontal"&&this.range.stop(1,1)[f?"animate":"css"]({width:n+"%"},u.animate),o==="max"&&this.orientation==="horizontal"&&this.range[f?"animate":"css"]({width:100-n+"%"},{queue:!1,duration:u.animate}),o==="min"&&this.orientation==="vertical"&&this.range.stop(1,1)[f?"animate":"css"]({height:n+"%"},u.animate),o==="max"&&this.orientation==="vertical"&&this.range[f?"animate":"css"]({height:100-n+"%"},{queue:!1,duration:u.animate}))},_handleEvents:{keydown:function(t){var r,i,s,o,u=e(t.target).data("ui-slider-handle-index");switch(t.keyCode){case e.ui.keyCode.HOME:case e.ui.keyCode.END:case e.ui.keyCode.PAGE_UP:case e.ui.keyCode.PAGE_DOWN:case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:t.preventDefault();if(!this._keySliding){this._keySliding=!0,e(t.target).addClass("ui-state-active"),r=this._start(t,u);if(r===!1)return}}o=this.options.step,this.options.values&&this.options.values.length?i=s=this.values(u):i=s=this.value();switch(t.keyCode){case e.ui.keyCode.HOME:s=this._valueMin();break;case e.ui.keyCode.END:s=this._valueMax();break;case e.ui.keyCode.PAGE_UP:s=this._trimAlignValue(i+(this._valueMax()-this._valueMin())/n);break;case e.ui.keyCode.PAGE_DOWN:s=this._trimAlignValue(i-(this._valueMax()-this._valueMin())/n);break;case e.ui.keyCode.UP:case e.ui.keyCode.RIGHT:if(i===this._valueMax())return;s=this._trimAlignValue(i+o);break;case e.ui.keyCode.DOWN:case e.ui.keyCode.LEFT:if(i===this._valueMin())return;s=this._trimAlignValue(i-o)}this._slide(t,u,s)},keyup:function(t){var n=e(t.target).data("ui-slider-handle-index");this._keySliding&&(this._keySliding=!1,this._stop(t,n),this._change(t,n),e(t.target).removeClass("ui-state-active"))}}})}(jQuery),function(e){function t(e){return function(){var t=this.element.val();e.apply(this,arguments),this._refresh(),t!==this.element.val()&&this._trigger("change")}}e.widget("ui.spinner",{version:"1.10.0",defaultElement:"<input>",widgetEventPrefix:"spin",options:{culture:null,icons:{down:"ui-icon-triangle-1-s",up:"ui-icon-triangle-1-n"},incremental:!0,max:null,min:null,numberFormat:null,page:10,step:1,change:null,spin:null,start:null,stop:null},_create:function(){this._setOption("max",this.options.max),this._setOption("min",this.options.min),this._setOption("step",this.options.step),this._value(this.element.val(),!0),this._draw(),this._on(this._events),this._refresh(),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_getCreateOptions:function(){var t={},n=this.element;return e.each(["min","max","step"],function(e,r){var i=n.attr(r);i!==undefined&&i.length&&(t[r]=i)}),t},_events:{keydown:function(e){this._start(e)&&this._keydown(e)&&e.preventDefault()},keyup:"_stop",focus:function(){this.previous=this.element.val()},blur:function(e){if(this.cancelBlur){delete this.cancelBlur;return}this._refresh(),this.previous!==this.element.val()&&this._trigger("change",e)},mousewheel:function(e,t){if(!t)return;if(!this.spinning&&!this._start(e))return!1;this._spin((t>0?1:-1)*this.options.step,e),clearTimeout(this.mousewheelTimer),this.mousewheelTimer=this._delay(function(){this.spinning&&this._stop(e)},100),e.preventDefault()},"mousedown .ui-spinner-button":function(t){function r(){var e=this.element[0]===this.document[0].activeElement;e||(this.element.focus(),this.previous=n,this._delay(function(){this.previous=n}))}var n;n=this.element[0]===this.document[0].activeElement?this.previous:this.element.val(),t.preventDefault(),r.call(this),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,r.call(this)});if(this._start(t)===!1)return;this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseup .ui-spinner-button":"_stop","mouseenter .ui-spinner-button":function(t){if(!e(t.currentTarget).hasClass("ui-state-active"))return;if(this._start(t)===!1)return!1;this._repeat(null,e(t.currentTarget).hasClass("ui-spinner-up")?1:-1,t)},"mouseleave .ui-spinner-button":"_stop"},_draw:function(){var e=this.uiSpinner=this.element.addClass("ui-spinner-input").attr("autocomplete","off").wrap(this._uiSpinnerHtml()).parent().append(this._buttonHtml());this.element.attr("role","spinbutton"),this.buttons=e.find(".ui-spinner-button").attr("tabIndex",-1).button().removeClass("ui-corner-all"),this.buttons.height()>Math.ceil(e.height()*.5)&&e.height()>0&&e.height(e.height()),this.options.disabled&&this.disable()},_keydown:function(t){var n=this.options,r=e.ui.keyCode;switch(t.keyCode){case r.UP:return this._repeat(null,1,t),!0;case r.DOWN:return this._repeat(null,-1,t),!0;case r.PAGE_UP:return this._repeat(null,n.page,t),!0;case r.PAGE_DOWN:return this._repeat(null,-n.page,t),!0}return!1},_uiSpinnerHtml:function(){return"<span class='ui-spinner ui-widget ui-widget-content ui-corner-all'></span>"},_buttonHtml:function(){return"<a class='ui-spinner-button ui-spinner-up ui-corner-tr'><span class='ui-icon "+this.options.icons.up+"'>&#9650;</span>"+"</a>"+"<a class='ui-spinner-button ui-spinner-down ui-corner-br'>"+"<span class='ui-icon "+this.options.icons.down+"'>&#9660;</span>"+"</a>"},_start:function(e){return!this.spinning&&this._trigger("start",e)===!1?!1:(this.counter||(this.counter=1),this.spinning=!0,!0)},_repeat:function(e,t,n){e=e||500,clearTimeout(this.timer),this.timer=this._delay(function(){this._repeat(40,t,n)},e),this._spin(t*this.options.step,n)},_spin:function(e,t){var n=this.value()||0;this.counter||(this.counter=1),n=this._adjustValue(n+e*this._increment(this.counter));if(!this.spinning||this._trigger("spin",t,{value:n})!==!1)this._value(n),this.counter++},_increment:function(t){var n=this.options.incremental;return n?e.isFunction(n)?n(t):Math.floor(t*t*t/5e4-t*t/500+17*t/200+1):1},_precision:function(){var e=this._precisionOf(this.options.step);return this.options.min!==null&&(e=Math.max(e,this._precisionOf(this.options.min))),e},_precisionOf:function(e){var t=e.toString(),n=t.indexOf(".");return n===-1?0:t.length-n-1},_adjustValue:function(e){var t,n,r=this.options;return t=r.min!==null?r.min:0,n=e-t,n=Math.round(n/r.step)*r.step,e=t+n,e=parseFloat(e.toFixed(this._precision())),r.max!==null&&e>r.max?r.max:r.min!==null&&e<r.min?r.min:e},_stop:function(e){if(!this.spinning)return;clearTimeout(this.timer),clearTimeout(this.mousewheelTimer),this.counter=0,this.spinning=!1,this._trigger("stop",e)},_setOption:function(e,t){if(e==="culture"||e==="numberFormat"){var n=this._parse(this.element.val());this.options[e]=t,this.element.val(this._format(n));return}(e==="max"||e==="min"||e==="step")&&typeof t=="string"&&(t=this._parse(t)),e==="icons"&&(this.buttons.first().find(".ui-icon").removeClass(this.options.icons.up).addClass(t.up),this.buttons.last().find(".ui-icon").removeClass(this.options.icons.down).addClass(t.down)),this._super(e,t),e==="disabled"&&(t?(this.element.prop("disabled",!0),this.buttons.button("disable")):(this.element.prop("disabled",!1),this.buttons.button("enable")))},_setOptions:t(function(e){this._super(e),this._value(this.element.val())}),_parse:function(e){return typeof e=="string"&&e!==""&&(e=window.Globalize&&this.options.numberFormat?Globalize.parseFloat(e,10,this.options.culture):+e),e===""||isNaN(e)?null:e},_format:function(e){return e===""?"":window.Globalize&&this.options.numberFormat?Globalize.format(e,this.options.numberFormat,this.options.culture):e},_refresh:function(){this.element.attr({"aria-valuemin":this.options.min,"aria-valuemax":this.options.max,"aria-valuenow":this._parse(this.element.val())})},_value:function(e,t){var n;e!==""&&(n=this._parse(e),n!==null&&(t||(n=this._adjustValue(n)),e=this._format(n))),this.element.val(e),this._refresh()},_destroy:function(){this.element.removeClass("ui-spinner-input").prop("disabled",!1).removeAttr("autocomplete").removeAttr("role").removeAttr("aria-valuemin").removeAttr("aria-valuemax").removeAttr("aria-valuenow"),this.uiSpinner.replaceWith(this.element)},stepUp:t(function(e){this._stepUp(e)}),_stepUp:function(e){this._start()&&(this._spin((e||1)*this.options.step),this._stop())},stepDown:t(function(e){this._stepDown(e)}),_stepDown:function(e){this._start()&&(this._spin((e||1)*-this.options.step),this._stop())},pageUp:t(function(e){this._stepUp((e||1)*this.options.page)}),pageDown:t(function(e){this._stepDown((e||1)*this.options.page)}),value:function(e){if(!arguments.length)return this._parse(this.element.val());t(this._value).call(this,e)},widget:function(){return this.uiSpinner}})}(jQuery),function(e,t){function i(){return++n}function s(e){return e.hash.length>1&&decodeURIComponent(e.href.replace(r,""))===decodeURIComponent(location.href.replace(r,""))}var n=0,r=/#.*$/;e.widget("ui.tabs",{version:"1.10.0",delay:300,options:{active:null,collapsible:!1,event:"click",heightStyle:"content",hide:null,show:null,activate:null,beforeActivate:null,beforeLoad:null,load:null},_create:function(){var t=this,n=this.options;this.running=!1,this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all").toggleClass("ui-tabs-collapsible",n.collapsible).delegate(".ui-tabs-nav > li","mousedown"+this.eventNamespace,function(t){e(this).is(".ui-state-disabled")&&t.preventDefault()}).delegate(".ui-tabs-anchor","focus"+this.eventNamespace,function(){e(this).closest("li").is(".ui-state-disabled")&&this.blur()}),this._processTabs(),n.active=this._initialActive(),e.isArray(n.disabled)&&(n.disabled=e.unique(n.disabled.concat(e.map(this.tabs.filter(".ui-state-disabled"),function(e){return t.tabs.index(e)}))).sort()),this.options.active!==!1&&this.anchors.length?this.active=this._findActive(n.active):this.active=e(),this._refresh(),this.active.length&&this.load(n.active)},_initialActive:function(){var t=this.options.active,n=this.options.collapsible,r=location.hash.substring(1);if(t===null){r&&this.tabs.each(function(n,i){if(e(i).attr("aria-controls")===r)return t=n,!1}),t===null&&(t=this.tabs.index(this.tabs.filter(".ui-tabs-active")));if(t===null||t===-1)t=this.tabs.length?0:!1}return t!==!1&&(t=this.tabs.index(this.tabs.eq(t)),t===-1&&(t=n?!1:0)),!n&&t===!1&&this.anchors.length&&(t=0),t},_getCreateEventData:function(){return{tab:this.active,panel:this.active.length?this._getPanelForTab(this.active):e()}},_tabKeydown:function(t){var n=e(this.document[0].activeElement).closest("li"),r=this.tabs.index(n),i=!0;if(this._handlePageNav(t))return;switch(t.keyCode){case e.ui.keyCode.RIGHT:case e.ui.keyCode.DOWN:r++;break;case e.ui.keyCode.UP:case e.ui.keyCode.LEFT:i=!1,r--;break;case e.ui.keyCode.END:r=this.anchors.length-1;break;case e.ui.keyCode.HOME:r=0;break;case e.ui.keyCode.SPACE:t.preventDefault(),clearTimeout(this.activating),this._activate(r);return;case e.ui.keyCode.ENTER:t.preventDefault(),clearTimeout(this.activating),this._activate(r===this.options.active?!1:r);return;default:return}t.preventDefault(),clearTimeout(this.activating),r=this._focusNextTab(r,i),t.ctrlKey||(n.attr("aria-selected","false"),this.tabs.eq(r).attr("aria-selected","true"),this.activating=this._delay(function(){this.option("active",r)},this.delay))},_panelKeydown:function(t){if(this._handlePageNav(t))return;t.ctrlKey&&t.keyCode===e.ui.keyCode.UP&&(t.preventDefault(),this.active.focus())},_handlePageNav:function(t){if(t.altKey&&t.keyCode===e.ui.keyCode.PAGE_UP)return this._activate(this._focusNextTab(this.options.active-1,!1)),!0;if(t.altKey&&t.keyCode===e.ui.keyCode.PAGE_DOWN)return this._activate(this._focusNextTab(this.options.active+1,!0)),!0},_findNextTab:function(t,n){function i(){return t>r&&(t=0),t<0&&(t=r),t}var r=this.tabs.length-1;while(e.inArray(i(),this.options.disabled)!==-1)t=n?t+1:t-1;return t},_focusNextTab:function(e,t){return e=this._findNextTab(e,t),this.tabs.eq(e).focus(),e},_setOption:function(e,t){if(e==="active"){this._activate(t);return}if(e==="disabled"){this._setupDisabled(t);return}this._super(e,t),e==="collapsible"&&(this.element.toggleClass("ui-tabs-collapsible",t),!t&&this.options.active===!1&&this._activate(0)),e==="event"&&this._setupEvents(t),e==="heightStyle"&&this._setupHeightStyle(t)},_tabId:function(e){return e.attr("aria-controls")||"ui-tabs-"+i()},_sanitizeSelector:function(e){return e?e.replace(/[!"$%&'()*+,.\/:;<=>?@\[\]\^`{|}~]/g,"\\$&"):""},refresh:function(){var t=this.options,n=this.tablist.children(":has(a[href])");t.disabled=e.map(n.filter(".ui-state-disabled"),function(e){return n.index(e)}),this._processTabs(),t.active===!1||!this.anchors.length?(t.active=!1,this.active=e()):this.active.length&&!e.contains(this.tablist[0],this.active[0])?this.tabs.length===t.disabled.length?(t.active=!1,this.active=e()):this._activate(this._findNextTab(Math.max(0,t.active-1),!1)):t.active=this.tabs.index(this.active),this._refresh()},_refresh:function(){this._setupDisabled(this.options.disabled),this._setupEvents(this.options.event),this._setupHeightStyle(this.options.heightStyle),this.tabs.not(this.active).attr({"aria-selected":"false",tabIndex:-1}),this.panels.not(this._getPanelForTab(this.active)).hide().attr({"aria-expanded":"false","aria-hidden":"true"}),this.active.length?(this.active.addClass("ui-tabs-active ui-state-active").attr({"aria-selected":"true",tabIndex:0}),this._getPanelForTab(this.active).show().attr({"aria-expanded":"true","aria-hidden":"false"})):this.tabs.eq(0).attr("tabIndex",0)},_processTabs:function(){var t=this;this.tablist=this._getList().addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").attr("role","tablist"),this.tabs=this.tablist.find("> li:has(a[href])").addClass("ui-state-default ui-corner-top").attr({role:"tab",tabIndex:-1}),this.anchors=this.tabs.map(function(){return e("a",this)[0]}).addClass("ui-tabs-anchor").attr({role:"presentation",tabIndex:-1}),this.panels=e(),this.anchors.each(function(n,r){var i,o,u,a=e(r).uniqueId().attr("id"),f=e(r).closest("li"),l=f.attr("aria-controls");s(r)?(i=r.hash,o=t.element.find(t._sanitizeSelector(i))):(u=t._tabId(f),i="#"+u,o=t.element.find(i),o.length||(o=t._createPanel(u),o.insertAfter(t.panels[n-1]||t.tablist)),o.attr("aria-live","polite")),o.length&&(t.panels=t.panels.add(o)),l&&f.data("ui-tabs-aria-controls",l),f.attr({"aria-controls":i.substring(1),"aria-labelledby":a}),o.attr("aria-labelledby",a)}),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").attr("role","tabpanel")},_getList:function(){return this.element.find("ol,ul").eq(0)},_createPanel:function(t){return e("<div>").attr("id",t).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").data("ui-tabs-destroy",!0)},_setupDisabled:function(t){e.isArray(t)&&(t.length?t.length===this.anchors.length&&(t=!0):t=!1);for(var n=0,r;r=this.tabs[n];n++)t===!0||e.inArray(n,t)!==-1?e(r).addClass("ui-state-disabled").attr("aria-disabled","true"):e(r).removeClass("ui-state-disabled").removeAttr("aria-disabled");this.options.disabled=t},_setupEvents:function(t){var n={click:function(e){e.preventDefault()}};t&&e.each(t.split(" "),function(e,t){n[t]="_eventHandler"}),this._off(this.anchors.add(this.tabs).add(this.panels)),this._on(this.anchors,n),this._on(this.tabs,{keydown:"_tabKeydown"}),this._on(this.panels,{keydown:"_panelKeydown"}),this._focusable(this.tabs),this._hoverable(this.tabs)},_setupHeightStyle:function(t){var n,r=this.element.parent();t==="fill"?(n=r.height(),n-=this.element.outerHeight()-this.element.height(),this.element.siblings(":visible").each(function(){var t=e(this),r=t.css("position");if(r==="absolute"||r==="fixed")return;n-=t.outerHeight(!0)}),this.element.children().not(this.panels).each(function(){n-=e(this).outerHeight(!0)}),this.panels.each(function(){e(this).height(Math.max(0,n-e(this).innerHeight()+e(this).height()))}).css("overflow","auto")):t==="auto"&&(n=0,this.panels.each(function(){n=Math.max(n,e(this).height("").height())}).height(n))},_eventHandler:function(t){var n=this.options,r=this.active,i=e(t.currentTarget),s=i.closest("li"),o=s[0]===r[0],u=o&&n.collapsible,a=u?e():this._getPanelForTab(s),f=r.length?this._getPanelForTab(r):e(),l={oldTab:r,oldPanel:f,newTab:u?e():s,newPanel:a};t.preventDefault();if(s.hasClass("ui-state-disabled")||s.hasClass("ui-tabs-loading")||this.running||o&&!n.collapsible||this._trigger("beforeActivate",t,l)===!1)return;n.active=u?!1:this.tabs.index(s),this.active=o?e():s,this.xhr&&this.xhr.abort(),!f.length&&!a.length&&e.error("jQuery UI Tabs: Mismatching fragment identifier."),a.length&&this.load(this.tabs.index(s),t),this._toggle(t,l)},_toggle:function(t,n){function o(){r.running=!1,r._trigger("activate",t,n)}function u(){n.newTab.closest("li").addClass("ui-tabs-active ui-state-active"),i.length&&r.options.show?r._show(i,r.options.show,o):(i.show(),o())}var r=this,i=n.newPanel,s=n.oldPanel;this.running=!0,s.length&&this.options.hide?this._hide(s,this.options.hide,function(){n.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),u()}):(n.oldTab.closest("li").removeClass("ui-tabs-active ui-state-active"),s.hide(),u()),s.attr({"aria-expanded":"false","aria-hidden":"true"}),n.oldTab.attr("aria-selected","false"),i.length&&s.length?n.oldTab.attr("tabIndex",-1):i.length&&this.tabs.filter(function(){return e(this).attr("tabIndex")===0}).attr("tabIndex",-1),i.attr({"aria-expanded":"true","aria-hidden":"false"}),n.newTab.attr({"aria-selected":"true",tabIndex:0})},_activate:function(t){var n,r=this._findActive(t);if(r[0]===this.active[0])return;r.length||(r=this.active),n=r.find(".ui-tabs-anchor")[0],this._eventHandler({target:n,currentTarget:n,preventDefault:e.noop})},_findActive:function(t){return t===!1?e():this.tabs.eq(t)},_getIndex:function(e){return typeof e=="string"&&(e=this.anchors.index(this.anchors.filter("[href$='"+e+"']"))),e},_destroy:function(){this.xhr&&this.xhr.abort(),this.element.removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible"),this.tablist.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all").removeAttr("role"),this.anchors.removeClass("ui-tabs-anchor").removeAttr("role").removeAttr("tabIndex").removeUniqueId(),this.tabs.add(this.panels).each(function(){e.data(this,"ui-tabs-destroy")?e(this).remove():e(this).removeClass("ui-state-default ui-state-active ui-state-disabled ui-corner-top ui-corner-bottom ui-widget-content ui-tabs-active ui-tabs-panel").removeAttr("tabIndex").removeAttr("aria-live").removeAttr("aria-busy").removeAttr("aria-selected").removeAttr("aria-labelledby").removeAttr("aria-hidden").removeAttr("aria-expanded").removeAttr("role")}),this.tabs.each(function(){var t=e(this),n=t.data("ui-tabs-aria-controls");n?t.attr("aria-controls",n).removeData("ui-tabs-aria-controls"):t.removeAttr("aria-controls")}),this.panels.show(),this.options.heightStyle!=="content"&&this.panels.css("height","")},enable:function(n){var r=this.options.disabled;if(r===!1)return;n===t?r=!1:(n=this._getIndex(n),e.isArray(r)?r=e.map(r,function(e){return e!==n?e:null}):r=e.map(this.tabs,function(e,t){return t!==n?t:null})),this._setupDisabled(r)},disable:function(n){var r=this.options.disabled;if(r===!0)return;if(n===t)r=!0;else{n=this._getIndex(n);if(e.inArray(n,r)!==-1)return;e.isArray(r)?r=e.merge([n],r).sort():r=[n]}this._setupDisabled(r)},load:function(t,n){t=this._getIndex(t);var r=this,i=this.tabs.eq(t),o=i.find(".ui-tabs-anchor"),u=this._getPanelForTab(i),a={tab:i,panel:u};if(s(o[0]))return;this.xhr=e.ajax(this._ajaxSettings(o,n,a)),this.xhr&&this.xhr.statusText!=="canceled"&&(i.addClass("ui-tabs-loading"),u.attr("aria-busy","true"),this.xhr.success(function(e){setTimeout(function(){u.html(e),r._trigger("load",n,a)},1)}).complete(function(e,t){setTimeout(function(){t==="abort"&&r.panels.stop(!1,!0),i.removeClass("ui-tabs-loading"),u.removeAttr("aria-busy"),e===r.xhr&&delete r.xhr},1)}))},_ajaxSettings:function(t,n,r){var i=this;return{url:t.attr("href"),beforeSend:function(t,s){return i._trigger("beforeLoad",n,e.extend({jqXHR:t,ajaxSettings:s},r))}}},_getPanelForTab:function(t){var n=e(t).attr("aria-controls");return this.element.find(this._sanitizeSelector("#"+n))}})}(jQuery),function(e){function n(t,n){var r=(t.attr("aria-describedby")||"").split(/\s+/);r.push(n),t.data("ui-tooltip-id",n).attr("aria-describedby",e.trim(r.join(" ")))}function r(t){var n=t.data("ui-tooltip-id"),r=(t.attr("aria-describedby")||"").split(/\s+/),i=e.inArray(n,r);i!==-1&&r.splice(i,1),t.removeData("ui-tooltip-id"),r=e.trim(r.join(" ")),r?t.attr("aria-describedby",r):t.removeAttr("aria-describedby")}var t=0;e.widget("ui.tooltip",{version:"1.10.0",options:{content:function(){var t=e(this).attr("title")||"";return e("<a>").text(t).html()},hide:!0,items:"[title]:not([disabled])",position:{my:"left top+15",at:"left bottom",collision:"flipfit flip"},show:!0,tooltipClass:null,track:!1,close:null,open:null},_create:function(){this._on({mouseover:"open",focusin:"open"}),this.tooltips={},this.parents={},this.options.disabled&&this._disable()},_setOption:function(t,n){var r=this;if(t==="disabled"){this[n?"_disable":"_enable"](),this.options[t]=n;return}this._super(t,n),t==="content"&&e.each(this.tooltips,function(e,t){r._updateContent(t)})},_disable:function(){var t=this;e.each(this.tooltips,function(n,r){var i=e.Event("blur");i.target=i.currentTarget=r[0],t.close(i,!0)}),this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.is("[title]")&&t.data("ui-tooltip-title",t.attr("title")).attr("title","")})},_enable:function(){this.element.find(this.options.items).addBack().each(function(){var t=e(this);t.data("ui-tooltip-title")&&t.attr("title",t.data("ui-tooltip-title"))})},open:function(t){var n=this,r=e(t?t.target:this.element).closest(this.options.items);if(!r.length||r.data("ui-tooltip-id"))return;r.attr("title")&&r.data("ui-tooltip-title",r.attr("title")),r.data("ui-tooltip-open",!0),t&&t.type==="mouseover"&&r.parents().each(function(){var t=e(this),r;t.data("ui-tooltip-open")&&(r=e.Event("blur"),r.target=r.currentTarget=this,n.close(r,!0)),t.attr("title")&&(t.uniqueId(),n.parents[this.id]={element:this,title:t.attr("title")},t.attr("title",""))}),this._updateContent(r,t)},_updateContent:function(e,t){var n,r=this.options.content,i=this,s=t?t.type:null;if(typeof r=="string")return this._open(t,e,r);n=r.call(e[0],function(n){if(!e.data("ui-tooltip-open"))return;i._delay(function(){t&&(t.type=s),this._open(t,e,n)})}),n&&this._open(t,e,n)},_open:function(t,r,i){function f(e){a.of=e;if(s.is(":hidden"))return;s.position(a)}var s,o,u,a=e.extend({},this.options.position);if(!i)return;s=this._find(r);if(s.length){s.find(".ui-tooltip-content").html(i);return}r.is("[title]")&&(t&&t.type==="mouseover"?r.attr("title",""):r.removeAttr("title")),s=this._tooltip(r),n(r,s.attr("id")),s.find(".ui-tooltip-content").html(i),this.options.track&&t&&/^mouse/.test(t.type)?(this._on(this.document,{mousemove:f}),f(t)):s.position(e.extend({of:r},this.options.position)),s.hide(),this._show(s,this.options.show),this.options.show&&this.options.show.delay&&(u=this.delayedShow=setInterval(function(){s.is(":visible")&&(f(a.of),clearInterval(u))},e.fx.interval)),this._trigger("open",t,{tooltip:s}),o={keyup:function(t){if(t.keyCode===e.ui.keyCode.ESCAPE){var n=e.Event(t);n.currentTarget=r[0],this.close(n,!0)}},remove:function(){this._removeTooltip(s)}};if(!t||t.type==="mouseover")o.mouseleave="close";if(!t||t.type==="focusin")o.focusout="close";this._on(!0,r,o)},close:function(t){var n=this,i=e(t?t.currentTarget:this.element),s=this._find(i);if(this.closing)return;clearInterval(this.delayedShow),i.data("ui-tooltip-title")&&i.attr("title",i.data("ui-tooltip-title")),r(i),s.stop(!0),this._hide(s,this.options.hide,function(){n._removeTooltip(e(this))}),i.removeData("ui-tooltip-open"),this._off(i,"mouseleave focusout keyup"),i[0]!==this.element[0]&&this._off(i,"remove"),this._off(this.document,"mousemove"),t&&t.type==="mouseleave"&&e.each(this.parents,function(t,r){e(r.element).attr("title",r.title),delete n.parents[t]}),this.closing=!0,this._trigger("close",t,{tooltip:s}),this.closing=!1},_tooltip:function(n){var r="ui-tooltip-"+t++,i=e("<div>").attr({id:r,role:"tooltip"}).addClass("ui-tooltip ui-widget ui-corner-all ui-widget-content "+(this.options.tooltipClass||""));return e("<div>").addClass("ui-tooltip-content").appendTo(i),i.appendTo(this.document[0].body),this.tooltips[r]=n,i},_find:function(t){var n=t.data("ui-tooltip-id");return n?e("#"+n):e()},_removeTooltip:function(e){e.remove(),delete this.tooltips[e.attr("id")]},_destroy:function(){var t=this;e.each(this.tooltips,function(n,r){var i=e.Event("blur");i.target=i.currentTarget=r[0],t.close(i,!0),e("#"+n).remove(),r.data("ui-tooltip-title")&&(r.attr("title",r.data("ui-tooltip-title")),r.removeData("ui-tooltip-title"))})}})}(jQuery); \ No newline at end of file
diff --git a/spectrum_manager/src/html/js/jquery.cookie.js b/spectrum_manager/src/html/js/jquery.cookie.js
deleted file mode 100644
index 8218817b..00000000
--- a/spectrum_manager/src/html/js/jquery.cookie.js
+++ /dev/null
@@ -1,114 +0,0 @@
-/*!
- * jQuery Cookie Plugin v1.4.1
- * https://github.com/carhartl/jquery-cookie
- *
- * Copyright 2006, 2014 Klaus Hartl
- * Released under the MIT license
- */
-(function (factory) {
- if (typeof define === 'function' && define.amd) {
- // AMD (Register as an anonymous module)
- define(['jquery'], factory);
- } else if (typeof exports === 'object') {
- // Node/CommonJS
- module.exports = factory(require('jquery'));
- } else {
- // Browser globals
- factory(jQuery);
- }
-}(function ($) {
-
- var pluses = /\+/g;
-
- function encode(s) {
- return config.raw ? s : encodeURIComponent(s);
- }
-
- function decode(s) {
- return config.raw ? s : decodeURIComponent(s);
- }
-
- function stringifyCookieValue(value) {
- return encode(config.json ? JSON.stringify(value) : String(value));
- }
-
- function parseCookieValue(s) {
- if (s.indexOf('"') === 0) {
- // This is a quoted cookie as according to RFC2068, unescape...
- s = s.slice(1, -1).replace(/\\"/g, '"').replace(/\\\\/g, '\\');
- }
-
- try {
- // Replace server-side written pluses with spaces.
- // If we can't decode the cookie, ignore it, it's unusable.
- // If we can't parse the cookie, ignore it, it's unusable.
- s = decodeURIComponent(s.replace(pluses, ' '));
- return config.json ? JSON.parse(s) : s;
- } catch(e) {}
- }
-
- function read(s, converter) {
- var value = config.raw ? s : parseCookieValue(s);
- return $.isFunction(converter) ? converter(value) : value;
- }
-
- var config = $.cookie = function (key, value, options) {
-
- // Write
-
- if (arguments.length > 1 && !$.isFunction(value)) {
- options = $.extend({}, config.defaults, options);
-
- if (typeof options.expires === 'number') {
- var days = options.expires, t = options.expires = new Date();
- t.setMilliseconds(t.getMilliseconds() + days * 864e+5);
- }
-
- return (document.cookie = [
- encode(key), '=', stringifyCookieValue(value),
- options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
- options.path ? '; path=' + options.path : '',
- options.domain ? '; domain=' + options.domain : '',
- options.secure ? '; secure' : ''
- ].join(''));
- }
-
- // Read
-
- var result = key ? undefined : {},
- // To prevent the for loop in the first place assign an empty array
- // in case there are no cookies at all. Also prevents odd result when
- // calling $.cookie().
- cookies = document.cookie ? document.cookie.split('; ') : [],
- i = 0,
- l = cookies.length;
-
- for (; i < l; i++) {
- var parts = cookies[i].split('='),
- name = decode(parts.shift()),
- cookie = parts.join('=');
-
- if (key === name) {
- // If second argument (value) is a function it's a converter...
- result = read(cookie, value);
- break;
- }
-
- // Prevent storing a cookie that we couldn't decode.
- if (!key && (cookie = read(cookie)) !== undefined) {
- result[name] = cookie;
- }
- }
-
- return result;
- };
-
- config.defaults = {};
-
- $.removeCookie = function (key, options) {
- // Must not alter options, thus extending a fresh object...
- $.cookie(key, '', $.extend({}, options, { expires: -1 }));
- return !$.cookie(key);
- };
-
-}));
diff --git a/spectrum_manager/src/html/js/jquery.js b/spectrum_manager/src/html/js/jquery.js
deleted file mode 100644
index a5195a3b..00000000
--- a/spectrum_manager/src/html/js/jquery.js
+++ /dev/null
@@ -1,5 +0,0 @@
-/*! jQuery v1.12.1 | (c) jQuery Foundation | jquery.org/license */
-!function(a,b){"object"==typeof module&&"object"==typeof module.exports?module.exports=a.document?b(a,!0):function(a){if(!a.document)throw new Error("jQuery requires a window with a document");return b(a)}:b(a)}("undefined"!=typeof window?window:this,function(a,b){var c=[],d=a.document,e=c.slice,f=c.concat,g=c.push,h=c.indexOf,i={},j=i.toString,k=i.hasOwnProperty,l={},m="1.12.1",n=function(a,b){return new n.fn.init(a,b)},o=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,p=/^-ms-/,q=/-([\da-z])/gi,r=function(a,b){return b.toUpperCase()};n.fn=n.prototype={jquery:m,constructor:n,selector:"",length:0,toArray:function(){return e.call(this)},get:function(a){return null!=a?0>a?this[a+this.length]:this[a]:e.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a){return n.each(this,a)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(e.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor()},push:g,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(e=arguments[h]))for(d in e)a=g[d],c=e[d],g!==c&&(j&&c&&(n.isPlainObject(c)||(b=n.isArray(c)))?(b?(b=!1,f=a&&n.isArray(a)?a:[]):f=a&&n.isPlainObject(a)?a:{},g[d]=n.extend(j,f,c)):void 0!==c&&(g[d]=c));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray||function(a){return"array"===n.type(a)},isWindow:function(a){return null!=a&&a==a.window},isNumeric:function(a){var b=a&&a.toString();return!n.isArray(a)&&b-parseFloat(b)+1>=0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},isPlainObject:function(a){var b;if(!a||"object"!==n.type(a)||a.nodeType||n.isWindow(a))return!1;try{if(a.constructor&&!k.call(a,"constructor")&&!k.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}if(!l.ownFirst)for(b in a)return k.call(a,b);for(b in a);return void 0===b||k.call(a,b)},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?i[j.call(a)]||"object":typeof a},globalEval:function(b){b&&n.trim(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b){var c,d=0;if(s(a)){for(c=a.length;c>d;d++)if(b.call(a[d],d,a[d])===!1)break}else for(d in a)if(b.call(a[d],d,a[d])===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):g.call(c,a)),c},inArray:function(a,b,c){var d;if(b){if(h)return h.call(b,a,c);for(d=b.length,c=c?0>c?Math.max(0,d+c):c:0;d>c;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,b){var c=+b.length,d=0,e=a.length;while(c>d)a[e++]=b[d++];if(c!==c)while(void 0!==b[d])a[e++]=b[d++];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,e,g=0,h=[];if(s(a))for(d=a.length;d>g;g++)e=b(a[g],g,c),null!=e&&h.push(e);else for(g in a)e=b(a[g],g,c),null!=e&&h.push(e);return f.apply([],h)},guid:1,proxy:function(a,b){var c,d,f;return"string"==typeof b&&(f=a[b],b=a,a=f),n.isFunction(a)?(c=e.call(arguments,2),d=function(){return a.apply(b||this,c.concat(e.call(arguments)))},d.guid=a.guid=a.guid||n.guid++,d):void 0},now:function(){return+new Date},support:l}),"function"==typeof Symbol&&(n.fn[Symbol.iterator]=c[Symbol.iterator]),n.each("Boolean Number String Function Array Date RegExp Object Error Symbol".split(" "),function(a,b){i["[object "+b+"]"]=b.toLowerCase()});function s(a){var b=!!a&&"length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ga(),z=ga(),A=ga(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+M+"))|)"+L+"*\\]",O=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+N+")*)|.*)\\)|)",P=new RegExp(L+"+","g"),Q=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),R=new RegExp("^"+L+"*,"+L+"*"),S=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),T=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),U=new RegExp(O),V=new RegExp("^"+M+"$"),W={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M+"|[*])"),ATTR:new RegExp("^"+N),PSEUDO:new RegExp("^"+O),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},X=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Z=/^[^{]+\{\s*\[native \w/,$=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,_=/[+~]/,aa=/'|\\/g,ba=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),ca=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},da=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(ea){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function fa(a,b,d,e){var f,h,j,k,l,o,r,s,w=b&&b.ownerDocument,x=b?b.nodeType:9;if(d=d||[],"string"!=typeof a||!a||1!==x&&9!==x&&11!==x)return d;if(!e&&((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,p)){if(11!==x&&(o=$.exec(a)))if(f=o[1]){if(9===x){if(!(j=b.getElementById(f)))return d;if(j.id===f)return d.push(j),d}else if(w&&(j=w.getElementById(f))&&t(b,j)&&j.id===f)return d.push(j),d}else{if(o[2])return H.apply(d,b.getElementsByTagName(a)),d;if((f=o[3])&&c.getElementsByClassName&&b.getElementsByClassName)return H.apply(d,b.getElementsByClassName(f)),d}if(c.qsa&&!A[a+" "]&&(!q||!q.test(a))){if(1!==x)w=b,s=a;else if("object"!==b.nodeName.toLowerCase()){(k=b.getAttribute("id"))?k=k.replace(aa,"\\$&"):b.setAttribute("id",k=u),r=g(a),h=r.length,l=V.test(k)?"#"+k:"[id='"+k+"']";while(h--)r[h]=l+" "+qa(r[h]);s=r.join(","),w=_.test(a)&&oa(b.parentNode)||b}if(s)try{return H.apply(d,w.querySelectorAll(s)),d}catch(y){}finally{k===u&&b.removeAttribute("id")}}}return i(a.replace(Q,"$1"),b,d,e)}function ga(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ha(a){return a[u]=!0,a}function ia(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ja(a,b){var c=a.split("|"),e=c.length;while(e--)d.attrHandle[c[e]]=b}function ka(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function la(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function na(a){return ha(function(b){return b=+b,ha(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function oa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=fa.support={},f=fa.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=fa.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=n.documentElement,p=!f(n),(e=n.defaultView)&&e.top!==e&&(e.addEventListener?e.addEventListener("unload",da,!1):e.attachEvent&&e.attachEvent("onunload",da)),c.attributes=ia(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ia(function(a){return a.appendChild(n.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=Z.test(n.getElementsByClassName),c.getById=ia(function(a){return o.appendChild(a).id=u,!n.getElementsByName||!n.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ba,ca);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return"undefined"!=typeof b.getElementsByClassName&&p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=Z.test(n.querySelectorAll))&&(ia(function(a){o.appendChild(a).innerHTML="<a id='"+u+"'></a><select id='"+u+"-\r\\' msallowcapture=''><option selected=''></option></select>",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ia(function(a){var b=n.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=Z.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ia(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",O)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=Z.test(o.compareDocumentPosition),t=b||Z.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===n||a.ownerDocument===v&&t(v,a)?-1:b===n||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,g=[a],h=[b];if(!e||!f)return a===n?-1:b===n?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return ka(a,b);c=a;while(c=c.parentNode)g.unshift(c);c=b;while(c=c.parentNode)h.unshift(c);while(g[d]===h[d])d++;return d?ka(g[d],h[d]):g[d]===v?-1:h[d]===v?1:0},n):n},fa.matches=function(a,b){return fa(a,null,null,b)},fa.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(T,"='$1']"),c.matchesSelector&&p&&!A[b+" "]&&(!r||!r.test(b))&&(!q||!q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return fa(b,n,null,[a]).length>0},fa.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},fa.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},fa.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},fa.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=fa.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=fa.selectors={cacheLength:50,createPseudo:ha,match:W,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ba,ca),a[3]=(a[3]||a[4]||a[5]||"").replace(ba,ca),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||fa.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&fa.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return W.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&U.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ba,ca).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=fa.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(P," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h,t=!1;if(q){if(f){while(p){m=b;while(m=m[p])if(h?m.nodeName.toLowerCase()===r:1===m.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){m=q,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n&&j[2],m=n&&q.childNodes[n];while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if(1===m.nodeType&&++t&&m===b){k[a]=[w,n,t];break}}else if(s&&(m=b,l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),j=k[a]||[],n=j[0]===w&&j[1],t=n),t===!1)while(m=++n&&m&&m[p]||(t=n=0)||o.pop())if((h?m.nodeName.toLowerCase()===r:1===m.nodeType)&&++t&&(s&&(l=m[u]||(m[u]={}),k=l[m.uniqueID]||(l[m.uniqueID]={}),k[a]=[w,t]),m===b))break;return t-=e,t===d||t%d===0&&t/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||fa.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ha(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ha(function(a){var b=[],c=[],d=h(a.replace(Q,"$1"));return d[u]?ha(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ha(function(a){return function(b){return fa(a,b).length>0}}),contains:ha(function(a){return a=a.replace(ba,ca),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ha(function(a){return V.test(a||"")||fa.error("unsupported lang: "+a),a=a.replace(ba,ca).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Y.test(a.nodeName)},input:function(a){return X.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:na(function(){return[0]}),last:na(function(a,b){return[b-1]}),eq:na(function(a,b,c){return[0>c?c+b:c]}),even:na(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:na(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:na(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:na(function(a,b,c){for(var d=0>c?c+b:c;++d<b;)a.push(d);return a})}},d.pseudos.nth=d.pseudos.eq;for(b in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})d.pseudos[b]=la(b);for(b in{submit:!0,reset:!0})d.pseudos[b]=ma(b);function pa(){}pa.prototype=d.filters=d.pseudos,d.setFilters=new pa,g=fa.tokenize=function(a,b){var c,e,f,g,h,i,j,k=z[a+" "];if(k)return b?0:k.slice(0);h=a,i=[],j=d.preFilter;while(h){(!c||(e=R.exec(h)))&&(e&&(h=h.slice(e[0].length)||h),i.push(f=[])),c=!1,(e=S.exec(h))&&(c=e.shift(),f.push({value:c,type:e[0].replace(Q," ")}),h=h.slice(c.length));for(g in d.filter)!(e=W[g].exec(h))||j[g]&&!(e=j[g](e))||(c=e.shift(),f.push({value:c,type:g,matches:e}),h=h.slice(c.length));if(!c)break}return b?h.length:h?fa.error(a):z(a,i).slice(0)};function qa(a){for(var b=0,c=a.length,d="";c>b;b++)d+=a[b].value;return d}function ra(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j,k=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(j=b[u]||(b[u]={}),i=j[b.uniqueID]||(j[b.uniqueID]={}),(h=i[d])&&h[0]===w&&h[1]===f)return k[2]=h[2];if(i[d]=k,k[2]=a(b,c,g))return!0}}}function sa(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ta(a,b,c){for(var d=0,e=b.length;e>d;d++)fa(a,b[d],c);return c}function ua(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function va(a,b,c,d,e,f){return d&&!d[u]&&(d=va(d)),e&&!e[u]&&(e=va(e,f)),ha(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ta(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:ua(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=ua(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=ua(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function wa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=ra(function(a){return a===b},h,!0),l=ra(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[ra(sa(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return va(i>1&&sa(m),i>1&&qa(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(Q,"$1"),c,e>i&&wa(a.slice(i,e)),f>e&&wa(a=a.slice(e)),f>e&&qa(a))}m.push(c)}return sa(m)}function xa(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,o,q,r=0,s="0",t=f&&[],u=[],v=j,x=f||e&&d.find.TAG("*",k),y=w+=null==v?1:Math.random()||.1,z=x.length;for(k&&(j=g===n||g||k);s!==z&&null!=(l=x[s]);s++){if(e&&l){o=0,g||l.ownerDocument===n||(m(l),h=!p);while(q=a[o++])if(q(l,g||n,h)){i.push(l);break}k&&(w=y)}c&&((l=!q&&l)&&r--,f&&t.push(l))}if(r+=s,c&&s!==r){o=0;while(q=b[o++])q(t,u,g,h);if(f){if(r>0)while(s--)t[s]||u[s]||(u[s]=F.call(i));u=ua(u)}H.apply(i,u),k&&!f&&u.length>0&&r+b.length>1&&fa.uniqueSort(i)}return k&&(w=y,j=v),t};return c?ha(f):f}return h=fa.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=wa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,xa(e,d)),f.selector=a}return f},i=fa.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ba,ca),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=W.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ba,ca),_.test(j[0].type)&&oa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&qa(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,!b||_.test(a)&&oa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ia(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ia(function(a){return a.innerHTML="<a href='#'></a>","#"===a.firstChild.getAttribute("href")})||ja("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ia(function(a){return a.innerHTML="<input/>",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ja("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ia(function(a){return null==a.getAttribute("disabled")})||ja(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),fa}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.uniqueSort=n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},v=function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c},w=n.expr.match.needsContext,x=/^<([\w-]+)\s*\/?>(?:<\/\1>|)$/,y=/^.[^:#\[\.,]*$/;function z(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(y.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return n.inArray(a,b)>-1!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=[],d=this,e=d.length;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;e>b;b++)if(n.contains(d[b],this))return!0}));for(b=0;e>b;b++)n.find(a,d[b],c);return c=this.pushStack(e>1?n.unique(c):c),c.selector=this.selector?this.selector+" "+a:a,c},filter:function(a){return this.pushStack(z(this,a||[],!1))},not:function(a){return this.pushStack(z(this,a||[],!0))},is:function(a){return!!z(this,"string"==typeof a&&w.test(a)?n(a):a||[],!1).length}});var A,B=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,C=n.fn.init=function(a,b,c){var e,f;if(!a)return this;if(c=c||A,"string"==typeof a){if(e="<"===a.charAt(0)&&">"===a.charAt(a.length-1)&&a.length>=3?[null,a,null]:B.exec(a),!e||!e[1]&&b)return!b||b.jquery?(b||c).find(a):this.constructor(b).find(a);if(e[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(e[1],b&&b.nodeType?b.ownerDocument||b:d,!0)),x.test(e[1])&&n.isPlainObject(b))for(e in b)n.isFunction(this[e])?this[e](b[e]):this.attr(e,b[e]);return this}if(f=d.getElementById(e[2]),f&&f.parentNode){if(f.id!==e[2])return A.find(a);this.length=1,this[0]=f}return this.context=d,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof c.ready?c.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};C.prototype=n.fn,A=n(d);var D=/^(?:parents|prev(?:Until|All))/,E={children:!0,contents:!0,next:!0,prev:!0};n.fn.extend({has:function(a){var b,c=n(a,this),d=c.length;return this.filter(function(){for(b=0;d>b;b++)if(n.contains(this,c[b]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=w.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.uniqueSort(f):f)},index:function(a){return a?"string"==typeof a?n.inArray(this[0],n(a)):n.inArray(a.jquery?a[0]:a,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.uniqueSort(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function F(a,b){do a=a[b];while(a&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return u(a,"parentNode")},parentsUntil:function(a,b,c){return u(a,"parentNode",c)},next:function(a){return F(a,"nextSibling")},prev:function(a){return F(a,"previousSibling")},nextAll:function(a){return u(a,"nextSibling")},prevAll:function(a){return u(a,"previousSibling")},nextUntil:function(a,b,c){return u(a,"nextSibling",c)},prevUntil:function(a,b,c){return u(a,"previousSibling",c)},siblings:function(a){return v((a.parentNode||{}).firstChild,a)},children:function(a){return v(a.firstChild)},contents:function(a){return n.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(E[a]||(e=n.uniqueSort(e)),D.test(a)&&(e=e.reverse())),this.pushStack(e)}});var G=/\S+/g;function H(a){var b={};return n.each(a.match(G)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?H(a):n.extend({},a);var b,c,d,e,f=[],g=[],h=-1,i=function(){for(e=a.once,d=b=!0;g.length;h=-1){c=g.shift();while(++h<f.length)f[h].apply(c[0],c[1])===!1&&a.stopOnFalse&&(h=f.length,c=!1)}a.memory||(c=!1),b=!1,e&&(f=c?[]:"")},j={add:function(){return f&&(c&&!b&&(h=f.length-1,g.push(c)),function d(b){n.each(b,function(b,c){n.isFunction(c)?a.unique&&j.has(c)||f.push(c):c&&c.length&&"string"!==n.type(c)&&d(c)})}(arguments),c&&!b&&i()),this},remove:function(){return n.each(arguments,function(a,b){var c;while((c=n.inArray(b,f,c))>-1)f.splice(c,1),h>=c&&h--}),this},has:function(a){return a?n.inArray(a,f)>-1:f.length>0},empty:function(){return f&&(f=[]),this},disable:function(){return e=g=[],f=c="",this},disabled:function(){return!f},lock:function(){return e=!0,c||j.disable(),this},locked:function(){return!!e},fireWith:function(a,c){return e||(c=c||[],c=[a,c.slice?c.slice():c],g.push(c),b||i()),this},fire:function(){return j.fireWith(this,arguments),this},fired:function(){return!!d}};return j},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().progress(c.notify).done(c.resolve).fail(c.reject):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=e.call(arguments),d=c.length,f=1!==d||a&&n.isFunction(a.promise)?d:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(d){b[a]=this,c[a]=arguments.length>1?e.call(arguments):d,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(d>1)for(i=new Array(d),j=new Array(d),k=new Array(d);d>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().progress(h(b,j,i)).done(h(b,k,c)).fail(g.reject):--f;return f||g.resolveWith(k,c),g.promise()}});var I;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(I.resolveWith(d,[n]),n.fn.triggerHandler&&(n(d).triggerHandler("ready"),n(d).off("ready"))))}});function J(){d.addEventListener?(d.removeEventListener("DOMContentLoaded",K),a.removeEventListener("load",K)):(d.detachEvent("onreadystatechange",K),a.detachEvent("onload",K))}function K(){(d.addEventListener||"load"===a.event.type||"complete"===d.readyState)&&(J(),n.ready())}n.ready.promise=function(b){if(!I)if(I=n.Deferred(),"complete"===d.readyState||"loading"!==d.readyState&&!d.documentElement.doScroll)a.setTimeout(n.ready);else if(d.addEventListener)d.addEventListener("DOMContentLoaded",K),a.addEventListener("load",K);else{d.attachEvent("onreadystatechange",K),a.attachEvent("onload",K);var c=!1;try{c=null==a.frameElement&&d.documentElement}catch(e){}c&&c.doScroll&&!function f(){if(!n.isReady){try{c.doScroll("left")}catch(b){return a.setTimeout(f,50)}J(),n.ready()}}()}return I.promise(b)},n.ready.promise();var L;for(L in n(l))break;l.ownFirst="0"===L,l.inlineBlockNeedsLayout=!1,n(function(){var a,b,c,e;c=d.getElementsByTagName("body")[0],c&&c.style&&(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="display:inline;margin:0;border:0;padding:1px;width:1px;zoom:1",l.inlineBlockNeedsLayout=a=3===b.offsetWidth,a&&(c.style.zoom=1)),c.removeChild(e))}),function(){var a=d.createElement("div");l.deleteExpando=!0;try{delete a.test}catch(b){l.deleteExpando=!1}a=null}();var M=function(a){var b=n.noData[(a.nodeName+" ").toLowerCase()],c=+a.nodeType||1;return 1!==c&&9!==c?!1:!b||b!==!0&&a.getAttribute("classid")===b},N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){if(void 0===c&&1===a.nodeType){var d="data-"+b.replace(O,"-$1").toLowerCase();if(c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}n.data(a,b,c)}else c=void 0;
-}return c}function Q(a){var b;for(b in a)if(("data"!==b||!n.isEmptyObject(a[b]))&&"toJSON"!==b)return!1;return!0}function R(a,b,d,e){if(M(a)){var f,g,h=n.expando,i=a.nodeType,j=i?n.cache:a,k=i?a[h]:a[h]&&h;if(k&&j[k]&&(e||j[k].data)||void 0!==d||"string"!=typeof b)return k||(k=i?a[h]=c.pop()||n.guid++:h),j[k]||(j[k]=i?{}:{toJSON:n.noop}),("object"==typeof b||"function"==typeof b)&&(e?j[k]=n.extend(j[k],b):j[k].data=n.extend(j[k].data,b)),g=j[k],e||(g.data||(g.data={}),g=g.data),void 0!==d&&(g[n.camelCase(b)]=d),"string"==typeof b?(f=g[b],null==f&&(f=g[n.camelCase(b)])):f=g,f}}function S(a,b,c){if(M(a)){var d,e,f=a.nodeType,g=f?n.cache:a,h=f?a[n.expando]:n.expando;if(g[h]){if(b&&(d=c?g[h]:g[h].data)){n.isArray(b)?b=b.concat(n.map(b,n.camelCase)):b in d?b=[b]:(b=n.camelCase(b),b=b in d?[b]:b.split(" ")),e=b.length;while(e--)delete d[b[e]];if(c?!Q(d):!n.isEmptyObject(d))return}(c||(delete g[h].data,Q(g[h])))&&(f?n.cleanData([a],!0):l.deleteExpando||g!=g.window?delete g[h]:g[h]=void 0)}}}n.extend({cache:{},noData:{"applet ":!0,"embed ":!0,"object ":"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(a){return a=a.nodeType?n.cache[a[n.expando]]:a[n.expando],!!a&&!Q(a)},data:function(a,b,c){return R(a,b,c)},removeData:function(a,b){return S(a,b)},_data:function(a,b,c){return R(a,b,c,!0)},_removeData:function(a,b){return S(a,b,!0)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=n.data(f),1===f.nodeType&&!n._data(f,"parsedAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));n._data(f,"parsedAttrs",!0)}return e}return"object"==typeof a?this.each(function(){n.data(this,a)}):arguments.length>1?this.each(function(){n.data(this,a,b)}):f?P(f,a,n.data(f,a)):void 0},removeData:function(a){return this.each(function(){n.removeData(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=n._data(a,b),c&&(!d||n.isArray(c)?d=n._data(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return n._data(a,c)||n._data(a,c,{empty:n.Callbacks("once memory").add(function(){n._removeData(a,b+"queue"),n._removeData(a,c)})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.length<c?n.queue(this[0],a):void 0===b?this:this.each(function(){var c=n.queue(this,a,b);n._queueHooks(this,a),"fx"===a&&"inprogress"!==c[0]&&n.dequeue(this,a)})},dequeue:function(a){return this.each(function(){n.dequeue(this,a)})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,b){var c,d=1,e=n.Deferred(),f=this,g=this.length,h=function(){--d||e.resolveWith(f,[f])};"string"!=typeof a&&(b=a,a=void 0),a=a||"fx";while(g--)c=n._data(f[g],a+"queueHooks"),c&&c.empty&&(d++,c.empty.add(h));return h(),e.promise(b)}}),function(){var a;l.shrinkWrapBlocks=function(){if(null!=a)return a;a=!1;var b,c,e;return c=d.getElementsByTagName("body")[0],c&&c.style?(b=d.createElement("div"),e=d.createElement("div"),e.style.cssText="position:absolute;border:0;width:0;height:0;top:0;left:-9999px",c.appendChild(e).appendChild(b),"undefined"!=typeof b.style.zoom&&(b.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:1px;width:1px;zoom:1",b.appendChild(d.createElement("div")).style.width="5px",a=3!==b.offsetWidth),c.removeChild(e),a):void 0}}();var T=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,U=new RegExp("^(?:([+-])=|)("+T+")([a-z%]*)$","i"),V=["Top","Right","Bottom","Left"],W=function(a,b){return a=b||a,"none"===n.css(a,"display")||!n.contains(a.ownerDocument,a)};function X(a,b,c,d){var e,f=1,g=20,h=d?function(){return d.cur()}:function(){return n.css(a,b,"")},i=h(),j=c&&c[3]||(n.cssNumber[b]?"":"px"),k=(n.cssNumber[b]||"px"!==j&&+i)&&U.exec(n.css(a,b));if(k&&k[3]!==j){j=j||k[3],c=c||[],k=+i||1;do f=f||".5",k/=f,n.style(a,b,k+j);while(f!==(f=h()/i)&&1!==f&&--g)}return c&&(k=+k||+i||0,e=c[1]?k+(c[1]+1)*c[2]:+c[2],d&&(d.unit=j,d.start=k,d.end=e)),e}var Y=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)Y(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f},Z=/^(?:checkbox|radio)$/i,$=/<([\w:-]+)/,_=/^$|\/(?:java|ecma)script/i,aa=/^\s+/,ba="abbr|article|aside|audio|bdi|canvas|data|datalist|details|dialog|figcaption|figure|footer|header|hgroup|main|mark|meter|nav|output|picture|progress|section|summary|template|time|video";function ca(a){var b=ba.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}!function(){var a=d.createElement("div"),b=d.createDocumentFragment(),c=d.createElement("input");a.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",l.leadingWhitespace=3===a.firstChild.nodeType,l.tbody=!a.getElementsByTagName("tbody").length,l.htmlSerialize=!!a.getElementsByTagName("link").length,l.html5Clone="<:nav></:nav>"!==d.createElement("nav").cloneNode(!0).outerHTML,c.type="checkbox",c.checked=!0,b.appendChild(c),l.appendChecked=c.checked,a.innerHTML="<textarea>x</textarea>",l.noCloneChecked=!!a.cloneNode(!0).lastChild.defaultValue,b.appendChild(a),c=d.createElement("input"),c.setAttribute("type","radio"),c.setAttribute("checked","checked"),c.setAttribute("name","t"),a.appendChild(c),l.checkClone=a.cloneNode(!0).cloneNode(!0).lastChild.checked,l.noCloneEvent=!!a.addEventListener,a[n.expando]=1,l.attributes=!a.getAttribute(n.expando)}();var da={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],area:[1,"<map>","</map>"],param:[1,"<object>","</object>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],_default:l.htmlSerialize?[0,"",""]:[1,"X<div>","</div>"]};da.optgroup=da.option,da.tbody=da.tfoot=da.colgroup=da.caption=da.thead,da.th=da.td;function ea(a,b){var c,d,e=0,f="undefined"!=typeof a.getElementsByTagName?a.getElementsByTagName(b||"*"):"undefined"!=typeof a.querySelectorAll?a.querySelectorAll(b||"*"):void 0;if(!f)for(f=[],c=a.childNodes||a;null!=(d=c[e]);e++)!b||n.nodeName(d,b)?f.push(d):n.merge(f,ea(d,b));return void 0===b||b&&n.nodeName(a,b)?n.merge([a],f):f}function fa(a,b){for(var c,d=0;null!=(c=a[d]);d++)n._data(c,"globalEval",!b||n._data(b[d],"globalEval"))}var ga=/<|&#?\w+;/,ha=/<tbody/i;function ia(a){Z.test(a.type)&&(a.defaultChecked=a.checked)}function ja(a,b,c,d,e){for(var f,g,h,i,j,k,m,o=a.length,p=ca(b),q=[],r=0;o>r;r++)if(g=a[r],g||0===g)if("object"===n.type(g))n.merge(q,g.nodeType?[g]:g);else if(ga.test(g)){i=i||p.appendChild(b.createElement("div")),j=($.exec(g)||["",""])[1].toLowerCase(),m=da[j]||da._default,i.innerHTML=m[1]+n.htmlPrefilter(g)+m[2],f=m[0];while(f--)i=i.lastChild;if(!l.leadingWhitespace&&aa.test(g)&&q.push(b.createTextNode(aa.exec(g)[0])),!l.tbody){g="table"!==j||ha.test(g)?"<table>"!==m[1]||ha.test(g)?0:i:i.firstChild,f=g&&g.childNodes.length;while(f--)n.nodeName(k=g.childNodes[f],"tbody")&&!k.childNodes.length&&g.removeChild(k)}n.merge(q,i.childNodes),i.textContent="";while(i.firstChild)i.removeChild(i.firstChild);i=p.lastChild}else q.push(b.createTextNode(g));i&&p.removeChild(i),l.appendChecked||n.grep(ea(q,"input"),ia),r=0;while(g=q[r++])if(d&&n.inArray(g,d)>-1)e&&e.push(g);else if(h=n.contains(g.ownerDocument,g),i=ea(p.appendChild(g),"script"),h&&fa(i),c){f=0;while(g=i[f++])_.test(g.type||"")&&c.push(g)}return i=null,p}!function(){var b,c,e=d.createElement("div");for(b in{submit:!0,change:!0,focusin:!0})c="on"+b,(l[b]=c in a)||(e.setAttribute(c,"t"),l[b]=e.attributes[c].expando===!1);e=null}();var ka=/^(?:input|select|textarea)$/i,la=/^key/,ma=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,na=/^(?:focusinfocus|focusoutblur)$/,oa=/^([^.]*)(?:\.(.+)|)/;function pa(){return!0}function qa(){return!1}function ra(){try{return d.activeElement}catch(a){}}function sa(a,b,c,d,e,f){var g,h;if("object"==typeof b){"string"!=typeof c&&(d=d||c,c=void 0);for(h in b)sa(a,h,c,d,b[h],f);return a}if(null==d&&null==e?(e=c,d=c=void 0):null==e&&("string"==typeof c?(e=d,d=void 0):(e=d,d=c,c=void 0)),e===!1)e=qa;else if(!e)return a;return 1===f&&(g=e,e=function(a){return n().off(a),g.apply(this,arguments)},e.guid=g.guid||(g.guid=n.guid++)),a.each(function(){n.event.add(this,b,e,d,c)})}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n._data(a);if(r){c.handler&&(i=c,c=i.handler,e=i.selector),c.guid||(c.guid=n.guid++),(g=r.events)||(g=r.events={}),(k=r.handle)||(k=r.handle=function(a){return"undefined"==typeof n||a&&n.event.triggered===a.type?void 0:n.event.dispatch.apply(k.elem,arguments)},k.elem=a),b=(b||"").match(G)||[""],h=b.length;while(h--)f=oa.exec(b[h])||[],o=q=f[1],p=(f[2]||"").split(".").sort(),o&&(j=n.event.special[o]||{},o=(e?j.delegateType:j.bindType)||o,j=n.event.special[o]||{},l=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},i),(m=g[o])||(m=g[o]=[],m.delegateCount=0,j.setup&&j.setup.call(a,d,p,k)!==!1||(a.addEventListener?a.addEventListener(o,k,!1):a.attachEvent&&a.attachEvent("on"+o,k))),j.add&&(j.add.call(a,l),l.handler.guid||(l.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,l):m.push(l),n.event.global[o]=!0);a=null}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=n.hasData(a)&&n._data(a);if(r&&(k=r.events)){b=(b||"").match(G)||[""],j=b.length;while(j--)if(h=oa.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=k[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),i=f=m.length;while(f--)g=m[f],!e&&q!==g.origType||c&&c.guid!==g.guid||h&&!h.test(g.namespace)||d&&d!==g.selector&&("**"!==d||!g.selector)||(m.splice(f,1),g.selector&&m.delegateCount--,l.remove&&l.remove.call(a,g));i&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete k[o])}else for(o in k)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(k)&&(delete r.handle,n._removeData(a,"events"))}},trigger:function(b,c,e,f){var g,h,i,j,l,m,o,p=[e||d],q=k.call(b,"type")?b.type:b,r=k.call(b,"namespace")?b.namespace.split("."):[];if(i=m=e=e||d,3!==e.nodeType&&8!==e.nodeType&&!na.test(q+n.event.triggered)&&(q.indexOf(".")>-1&&(r=q.split("."),q=r.shift(),r.sort()),h=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=f?2:3,b.namespace=r.join("."),b.rnamespace=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=e),c=null==c?[b]:n.makeArray(c,[b]),l=n.event.special[q]||{},f||!l.trigger||l.trigger.apply(e,c)!==!1)){if(!f&&!l.noBubble&&!n.isWindow(e)){for(j=l.delegateType||q,na.test(j+q)||(i=i.parentNode);i;i=i.parentNode)p.push(i),m=i;m===(e.ownerDocument||d)&&p.push(m.defaultView||m.parentWindow||a)}o=0;while((i=p[o++])&&!b.isPropagationStopped())b.type=o>1?j:l.bindType||q,g=(n._data(i,"events")||{})[b.type]&&n._data(i,"handle"),g&&g.apply(i,c),g=h&&i[h],g&&g.apply&&M(i)&&(b.result=g.apply(i,c),b.result===!1&&b.preventDefault());if(b.type=q,!f&&!b.isDefaultPrevented()&&(!l._default||l._default.apply(p.pop(),c)===!1)&&M(e)&&h&&e[q]&&!n.isWindow(e)){m=e[h],m&&(e[h]=null),n.event.triggered=q;try{e[q]()}catch(s){}n.event.triggered=void 0,m&&(e[h]=m)}return b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,d,f,g,h=[],i=e.call(arguments),j=(n._data(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.rnamespace||a.rnamespace.test(g.namespace))&&(a.handleObj=g,a.data=g.data,d=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==d&&(a.result=d)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&("click"!==a.type||isNaN(a.button)||a.button<1))for(;i!=this;i=i.parentNode||this)if(1===i.nodeType&&(i.disabled!==!0||"click"!==a.type)){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>-1:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h<b.length&&g.push({elem:this,handlers:b.slice(h)}),g},fix:function(a){if(a[n.expando])return a;var b,c,e,f=a.type,g=a,h=this.fixHooks[f];h||(this.fixHooks[f]=h=ma.test(f)?this.mouseHooks:la.test(f)?this.keyHooks:{}),e=h.props?this.props.concat(h.props):this.props,a=new n.Event(g),b=e.length;while(b--)c=e[b],a[c]=g[c];return a.target||(a.target=g.srcElement||d),3===a.target.nodeType&&(a.target=a.target.parentNode),a.metaKey=!!a.metaKey,h.filter?h.filter(a,g):a},props:"altKey bubbles cancelable ctrlKey currentTarget detail eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){return null==a.which&&(a.which=null!=b.charCode?b.charCode:b.keyCode),a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,b){var c,e,f,g=b.button,h=b.fromElement;return null==a.pageX&&null!=b.clientX&&(e=a.target.ownerDocument||d,f=e.documentElement,c=e.body,a.pageX=b.clientX+(f&&f.scrollLeft||c&&c.scrollLeft||0)-(f&&f.clientLeft||c&&c.clientLeft||0),a.pageY=b.clientY+(f&&f.scrollTop||c&&c.scrollTop||0)-(f&&f.clientTop||c&&c.clientTop||0)),!a.relatedTarget&&h&&(a.relatedTarget=h===a.target?b.toElement:h),a.which||void 0===g||(a.which=1&g?1:2&g?3:4&g?2:0),a}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==ra()&&this.focus)try{return this.focus(),!1}catch(a){}},delegateType:"focusin"},blur:{trigger:function(){return this===ra()&&this.blur?(this.blur(),!1):void 0},delegateType:"focusout"},click:{trigger:function(){return n.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):void 0},_default:function(a){return n.nodeName(a.target,"a")}},beforeunload:{postDispatch:function(a){void 0!==a.result&&a.originalEvent&&(a.originalEvent.returnValue=a.result)}}},simulate:function(a,b,c){var d=n.extend(new n.Event,c,{type:a,isSimulated:!0});n.event.trigger(d,null,b),d.isDefaultPrevented()&&c.preventDefault()}},n.removeEvent=d.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c)}:function(a,b,c){var d="on"+b;a.detachEvent&&("undefined"==typeof a[d]&&(a[d]=null),a.detachEvent(d,c))},n.Event=function(a,b){return this instanceof n.Event?(a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||void 0===a.defaultPrevented&&a.returnValue===!1?pa:qa):this.type=a,b&&n.extend(this,b),this.timeStamp=a&&a.timeStamp||n.now(),void(this[n.expando]=!0)):new n.Event(a,b)},n.Event.prototype={constructor:n.Event,isDefaultPrevented:qa,isPropagationStopped:qa,isImmediatePropagationStopped:qa,preventDefault:function(){var a=this.originalEvent;this.isDefaultPrevented=pa,a&&(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){var a=this.originalEvent;this.isPropagationStopped=pa,a&&!this.isSimulated&&(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){var a=this.originalEvent;this.isImmediatePropagationStopped=pa,a&&a.stopImmediatePropagation&&a.stopImmediatePropagation(),this.stopPropagation()}},n.each({mouseenter:"mouseover",mouseleave:"mouseout",pointerenter:"pointerover",pointerleave:"pointerout"},function(a,b){n.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c,d=this,e=a.relatedTarget,f=a.handleObj;return(!e||e!==d&&!n.contains(d,e))&&(a.type=f.origType,c=f.handler.apply(this,arguments),a.type=b),c}}}),l.submit||(n.event.special.submit={setup:function(){return n.nodeName(this,"form")?!1:void n.event.add(this,"click._submit keypress._submit",function(a){var b=a.target,c=n.nodeName(b,"input")||n.nodeName(b,"button")?n.prop(b,"form"):void 0;c&&!n._data(c,"submit")&&(n.event.add(c,"submit._submit",function(a){a._submitBubble=!0}),n._data(c,"submit",!0))})},postDispatch:function(a){a._submitBubble&&(delete a._submitBubble,this.parentNode&&!a.isTrigger&&n.event.simulate("submit",this.parentNode,a))},teardown:function(){return n.nodeName(this,"form")?!1:void n.event.remove(this,"._submit")}}),l.change||(n.event.special.change={setup:function(){return ka.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(n.event.add(this,"propertychange._change",function(a){"checked"===a.originalEvent.propertyName&&(this._justChanged=!0)}),n.event.add(this,"click._change",function(a){this._justChanged&&!a.isTrigger&&(this._justChanged=!1),n.event.simulate("change",this,a)})),!1):void n.event.add(this,"beforeactivate._change",function(a){var b=a.target;ka.test(b.nodeName)&&!n._data(b,"change")&&(n.event.add(b,"change._change",function(a){!this.parentNode||a.isSimulated||a.isTrigger||n.event.simulate("change",this.parentNode,a)}),n._data(b,"change",!0))})},handle:function(a){var b=a.target;return this!==b||a.isSimulated||a.isTrigger||"radio"!==b.type&&"checkbox"!==b.type?a.handleObj.handler.apply(this,arguments):void 0},teardown:function(){return n.event.remove(this,"._change"),!ka.test(this.nodeName)}}),l.focusin||n.each({focus:"focusin",blur:"focusout"},function(a,b){var c=function(a){n.event.simulate(b,a.target,n.event.fix(a))};n.event.special[b]={setup:function(){var d=this.ownerDocument||this,e=n._data(d,b);e||d.addEventListener(a,c,!0),n._data(d,b,(e||0)+1)},teardown:function(){var d=this.ownerDocument||this,e=n._data(d,b)-1;e?n._data(d,b,e):(d.removeEventListener(a,c,!0),n._removeData(d,b))}}}),n.fn.extend({on:function(a,b,c,d){return sa(this,a,b,c,d)},one:function(a,b,c,d){return sa(this,a,b,c,d,1)},off:function(a,b,c){var d,e;if(a&&a.preventDefault&&a.handleObj)return d=a.handleObj,n(a.delegateTarget).off(d.namespace?d.origType+"."+d.namespace:d.origType,d.selector,d.handler),this;if("object"==typeof a){for(e in a)this.off(e,b,a[e]);return this}return(b===!1||"function"==typeof b)&&(c=b,b=void 0),c===!1&&(c=qa),this.each(function(){n.event.remove(this,a,c,b)})},trigger:function(a,b){return this.each(function(){n.event.trigger(a,b,this)})},triggerHandler:function(a,b){var c=this[0];return c?n.event.trigger(a,b,c,!0):void 0}});var ta=/ jQuery\d+="(?:null|\d+)"/g,ua=new RegExp("<(?:"+ba+")[\\s/>]","i"),va=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:-]+)[^>]*)\/>/gi,wa=/<script|<style|<link/i,xa=/checked\s*(?:[^=]|=\s*.checked.)/i,ya=/^true\/(.*)/,za=/^\s*<!(?:\[CDATA\[|--)|(?:\]\]|--)>\s*$/g,Aa=ca(d),Ba=Aa.appendChild(d.createElement("div"));function Ca(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function Da(a){return a.type=(null!==n.find.attr(a,"type"))+"/"+a.type,a}function Ea(a){var b=ya.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function Fa(a,b){if(1===b.nodeType&&n.hasData(a)){var c,d,e,f=n._data(a),g=n._data(b,f),h=f.events;if(h){delete g.handle,g.events={};for(c in h)for(d=0,e=h[c].length;e>d;d++)n.event.add(b,c,h[c][d])}g.data&&(g.data=n.extend({},g.data))}}function Ga(a,b){var c,d,e;if(1===b.nodeType){if(c=b.nodeName.toLowerCase(),!l.noCloneEvent&&b[n.expando]){e=n._data(b);for(d in e.events)n.removeEvent(b,d,e.handle);b.removeAttribute(n.expando)}"script"===c&&b.text!==a.text?(Da(b).text=a.text,Ea(b)):"object"===c?(b.parentNode&&(b.outerHTML=a.outerHTML),l.html5Clone&&a.innerHTML&&!n.trim(b.innerHTML)&&(b.innerHTML=a.innerHTML)):"input"===c&&Z.test(a.type)?(b.defaultChecked=b.checked=a.checked,b.value!==a.value&&(b.value=a.value)):"option"===c?b.defaultSelected=b.selected=a.defaultSelected:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}}function Ha(a,b,c,d){b=f.apply([],b);var e,g,h,i,j,k,m=0,o=a.length,p=o-1,q=b[0],r=n.isFunction(q);if(r||o>1&&"string"==typeof q&&!l.checkClone&&xa.test(q))return a.each(function(e){var f=a.eq(e);r&&(b[0]=q.call(this,e,f.html())),Ha(f,b,c,d)});if(o&&(k=ja(b,a[0].ownerDocument,!1,a,d),e=k.firstChild,1===k.childNodes.length&&(k=e),e||d)){for(i=n.map(ea(k,"script"),Da),h=i.length;o>m;m++)g=k,m!==p&&(g=n.clone(g,!0,!0),h&&n.merge(i,ea(g,"script"))),c.call(a[m],g,m);if(h)for(j=i[i.length-1].ownerDocument,n.map(i,Ea),m=0;h>m;m++)g=i[m],_.test(g.type||"")&&!n._data(g,"globalEval")&&n.contains(j,g)&&(g.src?n._evalUrl&&n._evalUrl(g.src):n.globalEval((g.text||g.textContent||g.innerHTML||"").replace(za,"")));k=e=null}return a}function Ia(a,b,c){for(var d,e=b?n.filter(b,a):a,f=0;null!=(d=e[f]);f++)c||1!==d.nodeType||n.cleanData(ea(d)),d.parentNode&&(c&&n.contains(d.ownerDocument,d)&&fa(ea(d,"script")),d.parentNode.removeChild(d));return a}n.extend({htmlPrefilter:function(a){return a.replace(va,"<$1></$2>")},clone:function(a,b,c){var d,e,f,g,h,i=n.contains(a.ownerDocument,a);if(l.html5Clone||n.isXMLDoc(a)||!ua.test("<"+a.nodeName+">")?f=a.cloneNode(!0):(Ba.innerHTML=a.outerHTML,Ba.removeChild(f=Ba.firstChild)),!(l.noCloneEvent&&l.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(d=ea(f),h=ea(a),g=0;null!=(e=h[g]);++g)d[g]&&Ga(e,d[g]);if(b)if(c)for(h=h||ea(a),d=d||ea(f),g=0;null!=(e=h[g]);g++)Fa(e,d[g]);else Fa(a,f);return d=ea(f,"script"),d.length>0&&fa(d,!i&&ea(a,"script")),d=h=e=null,f},cleanData:function(a,b){for(var d,e,f,g,h=0,i=n.expando,j=n.cache,k=l.attributes,m=n.event.special;null!=(d=a[h]);h++)if((b||M(d))&&(f=d[i],g=f&&j[f])){if(g.events)for(e in g.events)m[e]?n.event.remove(d,e):n.removeEvent(d,e,g.handle);j[f]&&(delete j[f],k||"undefined"==typeof d.removeAttribute?d[i]=void 0:d.removeAttribute(i),c.push(f))}}}),n.fn.extend({domManip:Ha,detach:function(a){return Ia(this,a,!0)},remove:function(a){return Ia(this,a)},text:function(a){return Y(this,function(a){return void 0===a?n.text(this):this.empty().append((this[0]&&this[0].ownerDocument||d).createTextNode(a))},null,a,arguments.length)},append:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.appendChild(a)}})},prepend:function(){return Ha(this,arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=Ca(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return Ha(this,arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},empty:function(){for(var a,b=0;null!=(a=this[b]);b++){1===a.nodeType&&n.cleanData(ea(a,!1));while(a.firstChild)a.removeChild(a.firstChild);a.options&&n.nodeName(a,"select")&&(a.options.length=0)}return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return Y(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a)return 1===b.nodeType?b.innerHTML.replace(ta,""):void 0;if("string"==typeof a&&!wa.test(a)&&(l.htmlSerialize||!ua.test(a))&&(l.leadingWhitespace||!aa.test(a))&&!da[($.exec(a)||["",""])[1].toLowerCase()]){a=n.htmlPrefilter(a);try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(ea(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=[];return Ha(this,arguments,function(b){var c=this.parentNode;n.inArray(this,a)<0&&(n.cleanData(ea(this)),c&&c.replaceChild(b,this))},a)}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=0,e=[],f=n(a),h=f.length-1;h>=d;d++)c=d===h?this:this.clone(!0),n(f[d])[b](c),g.apply(e,c.get());return this.pushStack(e)}});var Ja,Ka={HTML:"block",BODY:"block"};function La(a,b){var c=n(b.createElement(a)).appendTo(b.body),d=n.css(c[0],"display");return c.detach(),d}function Ma(a){var b=d,c=Ka[a];return c||(c=La(a,b),"none"!==c&&c||(Ja=(Ja||n("<iframe frameborder='0' width='0' height='0'/>")).appendTo(b.documentElement),b=(Ja[0].contentWindow||Ja[0].contentDocument).document,b.write(),b.close(),c=La(a,b),Ja.detach()),Ka[a]=c),c}var Na=/^margin/,Oa=new RegExp("^("+T+")(?!px)[a-z%]+$","i"),Pa=function(a,b,c,d){var e,f,g={};for(f in b)g[f]=a.style[f],a.style[f]=b[f];e=c.apply(a,d||[]);for(f in b)a.style[f]=g[f];return e},Qa=d.documentElement;!function(){var b,c,e,f,g,h,i=d.createElement("div"),j=d.createElement("div");if(j.style){j.style.cssText="float:left;opacity:.5",l.opacity="0.5"===j.style.opacity,l.cssFloat=!!j.style.cssFloat,j.style.backgroundClip="content-box",j.cloneNode(!0).style.backgroundClip="",l.clearCloneStyle="content-box"===j.style.backgroundClip,i=d.createElement("div"),i.style.cssText="border:0;width:8px;height:0;top:0;left:-9999px;padding:0;margin-top:1px;position:absolute",j.innerHTML="",i.appendChild(j),l.boxSizing=""===j.style.boxSizing||""===j.style.MozBoxSizing||""===j.style.WebkitBoxSizing,n.extend(l,{reliableHiddenOffsets:function(){return null==b&&k(),f},boxSizingReliable:function(){return null==b&&k(),e},pixelMarginRight:function(){return null==b&&k(),c},pixelPosition:function(){return null==b&&k(),b},reliableMarginRight:function(){return null==b&&k(),g},reliableMarginLeft:function(){return null==b&&k(),h}});function k(){var k,l,m=d.documentElement;m.appendChild(i),j.style.cssText="-webkit-box-sizing:border-box;box-sizing:border-box;position:relative;display:block;margin:auto;border:1px;padding:1px;top:1%;width:50%",b=e=h=!1,c=g=!0,a.getComputedStyle&&(l=a.getComputedStyle(j),b="1%"!==(l||{}).top,h="2px"===(l||{}).marginLeft,e="4px"===(l||{width:"4px"}).width,j.style.marginRight="50%",c="4px"===(l||{marginRight:"4px"}).marginRight,k=j.appendChild(d.createElement("div")),k.style.cssText=j.style.cssText="-webkit-box-sizing:content-box;-moz-box-sizing:content-box;box-sizing:content-box;display:block;margin:0;border:0;padding:0",k.style.marginRight=k.style.width="0",j.style.width="1px",g=!parseFloat((a.getComputedStyle(k)||{}).marginRight),j.removeChild(k)),j.style.display="none",f=0===j.getClientRects().length,f&&(j.style.display="",j.innerHTML="<table><tr><td></td><td>t</td></tr></table>",k=j.getElementsByTagName("td"),k[0].style.cssText="margin:0;border:0;padding:0;display:none",f=0===k[0].offsetHeight,f&&(k[0].style.display="",k[1].style.display="none",f=0===k[0].offsetHeight)),m.removeChild(i)}}}();var Ra,Sa,Ta=/^(top|right|bottom|left)$/;a.getComputedStyle?(Ra=function(b){var c=b.ownerDocument.defaultView;return c&&c.opener||(c=a),c.getComputedStyle(b)},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c.getPropertyValue(b)||c[b]:void 0,""!==g&&void 0!==g||n.contains(a.ownerDocument,a)||(g=n.style(a,b)),c&&!l.pixelMarginRight()&&Oa.test(g)&&Na.test(b)&&(d=h.width,e=h.minWidth,f=h.maxWidth,h.minWidth=h.maxWidth=h.width=g,g=c.width,h.width=d,h.minWidth=e,h.maxWidth=f),void 0===g?g:g+""}):Qa.currentStyle&&(Ra=function(a){return a.currentStyle},Sa=function(a,b,c){var d,e,f,g,h=a.style;return c=c||Ra(a),g=c?c[b]:void 0,null==g&&h&&h[b]&&(g=h[b]),Oa.test(g)&&!Ta.test(b)&&(d=h.left,e=a.runtimeStyle,f=e&&e.left,f&&(e.left=a.currentStyle.left),h.left="fontSize"===b?"1em":g,g=h.pixelLeft+"px",h.left=d,f&&(e.left=f)),void 0===g?g:g+""||"auto"});function Ua(a,b){return{get:function(){return a()?void delete this.get:(this.get=b).apply(this,arguments)}}}var Va=/alpha\([^)]*\)/i,Wa=/opacity\s*=\s*([^)]*)/i,Xa=/^(none|table(?!-c[ea]).+)/,Ya=new RegExp("^("+T+")(.*)$","i"),Za={position:"absolute",visibility:"hidden",display:"block"},$a={letterSpacing:"0",fontWeight:"400"},_a=["Webkit","O","Moz","ms"],ab=d.createElement("div").style;function bb(a){if(a in ab)return a;var b=a.charAt(0).toUpperCase()+a.slice(1),c=_a.length;while(c--)if(a=_a[c]+b,a in ab)return a}function cb(a,b){for(var c,d,e,f=[],g=0,h=a.length;h>g;g++)d=a[g],d.style&&(f[g]=n._data(d,"olddisplay"),c=d.style.display,b?(f[g]||"none"!==c||(d.style.display=""),""===d.style.display&&W(d)&&(f[g]=n._data(d,"olddisplay",Ma(d.nodeName)))):(e=W(d),(c&&"none"!==c||!e)&&n._data(d,"olddisplay",e?c:n.css(d,"display"))));for(g=0;h>g;g++)d=a[g],d.style&&(b&&"none"!==d.style.display&&""!==d.style.display||(d.style.display=b?f[g]||"":"none"));return a}function db(a,b,c){var d=Ya.exec(b);return d?Math.max(0,d[1]-(c||0))+(d[2]||"px"):b}function eb(a,b,c,d,e){for(var f=c===(d?"border":"content")?4:"width"===b?1:0,g=0;4>f;f+=2)"margin"===c&&(g+=n.css(a,c+V[f],!0,e)),d?("content"===c&&(g-=n.css(a,"padding"+V[f],!0,e)),"margin"!==c&&(g-=n.css(a,"border"+V[f]+"Width",!0,e))):(g+=n.css(a,"padding"+V[f],!0,e),"padding"!==c&&(g+=n.css(a,"border"+V[f]+"Width",!0,e)));return g}function fb(b,c,e){var f=!0,g="width"===c?b.offsetWidth:b.offsetHeight,h=Ra(b),i=l.boxSizing&&"border-box"===n.css(b,"boxSizing",!1,h);if(d.msFullscreenElement&&a.top!==a&&b.getClientRects().length&&(g=Math.round(100*b.getBoundingClientRect()[c])),0>=g||null==g){if(g=Sa(b,c,h),(0>g||null==g)&&(g=b.style[c]),Oa.test(g))return g;f=i&&(l.boxSizingReliable()||g===b.style[c]),g=parseFloat(g)||0}return g+eb(b,c,e||(i?"border":"content"),f,h)+"px"}n.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=Sa(a,"opacity");return""===c?"1":c}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":l.cssFloat?"cssFloat":"styleFloat"},style:function(a,b,c,d){if(a&&3!==a.nodeType&&8!==a.nodeType&&a.style){var e,f,g,h=n.camelCase(b),i=a.style;if(b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],void 0===c)return g&&"get"in g&&void 0!==(e=g.get(a,!1,d))?e:i[b];if(f=typeof c,"string"===f&&(e=U.exec(c))&&e[1]&&(c=X(a,b,e),f="number"),null!=c&&c===c&&("number"===f&&(c+=e&&e[3]||(n.cssNumber[h]?"":"px")),l.clearCloneStyle||""!==c||0!==b.indexOf("background")||(i[b]="inherit"),!(g&&"set"in g&&void 0===(c=g.set(a,c,d)))))try{i[b]=c}catch(j){}}},css:function(a,b,c,d){var e,f,g,h=n.camelCase(b);return b=n.cssProps[h]||(n.cssProps[h]=bb(h)||h),g=n.cssHooks[b]||n.cssHooks[h],g&&"get"in g&&(f=g.get(a,!0,c)),void 0===f&&(f=Sa(a,b,d)),"normal"===f&&b in $a&&(f=$a[b]),""===c||c?(e=parseFloat(f),c===!0||isFinite(e)?e||0:f):f}}),n.each(["height","width"],function(a,b){n.cssHooks[b]={get:function(a,c,d){return c?Xa.test(n.css(a,"display"))&&0===a.offsetWidth?Pa(a,Za,function(){return fb(a,b,d)}):fb(a,b,d):void 0},set:function(a,c,d){var e=d&&Ra(a);return db(a,c,d?eb(a,b,d,l.boxSizing&&"border-box"===n.css(a,"boxSizing",!1,e),e):0)}}}),l.opacity||(n.cssHooks.opacity={get:function(a,b){return Wa.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?.01*parseFloat(RegExp.$1)+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=n.isNumeric(b)?"alpha(opacity="+100*b+")":"",f=d&&d.filter||c.filter||"";c.zoom=1,(b>=1||""===b)&&""===n.trim(f.replace(Va,""))&&c.removeAttribute&&(c.removeAttribute("filter"),""===b||d&&!d.filter)||(c.filter=Va.test(f)?f.replace(Va,e):f+" "+e)}}),n.cssHooks.marginRight=Ua(l.reliableMarginRight,function(a,b){return b?Pa(a,{display:"inline-block"},Sa,[a,"marginRight"]):void 0}),n.cssHooks.marginLeft=Ua(l.reliableMarginLeft,function(a,b){
-return b?(parseFloat(Sa(a,"marginLeft"))||(n.contains(a.ownerDocument,a)?a.getBoundingClientRect().left-Pa(a,{marginLeft:0},function(){return a.getBoundingClientRect().left}):0))+"px":void 0}),n.each({margin:"",padding:"",border:"Width"},function(a,b){n.cssHooks[a+b]={expand:function(c){for(var d=0,e={},f="string"==typeof c?c.split(" "):[c];4>d;d++)e[a+V[d]+b]=f[d]||f[d-2]||f[0];return e}},Na.test(a)||(n.cssHooks[a+b].set=db)}),n.fn.extend({css:function(a,b){return Y(this,function(a,b,c){var d,e,f={},g=0;if(n.isArray(b)){for(d=Ra(a),e=b.length;e>g;g++)f[b[g]]=n.css(a,b[g],!1,d);return f}return void 0!==c?n.style(a,b,c):n.css(a,b)},a,b,arguments.length>1)},show:function(){return cb(this,!0)},hide:function(){return cb(this)},toggle:function(a){return"boolean"==typeof a?a?this.show():this.hide():this.each(function(){W(this)?n(this).show():n(this).hide()})}});function gb(a,b,c,d,e){return new gb.prototype.init(a,b,c,d,e)}n.Tween=gb,gb.prototype={constructor:gb,init:function(a,b,c,d,e,f){this.elem=a,this.prop=c,this.easing=e||n.easing._default,this.options=b,this.start=this.now=this.cur(),this.end=d,this.unit=f||(n.cssNumber[c]?"":"px")},cur:function(){var a=gb.propHooks[this.prop];return a&&a.get?a.get(this):gb.propHooks._default.get(this)},run:function(a){var b,c=gb.propHooks[this.prop];return this.options.duration?this.pos=b=n.easing[this.easing](a,this.options.duration*a,0,1,this.options.duration):this.pos=b=a,this.now=(this.end-this.start)*b+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),c&&c.set?c.set(this):gb.propHooks._default.set(this),this}},gb.prototype.init.prototype=gb.prototype,gb.propHooks={_default:{get:function(a){var b;return 1!==a.elem.nodeType||null!=a.elem[a.prop]&&null==a.elem.style[a.prop]?a.elem[a.prop]:(b=n.css(a.elem,a.prop,""),b&&"auto"!==b?b:0)},set:function(a){n.fx.step[a.prop]?n.fx.step[a.prop](a):1!==a.elem.nodeType||null==a.elem.style[n.cssProps[a.prop]]&&!n.cssHooks[a.prop]?a.elem[a.prop]=a.now:n.style(a.elem,a.prop,a.now+a.unit)}}},gb.propHooks.scrollTop=gb.propHooks.scrollLeft={set:function(a){a.elem.nodeType&&a.elem.parentNode&&(a.elem[a.prop]=a.now)}},n.easing={linear:function(a){return a},swing:function(a){return.5-Math.cos(a*Math.PI)/2},_default:"swing"},n.fx=gb.prototype.init,n.fx.step={};var hb,ib,jb=/^(?:toggle|show|hide)$/,kb=/queueHooks$/;function lb(){return a.setTimeout(function(){hb=void 0}),hb=n.now()}function mb(a,b){var c,d={height:a},e=0;for(b=b?1:0;4>e;e+=2-b)c=V[e],d["margin"+c]=d["padding"+c]=a;return b&&(d.opacity=d.width=a),d}function nb(a,b,c){for(var d,e=(qb.tweeners[b]||[]).concat(qb.tweeners["*"]),f=0,g=e.length;g>f;f++)if(d=e[f].call(c,b,a))return d}function ob(a,b,c){var d,e,f,g,h,i,j,k,m=this,o={},p=a.style,q=a.nodeType&&W(a),r=n._data(a,"fxshow");c.queue||(h=n._queueHooks(a,"fx"),null==h.unqueued&&(h.unqueued=0,i=h.empty.fire,h.empty.fire=function(){h.unqueued||i()}),h.unqueued++,m.always(function(){m.always(function(){h.unqueued--,n.queue(a,"fx").length||h.empty.fire()})})),1===a.nodeType&&("height"in b||"width"in b)&&(c.overflow=[p.overflow,p.overflowX,p.overflowY],j=n.css(a,"display"),k="none"===j?n._data(a,"olddisplay")||Ma(a.nodeName):j,"inline"===k&&"none"===n.css(a,"float")&&(l.inlineBlockNeedsLayout&&"inline"!==Ma(a.nodeName)?p.zoom=1:p.display="inline-block")),c.overflow&&(p.overflow="hidden",l.shrinkWrapBlocks()||m.always(function(){p.overflow=c.overflow[0],p.overflowX=c.overflow[1],p.overflowY=c.overflow[2]}));for(d in b)if(e=b[d],jb.exec(e)){if(delete b[d],f=f||"toggle"===e,e===(q?"hide":"show")){if("show"!==e||!r||void 0===r[d])continue;q=!0}o[d]=r&&r[d]||n.style(a,d)}else j=void 0;if(n.isEmptyObject(o))"inline"===("none"===j?Ma(a.nodeName):j)&&(p.display=j);else{r?"hidden"in r&&(q=r.hidden):r=n._data(a,"fxshow",{}),f&&(r.hidden=!q),q?n(a).show():m.done(function(){n(a).hide()}),m.done(function(){var b;n._removeData(a,"fxshow");for(b in o)n.style(a,b,o[b])});for(d in o)g=nb(q?r[d]:0,d,m),d in r||(r[d]=g.start,q&&(g.end=g.start,g.start="width"===d||"height"===d?1:0))}}function pb(a,b){var c,d,e,f,g;for(c in a)if(d=n.camelCase(c),e=b[d],f=a[c],n.isArray(f)&&(e=f[1],f=a[c]=f[0]),c!==d&&(a[d]=f,delete a[c]),g=n.cssHooks[d],g&&"expand"in g){f=g.expand(f),delete a[d];for(c in f)c in a||(a[c]=f[c],b[c]=e)}else b[d]=e}function qb(a,b,c){var d,e,f=0,g=qb.prefilters.length,h=n.Deferred().always(function(){delete i.elem}),i=function(){if(e)return!1;for(var b=hb||lb(),c=Math.max(0,j.startTime+j.duration-b),d=c/j.duration||0,f=1-d,g=0,i=j.tweens.length;i>g;g++)j.tweens[g].run(f);return h.notifyWith(a,[j,f,c]),1>f&&i?c:(h.resolveWith(a,[j]),!1)},j=h.promise({elem:a,props:n.extend({},b),opts:n.extend(!0,{specialEasing:{},easing:n.easing._default},c),originalProperties:b,originalOptions:c,startTime:hb||lb(),duration:c.duration,tweens:[],createTween:function(b,c){var d=n.Tween(a,j.opts,b,c,j.opts.specialEasing[b]||j.opts.easing);return j.tweens.push(d),d},stop:function(b){var c=0,d=b?j.tweens.length:0;if(e)return this;for(e=!0;d>c;c++)j.tweens[c].run(1);return b?(h.notifyWith(a,[j,1,0]),h.resolveWith(a,[j,b])):h.rejectWith(a,[j,b]),this}}),k=j.props;for(pb(k,j.opts.specialEasing);g>f;f++)if(d=qb.prefilters[f].call(j,a,k,j.opts))return n.isFunction(d.stop)&&(n._queueHooks(j.elem,j.opts.queue).stop=n.proxy(d.stop,d)),d;return n.map(k,nb,j),n.isFunction(j.opts.start)&&j.opts.start.call(a,j),n.fx.timer(n.extend(i,{elem:a,anim:j,queue:j.opts.queue})),j.progress(j.opts.progress).done(j.opts.done,j.opts.complete).fail(j.opts.fail).always(j.opts.always)}n.Animation=n.extend(qb,{tweeners:{"*":[function(a,b){var c=this.createTween(a,b);return X(c.elem,a,U.exec(b),c),c}]},tweener:function(a,b){n.isFunction(a)?(b=a,a=["*"]):a=a.match(G);for(var c,d=0,e=a.length;e>d;d++)c=a[d],qb.tweeners[c]=qb.tweeners[c]||[],qb.tweeners[c].unshift(b)},prefilters:[ob],prefilter:function(a,b){b?qb.prefilters.unshift(a):qb.prefilters.push(a)}}),n.speed=function(a,b,c){var d=a&&"object"==typeof a?n.extend({},a):{complete:c||!c&&b||n.isFunction(a)&&a,duration:a,easing:c&&b||b&&!n.isFunction(b)&&b};return d.duration=n.fx.off?0:"number"==typeof d.duration?d.duration:d.duration in n.fx.speeds?n.fx.speeds[d.duration]:n.fx.speeds._default,(null==d.queue||d.queue===!0)&&(d.queue="fx"),d.old=d.complete,d.complete=function(){n.isFunction(d.old)&&d.old.call(this),d.queue&&n.dequeue(this,d.queue)},d},n.fn.extend({fadeTo:function(a,b,c,d){return this.filter(W).css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){var e=n.isEmptyObject(a),f=n.speed(b,c,d),g=function(){var b=qb(this,n.extend({},a),f);(e||n._data(this,"finish"))&&b.stop(!0)};return g.finish=g,e||f.queue===!1?this.each(g):this.queue(f.queue,g)},stop:function(a,b,c){var d=function(a){var b=a.stop;delete a.stop,b(c)};return"string"!=typeof a&&(c=b,b=a,a=void 0),b&&a!==!1&&this.queue(a||"fx",[]),this.each(function(){var b=!0,e=null!=a&&a+"queueHooks",f=n.timers,g=n._data(this);if(e)g[e]&&g[e].stop&&d(g[e]);else for(e in g)g[e]&&g[e].stop&&kb.test(e)&&d(g[e]);for(e=f.length;e--;)f[e].elem!==this||null!=a&&f[e].queue!==a||(f[e].anim.stop(c),b=!1,f.splice(e,1));(b||!c)&&n.dequeue(this,a)})},finish:function(a){return a!==!1&&(a=a||"fx"),this.each(function(){var b,c=n._data(this),d=c[a+"queue"],e=c[a+"queueHooks"],f=n.timers,g=d?d.length:0;for(c.finish=!0,n.queue(this,a,[]),e&&e.stop&&e.stop.call(this,!0),b=f.length;b--;)f[b].elem===this&&f[b].queue===a&&(f[b].anim.stop(!0),f.splice(b,1));for(b=0;g>b;b++)d[b]&&d[b].finish&&d[b].finish.call(this);delete c.finish})}}),n.each(["toggle","show","hide"],function(a,b){var c=n.fn[b];n.fn[b]=function(a,d,e){return null==a||"boolean"==typeof a?c.apply(this,arguments):this.animate(mb(b,!0),a,d,e)}}),n.each({slideDown:mb("show"),slideUp:mb("hide"),slideToggle:mb("toggle"),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){n.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),n.timers=[],n.fx.tick=function(){var a,b=n.timers,c=0;for(hb=n.now();c<b.length;c++)a=b[c],a()||b[c]!==a||b.splice(c--,1);b.length||n.fx.stop(),hb=void 0},n.fx.timer=function(a){n.timers.push(a),a()?n.fx.start():n.timers.pop()},n.fx.interval=13,n.fx.start=function(){ib||(ib=a.setInterval(n.fx.tick,n.fx.interval))},n.fx.stop=function(){a.clearInterval(ib),ib=null},n.fx.speeds={slow:600,fast:200,_default:400},n.fn.delay=function(b,c){return b=n.fx?n.fx.speeds[b]||b:b,c=c||"fx",this.queue(c,function(c,d){var e=a.setTimeout(c,b);d.stop=function(){a.clearTimeout(e)}})},function(){var a,b=d.createElement("input"),c=d.createElement("div"),e=d.createElement("select"),f=e.appendChild(d.createElement("option"));c=d.createElement("div"),c.setAttribute("className","t"),c.innerHTML=" <link/><table></table><a href='/a'>a</a><input type='checkbox'/>",a=c.getElementsByTagName("a")[0],b.setAttribute("type","checkbox"),c.appendChild(b),a=c.getElementsByTagName("a")[0],a.style.cssText="top:1px",l.getSetAttribute="t"!==c.className,l.style=/top/.test(a.getAttribute("style")),l.hrefNormalized="/a"===a.getAttribute("href"),l.checkOn=!!b.value,l.optSelected=f.selected,l.enctype=!!d.createElement("form").enctype,e.disabled=!0,l.optDisabled=!f.disabled,b=d.createElement("input"),b.setAttribute("value",""),l.input=""===b.getAttribute("value"),b.value="t",b.setAttribute("type","radio"),l.radioValue="t"===b.value}();var rb=/\r/g;n.fn.extend({val:function(a){var b,c,d,e=this[0];{if(arguments.length)return d=n.isFunction(a),this.each(function(c){var e;1===this.nodeType&&(e=d?a.call(this,c,n(this).val()):a,null==e?e="":"number"==typeof e?e+="":n.isArray(e)&&(e=n.map(e,function(a){return null==a?"":a+""})),b=n.valHooks[this.type]||n.valHooks[this.nodeName.toLowerCase()],b&&"set"in b&&void 0!==b.set(this,e,"value")||(this.value=e))});if(e)return b=n.valHooks[e.type]||n.valHooks[e.nodeName.toLowerCase()],b&&"get"in b&&void 0!==(c=b.get(e,"value"))?c:(c=e.value,"string"==typeof c?c.replace(rb,""):null==c?"":c)}}}),n.extend({valHooks:{option:{get:function(a){var b=n.find.attr(a,"value");return null!=b?b:n.trim(n.text(a))}},select:{get:function(a){for(var b,c,d=a.options,e=a.selectedIndex,f="select-one"===a.type||0>e,g=f?null:[],h=f?e+1:d.length,i=0>e?h:f?e:0;h>i;i++)if(c=d[i],(c.selected||i===e)&&(l.optDisabled?!c.disabled:null===c.getAttribute("disabled"))&&(!c.parentNode.disabled||!n.nodeName(c.parentNode,"optgroup"))){if(b=n(c).val(),f)return b;g.push(b)}return g},set:function(a,b){var c,d,e=a.options,f=n.makeArray(b),g=e.length;while(g--)if(d=e[g],n.inArray(n.valHooks.option.get(d),f)>=0)try{d.selected=c=!0}catch(h){d.scrollHeight}else d.selected=!1;return c||(a.selectedIndex=-1),e}}}}),n.each(["radio","checkbox"],function(){n.valHooks[this]={set:function(a,b){return n.isArray(b)?a.checked=n.inArray(n(a).val(),b)>-1:void 0}},l.checkOn||(n.valHooks[this].get=function(a){return null===a.getAttribute("value")?"on":a.value})});var sb,tb,ub=n.expr.attrHandle,vb=/^(?:checked|selected)$/i,wb=l.getSetAttribute,xb=l.input;n.fn.extend({attr:function(a,b){return Y(this,n.attr,a,b,arguments.length>1)},removeAttr:function(a){return this.each(function(){n.removeAttr(this,a)})}}),n.extend({attr:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return"undefined"==typeof a.getAttribute?n.prop(a,b,c):(1===f&&n.isXMLDoc(a)||(b=b.toLowerCase(),e=n.attrHooks[b]||(n.expr.match.bool.test(b)?tb:sb)),void 0!==c?null===c?void n.removeAttr(a,b):e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:(a.setAttribute(b,c+""),c):e&&"get"in e&&null!==(d=e.get(a,b))?d:(d=n.find.attr(a,b),null==d?void 0:d))},attrHooks:{type:{set:function(a,b){if(!l.radioValue&&"radio"===b&&n.nodeName(a,"input")){var c=a.value;return a.setAttribute("type",b),c&&(a.value=c),b}}}},removeAttr:function(a,b){var c,d,e=0,f=b&&b.match(G);if(f&&1===a.nodeType)while(c=f[e++])d=n.propFix[c]||c,n.expr.match.bool.test(c)?xb&&wb||!vb.test(c)?a[d]=!1:a[n.camelCase("default-"+c)]=a[d]=!1:n.attr(a,c,""),a.removeAttribute(wb?c:d)}}),tb={set:function(a,b,c){return b===!1?n.removeAttr(a,c):xb&&wb||!vb.test(c)?a.setAttribute(!wb&&n.propFix[c]||c,c):a[n.camelCase("default-"+c)]=a[c]=!0,c}},n.each(n.expr.match.bool.source.match(/\w+/g),function(a,b){var c=ub[b]||n.find.attr;xb&&wb||!vb.test(b)?ub[b]=function(a,b,d){var e,f;return d||(f=ub[b],ub[b]=e,e=null!=c(a,b,d)?b.toLowerCase():null,ub[b]=f),e}:ub[b]=function(a,b,c){return c?void 0:a[n.camelCase("default-"+b)]?b.toLowerCase():null}}),xb&&wb||(n.attrHooks.value={set:function(a,b,c){return n.nodeName(a,"input")?void(a.defaultValue=b):sb&&sb.set(a,b,c)}}),wb||(sb={set:function(a,b,c){var d=a.getAttributeNode(c);return d||a.setAttributeNode(d=a.ownerDocument.createAttribute(c)),d.value=b+="","value"===c||b===a.getAttribute(c)?b:void 0}},ub.id=ub.name=ub.coords=function(a,b,c){var d;return c?void 0:(d=a.getAttributeNode(b))&&""!==d.value?d.value:null},n.valHooks.button={get:function(a,b){var c=a.getAttributeNode(b);return c&&c.specified?c.value:void 0},set:sb.set},n.attrHooks.contenteditable={set:function(a,b,c){sb.set(a,""===b?!1:b,c)}},n.each(["width","height"],function(a,b){n.attrHooks[b]={set:function(a,c){return""===c?(a.setAttribute(b,"auto"),c):void 0}}})),l.style||(n.attrHooks.style={get:function(a){return a.style.cssText||void 0},set:function(a,b){return a.style.cssText=b+""}});var yb=/^(?:input|select|textarea|button|object)$/i,zb=/^(?:a|area)$/i;n.fn.extend({prop:function(a,b){return Y(this,n.prop,a,b,arguments.length>1)},removeProp:function(a){return a=n.propFix[a]||a,this.each(function(){try{this[a]=void 0,delete this[a]}catch(b){}})}}),n.extend({prop:function(a,b,c){var d,e,f=a.nodeType;if(3!==f&&8!==f&&2!==f)return 1===f&&n.isXMLDoc(a)||(b=n.propFix[b]||b,e=n.propHooks[b]),void 0!==c?e&&"set"in e&&void 0!==(d=e.set(a,c,b))?d:a[b]=c:e&&"get"in e&&null!==(d=e.get(a,b))?d:a[b]},propHooks:{tabIndex:{get:function(a){var b=n.find.attr(a,"tabindex");return b?parseInt(b,10):yb.test(a.nodeName)||zb.test(a.nodeName)&&a.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),l.hrefNormalized||n.each(["href","src"],function(a,b){n.propHooks[b]={get:function(a){return a.getAttribute(b,4)}}}),l.optSelected||(n.propHooks.selected={get:function(a){var b=a.parentNode;return b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex),null}}),n.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){n.propFix[this.toLowerCase()]=this}),l.enctype||(n.propFix.enctype="encoding");var Ab=/[\t\r\n\f]/g;function Bb(a){return n.attr(a,"class")||""}n.fn.extend({addClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).addClass(a.call(this,b,Bb(this)))});if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Bb(c),d=1===c.nodeType&&(" "+e+" ").replace(Ab," ")){g=0;while(f=b[g++])d.indexOf(" "+f+" ")<0&&(d+=f+" ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},removeClass:function(a){var b,c,d,e,f,g,h,i=0;if(n.isFunction(a))return this.each(function(b){n(this).removeClass(a.call(this,b,Bb(this)))});if(!arguments.length)return this.attr("class","");if("string"==typeof a&&a){b=a.match(G)||[];while(c=this[i++])if(e=Bb(c),d=1===c.nodeType&&(" "+e+" ").replace(Ab," ")){g=0;while(f=b[g++])while(d.indexOf(" "+f+" ")>-1)d=d.replace(" "+f+" "," ");h=n.trim(d),e!==h&&n.attr(c,"class",h)}}return this},toggleClass:function(a,b){var c=typeof a;return"boolean"==typeof b&&"string"===c?b?this.addClass(a):this.removeClass(a):n.isFunction(a)?this.each(function(c){n(this).toggleClass(a.call(this,c,Bb(this),b),b)}):this.each(function(){var b,d,e,f;if("string"===c){d=0,e=n(this),f=a.match(G)||[];while(b=f[d++])e.hasClass(b)?e.removeClass(b):e.addClass(b)}else(void 0===a||"boolean"===c)&&(b=Bb(this),b&&n._data(this,"__className__",b),n.attr(this,"class",b||a===!1?"":n._data(this,"__className__")||""))})},hasClass:function(a){var b,c,d=0;b=" "+a+" ";while(c=this[d++])if(1===c.nodeType&&(" "+Bb(c)+" ").replace(Ab," ").indexOf(b)>-1)return!0;return!1}}),n.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){n.fn[b]=function(a,c){return arguments.length>0?this.on(b,null,a,c):this.trigger(b)}}),n.fn.extend({hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}});var Cb=a.location,Db=n.now(),Eb=/\?/,Fb=/(,)|(\[|{)|(}|])|"(?:[^"\\\r\n]|\\["\\\/bfnrt]|\\u[\da-fA-F]{4})*"\s*:?|true|false|null|-?(?!0\d)\d+(?:\.\d+|)(?:[eE][+-]?\d+|)/g;n.parseJSON=function(b){if(a.JSON&&a.JSON.parse)return a.JSON.parse(b+"");var c,d=null,e=n.trim(b+"");return e&&!n.trim(e.replace(Fb,function(a,b,e,f){return c&&b&&(d=0),0===d?a:(c=e||b,d+=!f-!e,"")}))?Function("return "+e)():n.error("Invalid JSON: "+b)},n.parseXML=function(b){var c,d;if(!b||"string"!=typeof b)return null;try{a.DOMParser?(d=new a.DOMParser,c=d.parseFromString(b,"text/xml")):(c=new a.ActiveXObject("Microsoft.XMLDOM"),c.async="false",c.loadXML(b))}catch(e){c=void 0}return c&&c.documentElement&&!c.getElementsByTagName("parsererror").length||n.error("Invalid XML: "+b),c};var Gb=/#.*$/,Hb=/([?&])_=[^&]*/,Ib=/^(.*?):[ \t]*([^\r\n]*)\r?$/gm,Jb=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Kb=/^(?:GET|HEAD)$/,Lb=/^\/\//,Mb=/^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,Nb={},Ob={},Pb="*/".concat("*"),Qb=Cb.href,Rb=Mb.exec(Qb.toLowerCase())||[];function Sb(a){return function(b,c){"string"!=typeof b&&(c=b,b="*");var d,e=0,f=b.toLowerCase().match(G)||[];if(n.isFunction(c))while(d=f[e++])"+"===d.charAt(0)?(d=d.slice(1)||"*",(a[d]=a[d]||[]).unshift(c)):(a[d]=a[d]||[]).push(c)}}function Tb(a,b,c,d){var e={},f=a===Ob;function g(h){var i;return e[h]=!0,n.each(a[h]||[],function(a,h){var j=h(b,c,d);return"string"!=typeof j||f||e[j]?f?!(i=j):void 0:(b.dataTypes.unshift(j),g(j),!1)}),i}return g(b.dataTypes[0])||!e["*"]&&g("*")}function Ub(a,b){var c,d,e=n.ajaxSettings.flatOptions||{};for(d in b)void 0!==b[d]&&((e[d]?a:c||(c={}))[d]=b[d]);return c&&n.extend(!0,a,c),a}function Vb(a,b,c){var d,e,f,g,h=a.contents,i=a.dataTypes;while("*"===i[0])i.shift(),void 0===e&&(e=a.mimeType||b.getResponseHeader("Content-Type"));if(e)for(g in h)if(h[g]&&h[g].test(e)){i.unshift(g);break}if(i[0]in c)f=i[0];else{for(g in c){if(!i[0]||a.converters[g+" "+i[0]]){f=g;break}d||(d=g)}f=f||d}return f?(f!==i[0]&&i.unshift(f),c[f]):void 0}function Wb(a,b,c,d){var e,f,g,h,i,j={},k=a.dataTypes.slice();if(k[1])for(g in a.converters)j[g.toLowerCase()]=a.converters[g];f=k.shift();while(f)if(a.responseFields[f]&&(c[a.responseFields[f]]=b),!i&&d&&a.dataFilter&&(b=a.dataFilter(b,a.dataType)),i=f,f=k.shift())if("*"===f)f=i;else if("*"!==i&&i!==f){if(g=j[i+" "+f]||j["* "+f],!g)for(e in j)if(h=e.split(" "),h[1]===f&&(g=j[i+" "+h[0]]||j["* "+h[0]])){g===!0?g=j[e]:j[e]!==!0&&(f=h[0],k.unshift(h[1]));break}if(g!==!0)if(g&&a["throws"])b=g(b);else try{b=g(b)}catch(l){return{state:"parsererror",error:g?l:"No conversion from "+i+" to "+f}}}return{state:"success",data:b}}n.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Qb,type:"GET",isLocal:Jb.test(Rb[1]),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":Pb,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":n.parseJSON,"text xml":n.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(a,b){return b?Ub(Ub(a,n.ajaxSettings),b):Ub(n.ajaxSettings,a)},ajaxPrefilter:Sb(Nb),ajaxTransport:Sb(Ob),ajax:function(b,c){"object"==typeof b&&(c=b,b=void 0),c=c||{};var d,e,f,g,h,i,j,k,l=n.ajaxSetup({},c),m=l.context||l,o=l.context&&(m.nodeType||m.jquery)?n(m):n.event,p=n.Deferred(),q=n.Callbacks("once memory"),r=l.statusCode||{},s={},t={},u=0,v="canceled",w={readyState:0,getResponseHeader:function(a){var b;if(2===u){if(!k){k={};while(b=Ib.exec(g))k[b[1].toLowerCase()]=b[2]}b=k[a.toLowerCase()]}return null==b?null:b},getAllResponseHeaders:function(){return 2===u?g:null},setRequestHeader:function(a,b){var c=a.toLowerCase();return u||(a=t[c]=t[c]||a,s[a]=b),this},overrideMimeType:function(a){return u||(l.mimeType=a),this},statusCode:function(a){var b;if(a)if(2>u)for(b in a)r[b]=[r[b],a[b]];else w.always(a[w.status]);return this},abort:function(a){var b=a||v;return j&&j.abort(b),y(0,b),this}};if(p.promise(w).complete=q.add,w.success=w.done,w.error=w.fail,l.url=((b||l.url||Qb)+"").replace(Gb,"").replace(Lb,Rb[1]+"//"),l.type=c.method||c.type||l.method||l.type,l.dataTypes=n.trim(l.dataType||"*").toLowerCase().match(G)||[""],null==l.crossDomain&&(d=Mb.exec(l.url.toLowerCase()),l.crossDomain=!(!d||d[1]===Rb[1]&&d[2]===Rb[2]&&(d[3]||("http:"===d[1]?"80":"443"))===(Rb[3]||("http:"===Rb[1]?"80":"443")))),l.data&&l.processData&&"string"!=typeof l.data&&(l.data=n.param(l.data,l.traditional)),Tb(Nb,l,c,w),2===u)return w;i=n.event&&l.global,i&&0===n.active++&&n.event.trigger("ajaxStart"),l.type=l.type.toUpperCase(),l.hasContent=!Kb.test(l.type),f=l.url,l.hasContent||(l.data&&(f=l.url+=(Eb.test(f)?"&":"?")+l.data,delete l.data),l.cache===!1&&(l.url=Hb.test(f)?f.replace(Hb,"$1_="+Db++):f+(Eb.test(f)?"&":"?")+"_="+Db++)),l.ifModified&&(n.lastModified[f]&&w.setRequestHeader("If-Modified-Since",n.lastModified[f]),n.etag[f]&&w.setRequestHeader("If-None-Match",n.etag[f])),(l.data&&l.hasContent&&l.contentType!==!1||c.contentType)&&w.setRequestHeader("Content-Type",l.contentType),w.setRequestHeader("Accept",l.dataTypes[0]&&l.accepts[l.dataTypes[0]]?l.accepts[l.dataTypes[0]]+("*"!==l.dataTypes[0]?", "+Pb+"; q=0.01":""):l.accepts["*"]);for(e in l.headers)w.setRequestHeader(e,l.headers[e]);if(l.beforeSend&&(l.beforeSend.call(m,w,l)===!1||2===u))return w.abort();v="abort";for(e in{success:1,error:1,complete:1})w[e](l[e]);if(j=Tb(Ob,l,c,w)){if(w.readyState=1,i&&o.trigger("ajaxSend",[w,l]),2===u)return w;l.async&&l.timeout>0&&(h=a.setTimeout(function(){w.abort("timeout")},l.timeout));try{u=1,j.send(s,y)}catch(x){if(!(2>u))throw x;y(-1,x)}}else y(-1,"No Transport");function y(b,c,d,e){var k,s,t,v,x,y=c;2!==u&&(u=2,h&&a.clearTimeout(h),j=void 0,g=e||"",w.readyState=b>0?4:0,k=b>=200&&300>b||304===b,d&&(v=Vb(l,w,d)),v=Wb(l,v,w,k),k?(l.ifModified&&(x=w.getResponseHeader("Last-Modified"),x&&(n.lastModified[f]=x),x=w.getResponseHeader("etag"),x&&(n.etag[f]=x)),204===b||"HEAD"===l.type?y="nocontent":304===b?y="notmodified":(y=v.state,s=v.data,t=v.error,k=!t)):(t=y,(b||!y)&&(y="error",0>b&&(b=0))),w.status=b,w.statusText=(c||y)+"",k?p.resolveWith(m,[s,y,w]):p.rejectWith(m,[w,y,t]),w.statusCode(r),r=void 0,i&&o.trigger(k?"ajaxSuccess":"ajaxError",[w,l,k?s:t]),q.fireWith(m,[w,y]),i&&(o.trigger("ajaxComplete",[w,l]),--n.active||n.event.trigger("ajaxStop")))}return w},getJSON:function(a,b,c){return n.get(a,b,c,"json")},getScript:function(a,b){return n.get(a,void 0,b,"script")}}),n.each(["get","post"],function(a,b){n[b]=function(a,c,d,e){return n.isFunction(c)&&(e=e||d,d=c,c=void 0),n.ajax(n.extend({url:a,type:b,dataType:e,data:c,success:d},n.isPlainObject(a)&&a))}}),n._evalUrl=function(a){return n.ajax({url:a,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},n.fn.extend({wrapAll:function(a){if(n.isFunction(a))return this.each(function(b){n(this).wrapAll(a.call(this,b))});if(this[0]){var b=n(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&1===a.firstChild.nodeType)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){return n.isFunction(a)?this.each(function(b){n(this).wrapInner(a.call(this,b))}):this.each(function(){var b=n(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=n.isFunction(a);return this.each(function(c){n(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){n.nodeName(this,"body")||n(this).replaceWith(this.childNodes)}).end()}});function Xb(a){return a.style&&a.style.display||n.css(a,"display")}function Yb(a){while(a&&1===a.nodeType){if("none"===Xb(a)||"hidden"===a.type)return!0;a=a.parentNode}return!1}n.expr.filters.hidden=function(a){return l.reliableHiddenOffsets()?a.offsetWidth<=0&&a.offsetHeight<=0&&!a.getClientRects().length:Yb(a)},n.expr.filters.visible=function(a){return!n.expr.filters.hidden(a)};var Zb=/%20/g,$b=/\[\]$/,_b=/\r?\n/g,ac=/^(?:submit|button|image|reset|file)$/i,bc=/^(?:input|select|textarea|keygen)/i;function cc(a,b,c,d){var e;if(n.isArray(b))n.each(b,function(b,e){c||$b.test(a)?d(a,e):cc(a+"["+("object"==typeof e&&null!=e?b:"")+"]",e,c,d)});else if(c||"object"!==n.type(b))d(a,b);else for(e in b)cc(a+"["+e+"]",b[e],c,d)}n.param=function(a,b){var c,d=[],e=function(a,b){b=n.isFunction(b)?b():null==b?"":b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};if(void 0===b&&(b=n.ajaxSettings&&n.ajaxSettings.traditional),n.isArray(a)||a.jquery&&!n.isPlainObject(a))n.each(a,function(){e(this.name,this.value)});else for(c in a)cc(c,a[c],b,e);return d.join("&").replace(Zb,"+")},n.fn.extend({serialize:function(){return n.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var a=n.prop(this,"elements");return a?n.makeArray(a):this}).filter(function(){var a=this.type;return this.name&&!n(this).is(":disabled")&&bc.test(this.nodeName)&&!ac.test(a)&&(this.checked||!Z.test(a))}).map(function(a,b){var c=n(this).val();return null==c?null:n.isArray(c)?n.map(c,function(a){return{name:b.name,value:a.replace(_b,"\r\n")}}):{name:b.name,value:c.replace(_b,"\r\n")}}).get()}}),n.ajaxSettings.xhr=void 0!==a.ActiveXObject?function(){return this.isLocal?hc():d.documentMode>8?gc():/^(get|post|head|put|delete|options)$/i.test(this.type)&&gc()||hc()}:gc;var dc=0,ec={},fc=n.ajaxSettings.xhr();a.attachEvent&&a.attachEvent("onunload",function(){for(var a in ec)ec[a](void 0,!0)}),l.cors=!!fc&&"withCredentials"in fc,fc=l.ajax=!!fc,fc&&n.ajaxTransport(function(b){if(!b.crossDomain||l.cors){var c;return{send:function(d,e){var f,g=b.xhr(),h=++dc;if(g.open(b.type,b.url,b.async,b.username,b.password),b.xhrFields)for(f in b.xhrFields)g[f]=b.xhrFields[f];b.mimeType&&g.overrideMimeType&&g.overrideMimeType(b.mimeType),b.crossDomain||d["X-Requested-With"]||(d["X-Requested-With"]="XMLHttpRequest");for(f in d)void 0!==d[f]&&g.setRequestHeader(f,d[f]+"");g.send(b.hasContent&&b.data||null),c=function(a,d){var f,i,j;if(c&&(d||4===g.readyState))if(delete ec[h],c=void 0,g.onreadystatechange=n.noop,d)4!==g.readyState&&g.abort();else{j={},f=g.status,"string"==typeof g.responseText&&(j.text=g.responseText);try{i=g.statusText}catch(k){i=""}f||!b.isLocal||b.crossDomain?1223===f&&(f=204):f=j.text?200:404}j&&e(f,i,j,g.getAllResponseHeaders())},b.async?4===g.readyState?a.setTimeout(c):g.onreadystatechange=ec[h]=c:c()},abort:function(){c&&c(void 0,!0)}}}});function gc(){try{return new a.XMLHttpRequest}catch(b){}}function hc(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}n.ajaxPrefilter(function(a){a.crossDomain&&(a.contents.script=!1)}),n.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(a){return n.globalEval(a),a}}}),n.ajaxPrefilter("script",function(a){void 0===a.cache&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),n.ajaxTransport("script",function(a){if(a.crossDomain){var b,c=d.head||n("head")[0]||d.documentElement;return{send:function(e,f){b=d.createElement("script"),b.async=!0,a.scriptCharset&&(b.charset=a.scriptCharset),b.src=a.url,b.onload=b.onreadystatechange=function(a,c){(c||!b.readyState||/loaded|complete/.test(b.readyState))&&(b.onload=b.onreadystatechange=null,b.parentNode&&b.parentNode.removeChild(b),b=null,c||f(200,"success"))},c.insertBefore(b,c.firstChild)},abort:function(){b&&b.onload(void 0,!0)}}}});var ic=[],jc=/(=)\?(?=&|$)|\?\?/;n.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var a=ic.pop()||n.expando+"_"+Db++;return this[a]=!0,a}}),n.ajaxPrefilter("json jsonp",function(b,c,d){var e,f,g,h=b.jsonp!==!1&&(jc.test(b.url)?"url":"string"==typeof b.data&&0===(b.contentType||"").indexOf("application/x-www-form-urlencoded")&&jc.test(b.data)&&"data");return h||"jsonp"===b.dataTypes[0]?(e=b.jsonpCallback=n.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,h?b[h]=b[h].replace(jc,"$1"+e):b.jsonp!==!1&&(b.url+=(Eb.test(b.url)?"&":"?")+b.jsonp+"="+e),b.converters["script json"]=function(){return g||n.error(e+" was not called"),g[0]},b.dataTypes[0]="json",f=a[e],a[e]=function(){g=arguments},d.always(function(){void 0===f?n(a).removeProp(e):a[e]=f,b[e]&&(b.jsonpCallback=c.jsonpCallback,ic.push(e)),g&&n.isFunction(f)&&f(g[0]),g=f=void 0}),"script"):void 0}),l.createHTMLDocument=function(){if(!d.implementation.createHTMLDocument)return!1;var a=d.implementation.createHTMLDocument("");return a.body.innerHTML="<form></form><form></form>",2===a.body.childNodes.length}(),n.parseHTML=function(a,b,c){if(!a||"string"!=typeof a)return null;"boolean"==typeof b&&(c=b,b=!1),b=b||(l.createHTMLDocument?d.implementation.createHTMLDocument(""):d);var e=x.exec(a),f=!c&&[];return e?[b.createElement(e[1])]:(e=ja([a],b,f),f&&f.length&&n(f).remove(),n.merge([],e.childNodes))};var kc=n.fn.load;n.fn.load=function(a,b,c){if("string"!=typeof a&&kc)return kc.apply(this,arguments);var d,e,f,g=this,h=a.indexOf(" ");return h>-1&&(d=n.trim(a.slice(h,a.length)),a=a.slice(0,h)),n.isFunction(b)?(c=b,b=void 0):b&&"object"==typeof b&&(e="POST"),g.length>0&&n.ajax({url:a,type:e||"GET",dataType:"html",data:b}).done(function(a){f=arguments,g.html(d?n("<div>").append(n.parseHTML(a)).find(d):a)}).always(c&&function(a,b){g.each(function(){c.apply(g,f||[a.responseText,b,a])})}),this},n.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(a,b){n.fn[b]=function(a){return this.on(b,a)}}),n.expr.filters.animated=function(a){return n.grep(n.timers,function(b){return a===b.elem}).length};function lc(a){return n.isWindow(a)?a:9===a.nodeType?a.defaultView||a.parentWindow:!1}n.offset={setOffset:function(a,b,c){var d,e,f,g,h,i,j,k=n.css(a,"position"),l=n(a),m={};"static"===k&&(a.style.position="relative"),h=l.offset(),f=n.css(a,"top"),i=n.css(a,"left"),j=("absolute"===k||"fixed"===k)&&n.inArray("auto",[f,i])>-1,j?(d=l.position(),g=d.top,e=d.left):(g=parseFloat(f)||0,e=parseFloat(i)||0),n.isFunction(b)&&(b=b.call(a,c,n.extend({},h))),null!=b.top&&(m.top=b.top-h.top+g),null!=b.left&&(m.left=b.left-h.left+e),"using"in b?b.using.call(a,m):l.css(m)}},n.fn.extend({offset:function(a){if(arguments.length)return void 0===a?this:this.each(function(b){n.offset.setOffset(this,a,b)});var b,c,d={top:0,left:0},e=this[0],f=e&&e.ownerDocument;if(f)return b=f.documentElement,n.contains(b,e)?("undefined"!=typeof e.getBoundingClientRect&&(d=e.getBoundingClientRect()),c=lc(f),{top:d.top+(c.pageYOffset||b.scrollTop)-(b.clientTop||0),left:d.left+(c.pageXOffset||b.scrollLeft)-(b.clientLeft||0)}):d},position:function(){if(this[0]){var a,b,c={top:0,left:0},d=this[0];return"fixed"===n.css(d,"position")?b=d.getBoundingClientRect():(a=this.offsetParent(),b=this.offset(),n.nodeName(a[0],"html")||(c=a.offset()),c.top+=n.css(a[0],"borderTopWidth",!0),c.left+=n.css(a[0],"borderLeftWidth",!0)),{top:b.top-c.top-n.css(d,"marginTop",!0),left:b.left-c.left-n.css(d,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var a=this.offsetParent;while(a&&!n.nodeName(a,"html")&&"static"===n.css(a,"position"))a=a.offsetParent;return a||Qa})}}),n.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(a,b){var c=/Y/.test(b);n.fn[a]=function(d){return Y(this,function(a,d,e){var f=lc(a);return void 0===e?f?b in f?f[b]:f.document.documentElement[d]:a[d]:void(f?f.scrollTo(c?n(f).scrollLeft():e,c?e:n(f).scrollTop()):a[d]=e);
-},a,d,arguments.length,null)}}),n.each(["top","left"],function(a,b){n.cssHooks[b]=Ua(l.pixelPosition,function(a,c){return c?(c=Sa(a,b),Oa.test(c)?n(a).position()[b]+"px":c):void 0})}),n.each({Height:"height",Width:"width"},function(a,b){n.each({padding:"inner"+a,content:b,"":"outer"+a},function(c,d){n.fn[d]=function(d,e){var f=arguments.length&&(c||"boolean"!=typeof d),g=c||(d===!0||e===!0?"margin":"border");return Y(this,function(b,c,d){var e;return n.isWindow(b)?b.document.documentElement["client"+a]:9===b.nodeType?(e=b.documentElement,Math.max(b.body["scroll"+a],e["scroll"+a],b.body["offset"+a],e["offset"+a],e["client"+a])):void 0===d?n.css(b,c,g):n.style(b,c,d,g)},b,f?d:void 0,f,null)}})}),n.fn.extend({bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return 1===arguments.length?this.off(a,"**"):this.off(b,a||"**",c)}}),n.fn.size=function(){return this.length},n.fn.andSelf=n.fn.addBack,"function"==typeof define&&define.amd&&define("jquery",[],function(){return n});var mc=a.jQuery,nc=a.$;return n.noConflict=function(b){return a.$===n&&(a.$=nc),b&&a.jQuery===n&&(a.jQuery=mc),n},b||(a.jQuery=a.$=n),n});
diff --git a/spectrum_manager/src/server.cpp b/spectrum_manager/src/server.cpp
index 79a85222..c9301153 100644
--- a/spectrum_manager/src/server.cpp
+++ b/spectrum_manager/src/server.cpp
@@ -245,9 +245,6 @@ bool Server::is_authorized(const struct mg_connection *conn, struct http_message
!mg_vcmp(&hm->uri, "/form.css") ||
!mg_vcmp(&hm->uri, "/style.css") ||
!mg_vcmp(&hm->uri, "/logo.png") ||
- !mg_vcmp(&hm->uri, "/js/jquery.js") ||
- !mg_vcmp(&hm->uri, "/js/jquery-ui.js") ||
- !mg_vcmp(&hm->uri, "/js/jquery.cookie.js") ||
!mg_vcmp(&hm->uri, "/js/config.js") ||
!mg_vcmp(&hm->uri, "/js/app.js") ||
!mg_vcmp(&hm->uri, "/users/register.shtml") ||
diff --git a/tests/libtransport/AdminInterface.cpp b/tests/libtransport/AdminInterface.cpp
index 17cfc176..e3244ed2 100644
--- a/tests/libtransport/AdminInterface.cpp
+++ b/tests/libtransport/AdminInterface.cpp
@@ -32,7 +32,7 @@ class AdminInterfaceTest : public CPPUNIT_NS :: TestFixture, public BasicSlackTe
void setUp (void) {
setMeUp();
- serv = new NetworkPluginServer(component, cfg, userManager, NULL);
+ serv = new NetworkPluginServer(component, cfg, userManager);
admin = new AdminInterface(component, userManager, serv, storage, NULL);
component->setAdminInterface(admin);
}
diff --git a/tests/libtransport/CMakeLists.txt b/tests/libtransport/CMakeLists.txt
index 3ced0a9e..5b36e5b8 100644
--- a/tests/libtransport/CMakeLists.txt
+++ b/tests/libtransport/CMakeLists.txt
@@ -1,5 +1,3 @@
-cmake_minimum_required(VERSION 2.6)
-
file(GLOB SRC *.cpp *.h)
file(GLOB_RECURSE SWIFTEN_SRC ../include/Swiften/*.cpp)
diff --git a/tests/libtransport/basictest.h b/tests/libtransport/basictest.h
index 3807c75b..26734ced 100644
--- a/tests/libtransport/basictest.h
+++ b/tests/libtransport/basictest.h
@@ -177,6 +177,9 @@ class TestingStorageBackend : public StorageBackend {
virtual bool getUsers(std::vector<std::string> &users) {
return true;
}
+ virtual bool getLegacyNetworkUsers(std::vector<std::string> &users) {
+ return true;
+ }
virtual long addBuddy(long userId, const BuddyInfo &buddyInfo) {
return buddyid++;
diff --git a/tests/libtransport/config.cpp b/tests/libtransport/config.cpp
index 2f5d06cf..bcf25100 100644
--- a/tests/libtransport/config.cpp
+++ b/tests/libtransport/config.cpp
@@ -54,7 +54,7 @@ class ConfigTest : public CPPUNIT_NS :: TestFixture{
void enumerateConfigSection() {
const char *argv[3] = {"binary", "--service.jids=localhost", NULL};
Config cfg(2, const_cast<char **>(argv));
- std::istringstream ifs("purple.irc_send_pass=1\npurple.group-chat-open=false\npurple.test=passed");
+ std::istringstream ifs("[purple]\nirc_send_pass=1\ngroup-chat-open=false\ntest=passed");
cfg.load(ifs);
Config::SectionValuesCont purpleConfigValues = cfg.getSectionValues("purple");
CPPUNIT_ASSERT_EQUAL(true, purpleConfigValues["purple.irc_send_pass"].as<bool>());
diff --git a/tests/libtransport/networkpluginserver.cpp b/tests/libtransport/networkpluginserver.cpp
index 3055ba41..3e280272 100644
--- a/tests/libtransport/networkpluginserver.cpp
+++ b/tests/libtransport/networkpluginserver.cpp
@@ -71,7 +71,7 @@ class NetworkPluginServerTest : public CPPUNIT_NS :: TestFixture, public BasicTe
void setUp (void) {
setMeUp();
- serv = new NetworkPluginServer(component, cfg, userManager, NULL);
+ serv = new NetworkPluginServer(component, cfg, userManager);
connectUser();
User *user = userManager->getUser("user@localhost");
user->setData(&backend);
diff --git a/tests/prosody/configuration/prosody.cfg.lua b/tests/prosody/configuration/prosody.cfg.lua
new file mode 100644
index 00000000..2857b419
--- /dev/null
+++ b/tests/prosody/configuration/prosody.cfg.lua
@@ -0,0 +1,70 @@
+admins = { "admin@localhost" }
+
+use_libevent = true;
+
+modules_enabled = {
+ "roster"; -- Allow users to have a roster. Recommended ;)
+ "saslauth"; -- Authentication for clients and servers. Recommended if you want to log in.
+ "disco"; -- Service discovery
+ "private"; -- Private XML storage (for room bookmarks, etc.)
+ "vcard"; -- Allow users to set vCards
+ "carbons"; -- Needed for carbon testing
+ "version"; -- Replies to server version requests
+ "uptime"; -- Report how long server has been running
+ "time"; -- Let others know the time here on this server
+ "ping"; -- Replies to XMPP pings with pongs
+ "pep"; -- Enables users to publish their mood, activity, playing music and more
+ "register"; -- Allow users to register on this server using a client and change passwords
+ "admin_adhoc"; -- Allows administration via an XMPP client that supports ad-hoc commands
+};
+
+modules_disabled = {
+ "s2s";
+};
+
+allow_registration = true
+
+c2s_require_encryption = false
+allow_unencrypted_plain_auth = true
+
+authentication = "internal_plain"
+
+log = "*console"
+
+daemonize = false -- Default is "true"
+
+plugin_paths = { "/usr/lib/prosody/modules", "/usr/lib/prosody-modules" }
+component_interface = { "0.0.0.0" }
+VirtualHost "localhost"
+ modules_enabled = {
+ "privilege"
+ }
+ privileged_entities = {
+ ["irc.localhost"] = {
+ roster = "both",
+ message = "outgoing"
+ },
+ ["tg.localhost"] = {
+ roster = "both",
+ message = "outgoing"
+ },
+ ["wa.localhost"] = {
+ roster = "both",
+ message = "outgoing"
+ }
+ }
+Component "irc.localhost"
+ component_secret = "password"
+ modules_enabled = {
+ "privilege"
+ }
+Component "tg.localhost"
+ component_secret = "password"
+ modules_enabled = {
+ "privilege"
+ }
+Component "wa.localhost"
+ component_secret = "password"
+ modules_enabled = {
+ "privilege"
+ }
diff --git a/tests/prosody/data/.gitignore b/tests/prosody/data/.gitignore
new file mode 100644
index 00000000..d6b7ef32
--- /dev/null
+++ b/tests/prosody/data/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
diff --git a/tests/xmpp/configuration/backend-logging.cfg b/tests/xmpp/configuration/backend-logging.cfg
new file mode 100644
index 00000000..1078afe2
--- /dev/null
+++ b/tests/xmpp/configuration/backend-logging.cfg
@@ -0,0 +1,11 @@
+log4j.rootLogger=debug, R
+
+log4j.appender.R=org.apache.log4j.RollingFileAppender
+log4j.appender.R.File=/var/log/spectrum2/${jid}/backends/backend-${id}.log
+
+log4j.appender.R.MaxFileSize=10000KB
+# Keep one backup file
+log4j.appender.R.MaxBackupIndex=1
+
+log4j.appender.R.layout=org.apache.log4j.PatternLayout
+log4j.appender.R.layout.ConversionPattern=${pid}: %d %-5p %c: %m%n
diff --git a/tests/xmpp/configuration/logging.cfg b/tests/xmpp/configuration/logging.cfg
new file mode 100644
index 00000000..5ac8ee58
--- /dev/null
+++ b/tests/xmpp/configuration/logging.cfg
@@ -0,0 +1,14 @@
+log4j.rootLogger=debug, R
+
+log4j.appender.R=org.apache.log4j.RollingFileAppender
+log4j.appender.R.File=/var/log/spectrum2/${jid}/spectrum2.log
+
+log4j.appender.R.MaxFileSize=10000KB
+# Keep one backup file
+log4j.appender.R.MaxBackupIndex=1
+
+log4j.appender.R.layout=org.apache.log4j.PatternLayout
+log4j.appender.R.layout.ConversionPattern=%d %-5p %c: %m%n
+
+# Disable XML category
+log4j.category.Component.XML = ON
diff --git a/tests/xmpp/configuration/manager-logging.cfg b/tests/xmpp/configuration/manager-logging.cfg
new file mode 100644
index 00000000..607a3d83
--- /dev/null
+++ b/tests/xmpp/configuration/manager-logging.cfg
@@ -0,0 +1,11 @@
+log4j.rootLogger=debug, R
+
+log4j.appender.R=org.apache.log4j.RollingFileAppender
+log4j.appender.R.File=/var/log/spectrum2/spectrum_manager.log
+
+log4j.appender.R.MaxFileSize=10000KB
+# Keep one backup file
+log4j.appender.R.MaxBackupIndex=1
+
+log4j.appender.R.layout=org.apache.log4j.PatternLayout
+log4j.appender.R.layout.ConversionPattern=%d %-5p %c: %m%n
diff --git a/tests/xmpp/configuration/spectrum_manager.cfg b/tests/xmpp/configuration/spectrum_manager.cfg
new file mode 100644
index 00000000..eb0c5a3c
--- /dev/null
+++ b/tests/xmpp/configuration/spectrum_manager.cfg
@@ -0,0 +1,23 @@
+[service]
+config_directory=/etc/spectrum2/transports/
+
+# Username and password of admin for Web interface
+admin_username=admin
+admin_password=test
+
+# Port on which the Web interface is listening on
+port=8080
+
+# Base location (directory) on which the Web interface is served. It must ends
+# up with slash character (/). If you for example set it to "/spectrum/", then
+# the Web interface will be served on http://localhost:$port/spectrum/.
+base_location=/
+
+[database]
+type=sqlite3
+database=/var/lib/spectrum2_manager/database.sql
+
+[servers]
+server=localhost
+#server=icq.spectrum.im
+#server=msn.spectrum.im \ No newline at end of file
diff --git a/tests/xmpp/configuration/transports/irc.cfg b/tests/xmpp/configuration/transports/irc.cfg
new file mode 100644
index 00000000..48f4f62e
--- /dev/null
+++ b/tests/xmpp/configuration/transports/irc.cfg
@@ -0,0 +1,26 @@
+[service]
+jid = irc.localhost
+password = password
+server = prosody
+port = 5347
+backend_host = 127.0.0.1
+users_per_backend=10
+backend=/usr/bin/spectrum2_libcommuni_backend
+web_directory=/var/lib/spectrum2/media
+web_url=http://localhost/media
+user=www-data
+group=www-data
+[identity]
+name=Spectrum IRC Transport
+type=irc
+
+[logging]
+config = /etc/spectrum2/logging.cfg
+backend_config = /etc/spectrum2/backend-logging.cfg
+
+[database]
+type = sqlite3
+
+[registration]
+enable_public_registration=1
+
diff --git a/tests/xmpp/configuration/transports/tg.cfg b/tests/xmpp/configuration/transports/tg.cfg
new file mode 100644
index 00000000..3d203f59
--- /dev/null
+++ b/tests/xmpp/configuration/transports/tg.cfg
@@ -0,0 +1,27 @@
+[service]
+jid = tg.localhost
+password = password
+server = prosody
+port = 5347
+backend_host = 127.0.0.1
+users_per_backend=10
+backend=/usr/bin/spectrum2_libpurple_backend
+protocol=telegram-tdlib
+web_directory=/var/lib/spectrum2/media
+web_url=http://localhost/media
+user=www-data
+group=www-data
+[identity]
+name=Spectrum Telegram Transport
+type=telegram
+
+[logging]
+config = /etc/spectrum2/logging.cfg
+backend_config = /etc/spectrum2/backend-logging.cfg
+
+[database]
+type = sqlite3
+
+[registration]
+enable_public_registration=1
+
diff --git a/tests/xmpp/configuration/transports/wa.cfg b/tests/xmpp/configuration/transports/wa.cfg
new file mode 100644
index 00000000..1d1d2fa6
--- /dev/null
+++ b/tests/xmpp/configuration/transports/wa.cfg
@@ -0,0 +1,28 @@
+[service]
+jid = wa.localhost
+password = password
+server = prosody
+port = 5347
+backend_host = 127.0.0.1
+users_per_backend=10
+backend=/usr/bin/spectrum2_libpurple_backend
+protocol=prpl-hehoe-whatsmeow
+web_directory=/var/lib/spectrum2/media
+web_url=http://localhost:8081
+user=www-data
+group=www-data
+[identity]
+name=Spectrum Whatsapp Transport
+type=whatsapp
+
+[logging]
+config = /etc/spectrum2/logging.cfg
+backend_config = /etc/spectrum2/backend-logging.cfg
+
+[database]
+type = sqlite3
+
+[registration]
+enable_public_registration=1
+[purple]
+spectrum-compatibility=true
diff --git a/tests/xmpp/data/.gitignore b/tests/xmpp/data/.gitignore
new file mode 100644
index 00000000..d6b7ef32
--- /dev/null
+++ b/tests/xmpp/data/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore
diff --git a/tests/xmpp/media/.gitignore b/tests/xmpp/media/.gitignore
new file mode 100644
index 00000000..d6b7ef32
--- /dev/null
+++ b/tests/xmpp/media/.gitignore
@@ -0,0 +1,2 @@
+*
+!.gitignore