From 03abcbb73a87d7d27f8b704293a9e3555c5d994f Mon Sep 17 00:00:00 2001 From: PRUVOST Florent <florent.pruvost@inria.fr> Date: Thu, 5 Nov 2020 09:43:49 +0100 Subject: [PATCH] Update the benchmark configuration to integrate Nmad experiments and fix the guix environement Remove extra line --- .gitlab/bench_plafrim.yml | 26 +- .gitlab/pages.yml | 11 +- .gitmodules | 3 + doc/orgmode/CMakeLists.txt | 12 +- doc/orgmode/chapters/performances.org | 65 + doc/orgmode/css/htmlize.css | 145 - doc/orgmode/css/readtheorg.css | 1092 ----- doc/orgmode/css/rtd-full.css | 3910 ----------------- doc/orgmode/org-html-themes | 1 + doc/orgmode/users_guide.org.in | 12 +- tools/bench/jube/GenFigures.R | 175 + tools/bench/jube/get_result.py | 58 + .../plafrim/parameters/miriel/parameters.xml | 54 - .../plafrim/parameters/sirocco/parameters.xml | 8 +- tools/bench/plafrim/run.sh | 25 +- tools/pages.sh | 61 + 16 files changed, 394 insertions(+), 5264 deletions(-) create mode 100644 doc/orgmode/chapters/performances.org delete mode 100644 doc/orgmode/css/htmlize.css delete mode 100644 doc/orgmode/css/readtheorg.css delete mode 100644 doc/orgmode/css/rtd-full.css create mode 160000 doc/orgmode/org-html-themes create mode 100644 tools/bench/jube/GenFigures.R create mode 100755 tools/bench/jube/get_result.py delete mode 100644 tools/bench/plafrim/parameters/miriel/parameters.xml create mode 100755 tools/pages.sh diff --git a/.gitlab/bench_plafrim.yml b/.gitlab/bench_plafrim.yml index 4c9cb4394..4102f3214 100644 --- a/.gitlab/bench_plafrim.yml +++ b/.gitlab/bench_plafrim.yml @@ -7,36 +7,18 @@ bench_plafrim_bora_openmpi: JUBE_ID: "000001" extends: .bench_plafrim_common -bench_plafrim_miriel_openmpi: - variables: - NODE: miriel - MPI: openmpi - SLURM_NP: 9 - JUBE_ID: "000002" - extends: .bench_plafrim_common - -# Nmad segfaults for now, waiting for a stable version -.bench_plafrim_bora_nmad: +bench_plafrim_bora_nmad: variables: NODE: bora MPI: nmad SLURM_NP: 9 - JUBE_ID: "000003" - extends: .bench_plafrim_common - -.bench_plafrim_miriel_nmad: - variables: - NODE: miriel - MPI: nmad - SLURM_NP: 9 - JUBE_ID: "000004" + JUBE_ID: "000002" extends: .bench_plafrim_common -# Chameleon+CUDA in Guix is not working yet -.bench_plafrim_sirocco_openmpi: +bench_plafrim_sirocco_openmpi: variables: NODE: sirocco MPI: openmpi SLURM_NP: 1 - JUBE_ID: "000005" + JUBE_ID: "000003" extends: .bench_plafrim_common \ No newline at end of file diff --git a/.gitlab/pages.yml b/.gitlab/pages.yml index 9373abd47..559a67642 100644 --- a/.gitlab/pages.yml +++ b/.gitlab/pages.yml @@ -11,14 +11,7 @@ pages: variables: VERSION: pages script: - - cd build-$VERSION - - cmake .. -DCHAMELEON_ENABLE_DOC=ON - - make doc -j5 - - mv doc/orgmode/ ../public/ - - ln -s ../public/users_guide.html ../public/index.html - - mv doc/doxygen/out/html/ ../public/doxygen/ + - ./tools/pages.sh only: - master@solverstack/chameleon - - /^ci-.*$/ - except: - - schedules + - /^ci.*$/ diff --git a/.gitmodules b/.gitmodules index 86c9e98e1..75281289e 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,3 +4,6 @@ [submodule "hqr"] path = hqr url = https://gitlab.inria.fr/solverstack/hqr.git +[submodule "doc/orgmode/org-html-themes"] + path = doc/orgmode/org-html-themes + url = https://github.com/fniessen/org-html-themes.git diff --git a/doc/orgmode/CMakeLists.txt b/doc/orgmode/CMakeLists.txt index c85509772..978d70d78 100644 --- a/doc/orgmode/CMakeLists.txt +++ b/doc/orgmode/CMakeLists.txt @@ -62,12 +62,12 @@ FIND_PROGRAM(TEX_COMPILER tex) if(EMACS_COMPILER) - # css directory is required for the html output - add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/css + # org-html-themes directory is required for the html output + add_custom_command(OUTPUT ${CMAKE_CURRENT_BINARY_DIR}/org-html-themes COMMAND ${CMAKE_COMMAND} -E copy_directory - ${CMAKE_CURRENT_SOURCE_DIR}/css - ${CMAKE_CURRENT_BINARY_DIR}/css - DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/css) + ${CMAKE_CURRENT_SOURCE_DIR}/org-html-themes + ${CMAKE_CURRENT_BINARY_DIR}/org-html-themes + DEPENDS ${CMAKE_CURRENT_SOURCE_DIR}/org-html-themes) # Add target # ---------- @@ -80,7 +80,7 @@ if(EMACS_COMPILER) --kill DEPENDS ${CMAKE_CURRENT_BINARY_DIR}/users_guide.org ${CMAKE_CURRENT_BINARY_DIR}/version.org - ${CMAKE_CURRENT_BINARY_DIR}/css) + ${CMAKE_CURRENT_BINARY_DIR}/org-html-themes) add_custom_command(OUTPUT users_guide.pdf COMMAND ${EMACS_COMPILER} ARGS ${CMAKE_CURRENT_BINARY_DIR}/users_guide.org diff --git a/doc/orgmode/chapters/performances.org b/doc/orgmode/chapters/performances.org new file mode 100644 index 000000000..860f52346 --- /dev/null +++ b/doc/orgmode/chapters/performances.org @@ -0,0 +1,65 @@ +# This file is part of the Chameleon User's Guide. +# Copyright (C) 2020 Inria +# See the file ../users_guide.org for copying conditions. + +Show performances on [[https://www.plafrim.fr/][PlaFRIM]] supercomputer. + +See [[https://www.plafrim.fr/hardware-documentation/][characteristics]] to get details about the hardwares. + +See script ~tools/bench/plafrim/run.sh~ to get details about the environment (Guix, Slurm, +etc) and the build. + +Chameleon is run this way: +#+begin_src sh +mpiexec -np $nmpi $CHAMELEON_BUILD/testing/chameleon_${precision}testing -o ${algorithm} -P $p -t $nthr -g $ngpu -m $m -n $n -k $k -b $b +#+end_src +- runtime : *starpu* +- precision : *s* or *d* for simple or double precision +- algorithm : *gemm* or *potrf* or *geqrf_hqr* +- nmpi = p x p +- nthr : depends on the node +- ngpu : depends on the node +- m = n = k +- b : depends on the node +** bora (36 CPUs) nodes + - nmpi = *1*, *4*, *9* + - 2D block cyclic parameters : PxQ = 1x1, 2x2 and 3x3 + - Number of threads (t) = *34*, one CPU being dedicated for the + scheduler and one other for MPI communications + - Number of GPUs = *0* + - Tile Size (b) = *280* +*** CPU times + #+CAPTION: Performances in CPU time of GEMM, POTRF and QR on bora nodes + #+NAME: fig:chameleon_plafrim_bora_time_openmpi + #+ATTR_HTML: :align center :width 75% + [[file:chameleon_plafrim_bora_time_openmpi.png]] + +*** GFLOP/s + #+CAPTION: Performances in GFlop/s of GEMM, POTRF and QR on bora nodes + #+NAME: fig:chameleon_plafrim_bora_perf_openmpi + #+ATTR_HTML: :align center :width 75% + [[file:chameleon_plafrim_bora_perf_openmpi.png]] + +** sirocco [14-17] (32 CPUs + 2 GPUs V100) nodes + - nmpi = *1* + - 2D block cyclic parameters : PxQ = 1x1 + - Number of threads (t) = *29*, one CPU being dedicated for the + scheduler and two others for the 2 GPUs + - Number of GPUs = *2* + - Tile Size (b) = *1600* + #+CAPTION: Performances in CPU time of GEMM, POTRF and QR on sirocco nodes + #+NAME: fig:chameleon_plafrim_sirocco + #+ATTR_HTML: :align center :width 75% + [[file:chameleon_plafrim_sirocco.png]] + +# *** CPU times +# #+CAPTION: Performances in CPU time of GEMM, POTRF and QR on sirocco nodes +# #+NAME: fig:chameleon_plafrim_sirocco_openmpi_time +# #+ATTR_HTML: :align center :height 1024 +# [[file:chameleon_plafrim_sirocco_openmpi_time.png]] +# +# *** GFLOP/s +# #+CAPTION: Performances in GFlop/s of GEMM, POTRF and QR on sirocco nodes +# #+NAME: fig:chameleon_plafrim_sirocco_openmpi_perf +# #+ATTR_HTML: :align center :height 1024 +# [[file:chameleon_plafrim_sirocco_openmpi_perf.png]] diff --git a/doc/orgmode/css/htmlize.css b/doc/orgmode/css/htmlize.css deleted file mode 100644 index 0b32a030a..000000000 --- a/doc/orgmode/css/htmlize.css +++ /dev/null @@ -1,145 +0,0 @@ -.org-bold { /* bold */ font-weight: bold; } -.org-bold-italic { /* bold-italic */ font-weight: bold; font-style: italic; } -.org-buffer-menu-buffer { /* buffer-menu-buffer */ font-weight: bold; } -.org-builtin { /* font-lock-builtin-face */ color: #7a378b; } -.org-button { /* button */ text-decoration: underline; } -.org-calendar-today { /* calendar-today */ text-decoration: underline; } -.org-change-log-acknowledgement { /* change-log-acknowledgement */ color: #b22222; } -.org-change-log-conditionals { /* change-log-conditionals */ color: #a0522d; } -.org-change-log-date { /* change-log-date */ color: #8b2252; } -.org-change-log-email { /* change-log-email */ color: #a0522d; } -.org-change-log-file { /* change-log-file */ color: #0000ff; } -.org-change-log-function { /* change-log-function */ color: #a0522d; } -.org-change-log-list { /* change-log-list */ color: #a020f0; } -.org-change-log-name { /* change-log-name */ color: #008b8b; } -.org-comint-highlight-input { /* comint-highlight-input */ font-weight: bold; } -.org-comint-highlight-prompt { /* comint-highlight-prompt */ color: #00008b; } -.org-comment { /* font-lock-comment-face */ color: #999988; font-style: italic; } -.org-comment-delimiter { /* font-lock-comment-delimiter-face */ color: #999988; font-style: italic; } -.org-completions-annotations { /* completions-annotations */ font-style: italic; } -.org-completions-common-part { /* completions-common-part */ color: #000000; background-color: #ffffff; } -.org-completions-first-difference { /* completions-first-difference */ font-weight: bold; } -.org-constant { /* font-lock-constant-face */ color: #008b8b; } -.org-diary { /* diary */ color: #ff0000; } -.org-diff-context { /* diff-context */ color: #7f7f7f; } -.org-diff-file-header { /* diff-file-header */ background-color: #b3b3b3; font-weight: bold; } -.org-diff-function { /* diff-function */ background-color: #cccccc; } -.org-diff-header { /* diff-header */ background-color: #cccccc; } -.org-diff-hunk-header { /* diff-hunk-header */ background-color: #cccccc; } -.org-diff-index { /* diff-index */ background-color: #b3b3b3; font-weight: bold; } -.org-diff-nonexistent { /* diff-nonexistent */ background-color: #b3b3b3; font-weight: bold; } -.org-diff-refine-change { /* diff-refine-change */ background-color: #d9d9d9; } -.org-dired-directory { /* dired-directory */ color: #0000ff; } -.org-dired-flagged { /* dired-flagged */ color: #ff0000; font-weight: bold; } -.org-dired-header { /* dired-header */ color: #228b22; } -.org-dired-ignored { /* dired-ignored */ color: #7f7f7f; } -.org-dired-mark { /* dired-mark */ color: #008b8b; } -.org-dired-marked { /* dired-marked */ color: #ff0000; font-weight: bold; } -.org-dired-perm-write { /* dired-perm-write */ color: #b22222; } -.org-dired-symlink { /* dired-symlink */ color: #a020f0; } -.org-dired-warning { /* dired-warning */ color: #ff0000; font-weight: bold; } -.org-doc { /* font-lock-doc-face */ color: #8b2252; } -.org-escape-glyph { /* escape-glyph */ color: #a52a2a; } -.org-file-name-shadow { /* file-name-shadow */ color: #7f7f7f; } -.org-flyspell-duplicate { /* flyspell-duplicate */ color: #cdad00; font-weight: bold; text-decoration: underline; } -.org-flyspell-incorrect { /* flyspell-incorrect */ color: #ff4500; font-weight: bold; text-decoration: underline; } -.org-fringe { /* fringe */ background-color: #f2f2f2; } -.org-function-name { /* font-lock-function-name-face */ color: teal; } -.org-header-line { /* header-line */ color: #333333; background-color: #e5e5e5; } -.org-help-argument-name { /* help-argument-name */ font-style: italic; } -.org-highlight { /* highlight */ background-color: #b4eeb4; } -.org-holiday { /* holiday */ background-color: #ffc0cb; } -.org-isearch { /* isearch */ color: #b0e2ff; background-color: #cd00cd; } -.org-isearch-fail { /* isearch-fail */ background-color: #ffc1c1; } -.org-italic { /* italic */ font-style: italic; } -.org-keyword { /* font-lock-keyword-face */ color: #0086b3; } -.org-lazy-highlight { /* lazy-highlight */ background-color: #afeeee; } -.org-link { /* link */ color: #0000ff; text-decoration: underline; } -.org-link-visited { /* link-visited */ color: #8b008b; text-decoration: underline; } -.org-log-edit-header { /* log-edit-header */ color: #a020f0; } -.org-log-edit-summary { /* log-edit-summary */ color: #0000ff; } -.org-log-edit-unknown-header { /* log-edit-unknown-header */ color: #b22222; } -.org-match { /* match */ background-color: #ffff00; } -.org-next-error { /* next-error */ background-color: #eedc82; } -.org-nobreak-space { /* nobreak-space */ color: #a52a2a; text-decoration: underline; } -.org-org-archived { /* org-archived */ color: #7f7f7f; } -.org-org-block { /* org-block */ color: #7f7f7f; } -.org-org-block-begin-line { /* org-block-begin-line */ color: #b22222; } -.org-org-block-end-line { /* org-block-end-line */ color: #b22222; } -.org-org-checkbox { /* org-checkbox */ font-weight: bold; } -.org-org-checkbox-statistics-done { /* org-checkbox-statistics-done */ color: #228b22; font-weight: bold; } -.org-org-checkbox-statistics-todo { /* org-checkbox-statistics-todo */ color: #ff0000; font-weight: bold; } -.org-org-clock-overlay { /* org-clock-overlay */ background-color: #ffff00; } -.org-org-code { /* org-code */ color: #7f7f7f; } -.org-org-column { /* org-column */ background-color: #e5e5e5; } -.org-org-column-title { /* org-column-title */ background-color: #e5e5e5; font-weight: bold; text-decoration: underline; } -.org-org-date { /* org-date */ color: #a020f0; text-decoration: underline; } -.org-org-document-info { /* org-document-info */ color: #191970; } -.org-org-document-info-keyword { /* org-document-info-keyword */ color: #7f7f7f; } -.org-org-document-title { /* org-document-title */ color: #191970; font-size: 144%; font-weight: bold; } -.org-org-done { /* org-done */ color: #228b22; font-weight: bold; } -.org-org-drawer { /* org-drawer */ color: #0000ff; } -.org-org-ellipsis { /* org-ellipsis */ color: #b8860b; text-decoration: underline; } -.org-org-footnote { /* org-footnote */ color: #a020f0; text-decoration: underline; } -.org-org-formula { /* org-formula */ color: #b22222; } -.org-org-headline-done { /* org-headline-done */ color: #bc8f8f; } -.org-org-hide { /* org-hide */ color: #ffffff; } -.org-org-latex-and-export-specials { /* org-latex-and-export-specials */ color: #8b4513; } -.org-org-level-1 { /* org-level-1 */ color: #0000ff; } -.org-org-level-2 { /* org-level-2 */ color: #a0522d; } -.org-org-level-3 { /* org-level-3 */ color: #a020f0; } -.org-org-level-4 { /* org-level-4 */ color: #b22222; } -.org-org-level-5 { /* org-level-5 */ color: #228b22; } -.org-org-level-6 { /* org-level-6 */ color: #008b8b; } -.org-org-level-7 { /* org-level-7 */ color: #7a378b; } -.org-org-level-8 { /* org-level-8 */ color: #8b2252; } -.org-org-link { /* org-link */ color: #0000ff; text-decoration: underline; } -.org-org-meta-line { /* org-meta-line */ color: #b22222; } -.org-org-mode-line-clock { /* org-mode-line-clock */ color: #000000; background-color: #bfbfbf; } -.org-org-mode-line-clock-overrun { /* org-mode-line-clock-overrun */ color: #000000; background-color: #ff0000; } -.org-org-quote { /* org-quote */ color: #7f7f7f; } -.org-org-scheduled { /* org-scheduled */ color: #006400; } -.org-org-scheduled-previously { /* org-scheduled-previously */ color: #b22222; } -.org-org-scheduled-today { /* org-scheduled-today */ color: #006400; } -.org-org-sexp-date { /* org-sexp-date */ color: #a020f0; } -.org-org-special-keyword { /* org-special-keyword */ color: #a020f0; } -.org-org-table { /* org-table */ color: #0000ff; } -.org-org-tag { /* org-tag */ font-weight: bold; } -.org-org-target { /* org-target */ text-decoration: underline; } -.org-org-time-grid { /* org-time-grid */ color: #b8860b; } -.org-org-todo { /* org-todo */ color: #ff0000; font-weight: bold; } -.org-org-upcoming-deadline { /* org-upcoming-deadline */ color: #b22222; } -.org-org-verbatim { /* org-verbatim */ color: #7f7f7f; } -.org-org-verse { /* org-verse */ color: #7f7f7f; } -.org-org-warning { /* org-warning */ color: #ff0000; font-weight: bold; } -.org-outline-1 { /* outline-1 */ color: #0000ff; } -.org-outline-2 { /* outline-2 */ color: #a0522d; } -.org-outline-3 { /* outline-3 */ color: #a020f0; } -.org-outline-4 { /* outline-4 */ color: #b22222; } -.org-outline-5 { /* outline-5 */ color: #228b22; } -.org-outline-6 { /* outline-6 */ color: #008b8b; } -.org-outline-7 { /* outline-7 */ color: #7a378b; } -.org-outline-8 { /* outline-8 */ color: #8b2252; } -.org-preprocessor { /* font-lock-preprocessor-face */ color: #7a378b; } -.org-query-replace { /* query-replace */ color: #b0e2ff; background-color: #cd00cd; } -.org-regexp-grouping-backslash { /* font-lock-regexp-grouping-backslash */ font-weight: bold; } -.org-regexp-grouping-construct { /* font-lock-regexp-grouping-construct */ font-weight: bold; } -.org-region { /* region */ background-color: #eedc82; } -.org-secondary-selection { /* secondary-selection */ background-color: #ffff00; } -.org-shadow { /* shadow */ color: #7f7f7f; } -.org-show-paren-match { /* show-paren-match */ background-color: #40e0d0; } -.org-show-paren-mismatch { /* show-paren-mismatch */ color: #ffffff; background-color: #a020f0; } -.org-string { /* font-lock-string-face */ color: #dd1144; } -.org-tool-bar { /* tool-bar */ color: #000000; background-color: #bfbfbf; } -.org-tooltip { /* tooltip */ color: #000000; background-color: #ffffe0; } -.org-trailing-whitespace { /* trailing-whitespace */ background-color: #ff0000; } -.org-type { /* font-lock-type-face */ color: #228b22; } -.org-underline { /* underline */ text-decoration: underline; } -.org-variable-name { /* font-lock-variable-name-face */ color: teal; } -.org-warning { /* font-lock-warning-face */ color: #ff0000; font-weight: bold; } -.org-widget-button { /* widget-button */ font-weight: bold; } -.org-widget-button-pressed { /* widget-button-pressed */ color: #ff0000; } -.org-widget-documentation { /* widget-documentation */ color: #006400; } -.org-widget-field { /* widget-field */ background-color: #d9d9d9; } -.org-widget-inactive { /* widget-inactive */ color: #7f7f7f; } -.org-widget-single-line-field { /* widget-single-line-field */ background-color: #d9d9d9; } diff --git a/doc/orgmode/css/readtheorg.css b/doc/orgmode/css/readtheorg.css deleted file mode 100644 index a638c488b..000000000 --- a/doc/orgmode/css/readtheorg.css +++ /dev/null @@ -1,1092 +0,0 @@ - -@import url(https://fonts.googleapis.com/css?family=Lato:400,700,400italic,700italic|Roboto+Slab:400,700|Inconsolata:400,700); -@import url(https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css); - -h1,h2,h3,h4,h5,h6,legend{ - font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif; - font-weight:700; - margin-top:0; -} - -h1{ - font-size:175%; -} - -.subtitle{ - font-size:95%; /* of h1 */ -} - -h2{ - font-size:150%; -} - -h3{ - font-size:125%; -} - -h4{ - font-size:115%; -} - -h5{ - font-size:110%; -} - -h6{ - font-size:100%; -} - -h4,h5,h6{ - color:#2980B9; - font-weight:300; -} - -html{ - -ms-text-size-adjust:100%; - -webkit-text-size-adjust:100%; - font-size:100%; - height:100%; - overflow-x:hidden; -} - -body{ - background:#edf0f2; - color:#404040; - font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif; - font-weight:normal; - margin:0; - min-height:100%; - overflow-x:hidden; -} - -#content{ - background:#fcfcfc; - height:100%; - margin-left:300px; - /* margin:auto; */ - max-width:800px; - min-height:100%; - padding:1.618em 3.236em; -} - -p{ - font-size:16px; - line-height:24px; - margin:0px 0px 24px 0px; -} - -b,strong{ - font-weight:bold} - -blockquote{ - background-color: #F0F0F0; - border-left:5px solid #CCCCCC; - font-style:italic; - line-height:24px; - margin:0px 0px 24px 0px; - /* margin-left:24px; */ - padding: 6px 20px; -} - -ul,ol,dl{ - line-height:24px; - list-style-image:none; - /* list-style:none; */ - margin:0px 0px 24px 0px; - padding:0; -} - -li{ - margin-left: 24px; -} - -dd{ - margin:0; -} - -#content .section ul,#content .toctree-wrapper ul,article ul{ - list-style:disc; - line-height:24px; - margin-bottom:24px} - -#content .section ul li,#content .toctree-wrapper ul li,article ul li{ - list-style:disc; - margin-left:24px} - -#content .section ul li p:last-child,#content .toctree-wrapper ul li p:last-child,article ul li p:last-child{ - margin-bottom:0} - -#content .section ul li ul,#content .toctree-wrapper ul li ul,article ul li ul{ - margin-bottom:0} - -#content .section ul li li,#content .toctree-wrapper ul li li,article ul li li{ - list-style:circle} - -#content .section ul li li li,#content .toctree-wrapper ul li li li,article ul li li li{ - list-style:square} - -#content .section ul li ol li,#content .toctree-wrapper ul li ol li,article ul li ol li{ - list-style:decimal} - -#content .section ol,#content ol,article ol{ - list-style:decimal; - line-height:24px; - margin-bottom:24px} - -#content .section ol li,#content ol li,article ol li{ - list-style:decimal; - margin-left:24px} - -#content .section ol li p:last-child,#content ol li p:last-child,article ol li p:last-child{ - margin-bottom:0} - -#content .section ol li ul,#content ol li ul,article ol li ul{ - margin-bottom:0} - -#content .section ol li ul li,#content ol li ul li,article ol li ul li{ - list-style:disc} - -dl dt{ - font-weight:bold; -} - -dl p,dl table,dl ul,dl ol{ - margin-bottom:12px !important; -} - -dl dd{ - margin:0 0 12px 24px; -} - -@media print{ - .codeblock,pre.src{ - white-space:pre.src-wrap} -} - -@media print{ - html,body,section{ - background:none !important} - - *{ - box-shadow:none !important; - text-shadow:none !important; - filter:none !important; - -ms-filter:none !important} - - a,a:visited{ - text-decoration:underline} - - pre.src,blockquote{ - page-break-inside:avoid} - - thead{ - display:table-header-group} - - tr,img{ - page-break-inside:avoid} - - img{ - max-width:100% !important} - - @page{ - margin:0.5cm} - - p,h2,h3{ - orphans:3; - widows:3} - - h2,h3{ - page-break-after:avoid} -} - -@media print{ - #postamble{ - display:none} - - #content{ - margin-left:0} -} - -@media print{ - #table-of-contents{ - display:none} - - @page{ - size: auto; - margin: 25mm 25mm 25mm 25mm;} - - body { - margin: 0px;} -} - -@media screen and (max-width: 768px){ -} - -@media only screen and (max-width: 480px){ -} - -@media screen and (max-width: 768px){ - .tablet-hide{ - display:none} -} - -@media screen and (max-width: 480px){ - .mobile-hide{ - display:none} -} - -@media screen and (max-width: 480px){ -} - -@media screen and (max-width: 768px){ - #content{ - margin-left:0} - - #content #content{ - padding:1.618em} - - #content.shift{ - position:fixed; - min-width:100%; - left:85%; - top:0; - height:100%; - overflow:hidden} -} - -@media screen and (min-width: 1400px){ - #content{ - background:rgba(0,0,0,0.05)} - - #content{ - background:#fcfcfc} -} - -@media screen and (max-width: 768px){ - #copyright{ - width:85%; - display:none} - - #copyright.shift{ - display:block} - - img{ - width:100%; - height:auto} -} - -@media screen and (max-width: 480px){ - #content .sidebar{ - width:100%} -} - -code{ - background:#fff; - border:solid 1px #e1e4e5; - /* color:#000; for clickable code */ - font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace; - font-size:75%; - max-width:100%; - overflow-x:auto; - padding:0 5px; - white-space:nowrap; -} - -.codeblock-example{ - border:1px solid #e1e4e5; - border-bottom:none; - padding:24px; - padding-top:48px; - font-weight:500; - background:#fff; - position:relative} - -.codeblock-example:after{ - content:"Example"; - position:absolute; - top:0px; - left:0px; - background:#9B59B6; - color:#fff; - padding:6px 12px} - -.codeblock-example.prettyprint-example-only{ - border:1px solid #e1e4e5; - margin-bottom:24px} - -.codeblock,pre.src,#content .literal-block{ - border:1px solid #e1e4e5; - padding:12px; - overflow-x:auto; - background:#fff; - margin:1px 0 24px 0} - -pre.src{ - /* color:#404040; */ - display:block; - font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace; - font-size:12px; - line-height:1.5; - margin:1px 0px 24px 0px; - overflow:auto; - padding:12px; - white-space:pre; -} - -.example{ - background:#f3f6f6; - border:1px solid #e1e4e5; - color:#404040; - font-size: 12px; - line-height: 1.5; - margin-bottom:24px; - padding:12px; -} - -table{ - border-collapse:collapse; - border-spacing:0; - empty-cells:show; - margin-bottom:24px; - border-bottom:1px solid #e1e4e5; -} - -td{ - vertical-align:top} - -table td,table th{ - font-size:90%; - margin:0; - overflow:visible; - padding:8px 16px; - background-color:white; - border:1px solid #e1e4e5; -} - -table thead th{ - font-weight:bold; - border-top:3px solid #e1e4e5; - border-bottom:1px solid #e1e4e5; -} - -table caption{ - color:#000; - font:italic 85%/1 arial,sans-serif; - padding:1em 0; -} - -table tr:nth-child(2n-1) td{ - background-color:#f3f6f6; -} - -table tr:nth-child(2n) td{ - background-color:white; -} - -.figure p{ - color:#000; - font:italic 85%/1 arial,sans-serif; - padding:1em 0; -} - -.rotate-90{ - -webkit-transform:rotate(90deg); - -moz-transform:rotate(90deg); - -ms-transform:rotate(90deg); - -o-transform:rotate(90deg); - transform:rotate(90deg); -} - -.rotate-270{ - -webkit-transform:rotate(270deg); - -moz-transform:rotate(270deg); - -ms-transform:rotate(270deg); - -o-transform:rotate(270deg); - transform:rotate(270deg); -} - -#toggle-sidebar, -#table-of-contents .close-sidebar { - display: none; -} - -@media screen and (max-width: 768px) { - #table-of-contents { - display: none; - width: 60%; - } - - #table-of-contents h2 a { - display: block; - } - - #table-of-contents:target { - display: block; - } - - #copyright, #postamble { - display: none; - } - - #toggle-sidebar { - background-color: #2980B9; - display: block; - margin-bottom: 1.6em; - padding: 0.6em; - text-align: center; - } - - #toggle-sidebar h2 { - background-color:#2980B9; - width:100%; - height:50px; - left:0; - top:0; - color: white; - font-size: 100%; - line-height: 50px; - position:fixed; - margin: 0; - padding: 0; - opacity:0.7; - } - - #table-of-contents .close-sidebar { - color: rgba(255, 255, 255, 0.3); - display: inline-block; - margin: 0px 10px 0px 45px; - padding: 10px; - } -} - -*{ - -webkit-box-sizing:border-box; - -moz-box-sizing:border-box; - box-sizing:border-box; -} - -figcaption,figure,footer,header,hgroup,nav{ - display:block} - -ins{ - background:#ff9; - color:#000; - text-decoration:none} - -mark{ - background:#ff0; - color:#000; - font-style:italic; - font-weight:bold} - -small{ - font-size:85%} - -sub,sup{ - font-size:75%; - line-height:0; - position:relative; - vertical-align:baseline} - -sup{ - top:-0.5em} - -sub{ - bottom:-0.25em} - -img{ - -ms-interpolation-mode:bicubic; - vertical-align:middle; - max-width:100%} - -svg:not(:root){ - overflow:hidden} - -figure{ - margin:0} - -label{ - cursor:pointer} - -legend{ - border:0; - margin-left:-7px; - padding:0; - white-space:normal} - -.fa:before,#content .admonition-title:before,#content h1 .headerlink:before,#content h2 .headerlink:before,#content h3 .headerlink:before,#content h4 .headerlink:before,#content h5 .headerlink:before,#content h6 .headerlink:before,#content dl dt .headerlink:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-alert,#content .note,#content .attention,#content .caution,#content .danger,#content .error,#content .hint,#content .important,#content .tip,#content .warning,#content .seealso,#content .admonitiontodo,.btn,input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"],select,textarea,#table-of-contents li.on a,#table-of-contents li.current>a,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{ - -webkit-font-smoothing:antialiased} - -/*! - * Font Awesome 4.1.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{ - font-family:'FontAwesome'; - src:url("../fonts/fontawesome-webfont.eot?v=4.1.0"); - src:url("../fonts/fontawesome-webfont.eot?#iefix&v=4.1.0") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff?v=4.1.0") format("woff"),url("../fonts/fontawesome-webfont.ttf?v=4.1.0") format("truetype"),url("../fonts/fontawesome-webfont.svg?v=4.1.0#fontawesomeregular") format("svg"); - font-weight:normal; - font-style:normal} - -.fa,#content .admonition-title,.icon{ - display:inline-block; - font-family:FontAwesome; - font-style:normal; - font-weight:normal; - line-height:1; - -webkit-font-smoothing:antialiased; - -moz-osx-font-smoothing:grayscale} - -.fa-ul{ - padding-left:0; - margin-left:2.14286em; - list-style-type:none} - -.fa-ul>li{ - position:relative} - -.fa-li{ - position:absolute; - left:-2.14286em; - width:2.14286em; - top:0.14286em; - text-align:center} - -.fa-li.fa-lg{ - left:-1.85714em} - -.fa-border{ - padding:.2em .25em .15em; - border:solid 0.08em #eee; - border-radius:.1em} - -.fa,#content .admonition-title{ - font-family:inherit} - -.fa:before,#content .admonition-title:before{ - font-family:"FontAwesome"; - display:inline-block; - font-style:normal; - font-weight:normal; - line-height:1; - text-decoration:inherit} - -a .fa,a #content .admonition-title,#content a .admonition-title{ - display:inline-block; - text-decoration:inherit} - -.nav #content .admonition-title,#content .nav .admonition-title,.nav .icon{ - display:inline} - -.wy-alert,#content .note,#content .attention,#content .caution,#content .danger,#content .error,#content .hint,#content .important,#content .tip,#content .warning,#content .seealso,#content .admonitiontodo{ - padding:12px; - line-height:24px; - margin-bottom:24px; - /* background:#e7f2fa; */ -} - -.wy-alert-title,#content .admonition-title{ - color:#fff; - font-weight:bold; - display:block; - color:#fff; - /* background:#6ab0de; */ - /* margin:-12px; */ - padding:6px 12px; - margin-bottom:0px} - -#content .danger,#content .error{ - background:#fdf3f2} - -.wy-alert.wy-alert-warning,#content .wy-alert-warning.note,#content .attention,#content .caution,#content .wy-alert-warning.danger,#content .wy-alert-warning.error,#content .wy-alert-warning.hint,#content .wy-alert-warning.important,#content .wy-alert-warning.tip,#content .warning,#content .wy-alert-warning.seealso,#content .admonitiontodo{ - background:#ffedcc} - -#content .admonition-title.note:before, #content .admonition-title.seealso:before, -#content .admonition-title.warning:before, #content .admonition-title.caution:before, -#content .admonition-title.attention:before, -#content .admonition-title.tip:before, #content .admonition-title.hint:before, -#content .admonition-title.important:before, -#content .admonition-title.error:before, #content .admonition-title.danger:before{ - font-family:FontAwesome; - content: "";} - -#content .note,#content .seealso{ - background:#e7f2fa} - -.wy-alert p:last-child,#content .note p:last-child,#content .attention p:last-child,#content .caution p:last-child,#content .danger p:last-child,#content .error p:last-child,#content .hint p:last-child,#content .important p:last-child,#content .tip p:last-child,#content .warning p:last-child,#content .seealso p:last-child,#content .admonitiontodo p:last-child{ - margin-bottom:0} - -#content .admonition-title.tip,#content .admonition-title.important,#content .admonition-title.hint{ - line-height: 1; - background:#1abc9c} - -#content .important,#content .tip,#content .hint{ - background:#dbfaf4} - -#content .admonition-title.note,#content .admonition-title.seealso{ - line-height: 1; - background:#6ab0de} - -#content .admonition-title.warning,#content .admonition-title.caution,#content .admonition-title.attention{ - line-height: 1; - background:#F0B37E} - -#content .admonition-title.error,#content .admonition-title.danger{ - line-height: 1; - background:#f29f97} - -legend{ - display:block; - width:100%; - border:0; - padding:0; - white-space:normal; - margin-bottom:24px; - font-size:150%; - *margin-left:-7px} - -label{ - display:block; - margin:0 0 0.3125em 0; - color:#333; - font-size:90%} - -a{ - color:#2980B9; - text-decoration:none; - cursor:pointer} - - -a:hover,a:active{ - outline:0; -} - -a:hover{ - color:#3091d1} - -a:visited{ - color:#9B59B6} - -.left{ - text-align:left} - -.center{ - text-align:center} - -.right{ - text-align:right} - -hr{ - display:block; - height:1px; - border:0; - border-top:1px solid #e1e4e5; - margin:24px 0; - padding:0} - -#table-of-contents li{ - list-style:none; - margin-left: 0px; -} - -#table-of-contents header{ - height:32px; - display:inline-block; - line-height:32px; - padding:0 1.618em; - display:block; - font-weight:bold; - text-transform:uppercase; - font-size:80%; - color:#2980B9; - white-space:nowrap} - -#table-of-contents ul{ - margin-bottom:0} - -#table-of-contents li.divide-top{ - border-top:solid 1px #404040} - -#table-of-contents li.divide-bottom{ - border-bottom:solid 1px #404040} - -#table-of-contents li.current{ - background:#e3e3e3} - -#table-of-contents li.current a{ - color:gray; - border-right:solid 1px #c9c9c9; - padding:0.4045em 2.427em} - -#table-of-contents li.current a:hover{ - background:#d6d6d6} - -#table-of-contents li a{ - /* color:#404040; */ - padding:0.4045em 1.618em; - position:relative; - /* background:#fcfcfc; */ - border:none; - /* border-bottom:solid 1px #c9c9c9; */ - /* border-top:solid 1px #c9c9c9; */ - padding-left:1.618em -4px} - -#table-of-contents li.on a:hover,#table-of-contents li.current>a:hover{ - background:#fcfcfc} - -#table-of-contents li ul li a{ - /* background:#c9c9c9; */ - padding:0.4045em 2.427em} - -#table-of-contents li ul li ul li a{ - padding:0.4045em 3.236em} - -#table-of-contents li.current ul{ - display:block} - -/* #table-of-contents li ul{ */ -/* margin-bottom:0; */ -/* display:none} */ - -#table-of-contents .local-toc li ul{ - display:block} - -#table-of-contents li ul li a{ - margin-bottom:0; - color:#b3b3b3; - font-weight:normal} - -#table-of-contents a{ - display:inline-block; - line-height:18px; - padding:0.4045em 1.618em; - display:block; - position:relative; - font-size:90%; - color:#b3b3b3; - direction: ltr; -} - -#table-of-contents a:hover{ - background-color:#4e4a4a; - cursor:pointer} - -/* #text-table-of-contents { */ -/* overflow:scroll; */ -/* } */ - -#table-of-contents{ - position:fixed; - top:0; - left:0; - width:300px; - overflow-x:hidden; - overflow-y:scroll; - height:100%; - background:#343131; - z-index:200; - scrollbar-base-color: #1F1D1D; - scrollbar-arrow-color: #b3b3b3; - scrollbar-shadow-color: #1F1D1D; - scrollbar-track-color : #343131; -} - -#table-of-contents h2{ - z-index:200; - background-color:#2980B9; - text-align:center; - padding:0.809em; - display:block; - color:#fcfcfc; - font-size: 100%; - margin-bottom:0.809em} - -ul.nav li ul li { - display: none; -} - -ul.nav li ul li ul li { - display: none; -} - -ul.nav li.active ul li { - display: inline; -} - -ul.nav li.active ul li ul li { - display: inline; -} - -ul.nav li.active ul li a { - background-color: #E3E3E3; - color: #8099B0; - border-right:solid 1px #c9c9c9 !important; -} - -ul.nav li.active ul li.active a { - background-color: #C9C9C9; - color: black !important; - font-weight: bold !important; -} - -ul.nav li.active ul li.active ul li.active a { - color: black !important; - font-weight: bold !important; - display: block !important; -} - -ul.nav li.active ul li.active ul li a { - color: #808080 !important; - font-weight: normal !important; - display: block !important; -} - -ul.nav li.active ul li ul li a { - display: none !important; -} - -/* ul.nav li ul li ul li { */ -/* display: none !important; /\* as long as nav is on multiple levels of ul *\/ */ -/* /\* display: none; /\* as long as nav is on multiple levels of ul *\\/ *\/ */ -/* } */ - -ul.nav li ul li ul li ul li { - display: none !important; /* as long as nav is on multiple levels of ul */ - /* display: none; /* as long as nav is on multiple levels of ul *\/ */ -} - -ul.nav li.active > a { - border-bottom:solid 1px #c9c9c9 !important; /* XXX Restrict it to 2nd level */ - border-right:solid 1px #c9c9c9 !important; -} - -ul.nav li.active a { - color: gray !important; - font-weight:bold; - background-color: white; - border-right:solid 0px white !important; -} - -ul.nav > li.active > a { - color: black !important; -} - -footer{ - color:#999} - -footer p{ - margin-bottom:12px} - -#copyright, #postamble{ - position:fixed; - bottom:0; - left:0; - width:300px; - color:#fcfcfc; - background:#1f1d1d; - border-top:solid 10px #343131; - font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif; - font-size: 90%; - z-index:400; - padding:12px; -} - -#postamble .author { - font-size: 100%; - margin-bottom: 0px; -} - -#postamble .date { - font-size: 90%; - margin-bottom: 0px; - color: #27AE60; -} - -#postamble .creator,#postamble .validation { - display:none; -} - -#copyright a{ - color:#2980B9; - text-decoration:none} - -#copyright .rst-current-version{ - padding:12px; - background-color:#272525; - display:block; - text-align:right; - font-size:90%; - cursor:pointer; - color:#27AE60; - *zoom:1} - -#content img{ - max-width:100%; -} - -#content div.figure{ - margin-bottom:24px} - -#content div.figure.align-center{ - text-align:center} - -#content .section>img,#content .section>a>img{ - margin-bottom:24px} - -.verse{ - border-left:5px solid #6AB0DE; - background-color: #E7F2FA; - padding: 6px 20px; - font-style:italic; -} - -#content .note .last,#content .attention .last,#content .caution .last,#content .danger .last,#content .error .last,#content .hint .last,#content .important .last,#content .tip .last,#content .warning .last,#content .seealso .last,#content .admonitiontodo .last{ - margin-bottom:0} - -#content .admonition-title:before{ - margin-right:4px} - -#content .section ol p,#content .section ul p{ - margin-bottom:12px} - -#content h1 .headerlink,#content h2 .headerlink,#content h3 .headerlink,#content h4 .headerlink,#content h5 .headerlink,#content h6 .headerlink,#content dl dt .headerlink{ - display:none; - visibility:hidden; - font-size:14px} - -#content h1 .headerlink:after,#content h2 .headerlink:after,#content h3 .headerlink:after,#content h4 .headerlink:after,#content h5 .headerlink:after,#content h6 .headerlink:after,#content dl dt .headerlink:after{ - visibility:visible; - content:""; - font-family:FontAwesome; - display:inline-block} - -#content h1:hover .headerlink,#content h2:hover .headerlink,#content h3:hover .headerlink,#content h4:hover .headerlink,#content h5:hover .headerlink,#content h6:hover .headerlink,#content dl dt:hover .headerlink{ - display:inline-block} - -#content .sidebar{ - float:right; - width:40%; - display:block; - margin:0 0 24px 24px; - padding:24px; - background:#f3f6f6; - border:solid 1px #e1e4e5} - -#content .sidebar p,#content .sidebar ul,#content .sidebar dl{ - font-size:90%} - -#content .sidebar .last{ - margin-bottom:0} - -#content .sidebar .sidebar-title{ - display:block; - font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif; - font-weight:bold; - background:#e1e4e5; - padding:6px 12px; - margin:-24px; - margin-bottom:24px; - font-size:100%} - -#content .highlighted{ - background:#F1C40F; - display:inline-block; - font-weight:bold; - padding:0 6px} - -#content .footnote-reference,#content .citation-reference{ - vertical-align:super; - font-size:90%} - -span[id*='MathJax-Span']{ - color:#404040} - -.math{ - text-align:center} - -#footnotes{ - border-top:1px solid #e1e4e5; - padding-top: 36px; -} - -h2.footnotes{ - display:none; -} - -.footnum, .footref{ - color: #2980b9; - font-size: 170%; - font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif; -} - -.footnum:before, .footref:before{ - content:"["; -} - -.footnum:after, .footref:after{ - content:"]"; -} - -.footpara { - color: #999; - font-size: 90%; - font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif; - padding-bottom: 8px; - padding-left: 16px; - padding-right: 16px; - padding-top: 8px; - line-height: 1.25em; - /* display: inline; */ -} - -.todo{ - background-color: #f29f97; - padding: 0px 4px; - color: #fff; -} - -.WAIT, .nilWAIT{ - background-color: #6AB097; -} - -.done{ - background-color: #6ab0de; - padding: 0px 4px; - color: #fff; -} - -.tag span { - background-color: #EDEDED; - border: 1px solid #EDEDED; - color: #939393; - cursor: pointer; - display: block; - float: right; - font-size: 80%; - font-weight: normal; - margin: 0 3px; - padding: 1px 2px; - border-radius: 10px; -} - -.tag .FLAGGED { - background-color: #DB2D27; - border: 1px solid #DB2D27; - color: white; - font-weight: bold; -} - -.timestamp { - font-family: Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace; - font-size: 90%; - color: navy; -} - -.inlinetask { - background: #FFF9E3; /* url(dialog-todo.png) no-repeat 10px 8px; */ - border: 3px solid #FFEB8E; - /* border-right-style: none; */ - /* border-left-style: none; */ - /* padding: 10px 20px 10px 60px; */ - padding: 9px 12px; - margin-bottom: 24px; - font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif} diff --git a/doc/orgmode/css/rtd-full.css b/doc/orgmode/css/rtd-full.css deleted file mode 100644 index 6cb334694..000000000 --- a/doc/orgmode/css/rtd-full.css +++ /dev/null @@ -1,3910 +0,0 @@ -*{ - -webkit-box-sizing:border-box; - -moz-box-sizing:border-box; - box-sizing:border-box} - -article,aside,details,figcaption,figure,footer,header,hgroup,nav,section{ - display:block} - -audio,canvas,video{ - display:inline-block; - *display:inline; - *zoom:1} - -audio:not([controls]){ - display:none} - -[hidden]{ - display:none} - -*{ - -webkit-box-sizing:border-box; - -moz-box-sizing:border-box; - box-sizing:border-box} - -html{ - font-size:100%; - -webkit-text-size-adjust:100%; - -ms-text-size-adjust:100%} - -body{ - margin:0} - -a:hover,a:active{ - outline:0} - -abbr[title]{ - border-bottom:1px dotted} - -b,strong{ - font-weight:bold} - -blockquote{ - margin:0} - -dfn{ - font-style:italic} - -ins{ - background:#ff9; - color:#000; - text-decoration:none} - -mark{ - background:#ff0; - color:#000; - font-style:italic; - font-weight:bold} - -pre,code,.rst-content tt,kbd,samp{ - font-family:monospace,serif; - _font-family:"courier new",monospace; - font-size:1em} - -pre{ - white-space:pre} - -q{ - quotes:none} - -q:before,q:after{ - content:""; - content:none} - -small{ - font-size:85%} - -sub,sup{ - font-size:75%; - line-height:0; - position:relative; - vertical-align:baseline} - -sup{ - top:-0.5em} - -sub{ - bottom:-0.25em} - -ul,ol,dl{ - margin:0; - padding:0; - list-style:none; - list-style-image:none} - -li{ - list-style:none} - -dd{ - margin:0} - -img{ - border:0; - -ms-interpolation-mode:bicubic; - vertical-align:middle; - max-width:100%} - -svg:not(:root){ - overflow:hidden} - -figure{ - margin:0} - -form{ - margin:0} - -fieldset{ - border:0; - margin:0; - padding:0} - -label{ - cursor:pointer} - -legend{ - border:0; - *margin-left:-7px; - padding:0; - white-space:normal} - -button,input,select,textarea{ - font-size:100%; - margin:0; - vertical-align:baseline; - *vertical-align:middle} - -button,input{ - line-height:normal} - -button,input[type="button"],input[type="reset"],input[type="submit"]{ - cursor:pointer; - -webkit-appearance:button; - *overflow:visible} - -button[disabled],input[disabled]{ - cursor:default} - -input[type="checkbox"],input[type="radio"]{ - box-sizing:border-box; - padding:0; - *width:13px; - *height:13px} - -input[type="search"]{ - -webkit-appearance:textfield; - -moz-box-sizing:content-box; - -webkit-box-sizing:content-box; - box-sizing:content-box} - -input[type="search"]::-webkit-search-decoration,input[type="search"]::-webkit-search-cancel-button{ - -webkit-appearance:none} - -button::-moz-focus-inner,input::-moz-focus-inner{ - border:0; - padding:0} - -textarea{ - overflow:auto; - vertical-align:top; - resize:vertical} - -table{ - border-collapse:collapse; - border-spacing:0} - -td{ - vertical-align:top} - -.chromeframe{ - margin:0.2em 0; - background:#ccc; - color:#000; - padding:0.2em 0} - -.ir{ - display:block; - border:0; - text-indent:-999em; - overflow:hidden; - background-color:transparent; - background-repeat:no-repeat; - text-align:left; - direction:ltr; - *line-height:0} - -.ir br{ - display:none} - -.hidden{ - display:none !important; - visibility:hidden} - -.visuallyhidden{ - border:0; - clip:rect(0 0 0 0); - height:1px; - margin:-1px; - overflow:hidden; - padding:0; - position:absolute; - width:1px} - -.visuallyhidden.focusable:active,.visuallyhidden.focusable:focus{ - clip:auto; - height:auto; - margin:0; - overflow:visible; - position:static; - width:auto} - -.invisible{ - visibility:hidden} - -.relative{ - position:relative} - -big,small{ - font-size:100%} - -@media print{ - html,body,section{ - background:none !important} - - *{ - box-shadow:none !important; - text-shadow:none !important; - filter:none !important; - -ms-filter:none !important} - - a,a:visited{ - text-decoration:underline} - - .ir a:after,a[href^="javascript:"]:after,a[href^="#"]:after{ - content:""} - - pre,blockquote{ - page-break-inside:avoid} - - thead{ - display:table-header-group} - - tr,img{ - page-break-inside:avoid} - - img{ - max-width:100% !important} - - @page{ - margin:0.5cm} - - p,h2,h3{ - orphans:3; - widows:3} - - h2,h3{ - page-break-after:avoid} - -} - -.fa:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo,.btn,input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"],select,textarea,.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a,.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a,.wy-nav-top a{ - -webkit-font-smoothing:antialiased} - -.clearfix{ - *zoom:1} - -.clearfix:before,.clearfix:after{ - display:table; - content:""} - -.clearfix:after{ - clear:both} - -/*! - * Font Awesome 4.1.0 by @davegandy - http://fontawesome.io - @fontawesome - * License - http://fontawesome.io/license (Font: SIL OFL 1.1, CSS: MIT License) - */@font-face{ - font-family:'FontAwesome'; - src:url("../fonts/fontawesome-webfont.eot?v=4.1.0"); - src:url("../fonts/fontawesome-webfont.eot?#iefix&v=4.1.0") format("embedded-opentype"),url("../fonts/fontawesome-webfont.woff?v=4.1.0") format("woff"),url("../fonts/fontawesome-webfont.ttf?v=4.1.0") format("truetype"),url("../fonts/fontawesome-webfont.svg?v=4.1.0#fontawesomeregular") format("svg"); - font-weight:normal; - font-style:normal} - -.fa,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.icon{ - display:inline-block; - font-family:FontAwesome; - font-style:normal; - font-weight:normal; - line-height:1; - -webkit-font-smoothing:antialiased; - -moz-osx-font-smoothing:grayscale} - -.fa-lg{ - font-size:1.33333em; - line-height:0.75em; - vertical-align:-15%} - -.fa-2x{ - font-size:2em} - -.fa-3x{ - font-size:3em} - -.fa-4x{ - font-size:4em} - -.fa-5x{ - font-size:5em} - -.fa-fw{ - width:1.28571em; - text-align:center} - -.fa-ul{ - padding-left:0; - margin-left:2.14286em; - list-style-type:none} - -.fa-ul>li{ - position:relative} - -.fa-li{ - position:absolute; - left:-2.14286em; - width:2.14286em; - top:0.14286em; - text-align:center} - -.fa-li.fa-lg{ - left:-1.85714em} - -.fa-border{ - padding:.2em .25em .15em; - border:solid 0.08em #eee; - border-radius:.1em} - -.pull-right{ - float:right} - -.pull-left{ - float:left} - -.fa.pull-left,.rst-content .pull-left.admonition-title,.rst-content h1 .pull-left.headerlink,.rst-content h2 .pull-left.headerlink,.rst-content h3 .pull-left.headerlink,.rst-content h4 .pull-left.headerlink,.rst-content h5 .pull-left.headerlink,.rst-content h6 .pull-left.headerlink,.rst-content dl dt .pull-left.headerlink,.pull-left.icon{ - margin-right:.3em} - -.fa.pull-right,.rst-content .pull-right.admonition-title,.rst-content h1 .pull-right.headerlink,.rst-content h2 .pull-right.headerlink,.rst-content h3 .pull-right.headerlink,.rst-content h4 .pull-right.headerlink,.rst-content h5 .pull-right.headerlink,.rst-content h6 .pull-right.headerlink,.rst-content dl dt .pull-right.headerlink,.pull-right.icon{ - margin-left:.3em} - -.fa-spin{ - -webkit-animation:spin 2s infinite linear; - -moz-animation:spin 2s infinite linear; - -o-animation:spin 2s infinite linear; - animation:spin 2s infinite linear} - -@-moz-keyframes spin{ - 0%{ - -moz-transform:rotate(0deg)} - - 100%{ - -moz-transform:rotate(359deg)} - -} - -@-webkit-keyframes spin{ - 0%{ - -webkit-transform:rotate(0deg)} - - 100%{ - -webkit-transform:rotate(359deg)} - -} - -@-o-keyframes spin{ - 0%{ - -o-transform:rotate(0deg)} - - 100%{ - -o-transform:rotate(359deg)} - -} - -@keyframes spin{ - 0%{ - -webkit-transform:rotate(0deg); - transform:rotate(0deg)} - - 100%{ - -webkit-transform:rotate(359deg); - transform:rotate(359deg)} - -} - -.fa-rotate-90{ - filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=1); - -webkit-transform:rotate(90deg); - -moz-transform:rotate(90deg); - -ms-transform:rotate(90deg); - -o-transform:rotate(90deg); - transform:rotate(90deg)} - -.fa-rotate-180{ - filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2); - -webkit-transform:rotate(180deg); - -moz-transform:rotate(180deg); - -ms-transform:rotate(180deg); - -o-transform:rotate(180deg); - transform:rotate(180deg)} - -.fa-rotate-270{ - filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3); - -webkit-transform:rotate(270deg); - -moz-transform:rotate(270deg); - -ms-transform:rotate(270deg); - -o-transform:rotate(270deg); - transform:rotate(270deg)} - -.fa-flip-horizontal{ - filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=0); - -webkit-transform:scale(-1, 1); - -moz-transform:scale(-1, 1); - -ms-transform:scale(-1, 1); - -o-transform:scale(-1, 1); - transform:scale(-1, 1)} - -.fa-flip-vertical{ - filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=2); - -webkit-transform:scale(1, -1); - -moz-transform:scale(1, -1); - -ms-transform:scale(1, -1); - -o-transform:scale(1, -1); - transform:scale(1, -1)} - -.fa-stack{ - position:relative; - display:inline-block; - width:2em; - height:2em; - line-height:2em; - vertical-align:middle} - -.fa-stack-1x,.fa-stack-2x{ - position:absolute; - left:0; - width:100%; - text-align:center} - -.fa-stack-1x{ - line-height:inherit} - -.fa-stack-2x{ - font-size:2em} - -.fa-inverse{ - color:#fff} - -.fa-glass:before{ - content:""} - -.fa-music:before{ - content:""} - -.fa-search:before,.icon-search:before{ - content:""} - -.fa-envelope-o:before{ - content:""} - -.fa-heart:before{ - content:""} - -.fa-star:before{ - content:""} - -.fa-star-o:before{ - content:""} - -.fa-user:before{ - content:""} - -.fa-film:before{ - content:""} - -.fa-th-large:before{ - content:""} - -.fa-th:before{ - content:""} - -.fa-th-list:before{ - content:""} - -.fa-check:before{ - content:""} - -.fa-times:before{ - content:""} - -.fa-search-plus:before{ - content:""} - -.fa-search-minus:before{ - content:""} - -.fa-power-off:before{ - content:""} - -.fa-signal:before{ - content:""} - -.fa-gear:before,.fa-cog:before{ - content:""} - -.fa-trash-o:before{ - content:""} - -.fa-home:before,.icon-home:before{ - content:""} - -.fa-file-o:before{ - content:""} - -.fa-clock-o:before{ - content:""} - -.fa-road:before{ - content:""} - -.fa-download:before{ - content:""} - -.fa-arrow-circle-o-down:before{ - content:""} - -.fa-arrow-circle-o-up:before{ - content:""} - -.fa-inbox:before{ - content:""} - -.fa-play-circle-o:before{ - content:""} - -.fa-rotate-right:before,.fa-repeat:before{ - content:""} - -.fa-refresh:before{ - content:""} - -.fa-list-alt:before{ - content:""} - -.fa-lock:before{ - content:""} - -.fa-flag:before{ - content:""} - -.fa-headphones:before{ - content:""} - -.fa-volume-off:before{ - content:""} - -.fa-volume-down:before{ - content:""} - -.fa-volume-up:before{ - content:""} - -.fa-qrcode:before{ - content:""} - -.fa-barcode:before{ - content:""} - -.fa-tag:before{ - content:""} - -.fa-tags:before{ - content:""} - -.fa-book:before,.icon-book:before{ - content:""} - -.fa-bookmark:before{ - content:""} - -.fa-print:before{ - content:""} - -.fa-camera:before{ - content:""} - -.fa-font:before{ - content:""} - -.fa-bold:before{ - content:""} - -.fa-italic:before{ - content:""} - -.fa-text-height:before{ - content:""} - -.fa-text-width:before{ - content:""} - -.fa-align-left:before{ - content:""} - -.fa-align-center:before{ - content:""} - -.fa-align-right:before{ - content:""} - -.fa-align-justify:before{ - content:""} - -.fa-list:before{ - content:""} - -.fa-dedent:before,.fa-outdent:before{ - content:""} - -.fa-indent:before{ - content:""} - -.fa-video-camera:before{ - content:""} - -.fa-photo:before,.fa-image:before,.fa-picture-o:before{ - content:""} - -.fa-pencil:before{ - content:""} - -.fa-map-marker:before{ - content:""} - -.fa-adjust:before{ - content:""} - -.fa-tint:before{ - content:""} - -.fa-edit:before,.fa-pencil-square-o:before{ - content:""} - -.fa-share-square-o:before{ - content:""} - -.fa-check-square-o:before{ - content:""} - -.fa-arrows:before{ - content:""} - -.fa-step-backward:before{ - content:""} - -.fa-fast-backward:before{ - content:""} - -.fa-backward:before{ - content:""} - -.fa-play:before{ - content:""} - -.fa-pause:before{ - content:""} - -.fa-stop:before{ - content:""} - -.fa-forward:before{ - content:""} - -.fa-fast-forward:before{ - content:""} - -.fa-step-forward:before{ - content:""} - -.fa-eject:before{ - content:""} - -.fa-chevron-left:before{ - content:""} - -.fa-chevron-right:before{ - content:""} - -.fa-plus-circle:before{ - content:""} - -.fa-minus-circle:before{ - content:""} - -.fa-times-circle:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before{ - content:""} - -.fa-check-circle:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before{ - content:""} - -.fa-question-circle:before{ - content:""} - -.fa-info-circle:before{ - content:""} - -.fa-crosshairs:before{ - content:""} - -.fa-times-circle-o:before{ - content:""} - -.fa-check-circle-o:before{ - content:""} - -.fa-ban:before{ - content:""} - -.fa-arrow-left:before{ - content:""} - -.fa-arrow-right:before{ - content:""} - -.fa-arrow-up:before{ - content:""} - -.fa-arrow-down:before{ - content:""} - -.fa-mail-forward:before,.fa-share:before{ - content:""} - -.fa-expand:before{ - content:""} - -.fa-compress:before{ - content:""} - -.fa-plus:before{ - content:""} - -.fa-minus:before{ - content:""} - -.fa-asterisk:before{ - content:""} - -.fa-exclamation-circle:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before,.rst-content .admonition-title:before{ - content:""} - -.fa-gift:before{ - content:""} - -.fa-leaf:before{ - content:""} - -.fa-fire:before,.icon-fire:before{ - content:""} - -.fa-eye:before{ - content:""} - -.fa-eye-slash:before{ - content:""} - -.fa-warning:before,.fa-exclamation-triangle:before{ - content:""} - -.fa-plane:before{ - content:""} - -.fa-calendar:before{ - content:""} - -.fa-random:before{ - content:""} - -.fa-comment:before{ - content:""} - -.fa-magnet:before{ - content:""} - -.fa-chevron-up:before{ - content:""} - -.fa-chevron-down:before{ - content:""} - -.fa-retweet:before{ - content:""} - -.fa-shopping-cart:before{ - content:""} - -.fa-folder:before{ - content:""} - -.fa-folder-open:before{ - content:""} - -.fa-arrows-v:before{ - content:""} - -.fa-arrows-h:before{ - content:""} - -.fa-bar-chart-o:before{ - content:""} - -.fa-twitter-square:before{ - content:""} - -.fa-facebook-square:before{ - content:""} - -.fa-camera-retro:before{ - content:""} - -.fa-key:before{ - content:""} - -.fa-gears:before,.fa-cogs:before{ - content:""} - -.fa-comments:before{ - content:""} - -.fa-thumbs-o-up:before{ - content:""} - -.fa-thumbs-o-down:before{ - content:""} - -.fa-star-half:before{ - content:""} - -.fa-heart-o:before{ - content:""} - -.fa-sign-out:before{ - content:""} - -.fa-linkedin-square:before{ - content:""} - -.fa-thumb-tack:before{ - content:""} - -.fa-external-link:before{ - content:""} - -.fa-sign-in:before{ - content:""} - -.fa-trophy:before{ - content:""} - -.fa-github-square:before{ - content:""} - -.fa-upload:before{ - content:""} - -.fa-lemon-o:before{ - content:""} - -.fa-phone:before{ - content:""} - -.fa-square-o:before{ - content:""} - -.fa-bookmark-o:before{ - content:""} - -.fa-phone-square:before{ - content:""} - -.fa-twitter:before{ - content:""} - -.fa-facebook:before{ - content:""} - -.fa-github:before,.icon-github:before{ - content:""} - -.fa-unlock:before{ - content:""} - -.fa-credit-card:before{ - content:""} - -.fa-rss:before{ - content:""} - -.fa-hdd-o:before{ - content:""} - -.fa-bullhorn:before{ - content:""} - -.fa-bell:before{ - content:""} - -.fa-certificate:before{ - content:""} - -.fa-hand-o-right:before{ - content:""} - -.fa-hand-o-left:before{ - content:""} - -.fa-hand-o-up:before{ - content:""} - -.fa-hand-o-down:before{ - content:""} - -.fa-arrow-circle-left:before,.icon-circle-arrow-left:before{ - content:""} - -.fa-arrow-circle-right:before,.icon-circle-arrow-right:before{ - content:""} - -.fa-arrow-circle-up:before{ - content:""} - -.fa-arrow-circle-down:before{ - content:""} - -.fa-globe:before{ - content:""} - -.fa-wrench:before{ - content:""} - -.fa-tasks:before{ - content:""} - -.fa-filter:before{ - content:""} - -.fa-briefcase:before{ - content:""} - -.fa-arrows-alt:before{ - content:""} - -.fa-group:before,.fa-users:before{ - content:""} - -.fa-chain:before,.fa-link:before,.icon-link:before{ - content:""} - -.fa-cloud:before{ - content:""} - -.fa-flask:before{ - content:""} - -.fa-cut:before,.fa-scissors:before{ - content:""} - -.fa-copy:before,.fa-files-o:before{ - content:""} - -.fa-paperclip:before{ - content:""} - -.fa-save:before,.fa-floppy-o:before{ - content:""} - -.fa-square:before{ - content:""} - -.fa-navicon:before,.fa-reorder:before,.fa-bars:before{ - content:""} - -.fa-list-ul:before{ - content:""} - -.fa-list-ol:before{ - content:""} - -.fa-strikethrough:before{ - content:""} - -.fa-underline:before{ - content:""} - -.fa-table:before{ - content:""} - -.fa-magic:before{ - content:""} - -.fa-truck:before{ - content:""} - -.fa-pinterest:before{ - content:""} - -.fa-pinterest-square:before{ - content:""} - -.fa-google-plus-square:before{ - content:""} - -.fa-google-plus:before{ - content:""} - -.fa-money:before{ - content:""} - -.fa-caret-down:before,.wy-dropdown .caret:before,.icon-caret-down:before{ - content:""} - -.fa-caret-up:before{ - content:""} - -.fa-caret-left:before{ - content:""} - -.fa-caret-right:before{ - content:""} - -.fa-columns:before{ - content:""} - -.fa-unsorted:before,.fa-sort:before{ - content:""} - -.fa-sort-down:before,.fa-sort-desc:before{ - content:""} - -.fa-sort-up:before,.fa-sort-asc:before{ - content:""} - -.fa-envelope:before{ - content:""} - -.fa-linkedin:before{ - content:""} - -.fa-rotate-left:before,.fa-undo:before{ - content:""} - -.fa-legal:before,.fa-gavel:before{ - content:""} - -.fa-dashboard:before,.fa-tachometer:before{ - content:""} - -.fa-comment-o:before{ - content:""} - -.fa-comments-o:before{ - content:""} - -.fa-flash:before,.fa-bolt:before{ - content:""} - -.fa-sitemap:before{ - content:""} - -.fa-umbrella:before{ - content:""} - -.fa-paste:before,.fa-clipboard:before{ - content:""} - -.fa-lightbulb-o:before{ - content:""} - -.fa-exchange:before{ - content:""} - -.fa-cloud-download:before{ - content:""} - -.fa-cloud-upload:before{ - content:""} - -.fa-user-md:before{ - content:""} - -.fa-stethoscope:before{ - content:""} - -.fa-suitcase:before{ - content:""} - -.fa-bell-o:before{ - content:""} - -.fa-coffee:before{ - content:""} - -.fa-cutlery:before{ - content:""} - -.fa-file-text-o:before{ - content:""} - -.fa-building-o:before{ - content:""} - -.fa-hospital-o:before{ - content:""} - -.fa-ambulance:before{ - content:""} - -.fa-medkit:before{ - content:""} - -.fa-fighter-jet:before{ - content:""} - -.fa-beer:before{ - content:""} - -.fa-h-square:before{ - content:""} - -.fa-plus-square:before{ - content:""} - -.fa-angle-double-left:before{ - content:""} - -.fa-angle-double-right:before{ - content:""} - -.fa-angle-double-up:before{ - content:""} - -.fa-angle-double-down:before{ - content:""} - -.fa-angle-left:before{ - content:""} - -.fa-angle-right:before{ - content:""} - -.fa-angle-up:before{ - content:""} - -.fa-angle-down:before{ - content:""} - -.fa-desktop:before{ - content:""} - -.fa-laptop:before{ - content:""} - -.fa-tablet:before{ - content:""} - -.fa-mobile-phone:before,.fa-mobile:before{ - content:""} - -.fa-circle-o:before{ - content:""} - -.fa-quote-left:before{ - content:""} - -.fa-quote-right:before{ - content:""} - -.fa-spinner:before{ - content:""} - -.fa-circle:before{ - content:""} - -.fa-mail-reply:before,.fa-reply:before{ - content:""} - -.fa-github-alt:before{ - content:""} - -.fa-folder-o:before{ - content:""} - -.fa-folder-open-o:before{ - content:""} - -.fa-smile-o:before{ - content:""} - -.fa-frown-o:before{ - content:""} - -.fa-meh-o:before{ - content:""} - -.fa-gamepad:before{ - content:""} - -.fa-keyboard-o:before{ - content:""} - -.fa-flag-o:before{ - content:""} - -.fa-flag-checkered:before{ - content:""} - -.fa-terminal:before{ - content:""} - -.fa-code:before{ - content:""} - -.fa-mail-reply-all:before,.fa-reply-all:before{ - content:""} - -.fa-star-half-empty:before,.fa-star-half-full:before,.fa-star-half-o:before{ - content:""} - -.fa-location-arrow:before{ - content:""} - -.fa-crop:before{ - content:""} - -.fa-code-fork:before{ - content:""} - -.fa-unlink:before,.fa-chain-broken:before{ - content:""} - -.fa-question:before{ - content:""} - -.fa-info:before{ - content:""} - -.fa-exclamation:before{ - content:""} - -.fa-superscript:before{ - content:""} - -.fa-subscript:before{ - content:""} - -.fa-eraser:before{ - content:""} - -.fa-puzzle-piece:before{ - content:""} - -.fa-microphone:before{ - content:""} - -.fa-microphone-slash:before{ - content:""} - -.fa-shield:before{ - content:""} - -.fa-calendar-o:before{ - content:""} - -.fa-fire-extinguisher:before{ - content:""} - -.fa-rocket:before{ - content:""} - -.fa-maxcdn:before{ - content:""} - -.fa-chevron-circle-left:before{ - content:""} - -.fa-chevron-circle-right:before{ - content:""} - -.fa-chevron-circle-up:before{ - content:""} - -.fa-chevron-circle-down:before{ - content:""} - -.fa-html5:before{ - content:""} - -.fa-css3:before{ - content:""} - -.fa-anchor:before{ - content:""} - -.fa-unlock-alt:before{ - content:""} - -.fa-bullseye:before{ - content:""} - -.fa-ellipsis-h:before{ - content:""} - -.fa-ellipsis-v:before{ - content:""} - -.fa-rss-square:before{ - content:""} - -.fa-play-circle:before{ - content:""} - -.fa-ticket:before{ - content:""} - -.fa-minus-square:before{ - content:""} - -.fa-minus-square-o:before{ - content:""} - -.fa-level-up:before{ - content:""} - -.fa-level-down:before{ - content:""} - -.fa-check-square:before{ - content:""} - -.fa-pencil-square:before{ - content:""} - -.fa-external-link-square:before{ - content:""} - -.fa-share-square:before{ - content:""} - -.fa-compass:before{ - content:""} - -.fa-toggle-down:before,.fa-caret-square-o-down:before{ - content:""} - -.fa-toggle-up:before,.fa-caret-square-o-up:before{ - content:""} - -.fa-toggle-right:before,.fa-caret-square-o-right:before{ - content:""} - -.fa-euro:before,.fa-eur:before{ - content:""} - -.fa-gbp:before{ - content:""} - -.fa-dollar:before,.fa-usd:before{ - content:""} - -.fa-rupee:before,.fa-inr:before{ - content:""} - -.fa-cny:before,.fa-rmb:before,.fa-yen:before,.fa-jpy:before{ - content:""} - -.fa-ruble:before,.fa-rouble:before,.fa-rub:before{ - content:""} - -.fa-won:before,.fa-krw:before{ - content:""} - -.fa-bitcoin:before,.fa-btc:before{ - content:""} - -.fa-file:before{ - content:""} - -.fa-file-text:before{ - content:""} - -.fa-sort-alpha-asc:before{ - content:""} - -.fa-sort-alpha-desc:before{ - content:""} - -.fa-sort-amount-asc:before{ - content:""} - -.fa-sort-amount-desc:before{ - content:""} - -.fa-sort-numeric-asc:before{ - content:""} - -.fa-sort-numeric-desc:before{ - content:""} - -.fa-thumbs-up:before{ - content:""} - -.fa-thumbs-down:before{ - content:""} - -.fa-youtube-square:before{ - content:""} - -.fa-youtube:before{ - content:""} - -.fa-xing:before{ - content:""} - -.fa-xing-square:before{ - content:""} - -.fa-youtube-play:before{ - content:""} - -.fa-dropbox:before{ - content:""} - -.fa-stack-overflow:before{ - content:""} - -.fa-instagram:before{ - content:""} - -.fa-flickr:before{ - content:""} - -.fa-adn:before{ - content:""} - -.fa-bitbucket:before,.icon-bitbucket:before{ - content:""} - -.fa-bitbucket-square:before{ - content:""} - -.fa-tumblr:before{ - content:""} - -.fa-tumblr-square:before{ - content:""} - -.fa-long-arrow-down:before{ - content:""} - -.fa-long-arrow-up:before{ - content:""} - -.fa-long-arrow-left:before{ - content:""} - -.fa-long-arrow-right:before{ - content:""} - -.fa-apple:before{ - content:""} - -.fa-windows:before{ - content:""} - -.fa-android:before{ - content:""} - -.fa-linux:before{ - content:""} - -.fa-dribbble:before{ - content:""} - -.fa-skype:before{ - content:""} - -.fa-foursquare:before{ - content:""} - -.fa-trello:before{ - content:""} - -.fa-female:before{ - content:""} - -.fa-male:before{ - content:""} - -.fa-gittip:before{ - content:""} - -.fa-sun-o:before{ - content:""} - -.fa-moon-o:before{ - content:""} - -.fa-archive:before{ - content:""} - -.fa-bug:before{ - content:""} - -.fa-vk:before{ - content:""} - -.fa-weibo:before{ - content:""} - -.fa-renren:before{ - content:""} - -.fa-pagelines:before{ - content:""} - -.fa-stack-exchange:before{ - content:""} - -.fa-arrow-circle-o-right:before{ - content:""} - -.fa-arrow-circle-o-left:before{ - content:""} - -.fa-toggle-left:before,.fa-caret-square-o-left:before{ - content:""} - -.fa-dot-circle-o:before{ - content:""} - -.fa-wheelchair:before{ - content:""} - -.fa-vimeo-square:before{ - content:""} - -.fa-turkish-lira:before,.fa-try:before{ - content:""} - -.fa-plus-square-o:before{ - content:""} - -.fa-space-shuttle:before{ - content:""} - -.fa-slack:before{ - content:""} - -.fa-envelope-square:before{ - content:""} - -.fa-wordpress:before{ - content:""} - -.fa-openid:before{ - content:""} - -.fa-institution:before,.fa-bank:before,.fa-university:before{ - content:""} - -.fa-mortar-board:before,.fa-graduation-cap:before{ - content:""} - -.fa-yahoo:before{ - content:""} - -.fa-google:before{ - content:""} - -.fa-reddit:before{ - content:""} - -.fa-reddit-square:before{ - content:""} - -.fa-stumbleupon-circle:before{ - content:""} - -.fa-stumbleupon:before{ - content:""} - -.fa-delicious:before{ - content:""} - -.fa-digg:before{ - content:""} - -.fa-pied-piper-square:before,.fa-pied-piper:before{ - content:""} - -.fa-pied-piper-alt:before{ - content:""} - -.fa-drupal:before{ - content:""} - -.fa-joomla:before{ - content:""} - -.fa-language:before{ - content:""} - -.fa-fax:before{ - content:""} - -.fa-building:before{ - content:""} - -.fa-child:before{ - content:""} - -.fa-paw:before{ - content:""} - -.fa-spoon:before{ - content:""} - -.fa-cube:before{ - content:""} - -.fa-cubes:before{ - content:""} - -.fa-behance:before{ - content:""} - -.fa-behance-square:before{ - content:""} - -.fa-steam:before{ - content:""} - -.fa-steam-square:before{ - content:""} - -.fa-recycle:before{ - content:""} - -.fa-automobile:before,.fa-car:before{ - content:""} - -.fa-cab:before,.fa-taxi:before{ - content:""} - -.fa-tree:before{ - content:""} - -.fa-spotify:before{ - content:""} - -.fa-deviantart:before{ - content:""} - -.fa-soundcloud:before{ - content:""} - -.fa-database:before{ - content:""} - -.fa-file-pdf-o:before{ - content:""} - -.fa-file-word-o:before{ - content:""} - -.fa-file-excel-o:before{ - content:""} - -.fa-file-powerpoint-o:before{ - content:""} - -.fa-file-photo-o:before,.fa-file-picture-o:before,.fa-file-image-o:before{ - content:""} - -.fa-file-zip-o:before,.fa-file-archive-o:before{ - content:""} - -.fa-file-sound-o:before,.fa-file-audio-o:before{ - content:""} - -.fa-file-movie-o:before,.fa-file-video-o:before{ - content:""} - -.fa-file-code-o:before{ - content:""} - -.fa-vine:before{ - content:""} - -.fa-codepen:before{ - content:""} - -.fa-jsfiddle:before{ - content:""} - -.fa-life-bouy:before,.fa-life-saver:before,.fa-support:before,.fa-life-ring:before{ - content:""} - -.fa-circle-o-notch:before{ - content:""} - -.fa-ra:before,.fa-rebel:before{ - content:""} - -.fa-ge:before,.fa-empire:before{ - content:""} - -.fa-git-square:before{ - content:""} - -.fa-git:before{ - content:""} - -.fa-hacker-news:before{ - content:""} - -.fa-tencent-weibo:before{ - content:""} - -.fa-qq:before{ - content:""} - -.fa-wechat:before,.fa-weixin:before{ - content:""} - -.fa-send:before,.fa-paper-plane:before{ - content:""} - -.fa-send-o:before,.fa-paper-plane-o:before{ - content:""} - -.fa-history:before{ - content:""} - -.fa-circle-thin:before{ - content:""} - -.fa-header:before{ - content:""} - -.fa-paragraph:before{ - content:""} - -.fa-sliders:before{ - content:""} - -.fa-share-alt:before{ - content:""} - -.fa-share-alt-square:before{ - content:""} - -.fa-bomb:before{ - content:""} - -.fa,.rst-content .admonition-title,.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink,.icon,.wy-dropdown .caret,.wy-inline-validate.wy-inline-validate-success .wy-input-context,.wy-inline-validate.wy-inline-validate-danger .wy-input-context,.wy-inline-validate.wy-inline-validate-warning .wy-input-context,.wy-inline-validate.wy-inline-validate-info .wy-input-context{ - font-family:inherit} - -.fa:before,.rst-content .admonition-title:before,.rst-content h1 .headerlink:before,.rst-content h2 .headerlink:before,.rst-content h3 .headerlink:before,.rst-content h4 .headerlink:before,.rst-content h5 .headerlink:before,.rst-content h6 .headerlink:before,.rst-content dl dt .headerlink:before,.icon:before,.wy-dropdown .caret:before,.wy-inline-validate.wy-inline-validate-success .wy-input-context:before,.wy-inline-validate.wy-inline-validate-danger .wy-input-context:before,.wy-inline-validate.wy-inline-validate-warning .wy-input-context:before,.wy-inline-validate.wy-inline-validate-info .wy-input-context:before{ - font-family:"FontAwesome"; - display:inline-block; - font-style:normal; - font-weight:normal; - line-height:1; - text-decoration:inherit} - -a .fa,a .rst-content .admonition-title,.rst-content a .admonition-title,a .rst-content h1 .headerlink,.rst-content h1 a .headerlink,a .rst-content h2 .headerlink,.rst-content h2 a .headerlink,a .rst-content h3 .headerlink,.rst-content h3 a .headerlink,a .rst-content h4 .headerlink,.rst-content h4 a .headerlink,a .rst-content h5 .headerlink,.rst-content h5 a .headerlink,a .rst-content h6 .headerlink,.rst-content h6 a .headerlink,a .rst-content dl dt .headerlink,.rst-content dl dt a .headerlink,a .icon{ - display:inline-block; - text-decoration:inherit} - -.btn .fa,.btn .rst-content .admonition-title,.rst-content .btn .admonition-title,.btn .rst-content h1 .headerlink,.rst-content h1 .btn .headerlink,.btn .rst-content h2 .headerlink,.rst-content h2 .btn .headerlink,.btn .rst-content h3 .headerlink,.rst-content h3 .btn .headerlink,.btn .rst-content h4 .headerlink,.rst-content h4 .btn .headerlink,.btn .rst-content h5 .headerlink,.rst-content h5 .btn .headerlink,.btn .rst-content h6 .headerlink,.rst-content h6 .btn .headerlink,.btn .rst-content dl dt .headerlink,.rst-content dl dt .btn .headerlink,.btn .icon,.nav .fa,.nav .rst-content .admonition-title,.rst-content .nav .admonition-title,.nav .rst-content h1 .headerlink,.rst-content h1 .nav .headerlink,.nav .rst-content h2 .headerlink,.rst-content h2 .nav .headerlink,.nav .rst-content h3 .headerlink,.rst-content h3 .nav .headerlink,.nav .rst-content h4 .headerlink,.rst-content h4 .nav .headerlink,.nav .rst-content h5 .headerlink,.rst-content h5 .nav .headerlink,.nav .rst-content h6 .headerlink,.rst-content h6 .nav .headerlink,.nav .rst-content dl dt .headerlink,.rst-content dl dt .nav .headerlink,.nav .icon{ - display:inline} - -.btn .fa.fa-large,.btn .rst-content .fa-large.admonition-title,.rst-content .btn .fa-large.admonition-title,.btn .rst-content h1 .fa-large.headerlink,.rst-content h1 .btn .fa-large.headerlink,.btn .rst-content h2 .fa-large.headerlink,.rst-content h2 .btn .fa-large.headerlink,.btn .rst-content h3 .fa-large.headerlink,.rst-content h3 .btn .fa-large.headerlink,.btn .rst-content h4 .fa-large.headerlink,.rst-content h4 .btn .fa-large.headerlink,.btn .rst-content h5 .fa-large.headerlink,.rst-content h5 .btn .fa-large.headerlink,.btn .rst-content h6 .fa-large.headerlink,.rst-content h6 .btn .fa-large.headerlink,.btn .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .btn .fa-large.headerlink,.btn .fa-large.icon,.nav .fa.fa-large,.nav .rst-content .fa-large.admonition-title,.rst-content .nav .fa-large.admonition-title,.nav .rst-content h1 .fa-large.headerlink,.rst-content h1 .nav .fa-large.headerlink,.nav .rst-content h2 .fa-large.headerlink,.rst-content h2 .nav .fa-large.headerlink,.nav .rst-content h3 .fa-large.headerlink,.rst-content h3 .nav .fa-large.headerlink,.nav .rst-content h4 .fa-large.headerlink,.rst-content h4 .nav .fa-large.headerlink,.nav .rst-content h5 .fa-large.headerlink,.rst-content h5 .nav .fa-large.headerlink,.nav .rst-content h6 .fa-large.headerlink,.rst-content h6 .nav .fa-large.headerlink,.nav .rst-content dl dt .fa-large.headerlink,.rst-content dl dt .nav .fa-large.headerlink,.nav .fa-large.icon{ - line-height:0.9em} - -.btn .fa.fa-spin,.btn .rst-content .fa-spin.admonition-title,.rst-content .btn .fa-spin.admonition-title,.btn .rst-content h1 .fa-spin.headerlink,.rst-content h1 .btn .fa-spin.headerlink,.btn .rst-content h2 .fa-spin.headerlink,.rst-content h2 .btn .fa-spin.headerlink,.btn .rst-content h3 .fa-spin.headerlink,.rst-content h3 .btn .fa-spin.headerlink,.btn .rst-content h4 .fa-spin.headerlink,.rst-content h4 .btn .fa-spin.headerlink,.btn .rst-content h5 .fa-spin.headerlink,.rst-content h5 .btn .fa-spin.headerlink,.btn .rst-content h6 .fa-spin.headerlink,.rst-content h6 .btn .fa-spin.headerlink,.btn .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .btn .fa-spin.headerlink,.btn .fa-spin.icon,.nav .fa.fa-spin,.nav .rst-content .fa-spin.admonition-title,.rst-content .nav .fa-spin.admonition-title,.nav .rst-content h1 .fa-spin.headerlink,.rst-content h1 .nav .fa-spin.headerlink,.nav .rst-content h2 .fa-spin.headerlink,.rst-content h2 .nav .fa-spin.headerlink,.nav .rst-content h3 .fa-spin.headerlink,.rst-content h3 .nav .fa-spin.headerlink,.nav .rst-content h4 .fa-spin.headerlink,.rst-content h4 .nav .fa-spin.headerlink,.nav .rst-content h5 .fa-spin.headerlink,.rst-content h5 .nav .fa-spin.headerlink,.nav .rst-content h6 .fa-spin.headerlink,.rst-content h6 .nav .fa-spin.headerlink,.nav .rst-content dl dt .fa-spin.headerlink,.rst-content dl dt .nav .fa-spin.headerlink,.nav .fa-spin.icon{ - display:inline-block} - -.btn.fa:before,.rst-content .btn.admonition-title:before,.rst-content h1 .btn.headerlink:before,.rst-content h2 .btn.headerlink:before,.rst-content h3 .btn.headerlink:before,.rst-content h4 .btn.headerlink:before,.rst-content h5 .btn.headerlink:before,.rst-content h6 .btn.headerlink:before,.rst-content dl dt .btn.headerlink:before,.btn.icon:before{ - opacity:0.5; - -webkit-transition:opacity 0.05s ease-in; - -moz-transition:opacity 0.05s ease-in; - transition:opacity 0.05s ease-in} - -.btn.fa:hover:before,.rst-content .btn.admonition-title:hover:before,.rst-content h1 .btn.headerlink:hover:before,.rst-content h2 .btn.headerlink:hover:before,.rst-content h3 .btn.headerlink:hover:before,.rst-content h4 .btn.headerlink:hover:before,.rst-content h5 .btn.headerlink:hover:before,.rst-content h6 .btn.headerlink:hover:before,.rst-content dl dt .btn.headerlink:hover:before,.btn.icon:hover:before{ - opacity:1} - -.btn-mini .fa:before,.btn-mini .rst-content .admonition-title:before,.rst-content .btn-mini .admonition-title:before,.btn-mini .rst-content h1 .headerlink:before,.rst-content h1 .btn-mini .headerlink:before,.btn-mini .rst-content h2 .headerlink:before,.rst-content h2 .btn-mini .headerlink:before,.btn-mini .rst-content h3 .headerlink:before,.rst-content h3 .btn-mini .headerlink:before,.btn-mini .rst-content h4 .headerlink:before,.rst-content h4 .btn-mini .headerlink:before,.btn-mini .rst-content h5 .headerlink:before,.rst-content h5 .btn-mini .headerlink:before,.btn-mini .rst-content h6 .headerlink:before,.rst-content h6 .btn-mini .headerlink:before,.btn-mini .rst-content dl dt .headerlink:before,.rst-content dl dt .btn-mini .headerlink:before,.btn-mini .icon:before{ - font-size:14px; - vertical-align:-15%} - -.wy-alert,.rst-content .note,.rst-content .attention,.rst-content .caution,.rst-content .danger,.rst-content .error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .warning,.rst-content .seealso,.rst-content .admonition-todo{ - padding:12px; - line-height:24px; - margin-bottom:24px; - background:#e7f2fa} - -.wy-alert-title,.rst-content .admonition-title{ - color:#fff; - font-weight:bold; - display:block; - color:#fff; - background:#6ab0de; - margin:-12px; - padding:6px 12px; - margin-bottom:12px} - -.wy-alert.wy-alert-danger,.rst-content .wy-alert-danger.note,.rst-content .wy-alert-danger.attention,.rst-content .wy-alert-danger.caution,.rst-content .danger,.rst-content .error,.rst-content .wy-alert-danger.hint,.rst-content .wy-alert-danger.important,.rst-content .wy-alert-danger.tip,.rst-content .wy-alert-danger.warning,.rst-content .wy-alert-danger.seealso,.rst-content .wy-alert-danger.admonition-todo{ - background:#fdf3f2} - -.wy-alert.wy-alert-danger .wy-alert-title,.rst-content .wy-alert-danger.note .wy-alert-title,.rst-content .wy-alert-danger.attention .wy-alert-title,.rst-content .wy-alert-danger.caution .wy-alert-title,.rst-content .danger .wy-alert-title,.rst-content .error .wy-alert-title,.rst-content .wy-alert-danger.hint .wy-alert-title,.rst-content .wy-alert-danger.important .wy-alert-title,.rst-content .wy-alert-danger.tip .wy-alert-title,.rst-content .wy-alert-danger.warning .wy-alert-title,.rst-content .wy-alert-danger.seealso .wy-alert-title,.rst-content .wy-alert-danger.admonition-todo .wy-alert-title,.wy-alert.wy-alert-danger .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-danger .admonition-title,.rst-content .wy-alert-danger.note .admonition-title,.rst-content .wy-alert-danger.attention .admonition-title,.rst-content .wy-alert-danger.caution .admonition-title,.rst-content .danger .admonition-title,.rst-content .error .admonition-title,.rst-content .wy-alert-danger.hint .admonition-title,.rst-content .wy-alert-danger.important .admonition-title,.rst-content .wy-alert-danger.tip .admonition-title,.rst-content .wy-alert-danger.warning .admonition-title,.rst-content .wy-alert-danger.seealso .admonition-title,.rst-content .wy-alert-danger.admonition-todo .admonition-title{ - background:#f29f97} - -.wy-alert.wy-alert-warning,.rst-content .wy-alert-warning.note,.rst-content .attention,.rst-content .caution,.rst-content .wy-alert-warning.danger,.rst-content .wy-alert-warning.error,.rst-content .wy-alert-warning.hint,.rst-content .wy-alert-warning.important,.rst-content .wy-alert-warning.tip,.rst-content .warning,.rst-content .wy-alert-warning.seealso,.rst-content .admonition-todo{ - background:#ffedcc} - -.wy-alert.wy-alert-warning .wy-alert-title,.rst-content .wy-alert-warning.note .wy-alert-title,.rst-content .attention .wy-alert-title,.rst-content .caution .wy-alert-title,.rst-content .wy-alert-warning.danger .wy-alert-title,.rst-content .wy-alert-warning.error .wy-alert-title,.rst-content .wy-alert-warning.hint .wy-alert-title,.rst-content .wy-alert-warning.important .wy-alert-title,.rst-content .wy-alert-warning.tip .wy-alert-title,.rst-content .warning .wy-alert-title,.rst-content .wy-alert-warning.seealso .wy-alert-title,.rst-content .admonition-todo .wy-alert-title,.wy-alert.wy-alert-warning .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-warning .admonition-title,.rst-content .wy-alert-warning.note .admonition-title,.rst-content .attention .admonition-title,.rst-content .caution .admonition-title,.rst-content .wy-alert-warning.danger .admonition-title,.rst-content .wy-alert-warning.error .admonition-title,.rst-content .wy-alert-warning.hint .admonition-title,.rst-content .wy-alert-warning.important .admonition-title,.rst-content .wy-alert-warning.tip .admonition-title,.rst-content .warning .admonition-title,.rst-content .wy-alert-warning.seealso .admonition-title,.rst-content .admonition-todo .admonition-title{ - background:#f0b37e} - -.wy-alert.wy-alert-info,.rst-content .note,.rst-content .wy-alert-info.attention,.rst-content .wy-alert-info.caution,.rst-content .wy-alert-info.danger,.rst-content .wy-alert-info.error,.rst-content .wy-alert-info.hint,.rst-content .wy-alert-info.important,.rst-content .wy-alert-info.tip,.rst-content .wy-alert-info.warning,.rst-content .seealso,.rst-content .wy-alert-info.admonition-todo{ - background:#e7f2fa} - -.wy-alert.wy-alert-info .wy-alert-title,.rst-content .note .wy-alert-title,.rst-content .wy-alert-info.attention .wy-alert-title,.rst-content .wy-alert-info.caution .wy-alert-title,.rst-content .wy-alert-info.danger .wy-alert-title,.rst-content .wy-alert-info.error .wy-alert-title,.rst-content .wy-alert-info.hint .wy-alert-title,.rst-content .wy-alert-info.important .wy-alert-title,.rst-content .wy-alert-info.tip .wy-alert-title,.rst-content .wy-alert-info.warning .wy-alert-title,.rst-content .seealso .wy-alert-title,.rst-content .wy-alert-info.admonition-todo .wy-alert-title,.wy-alert.wy-alert-info .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-info .admonition-title,.rst-content .note .admonition-title,.rst-content .wy-alert-info.attention .admonition-title,.rst-content .wy-alert-info.caution .admonition-title,.rst-content .wy-alert-info.danger .admonition-title,.rst-content .wy-alert-info.error .admonition-title,.rst-content .wy-alert-info.hint .admonition-title,.rst-content .wy-alert-info.important .admonition-title,.rst-content .wy-alert-info.tip .admonition-title,.rst-content .wy-alert-info.warning .admonition-title,.rst-content .seealso .admonition-title,.rst-content .wy-alert-info.admonition-todo .admonition-title{ - background:#6ab0de} - -.wy-alert.wy-alert-success,.rst-content .wy-alert-success.note,.rst-content .wy-alert-success.attention,.rst-content .wy-alert-success.caution,.rst-content .wy-alert-success.danger,.rst-content .wy-alert-success.error,.rst-content .hint,.rst-content .important,.rst-content .tip,.rst-content .wy-alert-success.warning,.rst-content .wy-alert-success.seealso,.rst-content .wy-alert-success.admonition-todo{ - background:#dbfaf4} - -.wy-alert.wy-alert-success .wy-alert-title,.rst-content .wy-alert-success.note .wy-alert-title,.rst-content .wy-alert-success.attention .wy-alert-title,.rst-content .wy-alert-success.caution .wy-alert-title,.rst-content .wy-alert-success.danger .wy-alert-title,.rst-content .wy-alert-success.error .wy-alert-title,.rst-content .hint .wy-alert-title,.rst-content .important .wy-alert-title,.rst-content .tip .wy-alert-title,.rst-content .wy-alert-success.warning .wy-alert-title,.rst-content .wy-alert-success.seealso .wy-alert-title,.rst-content .wy-alert-success.admonition-todo .wy-alert-title,.wy-alert.wy-alert-success .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-success .admonition-title,.rst-content .wy-alert-success.note .admonition-title,.rst-content .wy-alert-success.attention .admonition-title,.rst-content .wy-alert-success.caution .admonition-title,.rst-content .wy-alert-success.danger .admonition-title,.rst-content .wy-alert-success.error .admonition-title,.rst-content .hint .admonition-title,.rst-content .important .admonition-title,.rst-content .tip .admonition-title,.rst-content .wy-alert-success.warning .admonition-title,.rst-content .wy-alert-success.seealso .admonition-title,.rst-content .wy-alert-success.admonition-todo .admonition-title{ - background:#1abc9c} - -.wy-alert.wy-alert-neutral,.rst-content .wy-alert-neutral.note,.rst-content .wy-alert-neutral.attention,.rst-content .wy-alert-neutral.caution,.rst-content .wy-alert-neutral.danger,.rst-content .wy-alert-neutral.error,.rst-content .wy-alert-neutral.hint,.rst-content .wy-alert-neutral.important,.rst-content .wy-alert-neutral.tip,.rst-content .wy-alert-neutral.warning,.rst-content .wy-alert-neutral.seealso,.rst-content .wy-alert-neutral.admonition-todo{ - background:#f3f6f6} - -.wy-alert.wy-alert-neutral .wy-alert-title,.rst-content .wy-alert-neutral.note .wy-alert-title,.rst-content .wy-alert-neutral.attention .wy-alert-title,.rst-content .wy-alert-neutral.caution .wy-alert-title,.rst-content .wy-alert-neutral.danger .wy-alert-title,.rst-content .wy-alert-neutral.error .wy-alert-title,.rst-content .wy-alert-neutral.hint .wy-alert-title,.rst-content .wy-alert-neutral.important .wy-alert-title,.rst-content .wy-alert-neutral.tip .wy-alert-title,.rst-content .wy-alert-neutral.warning .wy-alert-title,.rst-content .wy-alert-neutral.seealso .wy-alert-title,.rst-content .wy-alert-neutral.admonition-todo .wy-alert-title,.wy-alert.wy-alert-neutral .rst-content .admonition-title,.rst-content .wy-alert.wy-alert-neutral .admonition-title,.rst-content .wy-alert-neutral.note .admonition-title,.rst-content .wy-alert-neutral.attention .admonition-title,.rst-content .wy-alert-neutral.caution .admonition-title,.rst-content .wy-alert-neutral.danger .admonition-title,.rst-content .wy-alert-neutral.error .admonition-title,.rst-content .wy-alert-neutral.hint .admonition-title,.rst-content .wy-alert-neutral.important .admonition-title,.rst-content .wy-alert-neutral.tip .admonition-title,.rst-content .wy-alert-neutral.warning .admonition-title,.rst-content .wy-alert-neutral.seealso .admonition-title,.rst-content .wy-alert-neutral.admonition-todo .admonition-title{ - color:#404040; - background:#e1e4e5} - -.wy-alert.wy-alert-neutral a,.rst-content .wy-alert-neutral.note a,.rst-content .wy-alert-neutral.attention a,.rst-content .wy-alert-neutral.caution a,.rst-content .wy-alert-neutral.danger a,.rst-content .wy-alert-neutral.error a,.rst-content .wy-alert-neutral.hint a,.rst-content .wy-alert-neutral.important a,.rst-content .wy-alert-neutral.tip a,.rst-content .wy-alert-neutral.warning a,.rst-content .wy-alert-neutral.seealso a,.rst-content .wy-alert-neutral.admonition-todo a{ - color:#2980B9} - -.wy-alert p:last-child,.rst-content .note p:last-child,.rst-content .attention p:last-child,.rst-content .caution p:last-child,.rst-content .danger p:last-child,.rst-content .error p:last-child,.rst-content .hint p:last-child,.rst-content .important p:last-child,.rst-content .tip p:last-child,.rst-content .warning p:last-child,.rst-content .seealso p:last-child,.rst-content .admonition-todo p:last-child{ - margin-bottom:0} - -.wy-tray-container{ - position:fixed; - bottom:0px; - left:0; - z-index:600} - -.wy-tray-container li{ - display:block; - width:300px; - background:transparent; - color:#fff; - text-align:center; - box-shadow:0 5px 5px 0 rgba(0,0,0,0.1); - padding:0 24px; - min-width:20%; - opacity:0; - height:0; - line-height:56px; - overflow:hidden; - -webkit-transition:all 0.3s ease-in; - -moz-transition:all 0.3s ease-in; - transition:all 0.3s ease-in} - -.wy-tray-container li.wy-tray-item-success{ - background:#27AE60} - -.wy-tray-container li.wy-tray-item-info{ - background:#2980B9} - -.wy-tray-container li.wy-tray-item-warning{ - background:#E67E22} - -.wy-tray-container li.wy-tray-item-danger{ - background:#E74C3C} - -.wy-tray-container li.on{ - opacity:1; - height:56px} - -@media screen and (max-width: 768px){ - .wy-tray-container{ - bottom:auto; - top:0; - width:100%} - - .wy-tray-container li{ - width:100%} - -} - -button{ - font-size:100%; - margin:0; - vertical-align:baseline; - *vertical-align:middle; - cursor:pointer; - line-height:normal; - -webkit-appearance:button; - *overflow:visible} - -button::-moz-focus-inner,input::-moz-focus-inner{ - border:0; - padding:0} - -button[disabled]{ - cursor:default} - -.btn{ - display:inline-block; - border-radius:2px; - line-height:normal; - white-space:nowrap; - text-align:center; - cursor:pointer; - font-size:100%; - padding:6px 12px 8px 12px; - color:#fff; - border:1px solid rgba(0,0,0,0.1); - background-color:#27AE60; - text-decoration:none; - font-weight:normal; - font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif; - box-shadow:0px 1px 2px -1px rgba(255,255,255,0.5) inset,0px -2px 0px 0px rgba(0,0,0,0.1) inset; - outline-none:false; - vertical-align:middle; - *display:inline; - zoom:1; - -webkit-user-drag:none; - -webkit-user-select:none; - -moz-user-select:none; - -ms-user-select:none; - user-select:none; - -webkit-transition:all 0.1s linear; - -moz-transition:all 0.1s linear; - transition:all 0.1s linear} - -.btn-hover{ - background:#2e8ece; - color:#fff} - -.btn:hover{ - background:#2cc36b; - color:#fff} - -.btn:focus{ - background:#2cc36b; - outline:0} - -.btn:active{ - box-shadow:0px -1px 0px 0px rgba(0,0,0,0.05) inset,0px 2px 0px 0px rgba(0,0,0,0.1) inset; - padding:8px 12px 6px 12px} - -.btn:visited{ - color:#fff} - -.btn:disabled{ - background-image:none; - filter:progid:DXImageTransform.Microsoft.gradient(enabled = false); - filter:alpha(opacity=40); - opacity:0.4; - cursor:not-allowed; - box-shadow:none} - -.btn-disabled{ - background-image:none; - filter:progid:DXImageTransform.Microsoft.gradient(enabled = false); - filter:alpha(opacity=40); - opacity:0.4; - cursor:not-allowed; - box-shadow:none} - -.btn-disabled:hover,.btn-disabled:focus,.btn-disabled:active{ - background-image:none; - filter:progid:DXImageTransform.Microsoft.gradient(enabled = false); - filter:alpha(opacity=40); - opacity:0.4; - cursor:not-allowed; - box-shadow:none} - -.btn::-moz-focus-inner{ - padding:0; - border:0} - -.btn-small{ - font-size:80%} - -.btn-info{ - background-color:#2980B9 !important} - -.btn-info:hover{ - background-color:#2e8ece !important} - -.btn-neutral{ - background-color:#f3f6f6 !important; - color:#404040 !important} - -.btn-neutral:hover{ - background-color:#e5ebeb !important; - color:#404040} - -.btn-neutral:visited{ - color:#404040 !important} - -.btn-success{ - background-color:#27AE60 !important} - -.btn-success:hover{ - background-color:#295 !important} - -.btn-danger{ - background-color:#E74C3C !important} - -.btn-danger:hover{ - background-color:#ea6153 !important} - -.btn-warning{ - background-color:#E67E22 !important} - -.btn-warning:hover{ - background-color:#e98b39 !important} - -.btn-invert{ - background-color:#222} - -.btn-invert:hover{ - background-color:#2f2f2f !important} - -.btn-link{ - background-color:transparent !important; - color:#2980B9; - box-shadow:none; - border-color:transparent !important} - -.btn-link:hover{ - background-color:transparent !important; - color:#409ad5 !important; - box-shadow:none} - -.btn-link:active{ - background-color:transparent !important; - color:#409ad5 !important; - box-shadow:none} - -.btn-link:visited{ - color:#9B59B6} - -.wy-btn-group .btn,.wy-control .btn{ - vertical-align:middle} - -.wy-btn-group{ - margin-bottom:24px; - *zoom:1} - -.wy-btn-group:before,.wy-btn-group:after{ - display:table; - content:""} - -.wy-btn-group:after{ - clear:both} - -.wy-dropdown{ - position:relative; - display:inline-block} - -.wy-dropdown-active .wy-dropdown-menu{ - display:block} - -.wy-dropdown-menu{ - position:absolute; - left:0; - display:none; - float:left; - top:100%; - min-width:100%; - background:#fcfcfc; - z-index:100; - border:solid 1px #cfd7dd; - box-shadow:0 2px 2px 0 rgba(0,0,0,0.1); - padding:12px} - -.wy-dropdown-menu>dd>a{ - display:block; - clear:both; - color:#404040; - white-space:nowrap; - font-size:90%; - padding:0 12px; - cursor:pointer} - -.wy-dropdown-menu>dd>a:hover{ - background:#2980B9; - color:#fff} - -.wy-dropdown-menu>dd.divider{ - border-top:solid 1px #cfd7dd; - margin:6px 0} - -.wy-dropdown-menu>dd.search{ - padding-bottom:12px} - -.wy-dropdown-menu>dd.search input[type="search"]{ - width:100%} - -.wy-dropdown-menu>dd.call-to-action{ - background:#e3e3e3; - text-transform:uppercase; - font-weight:500; - font-size:80%} - -.wy-dropdown-menu>dd.call-to-action:hover{ - background:#e3e3e3} - -.wy-dropdown-menu>dd.call-to-action .btn{ - color:#fff} - -.wy-dropdown.wy-dropdown-up .wy-dropdown-menu{ - bottom:100%; - top:auto; - left:auto; - right:0} - -.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu{ - background:#fcfcfc; - margin-top:2px} - -.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a{ - padding:6px 12px} - -.wy-dropdown.wy-dropdown-bubble .wy-dropdown-menu a:hover{ - background:#2980B9; - color:#fff} - -.wy-dropdown.wy-dropdown-left .wy-dropdown-menu{ - right:0; - text-align:right} - -.wy-dropdown-arrow:before{ - content:" "; - border-bottom:5px solid #f5f5f5; - border-left:5px solid transparent; - border-right:5px solid transparent; - position:absolute; - display:block; - top:-4px; - left:50%; - margin-left:-3px} - -.wy-dropdown-arrow.wy-dropdown-arrow-left:before{ - left:11px} - -.wy-form-stacked select{ - display:block} - -.wy-form-aligned input,.wy-form-aligned textarea,.wy-form-aligned select,.wy-form-aligned .wy-help-inline,.wy-form-aligned label{ - display:inline-block; - *display:inline; - *zoom:1; - vertical-align:middle} - -.wy-form-aligned .wy-control-group>label{ - display:inline-block; - vertical-align:middle; - width:10em; - margin:6px 12px 0 0; - float:left} - -.wy-form-aligned .wy-control{ - float:left} - -.wy-form-aligned .wy-control label{ - display:block} - -.wy-form-aligned .wy-control select{ - margin-top:6px} - -fieldset{ - border:0; - margin:0; - padding:0} - -legend{ - display:block; - width:100%; - border:0; - padding:0; - white-space:normal; - margin-bottom:24px; - font-size:150%; - *margin-left:-7px} - -label{ - display:block; - margin:0 0 0.3125em 0; - color:#333; - font-size:90%} - -input,select,textarea{ - font-size:100%; - margin:0; - vertical-align:baseline; - *vertical-align:middle} - -.wy-control-group{ - margin-bottom:24px; - *zoom:1; - max-width:68em; - margin-left:auto; - margin-right:auto; - *zoom:1} - -.wy-control-group:before,.wy-control-group:after{ - display:table; - content:""} - -.wy-control-group:after{ - clear:both} - -.wy-control-group:before,.wy-control-group:after{ - display:table; - content:""} - -.wy-control-group:after{ - clear:both} - -.wy-control-group.wy-control-group-required>label:after{ - content:" *"; - color:#E74C3C} - -.wy-control-group .wy-form-full,.wy-control-group .wy-form-halves,.wy-control-group .wy-form-thirds{ - padding-bottom:12px} - -.wy-control-group .wy-form-full select,.wy-control-group .wy-form-halves select,.wy-control-group .wy-form-thirds select{ - width:100%} - -.wy-control-group .wy-form-full input[type="text"],.wy-control-group .wy-form-full input[type="password"],.wy-control-group .wy-form-full input[type="email"],.wy-control-group .wy-form-full input[type="url"],.wy-control-group .wy-form-full input[type="date"],.wy-control-group .wy-form-full input[type="month"],.wy-control-group .wy-form-full input[type="time"],.wy-control-group .wy-form-full input[type="datetime"],.wy-control-group .wy-form-full input[type="datetime-local"],.wy-control-group .wy-form-full input[type="week"],.wy-control-group .wy-form-full input[type="number"],.wy-control-group .wy-form-full input[type="search"],.wy-control-group .wy-form-full input[type="tel"],.wy-control-group .wy-form-full input[type="color"],.wy-control-group .wy-form-halves input[type="text"],.wy-control-group .wy-form-halves input[type="password"],.wy-control-group .wy-form-halves input[type="email"],.wy-control-group .wy-form-halves input[type="url"],.wy-control-group .wy-form-halves input[type="date"],.wy-control-group .wy-form-halves input[type="month"],.wy-control-group .wy-form-halves input[type="time"],.wy-control-group .wy-form-halves input[type="datetime"],.wy-control-group .wy-form-halves input[type="datetime-local"],.wy-control-group .wy-form-halves input[type="week"],.wy-control-group .wy-form-halves input[type="number"],.wy-control-group .wy-form-halves input[type="search"],.wy-control-group .wy-form-halves input[type="tel"],.wy-control-group .wy-form-halves input[type="color"],.wy-control-group .wy-form-thirds input[type="text"],.wy-control-group .wy-form-thirds input[type="password"],.wy-control-group .wy-form-thirds input[type="email"],.wy-control-group .wy-form-thirds input[type="url"],.wy-control-group .wy-form-thirds input[type="date"],.wy-control-group .wy-form-thirds input[type="month"],.wy-control-group .wy-form-thirds input[type="time"],.wy-control-group .wy-form-thirds input[type="datetime"],.wy-control-group .wy-form-thirds input[type="datetime-local"],.wy-control-group .wy-form-thirds input[type="week"],.wy-control-group .wy-form-thirds input[type="number"],.wy-control-group .wy-form-thirds input[type="search"],.wy-control-group .wy-form-thirds input[type="tel"],.wy-control-group .wy-form-thirds input[type="color"]{ - width:100%} - -.wy-control-group .wy-form-full{ - float:left; - display:block; - margin-right:2.35765%; - width:100%; - margin-right:0} - -.wy-control-group .wy-form-full:last-child{ - margin-right:0} - -.wy-control-group .wy-form-halves{ - float:left; - display:block; - margin-right:2.35765%; - width:48.82117%} - -.wy-control-group .wy-form-halves:last-child{ - margin-right:0} - -.wy-control-group .wy-form-halves:nth-of-type(2n){ - margin-right:0} - -.wy-control-group .wy-form-halves:nth-of-type(2n+1){ - clear:left} - -.wy-control-group .wy-form-thirds{ - float:left; - display:block; - margin-right:2.35765%; - width:31.76157%} - -.wy-control-group .wy-form-thirds:last-child{ - margin-right:0} - -.wy-control-group .wy-form-thirds:nth-of-type(3n){ - margin-right:0} - -.wy-control-group .wy-form-thirds:nth-of-type(3n+1){ - clear:left} - -.wy-control-group.wy-control-group-no-input .wy-control{ - margin:6px 0 0 0; - font-size:90%} - -.wy-control-no-input{ - display:inline-block; - margin:6px 0 0 0; - font-size:90%} - -.wy-control-group.fluid-input input[type="text"],.wy-control-group.fluid-input input[type="password"],.wy-control-group.fluid-input input[type="email"],.wy-control-group.fluid-input input[type="url"],.wy-control-group.fluid-input input[type="date"],.wy-control-group.fluid-input input[type="month"],.wy-control-group.fluid-input input[type="time"],.wy-control-group.fluid-input input[type="datetime"],.wy-control-group.fluid-input input[type="datetime-local"],.wy-control-group.fluid-input input[type="week"],.wy-control-group.fluid-input input[type="number"],.wy-control-group.fluid-input input[type="search"],.wy-control-group.fluid-input input[type="tel"],.wy-control-group.fluid-input input[type="color"]{ - width:100%} - -.wy-form-message-inline{ - display:inline-block; - padding-left:0.3em; - color:#666; - vertical-align:middle; - font-size:90%} - -.wy-form-message{ - display:block; - color:#999; - font-size:70%; - margin-top:0.3125em; - font-style:italic} - -input{ - line-height:normal} - -input[type="button"],input[type="reset"],input[type="submit"]{ - -webkit-appearance:button; - cursor:pointer; - font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif; - *overflow:visible} - -input[type="text"],input[type="password"],input[type="email"],input[type="url"],input[type="date"],input[type="month"],input[type="time"],input[type="datetime"],input[type="datetime-local"],input[type="week"],input[type="number"],input[type="search"],input[type="tel"],input[type="color"]{ - -webkit-appearance:none; - padding:6px; - display:inline-block; - border:1px solid #ccc; - font-size:80%; - font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif; - box-shadow:inset 0 1px 3px #ddd; - border-radius:0; - -webkit-transition:border 0.3s linear; - -moz-transition:border 0.3s linear; - transition:border 0.3s linear} - -input[type="datetime-local"]{ - padding:0.34375em 0.625em} - -input[disabled]{ - cursor:default} - -input[type="checkbox"],input[type="radio"]{ - -webkit-box-sizing:border-box; - -moz-box-sizing:border-box; - box-sizing:border-box; - padding:0; - margin-right:0.3125em; - *height:13px; - *width:13px} - -input[type="search"]{ - -webkit-box-sizing:border-box; - -moz-box-sizing:border-box; - box-sizing:border-box} - -input[type="search"]::-webkit-search-cancel-button,input[type="search"]::-webkit-search-decoration{ - -webkit-appearance:none} - -input[type="text"]:focus,input[type="password"]:focus,input[type="email"]:focus,input[type="url"]:focus,input[type="date"]:focus,input[type="month"]:focus,input[type="time"]:focus,input[type="datetime"]:focus,input[type="datetime-local"]:focus,input[type="week"]:focus,input[type="number"]:focus,input[type="search"]:focus,input[type="tel"]:focus,input[type="color"]:focus{ - outline:0; - outline:thin dotted \9; - border-color:#333} - -input.no-focus:focus{ - border-color:#ccc !important} - -input[type="file"]:focus,input[type="radio"]:focus,input[type="checkbox"]:focus{ - outline:thin dotted #333; - outline:1px auto #129FEA} - -input[type="text"][disabled],input[type="password"][disabled],input[type="email"][disabled],input[type="url"][disabled],input[type="date"][disabled],input[type="month"][disabled],input[type="time"][disabled],input[type="datetime"][disabled],input[type="datetime-local"][disabled],input[type="week"][disabled],input[type="number"][disabled],input[type="search"][disabled],input[type="tel"][disabled],input[type="color"][disabled]{ - cursor:not-allowed; - background-color:#f3f6f6; - color:#cad2d3} - -input:focus:invalid,textarea:focus:invalid,select:focus:invalid{ - color:#E74C3C; - border:1px solid #E74C3C} - -input:focus:invalid:focus,textarea:focus:invalid:focus,select:focus:invalid:focus{ - border-color:#E74C3C} - -input[type="file"]:focus:invalid:focus,input[type="radio"]:focus:invalid:focus,input[type="checkbox"]:focus:invalid:focus{ - outline-color:#E74C3C} - -input.wy-input-large{ - padding:12px; - font-size:100%} - -textarea{ - overflow:auto; - vertical-align:top; - width:100%; - font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif} - -select,textarea{ - padding:0.5em 0.625em; - display:inline-block; - border:1px solid #ccc; - font-size:80%; - box-shadow:inset 0 1px 3px #ddd; - -webkit-transition:border 0.3s linear; - -moz-transition:border 0.3s linear; - transition:border 0.3s linear} - -select{ - border:1px solid #ccc; - background-color:#fff} - -select[multiple]{ - height:auto} - -select:focus,textarea:focus{ - outline:0} - -select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly]{ - cursor:not-allowed; - background-color:#fff; - color:#cad2d3; - border-color:transparent} - -.wy-checkbox,.wy-radio{ - margin:6px 0; - color:#404040; - display:block} - -.wy-checkbox input,.wy-radio input{ - vertical-align:baseline} - -.wy-form-message-inline{ - display:inline-block; - *display:inline; - *zoom:1; - vertical-align:middle} - -.wy-input-prefix,.wy-input-suffix{ - white-space:nowrap; - padding:6px} - -.wy-input-prefix .wy-input-context,.wy-input-suffix .wy-input-context{ - line-height:27px; - padding:0 8px; - display:inline-block; - font-size:80%; - background-color:#f3f6f6; - border:solid 1px #ccc; - color:#999} - -.wy-input-suffix .wy-input-context{ - border-left:0} - -.wy-input-prefix .wy-input-context{ - border-right:0} - -.wy-control-group.wy-control-group-error .wy-form-message,.wy-control-group.wy-control-group-error>label{ - color:#E74C3C} - -.wy-control-group.wy-control-group-error input[type="text"],.wy-control-group.wy-control-group-error input[type="password"],.wy-control-group.wy-control-group-error input[type="email"],.wy-control-group.wy-control-group-error input[type="url"],.wy-control-group.wy-control-group-error input[type="date"],.wy-control-group.wy-control-group-error input[type="month"],.wy-control-group.wy-control-group-error input[type="time"],.wy-control-group.wy-control-group-error input[type="datetime"],.wy-control-group.wy-control-group-error input[type="datetime-local"],.wy-control-group.wy-control-group-error input[type="week"],.wy-control-group.wy-control-group-error input[type="number"],.wy-control-group.wy-control-group-error input[type="search"],.wy-control-group.wy-control-group-error input[type="tel"],.wy-control-group.wy-control-group-error input[type="color"]{ - border:solid 1px #E74C3C} - -.wy-control-group.wy-control-group-error textarea{ - border:solid 1px #E74C3C} - -.wy-inline-validate{ - white-space:nowrap} - -.wy-inline-validate .wy-input-context{ - padding:0.5em 0.625em; - display:inline-block; - font-size:80%} - -.wy-inline-validate.wy-inline-validate-success .wy-input-context{ - color:#27AE60} - -.wy-inline-validate.wy-inline-validate-danger .wy-input-context{ - color:#E74C3C} - -.wy-inline-validate.wy-inline-validate-warning .wy-input-context{ - color:#E67E22} - -.wy-inline-validate.wy-inline-validate-info .wy-input-context{ - color:#2980B9} - -.rotate-90{ - -webkit-transform:rotate(90deg); - -moz-transform:rotate(90deg); - -ms-transform:rotate(90deg); - -o-transform:rotate(90deg); - transform:rotate(90deg)} - -.rotate-180{ - -webkit-transform:rotate(180deg); - -moz-transform:rotate(180deg); - -ms-transform:rotate(180deg); - -o-transform:rotate(180deg); - transform:rotate(180deg)} - -.rotate-270{ - -webkit-transform:rotate(270deg); - -moz-transform:rotate(270deg); - -ms-transform:rotate(270deg); - -o-transform:rotate(270deg); - transform:rotate(270deg)} - -.mirror{ - -webkit-transform:scaleX(-1); - -moz-transform:scaleX(-1); - -ms-transform:scaleX(-1); - -o-transform:scaleX(-1); - transform:scaleX(-1)} - -.mirror.rotate-90{ - -webkit-transform:scaleX(-1) rotate(90deg); - -moz-transform:scaleX(-1) rotate(90deg); - -ms-transform:scaleX(-1) rotate(90deg); - -o-transform:scaleX(-1) rotate(90deg); - transform:scaleX(-1) rotate(90deg)} - -.mirror.rotate-180{ - -webkit-transform:scaleX(-1) rotate(180deg); - -moz-transform:scaleX(-1) rotate(180deg); - -ms-transform:scaleX(-1) rotate(180deg); - -o-transform:scaleX(-1) rotate(180deg); - transform:scaleX(-1) rotate(180deg)} - -.mirror.rotate-270{ - -webkit-transform:scaleX(-1) rotate(270deg); - -moz-transform:scaleX(-1) rotate(270deg); - -ms-transform:scaleX(-1) rotate(270deg); - -o-transform:scaleX(-1) rotate(270deg); - transform:scaleX(-1) rotate(270deg)} - -@media only screen and (max-width: 480px){ - .wy-form button[type="submit"]{ - margin:0.7em 0 0} - - .wy-form input[type="text"],.wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{ - margin-bottom:0.3em; - display:block} - - .wy-form label{ - margin-bottom:0.3em; - display:block} - - .wy-form input[type="password"],.wy-form input[type="email"],.wy-form input[type="url"],.wy-form input[type="date"],.wy-form input[type="month"],.wy-form input[type="time"],.wy-form input[type="datetime"],.wy-form input[type="datetime-local"],.wy-form input[type="week"],.wy-form input[type="number"],.wy-form input[type="search"],.wy-form input[type="tel"],.wy-form input[type="color"]{ - margin-bottom:0} - - .wy-form-aligned .wy-control-group label{ - margin-bottom:0.3em; - text-align:left; - display:block; - width:100%} - - .wy-form-aligned .wy-control{ - margin:1.5em 0 0 0} - - .wy-form .wy-help-inline,.wy-form-message-inline,.wy-form-message{ - display:block; - font-size:80%; - padding:6px 0} - -} - -@media screen and (max-width: 768px){ - .tablet-hide{ - display:none} - -} - -@media screen and (max-width: 480px){ - .mobile-hide{ - display:none} - -} - -.float-left{ - float:left} - -.float-right{ - float:right} - -.full-width{ - width:100%} - -.wy-table,.rst-content table.docutils,.rst-content table.field-list{ - border-collapse:collapse; - border-spacing:0; - empty-cells:show; - margin-bottom:24px} - -.wy-table caption,.rst-content table.docutils caption,.rst-content table.field-list caption{ - color:#000; - font:italic 85%/1 arial,sans-serif; - padding:1em 0; - text-align:center} - -.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td,.wy-table th,.rst-content table.docutils th,.rst-content table.field-list th{ - font-size:90%; - margin:0; - overflow:visible; - padding:8px 16px} - -.wy-table td:first-child,.rst-content table.docutils td:first-child,.rst-content table.field-list td:first-child,.wy-table th:first-child,.rst-content table.docutils th:first-child,.rst-content table.field-list th:first-child{ - border-left-width:0} - -.wy-table thead,.rst-content table.docutils thead,.rst-content table.field-list thead{ - color:#000; - text-align:left; - vertical-align:bottom; - white-space:nowrap} - -.wy-table thead th,.rst-content table.docutils thead th,.rst-content table.field-list thead th{ - font-weight:bold; - border-bottom:solid 2px #e1e4e5} - -.wy-table td,.rst-content table.docutils td,.rst-content table.field-list td{ - background-color:transparent; - vertical-align:middle} - -.wy-table td p,.rst-content table.docutils td p,.rst-content table.field-list td p{ - line-height:18px} - -.wy-table td p:last-child,.rst-content table.docutils td p:last-child,.rst-content table.field-list td p:last-child{ - margin-bottom:0} - -.wy-table .wy-table-cell-min,.rst-content table.docutils .wy-table-cell-min,.rst-content table.field-list .wy-table-cell-min{ - width:1%; - padding-right:0} - -.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox],.wy-table .wy-table-cell-min input[type=checkbox],.rst-content table.docutils .wy-table-cell-min input[type=checkbox],.rst-content table.field-list .wy-table-cell-min input[type=checkbox]{ - margin:0} - -.wy-table-secondary{ - color:gray; - font-size:90%} - -.wy-table-tertiary{ - color:gray; - font-size:80%} - -.wy-table-odd td,.wy-table-striped tr:nth-child(2n-1) td,.rst-content table.docutils:not(.field-list) tr:nth-child(2n-1) td{ - background-color:#f3f6f6} - -.wy-table-backed{ - background-color:#f3f6f6} - -.wy-table-bordered-all,.rst-content table.docutils{ - border:1px solid #e1e4e5} - -.wy-table-bordered-all td,.rst-content table.docutils td{ - border-bottom:1px solid #e1e4e5; - border-left:1px solid #e1e4e5} - -.wy-table-bordered-all tbody>tr:last-child td,.rst-content table.docutils tbody>tr:last-child td{ - border-bottom-width:0} - -.wy-table-bordered{ - border:1px solid #e1e4e5} - -.wy-table-bordered-rows td{ - border-bottom:1px solid #e1e4e5} - -.wy-table-bordered-rows tbody>tr:last-child td{ - border-bottom-width:0} - -.wy-table-horizontal tbody>tr:last-child td{ - border-bottom-width:0} - -.wy-table-horizontal td,.wy-table-horizontal th{ - border-width:0 0 1px 0; - border-bottom:1px solid #e1e4e5} - -.wy-table-horizontal tbody>tr:last-child td{ - border-bottom-width:0} - -.wy-table-responsive{ - margin-bottom:24px; - max-width:100%; - overflow:auto} - -.wy-table-responsive table{ - margin-bottom:0 !important} - -.wy-table-responsive table td,.wy-table-responsive table th{ - white-space:nowrap} - -a{ - color:#2980B9; - text-decoration:none; - cursor:pointer} - -a:hover{ - color:#3091d1} - -a:visited{ - color:#9B59B6} - -html{ - height:100%; - overflow-x:hidden} - -body{ - font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif; - font-weight:normal; - color:#404040; - min-height:100%; - overflow-x:hidden; - background:#edf0f2} - -.wy-text-left{ - text-align:left} - -.wy-text-center{ - text-align:center} - -.wy-text-right{ - text-align:right} - -.wy-text-large{ - font-size:120%} - -.wy-text-normal{ - font-size:100%} - -.wy-text-small,small{ - font-size:80%} - -.wy-text-strike{ - text-decoration:line-through} - -.wy-text-warning{ - color:#E67E22 !important} - -a.wy-text-warning:hover{ - color:#eb9950 !important} - -.wy-text-info{ - color:#2980B9 !important} - -a.wy-text-info:hover{ - color:#409ad5 !important} - -.wy-text-success{ - color:#27AE60 !important} - -a.wy-text-success:hover{ - color:#36d278 !important} - -.wy-text-danger{ - color:#E74C3C !important} - -a.wy-text-danger:hover{ - color:#ed7669 !important} - -.wy-text-neutral{ - color:#404040 !important} - -a.wy-text-neutral:hover{ - color:#595959 !important} - -h1,h2,h3,h4,h5,h6,legend{ - margin-top:0; - font-weight:700; - font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif} - -p{ - line-height:24px; - margin:0; - font-size:16px; - margin-bottom:24px} - -h1{ - font-size:175%} - -h2{ - font-size:150%} - -h3{ - font-size:125%} - -h4{ - font-size:115%} - -h5{ - font-size:110%} - -h6{ - font-size:100%} - -hr{ - display:block; - height:1px; - border:0; - border-top:1px solid #e1e4e5; - margin:24px 0; - padding:0} - -code,.rst-content tt{ - white-space:nowrap; - max-width:100%; - background:#fff; - border:solid 1px #e1e4e5; - font-size:75%; - padding:0 5px; - font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace; - color:#E74C3C; - overflow-x:auto} - -code.code-large,.rst-content tt.code-large{ - font-size:90%} - -.wy-plain-list-disc,.rst-content .section ul,.rst-content .toctree-wrapper ul,article ul{ - list-style:disc; - line-height:24px; - margin-bottom:24px} - -.wy-plain-list-disc li,.rst-content .section ul li,.rst-content .toctree-wrapper ul li,article ul li{ - list-style:disc; - margin-left:24px} - -.wy-plain-list-disc li p:last-child,.rst-content .section ul li p:last-child,.rst-content .toctree-wrapper ul li p:last-child,article ul li p:last-child{ - margin-bottom:0} - -.wy-plain-list-disc li ul,.rst-content .section ul li ul,.rst-content .toctree-wrapper ul li ul,article ul li ul{ - margin-bottom:0} - -.wy-plain-list-disc li li,.rst-content .section ul li li,.rst-content .toctree-wrapper ul li li,article ul li li{ - list-style:circle} - -.wy-plain-list-disc li li li,.rst-content .section ul li li li,.rst-content .toctree-wrapper ul li li li,article ul li li li{ - list-style:square} - -.wy-plain-list-disc li ol li,.rst-content .section ul li ol li,.rst-content .toctree-wrapper ul li ol li,article ul li ol li{ - list-style:decimal} - -.wy-plain-list-decimal,.rst-content .section ol,.rst-content ol.arabic,article ol{ - list-style:decimal; - line-height:24px; - margin-bottom:24px} - -.wy-plain-list-decimal li,.rst-content .section ol li,.rst-content ol.arabic li,article ol li{ - list-style:decimal; - margin-left:24px} - -.wy-plain-list-decimal li p:last-child,.rst-content .section ol li p:last-child,.rst-content ol.arabic li p:last-child,article ol li p:last-child{ - margin-bottom:0} - -.wy-plain-list-decimal li ul,.rst-content .section ol li ul,.rst-content ol.arabic li ul,article ol li ul{ - margin-bottom:0} - -.wy-plain-list-decimal li ul li,.rst-content .section ol li ul li,.rst-content ol.arabic li ul li,article ol li ul li{ - list-style:disc} - -.codeblock-example{ - border:1px solid #e1e4e5; - border-bottom:none; - padding:24px; - padding-top:48px; - font-weight:500; - background:#fff; - position:relative} - -.codeblock-example:after{ - content:"Example"; - position:absolute; - top:0px; - left:0px; - background:#9B59B6; - color:#fff; - padding:6px 12px} - -.codeblock-example.prettyprint-example-only{ - border:1px solid #e1e4e5; - margin-bottom:24px} - -.codeblock,pre.literal-block,.rst-content .literal-block,.rst-content pre.literal-block,div[class^='highlight']{ - border:1px solid #e1e4e5; - padding:0px; - overflow-x:auto; - background:#fff; - margin:1px 0 24px 0} - -.codeblock div[class^='highlight'],pre.literal-block div[class^='highlight'],.rst-content .literal-block div[class^='highlight'],div[class^='highlight'] div[class^='highlight']{ - border:none; - background:none; - margin:0} - -div[class^='highlight'] td.code{ - width:100%} - -.linenodiv pre{ - border-right:solid 1px #e6e9ea; - margin:0; - padding:12px 12px; - font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace; - font-size:12px; - line-height:1.5; - color:#d9d9d9} - -div[class^='highlight'] pre{ - white-space:pre; - margin:0; - padding:12px 12px; - font-family:Consolas,"Andale Mono WT","Andale Mono","Lucida Console","Lucida Sans Typewriter","DejaVu Sans Mono","Bitstream Vera Sans Mono","Liberation Mono","Nimbus Mono L",Monaco,"Courier New",Courier,monospace; - font-size:12px; - line-height:1.5; - display:block; - overflow:auto; - color:#404040} - -@media print{ - .codeblock,pre.literal-block,.rst-content .literal-block,.rst-content pre.literal-block,div[class^='highlight'],div[class^='highlight'] pre{ - white-space:pre-wrap} - -} - -.hll{ - background-color:#ffc; - margin:0 -12px; - padding:0 12px; - display:block} - -.c{ - color:#998; - font-style:italic} - -.err{ - color:#a61717; - background-color:#e3d2d2} - -.k{ - font-weight:bold} - -.o{ - font-weight:bold} - -.cm{ - color:#998; - font-style:italic} - -.cp{ - color:#999; - font-weight:bold} - -.c1{ - color:#998; - font-style:italic} - -.cs{ - color:#999; - font-weight:bold; - font-style:italic} - -.gd{ - color:#000; - background-color:#fdd} - -.gd .x{ - color:#000; - background-color:#faa} - -.ge{ - font-style:italic} - -.gr{ - color:#a00} - -.gh{ - color:#999} - -.gi{ - color:#000; - background-color:#dfd} - -.gi .x{ - color:#000; - background-color:#afa} - -.go{ - color:#888} - -.gp{ - color:#555} - -.gs{ - font-weight:bold} - -.gu{ - color:purple; - font-weight:bold} - -.gt{ - color:#a00} - -.kc{ - font-weight:bold} - -.kd{ - font-weight:bold} - -.kn{ - font-weight:bold} - -.kp{ - font-weight:bold} - -.kr{ - font-weight:bold} - -.kt{ - color:#458; - font-weight:bold} - -.m{ - color:#099} - -.s{ - color:#d14} - -.n{ - color:#333} - -.na{ - color:teal} - -.nb{ - color:#0086b3} - -.nc{ - color:#458; - font-weight:bold} - -.no{ - color:teal} - -.ni{ - color:purple} - -.ne{ - color:#900; - font-weight:bold} - -.nf{ - color:#900; - font-weight:bold} - -.nn{ - color:#555} - -.nt{ - color:navy} - -.nv{ - color:teal} - -.ow{ - font-weight:bold} - -.w{ - color:#bbb} - -.mf{ - color:#099} - -.mh{ - color:#099} - -.mi{ - color:#099} - -.mo{ - color:#099} - -.sb{ - color:#d14} - -.sc{ - color:#d14} - -.sd{ - color:#d14} - -.s2{ - color:#d14} - -.se{ - color:#d14} - -.sh{ - color:#d14} - -.si{ - color:#d14} - -.sx{ - color:#d14} - -.sr{ - color:#009926} - -.s1{ - color:#d14} - -.ss{ - color:#990073} - -.bp{ - color:#999} - -.vc{ - color:teal} - -.vg{ - color:teal} - -.vi{ - color:teal} - -.il{ - color:#099} - -.gc{ - color:#999; - background-color:#EAF2F5} - -.wy-breadcrumbs li{ - display:inline-block} - -.wy-breadcrumbs li.wy-breadcrumbs-aside{ - float:right} - -.wy-breadcrumbs li a{ - display:inline-block; - padding:5px} - -.wy-breadcrumbs li a:first-child{ - padding-left:0} - -.wy-breadcrumbs-extra{ - margin-bottom:0; - color:#b3b3b3; - font-size:80%; - display:inline-block} - -@media screen and (max-width: 480px){ - .wy-breadcrumbs-extra{ - display:none} - - .wy-breadcrumbs li.wy-breadcrumbs-aside{ - display:none} - -} - -@media print{ - .wy-breadcrumbs li.wy-breadcrumbs-aside{ - display:none} - -} - -.wy-affix{ - position:fixed; - top:1.618em} - -.wy-menu a:hover{ - text-decoration:none} - -.wy-menu-horiz{ - *zoom:1} - -.wy-menu-horiz:before,.wy-menu-horiz:after{ - display:table; - content:""} - -.wy-menu-horiz:after{ - clear:both} - -.wy-menu-horiz ul,.wy-menu-horiz li{ - display:inline-block} - -.wy-menu-horiz li:hover{ - background:rgba(255,255,255,0.1)} - -.wy-menu-horiz li.divide-left{ - border-left:solid 1px #404040} - -.wy-menu-horiz li.divide-right{ - border-right:solid 1px #404040} - -.wy-menu-horiz a{ - height:32px; - display:inline-block; - line-height:32px; - padding:0 16px} - -.wy-menu-vertical header{ - height:32px; - display:inline-block; - line-height:32px; - padding:0 1.618em; - display:block; - font-weight:bold; - text-transform:uppercase; - font-size:80%; - color:#2980B9; - white-space:nowrap} - -.wy-menu-vertical ul{ - margin-bottom:0} - -.wy-menu-vertical li.divide-top{ - border-top:solid 1px #404040} - -.wy-menu-vertical li.divide-bottom{ - border-bottom:solid 1px #404040} - -.wy-menu-vertical li.current{ - background:#e3e3e3} - -.wy-menu-vertical li.current a{ - color:gray; - border-right:solid 1px #c9c9c9; - padding:0.4045em 2.427em} - -.wy-menu-vertical li.current a:hover{ - background:#d6d6d6} - -.wy-menu-vertical li.on a,.wy-menu-vertical li.current>a{ - color:#404040; - padding:0.4045em 1.618em; - font-weight:bold; - position:relative; - background:#fcfcfc; - border:none; - border-bottom:solid 1px #c9c9c9; - border-top:solid 1px #c9c9c9; - padding-left:1.618em -4px} - -.wy-menu-vertical li.on a:hover,.wy-menu-vertical li.current>a:hover{ - background:#fcfcfc} - -.wy-menu-vertical li.toctree-l2.current>a{ - background:#c9c9c9; - padding:0.4045em 2.427em} - -.wy-menu-vertical li.current ul{ - display:block} - -.wy-menu-vertical li ul{ - margin-bottom:0; - display:none} - -.wy-menu-vertical .local-toc li ul{ - display:block} - -.wy-menu-vertical li ul li a{ - margin-bottom:0; - color:#b3b3b3; - font-weight:normal} - -.wy-menu-vertical a{ - display:inline-block; - line-height:18px; - padding:0.4045em 1.618em; - display:block; - position:relative; - font-size:90%; - color:#b3b3b3} - -.wy-menu-vertical a:hover{ - background-color:#4e4a4a; - cursor:pointer} - -.wy-menu-vertical a:active{ - background-color:#2980B9; - cursor:pointer; - color:#fff} - -.wy-side-nav-search{ - z-index:200; - background-color:#2980B9; - text-align:center; - padding:0.809em; - display:block; - color:#fcfcfc; - margin-bottom:0.809em} - -.wy-side-nav-search input[type=text]{ - width:100%; - border-radius:50px; - padding:6px 12px; - border-color:#2472a4} - -.wy-side-nav-search img{ - display:block; - margin:auto auto 0.809em auto; - height:45px; - width:45px; - background-color:#2980B9; - padding:5px; - border-radius:100%} - -.wy-side-nav-search>a,.wy-side-nav-search .wy-dropdown>a{ - color:#fcfcfc; - font-size:100%; - font-weight:bold; - display:inline-block; - padding:4px 6px; - margin-bottom:0.809em} - -.wy-side-nav-search>a:hover,.wy-side-nav-search .wy-dropdown>a:hover{ - background:rgba(255,255,255,0.1)} - -.wy-nav .wy-menu-vertical header{ - color:#2980B9} - -.wy-nav .wy-menu-vertical a{ - color:#b3b3b3} - -.wy-nav .wy-menu-vertical a:hover{ - background-color:#2980B9; - color:#fff} - -[data-menu-wrap]{ - -webkit-transition:all 0.2s ease-in; - -moz-transition:all 0.2s ease-in; - transition:all 0.2s ease-in; - position:absolute; - opacity:1; - width:100%; - opacity:0} - -[data-menu-wrap].move-center{ - left:0; - right:auto; - opacity:1} - -[data-menu-wrap].move-left{ - right:auto; - left:-100%; - opacity:0} - -[data-menu-wrap].move-right{ - right:-100%; - left:auto; - opacity:0} - -.wy-body-for-nav{ - background:left repeat-y #fcfcfc; - background-image:url(data:image/png; - base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAIAAACQd1PeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDoxOERBMTRGRDBFMUUxMUUzODUwMkJCOThDMEVFNURFMCIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDoxOERBMTRGRTBFMUUxMUUzODUwMkJCOThDMEVFNURFMCI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOjE4REExNEZCMEUxRTExRTM4NTAyQkI5OEMwRUU1REUwIiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOjE4REExNEZDMEUxRTExRTM4NTAyQkI5OEMwRUU1REUwIi8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+EwrlwAAAAA5JREFUeNpiMDU0BAgwAAE2AJgB9BnaAAAAAElFTkSuQmCC); - background-size:300px 1px} - -.wy-grid-for-nav{ - position:absolute; - width:100%; - height:100%} - -.wy-nav-side{ - position:absolute; - top:0; - left:0; - width:300px; - overflow:hidden; - min-height:100%; - background:#343131; - z-index:200} - -.wy-nav-top{ - display:none; - background:#2980B9; - color:#fff; - padding:0.4045em 0.809em; - position:relative; - line-height:50px; - text-align:center; - font-size:100%; - *zoom:1} - -.wy-nav-top:before,.wy-nav-top:after{ - display:table; - content:""} - -.wy-nav-top:after{ - clear:both} - -.wy-nav-top a{ - color:#fff; - font-weight:bold} - -.wy-nav-top img{ - margin-right:12px; - height:45px; - width:45px; - background-color:#2980B9; - padding:5px; - border-radius:100%} - -.wy-nav-top i{ - font-size:30px; - float:left; - cursor:pointer} - -.wy-nav-content-wrap{ - margin-left:300px; - background:#fcfcfc; - min-height:100%} - -.wy-nav-content{ - padding:1.618em 3.236em; - height:100%; - max-width:800px; - margin:auto} - -.wy-body-mask{ - position:fixed; - width:100%; - height:100%; - background:rgba(0,0,0,0.2); - display:none; - z-index:499} - -.wy-body-mask.on{ - display:block} - -footer{ - color:#999} - -footer p{ - margin-bottom:12px} - -.rst-footer-buttons{ - *zoom:1} - -.rst-footer-buttons:before,.rst-footer-buttons:after{ - display:table; - content:""} - -.rst-footer-buttons:after{ - clear:both} - -#search-results .search li{ - margin-bottom:24px; - border-bottom:solid 1px #e1e4e5; - padding-bottom:24px} - -#search-results .search li:first-child{ - border-top:solid 1px #e1e4e5; - padding-top:24px} - -#search-results .search li a{ - font-size:120%; - margin-bottom:12px; - display:inline-block} - -#search-results .context{ - color:gray; - font-size:90%} - -@media screen and (max-width: 768px){ - .wy-body-for-nav{ - background:#fcfcfc} - - .wy-nav-top{ - display:block} - - .wy-nav-side{ - left:-300px} - - .wy-nav-side.shift{ - width:85%; - left:0} - - .wy-nav-content-wrap{ - margin-left:0} - - .wy-nav-content-wrap .wy-nav-content{ - padding:1.618em} - - .wy-nav-content-wrap.shift{ - position:fixed; - min-width:100%; - left:85%; - top:0; - height:100%; - overflow:hidden} - -} - -@media screen and (min-width: 1400px){ - .wy-nav-content-wrap{ - background:rgba(0,0,0,0.05)} - - .wy-nav-content{ - margin:0; - background:#fcfcfc} - -} - -@media print{ - .rst-versions,footer,.wy-nav-side{ - display:none} - - .wy-nav-content-wrap{ - margin-left:0} - -} - -nav.stickynav{ - position:fixed; - top:0} - -.rst-versions{ - position:fixed; - bottom:0; - left:0; - width:300px; - color:#fcfcfc; - background:#1f1d1d; - border-top:solid 10px #343131; - font-family:"Lato","proxima-nova","Helvetica Neue",Arial,sans-serif; - z-index:400} - -.rst-versions a{ - color:#2980B9; - text-decoration:none} - -.rst-versions .rst-badge-small{ - display:none} - -.rst-versions .rst-current-version{ - padding:12px; - background-color:#272525; - display:block; - text-align:right; - font-size:90%; - cursor:pointer; - color:#27AE60; - *zoom:1} - -.rst-versions .rst-current-version:before,.rst-versions .rst-current-version:after{ - display:table; - content:""} - -.rst-versions .rst-current-version:after{ - clear:both} - -.rst-versions .rst-current-version .fa,.rst-versions .rst-current-version .rst-content .admonition-title,.rst-content .rst-versions .rst-current-version .admonition-title,.rst-versions .rst-current-version .rst-content h1 .headerlink,.rst-content h1 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h2 .headerlink,.rst-content h2 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h3 .headerlink,.rst-content h3 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h4 .headerlink,.rst-content h4 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h5 .headerlink,.rst-content h5 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content h6 .headerlink,.rst-content h6 .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .rst-content dl dt .headerlink,.rst-content dl dt .rst-versions .rst-current-version .headerlink,.rst-versions .rst-current-version .icon{ - color:#fcfcfc} - -.rst-versions .rst-current-version .fa-book,.rst-versions .rst-current-version .icon-book{ - float:left} - -.rst-versions .rst-current-version .icon-book{ - float:left} - -.rst-versions .rst-current-version.rst-out-of-date{ - background-color:#E74C3C; - color:#fff} - -.rst-versions .rst-current-version.rst-active-old-version{ - background-color:#F1C40F; - color:#000} - -.rst-versions.shift-up .rst-other-versions{ - display:block} - -.rst-versions .rst-other-versions{ - font-size:90%; - padding:12px; - color:gray; - display:none} - -.rst-versions .rst-other-versions hr{ - display:block; - height:1px; - border:0; - margin:20px 0; - padding:0; - border-top:solid 1px #413d3d} - -.rst-versions .rst-other-versions dd{ - display:inline-block; - margin:0} - -.rst-versions .rst-other-versions dd a{ - display:inline-block; - padding:6px; - color:#fcfcfc} - -.rst-versions.rst-badge{ - width:auto; - bottom:20px; - right:20px; - left:auto; - border:none; - max-width:300px} - -.rst-versions.rst-badge .icon-book{ - float:none} - -.rst-versions.rst-badge .fa-book,.rst-versions.rst-badge .icon-book{ - float:none} - -.rst-versions.rst-badge.shift-up .rst-current-version{ - text-align:right} - -.rst-versions.rst-badge.shift-up .rst-current-version .fa-book,.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{ - float:left} - -.rst-versions.rst-badge.shift-up .rst-current-version .icon-book{ - float:left} - -.rst-versions.rst-badge .rst-current-version{ - width:auto; - height:30px; - line-height:30px; - padding:0 6px; - display:block; - text-align:center} - -@media screen and (max-width: 768px){ - .rst-versions{ - width:85%; - display:none} - - .rst-versions.shift{ - display:block} - - img{ - width:100%; - height:auto} - -} - -.rst-content img{ - max-width:100%; - height:auto !important} - -.rst-content div.figure{ - margin-bottom:24px} - -.rst-content div.figure.align-center{ - text-align:center} - -.rst-content .section>img,.rst-content .section>a>img{ - margin-bottom:24px} - -.rst-content blockquote{ - margin-left:24px; - line-height:24px; - margin-bottom:24px} - -.rst-content .note .last,.rst-content .attention .last,.rst-content .caution .last,.rst-content .danger .last,.rst-content .error .last,.rst-content .hint .last,.rst-content .important .last,.rst-content .tip .last,.rst-content .warning .last,.rst-content .seealso .last,.rst-content .admonition-todo .last{ - margin-bottom:0} - -.rst-content .admonition-title:before{ - margin-right:4px} - -.rst-content .admonition table{ - border-color:rgba(0,0,0,0.1)} - -.rst-content .admonition table td,.rst-content .admonition table th{ - background:transparent !important; - border-color:rgba(0,0,0,0.1) !important} - -.rst-content .section ol.loweralpha,.rst-content .section ol.loweralpha li{ - list-style:lower-alpha} - -.rst-content .section ol.upperalpha,.rst-content .section ol.upperalpha li{ - list-style:upper-alpha} - -.rst-content .section ol p,.rst-content .section ul p{ - margin-bottom:12px} - -.rst-content .line-block{ - margin-left:24px} - -.rst-content .topic-title{ - font-weight:bold; - margin-bottom:12px} - -.rst-content .toc-backref{ - color:#404040} - -.rst-content .align-right{ - float:right; - margin:0px 0px 24px 24px} - -.rst-content .align-left{ - float:left; - margin:0px 24px 24px 0px} - -.rst-content .align-center{ - margin:auto; - display:block} - -.rst-content h1 .headerlink,.rst-content h2 .headerlink,.rst-content h3 .headerlink,.rst-content h4 .headerlink,.rst-content h5 .headerlink,.rst-content h6 .headerlink,.rst-content dl dt .headerlink{ - display:none; - visibility:hidden; - font-size:14px} - -.rst-content h1 .headerlink:after,.rst-content h2 .headerlink:after,.rst-content h3 .headerlink:after,.rst-content h4 .headerlink:after,.rst-content h5 .headerlink:after,.rst-content h6 .headerlink:after,.rst-content dl dt .headerlink:after{ - visibility:visible; - content:""; - font-family:FontAwesome; - display:inline-block} - -.rst-content h1:hover .headerlink,.rst-content h2:hover .headerlink,.rst-content h3:hover .headerlink,.rst-content h4:hover .headerlink,.rst-content h5:hover .headerlink,.rst-content h6:hover .headerlink,.rst-content dl dt:hover .headerlink{ - display:inline-block} - -.rst-content .sidebar{ - float:right; - width:40%; - display:block; - margin:0 0 24px 24px; - padding:24px; - background:#f3f6f6; - border:solid 1px #e1e4e5} - -.rst-content .sidebar p,.rst-content .sidebar ul,.rst-content .sidebar dl{ - font-size:90%} - -.rst-content .sidebar .last{ - margin-bottom:0} - -.rst-content .sidebar .sidebar-title{ - display:block; - font-family:"Roboto Slab","ff-tisa-web-pro","Georgia",Arial,sans-serif; - font-weight:bold; - background:#e1e4e5; - padding:6px 12px; - margin:-24px; - margin-bottom:24px; - font-size:100%} - -.rst-content .highlighted{ - background:#F1C40F; - display:inline-block; - font-weight:bold; - padding:0 6px} - -.rst-content .footnote-reference,.rst-content .citation-reference{ - vertical-align:super; - font-size:90%} - -.rst-content table.docutils.citation,.rst-content table.docutils.footnote{ - background:none; - border:none; - color:#999} - -.rst-content table.docutils.citation td,.rst-content table.docutils.citation tr,.rst-content table.docutils.footnote td,.rst-content table.docutils.footnote tr{ - border:none; - background-color:transparent !important; - white-space:normal} - -.rst-content table.docutils.citation td.label,.rst-content table.docutils.footnote td.label{ - padding-left:0; - padding-right:0; - vertical-align:top} - -.rst-content table.field-list{ - border:none} - -.rst-content table.field-list td{ - border:none; - padding-top:5px} - -.rst-content table.field-list td>strong{ - display:inline-block; - margin-top:3px} - -.rst-content table.field-list .field-name{ - padding-right:10px; - text-align:left; - white-space:nowrap} - -.rst-content table.field-list .field-body{ - text-align:left; - padding-left:0} - -.rst-content tt{ - color:#000} - -.rst-content tt big,.rst-content tt em{ - font-size:100% !important; - line-height:normal} - -.rst-content tt .xref,a .rst-content tt{ - font-weight:bold} - -.rst-content a tt{ - color:#2980B9} - -.rst-content dl{ - margin-bottom:24px} - -.rst-content dl dt{ - font-weight:bold} - -.rst-content dl p,.rst-content dl table,.rst-content dl ul,.rst-content dl ol{ - margin-bottom:12px !important} - -.rst-content dl dd{ - margin:0 0 12px 24px} - -.rst-content dl:not(.docutils){ - margin-bottom:24px} - -.rst-content dl:not(.docutils) dt{ - display:inline-block; - margin:6px 0; - font-size:90%; - line-height:normal; - background:#e7f2fa; - color:#2980B9; - border-top:solid 3px #6ab0de; - padding:6px; - position:relative} - -.rst-content dl:not(.docutils) dt:before{ - color:#6ab0de} - -.rst-content dl:not(.docutils) dt .headerlink{ - color:#404040; - font-size:100% !important} - -.rst-content dl:not(.docutils) dl dt{ - margin-bottom:6px; - border:none; - border-left:solid 3px #ccc; - background:#f0f0f0; - color:gray} - -.rst-content dl:not(.docutils) dl dt .headerlink{ - color:#404040; - font-size:100% !important} - -.rst-content dl:not(.docutils) dt:first-child{ - margin-top:0} - -.rst-content dl:not(.docutils) tt{ - font-weight:bold} - -.rst-content dl:not(.docutils) tt.descname,.rst-content dl:not(.docutils) tt.descclassname{ - background-color:transparent; - border:none; - padding:0; - font-size:100% !important} - -.rst-content dl:not(.docutils) tt.descname{ - font-weight:bold} - -.rst-content dl:not(.docutils) .optional{ - display:inline-block; - padding:0 4px; - color:#000; - font-weight:bold} - -.rst-content dl:not(.docutils) .property{ - display:inline-block; - padding-right:8px} - -.rst-content .viewcode-link,.rst-content .viewcode-back{ - display:inline-block; - color:#27AE60; - font-size:80%; - padding-left:24px} - -.rst-content .viewcode-back{ - display:block; - float:right} - -.rst-content p.rubric{ - margin-bottom:12px; - font-weight:bold} - -@media screen and (max-width: 480px){ - .rst-content .sidebar{ - width:100%} - -} - -span[id*='MathJax-Span']{ - color:#404040} - -.math{ - text-align:center} - - -/*# sourceMappingURL=theme.css.map */ diff --git a/doc/orgmode/org-html-themes b/doc/orgmode/org-html-themes new file mode 160000 index 000000000..7e4e2ec56 --- /dev/null +++ b/doc/orgmode/org-html-themes @@ -0,0 +1 @@ +Subproject commit 7e4e2ec56069dae3b40e2afdc0174bec368609d8 diff --git a/doc/orgmode/users_guide.org.in b/doc/orgmode/users_guide.org.in index 39e2618e9..226ca624c 100644 --- a/doc/orgmode/users_guide.org.in +++ b/doc/orgmode/users_guide.org.in @@ -6,12 +6,12 @@ #+OPTIONS: TeX:t LaTeX:t skip:nil d:nil pri:nil tags:not-in-toc html-style:nil #+BEAMER_THEME: Rochester -#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="css/htmlize.css"/> -#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="css/readtheorg.css"/> -#+HTML_HEAD: <script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script> -#+HTML_HEAD: <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.4/js/bootstrap.min.js"></script> -#+HTML_HEAD: <script type="text/javascript" src="styles/lib/js/jquery.stickytableheaders.min.js"></script> -#+HTML_HEAD: <script type="text/javascript" src="styles/readtheorg/js/readtheorg.js"></script> +#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="org-html-themes/styles/readtheorg/css/htmlize.css"/> +#+HTML_HEAD: <link rel="stylesheet" type="text/css" href="org-html-themes/styles/readtheorg/css/readtheorg.css"/> +#+HTML_HEAD: <script type="text/javascript" src="org-html-themes/styles/readtheorg/js/jquery.min.js"></script> +#+HTML_HEAD: <script type="text/javascript" src="org-html-themes/styles/readtheorg/js/bootstrap.min.js"></script> +#+HTML_HEAD: <script type="text/javascript" src="org-html-themes/styles/readtheorg/js/jquery.stickytableheaders.min.js"></script> +#+HTML_HEAD: <script type="text/javascript" src="org-html-themes/styles/readtheorg/js/readtheorg.js"></script> #+INCLUDE: "./version.org" diff --git a/tools/bench/jube/GenFigures.R b/tools/bench/jube/GenFigures.R new file mode 100644 index 000000000..04fba1aa1 --- /dev/null +++ b/tools/bench/jube/GenFigures.R @@ -0,0 +1,175 @@ +library(ggplot2) +library(plyr) +library(reshape2) + +## +## Load the file and clean up +## +df <- read.csv( "chameleon.csv", header=TRUE, sep=",", comment.char="#" ) + +## Factorize the parameter for a better use +df$algorithm = factor(df$algorithm) +df$hostname = factor(df$hostname) +df$mpivendor = factor(df$mpivendor) +df$ngpu = factor(df$ngpu) +df$nmpi = factor(df$nmpi) +df$p = factor(df$p) +df$q = factor(df$q) +df$precision = factor(df$precision) + +## Get the hostname list +hostnames <- ddply( df, c("hostname"), summarise, N = length(hostname) )$hostname + +## Get the mpivendor list +mpinames <- ddply( df, c("mpivendor"), summarise, N = length(mpivendor) )$mpivendor + +## +## Generate one figure for CPU times, and one figure for GFlop/s +## mpi - string to caracterize the mpivendors included in df +## +gen_mpi_figure <- function( df, mpi ) +{ + ## summary( df ) + if ( nrow( df ) == 0 ) { + break; + } + + df$nmpi = revalue( df$nmpi, c("1" = "1 MPI Process", + "4" = "4 MPI Processes (2x2)", + "9" = "9 MPI Processes (3x3)") ) + + df$algorithm = revalue( df$algorithm, c("gemm" = "Matrix Multiply (gemm)", + "geqrf_hqr" = "QR factorization (geqrf)", + "potrf" = "Cholesky factorization (potrf)") ) + + df$precision = revalue( df$precision, c("s" = "Single real (s)", + "d" = "Double real (d)" ) ) + + df$mpivendor <- revalue( df$mpivendor, c("openmpi" = "OpenMPI", + "nmad" = "NewMadeleine") ) + + ## + ## CPU time version + ## + p <- ggplot( df, aes( x=n, y=cputime, colour=mpivendor, linetype=precision ) ) + + p <- p + facet_grid( algorithm ~ nmpi, scales="free_x" ) + p <- p + geom_line( ) + p <- p + scale_colour_discrete( name=element_blank() ) ##name="Number of MPI processes" ) + p <- p + scale_linetype_manual( values=c("solid", "dashed"), + name=element_blank() )## name="Arithmetic", + + p <- p + theme( legend.position="bottom" ) + + p <- p + scale_y_log10( ) + p <- p + ylab( "CPU Time (s)" ) + p <- p + xlab( "Matrix size (M = N = K)" ) + + filename <- paste( "chameleon", "plafrim", h, "time", mpi, sep="_") + filename <- paste( filename, ".png", sep="" ) + + ggsave( filename, plot=p, width=10, height=10 ) + + ## + ## GFLop/s version + ## + p <- ggplot( df, aes( x=n, y=gflops, colour=mpivendor, linetype=precision ) ) + + p <- p + facet_grid( algorithm ~ nmpi, scales="free_x" ) + p <- p + geom_line( ) + p <- p + scale_colour_discrete( name=element_blank() ) ##name="Number of MPI processes" ) + p <- p + scale_linetype_manual( values=c("solid", "dashed"), + name=element_blank() )## name="Arithmetic", + + p <- p + theme( legend.position="bottom" ) + + p <- p + ylab( "GFlop/s" ) + p <- p + xlab( "Matrix size (M = N = K)" ) + + filename <- paste( "chameleon", "plafrim", h, "perf", mpi, sep="_") + filename <- paste( filename, ".png", sep="" ) + + ggsave( filename, plot=p, width=10, height=10 ) +} + +## +## Generate one figure with both CPU times and GFlop/s in facet for single node exeperiments +## +gen_shm_figure <- function( df ) +{ + if ( nrow( df ) == 0 ) { + next; + } + + df$algorithm = revalue( df$algorithm, c("gemm" = "Matrix Multiply (gemm)", + "geqrf_hqr" = "QR factorization (geqrf)", + "potrf" = "Cholesky factorization (potrf)") ) + + df$precision = revalue( df$precision, c("s" = "Single real (s)", + "d" = "Double real (d)" ) ) + + df$mpivendor <- revalue( df$mpivendor, c("openmpi" = "OpenMPI", + "nmad" = "NewMadeleine") ) + + df$type <- revalue( df$type, c("cputime" = "CPU Time (s)", + "gflops" = "GFlop/s") ) + + p <- ggplot( df, aes( x=n, y=value, colour=mpivendor, linetype=precision ) ) + + p <- p + facet_grid( type ~ algorithm, scales="free" ) + p <- p + geom_line( ) + p <- p + scale_linetype_manual( name=element_blank(), + values=c("solid", "dashed")) + p <- p + theme( legend.position="bottom" ) + + p <- p + xlab( "Matrix size (M = N = K)" ) + p <- p + ylab( element_blank() ) + p <- p + guides( colour=FALSE ) + + filename <- paste( "chameleon", "plafrim", h, sep="_") + filename <- paste( filename, ".png", sep="" ) + + ggsave( filename, plot=p, width=10, height=7 ) +} + +## +## Generate the distributed figures +## + +#Restict to bora +hostnames <- c( 'bora' ) + +for ( h in hostnames ) { + for ( mpi in mpinames ) { + ldf <- df[ (df$hostname == h) & (df$mpivendor == mpi),] + gen_mpi_figure( ldf, mpi ) + } + + ldf <- df[ (df$hostname == h),] + gen_mpi_figure( ldf, "both" ) +} + +## +## Generate the distributed figures +## + +## Restrict the list +hostnames <- c( 'sirocco' ) +mpinames <- c( 'openmpi' ) + +# Restructure the data to have cpu time and gflops on separated lines +shmdf <- melt( df, + id.vars = c( "algorithm", "hostname", "k", "m", "mpivendor", "n", + "ngpu", "nmpi", "nthread", "p", "precision", "q" ), + variable.name = "type", + value.name = "value" ) + +# loop over hostname and mpivendor +for ( mpi in mpinames ) { + for ( h in hostnames ) { + ldf <- shmdf[ (shmdf$hostname == h) & (shmdf$mpivendor == mpi),] + gen_shm_figure( ldf ) + } +} + + diff --git a/tools/bench/jube/get_result.py b/tools/bench/jube/get_result.py new file mode 100755 index 000000000..a2bdbcb30 --- /dev/null +++ b/tools/bench/jube/get_result.py @@ -0,0 +1,58 @@ +#!/usr/bin/env python3 + +import pandas +import click +import csv +from elasticsearch import Elasticsearch + +@click.command() +@click.option("-e", "--elastic-url", default="http://localhost:9200", help="elasticsearch instance url") +@click.option("-t", "--team", required=True, help="team name") +@click.option("-p", "--project", required=True, help="project name") +@click.option("-c", "--commit", required=True, help="chameleon commit") +def main( + elastic_url: str, + team: str, + project: str, + commit: str +): + """Get a result from an elasticsearch database, e.g. + https://elasticsearch.bordeaux.inria.fr.""" + es = Elasticsearch(elastic_url) + es_index = team + "-" + project + "_" + "perf" + + search_param = { + "query": { + "bool": { + "must": [ + {"term": {"Commit_sha_chameleon": {"value": commit}}} + ] + } + }, + "size": 1000 + } + response = es.search(index=es_index, body=search_param) + elastic_docs = response["hits"]["hits"] + + docs = pandas.DataFrame() + for num, doc in enumerate(elastic_docs): + + # get _source data dict from document + source_data = doc["_source"] + + # get _id from document + _id = doc["_id"] + + # create a Series object from doc dict object + doc_data = pandas.Series(source_data, name = _id) + doc_data = doc_data.drop(labels=['Commit_date_chameleon', 'Commit_sha_chameleon', 'Commit_sha_guix', 'Commit_sha_guix_hpc', 'Commit_sha_guix_hpcnonfree']) + + # append the Series object to the DataFrame object + docs = docs.append(doc_data) + + docs = docs.astype({"Nmpi": int, "Nthread": int, "Ngpu": int, "P": int, "Q": int, "M": int, "N": int, "K": int}) + docs = docs.rename(columns=str.lower) + docs.to_csv("chameleon.csv", ",", index=False) + +if __name__ == "__main__": + main() diff --git a/tools/bench/plafrim/parameters/miriel/parameters.xml b/tools/bench/plafrim/parameters/miriel/parameters.xml deleted file mode 100644 index 54c33d13a..000000000 --- a/tools/bench/plafrim/parameters/miriel/parameters.xml +++ /dev/null @@ -1,54 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<jube> - <parameterset name="param_gemm"> - <parameter name="hostname" type="string">miriel</parameter> - <parameter name="algorithm" type="string">gemm</parameter> - <parameter name="precision" type="string">s, d</parameter> - <parameter name="i_pq" type="int" >0, 1, 2</parameter> - <parameter name="p" mode="python" type="int" >[1, 2, 3][$i_pq]</parameter> - <parameter name="q" mode="python" type="int" >[1, 2, 3][$i_pq]</parameter> - <parameter name="nmpi" mode="python" type="int" >[1, 4, 9][$i_pq]</parameter> - <parameter name="nthr" type="int" >22</parameter> - <parameter name="ngpu" type="int" >0</parameter> - <parameter name="b" type="int" >320</parameter> - <parameter name="i_mn" type="int" >0, 1, 2, 3, 4, 5</parameter> - <parameter name="m" mode="python" type="int" >[${nmpi}*${b}, ${nmpi}*2*${b}, ${nmpi}*4*${b}, ${nmpi}*8*${b}, ${nmpi}*16*${b}, ${nmpi}*24*${b}][$i_mn]</parameter> - <parameter name="k" mode="python" type="int" >${m}</parameter> - <parameter name="n" mode="python" type="int" >${m}</parameter> - <parameter name="command" type="string">mpiexec $MPI_OPTIONS -np $nmpi $CHAMELEON_BUILD/testing/chameleon_${precision}testing -o ${algorithm} -P $p -t $nthr -g $ngpu -m $m -n $n -k $k -b $b</parameter> - </parameterset> - <parameterset name="param_potrf"> - <parameter name="hostname" type="string">miriel</parameter> - <parameter name="algorithm" type="string">potrf</parameter> - <parameter name="precision" type="string">s, d</parameter> - <parameter name="i_pq" type="int" >0, 1, 2</parameter> - <parameter name="p" mode="python" type="int" >[1, 2, 3][$i_pq]</parameter> - <parameter name="q" mode="python" type="int" >[1, 2, 3][$i_pq]</parameter> - <parameter name="nmpi" mode="python" type="int" >[1, 4, 9][$i_pq]</parameter> - <parameter name="nthr" type="int" >22</parameter> - <parameter name="ngpu" type="int" >0</parameter> - <parameter name="b" type="int" >320</parameter> - <parameter name="i_mn" type="int" >0, 1, 2, 3, 4, 5</parameter> - <parameter name="m" mode="python" type="int" >[${nmpi}*${b}, ${nmpi}*2*${b}, ${nmpi}*4*${b}, ${nmpi}*8*${b}, ${nmpi}*16*${b}, ${nmpi}*24*${b}][$i_mn]</parameter> - <parameter name="n" mode="python" type="int" >${m}</parameter> - <parameter name="k" type="int" >1</parameter> - <parameter name="command" type="string">mpiexec $MPI_OPTIONS -np $nmpi $CHAMELEON_BUILD/testing/chameleon_${precision}testing -o ${algorithm} -P $p -t $nthr -g $ngpu -m $m -n $n -k $k -b $b</parameter> - </parameterset> - <parameterset name="param_geqrf"> - <parameter name="hostname" type="string">miriel</parameter> - <parameter name="algorithm" type="string">geqrf_hqr</parameter> - <parameter name="precision" type="string">s, d</parameter> - <parameter name="i_pq" type="int" >0, 1, 2</parameter> - <parameter name="p" mode="python" type="int" >[1, 2, 3][$i_pq]</parameter> - <parameter name="q" mode="python" type="int" >[1, 2, 3][$i_pq]</parameter> - <parameter name="nmpi" mode="python" type="int" >[1, 4, 9][$i_pq]</parameter> - <parameter name="nthr" type="int" >22</parameter> - <parameter name="ngpu" type="int" >0</parameter> - <parameter name="b" type="int" >320</parameter> - <parameter name="i_mn" type="int" >0, 1, 2, 3, 4, 5</parameter> - <parameter name="m" mode="python" type="int" >[${nmpi}*${b}, ${nmpi}*2*${b}, ${nmpi}*4*${b}, ${nmpi}*8*${b}, ${nmpi}*16*${b}, ${nmpi}*24*${b}][$i_mn]</parameter> - <parameter name="n" mode="python" type="int" >${m}</parameter> - <parameter name="k" type="int" >1</parameter> - <parameter name="command" type="string">mpiexec $MPI_OPTIONS -np $nmpi $CHAMELEON_BUILD/testing/chameleon_${precision}testing -o ${algorithm} -P $p -t $nthr -g $ngpu -m $m -n $n -k $k -b $b</parameter> - </parameterset> -</jube> diff --git a/tools/bench/plafrim/parameters/sirocco/parameters.xml b/tools/bench/plafrim/parameters/sirocco/parameters.xml index c5e869ea3..3f04ebc61 100644 --- a/tools/bench/plafrim/parameters/sirocco/parameters.xml +++ b/tools/bench/plafrim/parameters/sirocco/parameters.xml @@ -11,10 +11,10 @@ <parameter name="nthr" type="int" >29</parameter> <parameter name="ngpu" type="int" >2</parameter> <parameter name="b" type="int" >1600</parameter> - <parameter name="i_mn" type="int" >0, 1, 2, 3, 4</parameter> - <parameter name="m" mode="python" type="int" >[${nmpi}*${b}, ${nmpi}*5*${b}, ${nmpi}*10*${b}, ${nmpi}*20*${b}, ${nmpi}*40*${b}][$i_mn]</parameter> - <parameter name="k" mode="python" type="int" >[${nmpi}*${b}, ${nmpi}*5*${b}, ${nmpi}*10*${b}, ${nmpi}*20*${b}, ${nmpi}*40*${b}][$i_mn]</parameter> - <parameter name="n" mode="python" type="int" >[${nmpi}*${b}, ${nmpi}*5*${b}, ${nmpi}*10*${b}, ${nmpi}*20*${b}, ${nmpi}*40*${b}][$i_mn]</parameter> + <parameter name="i_mn" type="int" >0, 1, 2, 3, 4, 5</parameter> + <parameter name="m" mode="python" type="int" >[${nmpi}*${b}, ${nmpi}*2*${b}, ${nmpi}*4*${b}, ${nmpi}*8*${b}, ${nmpi}*16*${b}, ${nmpi}*32*${b}][$i_mn]</parameter> + <parameter name="k" mode="python" type="int" >[${nmpi}*${b}, ${nmpi}*2*${b}, ${nmpi}*4*${b}, ${nmpi}*8*${b}, ${nmpi}*16*${b}, ${nmpi}*32*${b}][$i_mn]</parameter> + <parameter name="n" mode="python" type="int" >[${nmpi}*${b}, ${nmpi}*2*${b}, ${nmpi}*4*${b}, ${nmpi}*8*${b}, ${nmpi}*16*${b}, ${nmpi}*32*${b}][$i_mn]</parameter> <parameter name="command" type="string">mpiexec $MPI_OPTIONS -np $nmpi $CHAMELEON_BUILD/testing/chameleon_${precision}testing -o ${algorithm} -P $p -t $nthr -g $ngpu -m $m -n $n -k $k -b $b</parameter> </parameterset> <parameterset name="param_potrf"> diff --git a/tools/bench/plafrim/run.sh b/tools/bench/plafrim/run.sh index 89a135e0d..6ba4eaeb7 100755 --- a/tools/bench/plafrim/run.sh +++ b/tools/bench/plafrim/run.sh @@ -2,7 +2,7 @@ echo "######################### Chameleon benchmarks #########################" -set -x +set -x # to avoid a lock during fetching chameleon branch in parallel export XDG_CACHE_HOME=/tmp/guix-$$ @@ -11,27 +11,19 @@ export XDG_CACHE_HOME=/tmp/guix-$$ guix describe --format=json > guix.json # define env var depending on the node type -export STARPU_SILENT=1 -export STARPU_CALIBRATE=0 -export STARPU_COMM_STATS=1 -export STARPU_WORKER_STATS=1 if [ $NODE = "bora" ] then export SLURM_CONSTRAINTS="bora,omnipath" export CHAMELEON_BUILD_OPTIONS="-DCHAMELEON_USE_MPI=ON -DCMAKE_BUILD_TYPE=Release" export STARPU_HOSTNAME="bora" -elif [ $NODE = "miriel" ] -then - export SLURM_CONSTRAINTS="miriel,infinipath" - export CHAMELEON_BUILD_OPTIONS="-DCHAMELEON_USE_MPI=ON -DCMAKE_BUILD_TYPE=Release" - export STARPU_HOSTNAME="miriel" elif [ $NODE = "sirocco" ] then export SLURM_CONSTRAINTS="sirocco,omnipath,v100" export CHAMELEON_BUILD_OPTIONS="-DCHAMELEON_USE_MPI=ON -DCHAMELEON_USE_CUDA=ON -DCMAKE_BUILD_TYPE=Release" export STARPU_HOSTNAME="sirocco" + export LD_PRELOAD="/usr/lib64/libcuda.so /usr/lib64/libnvidia-fatbinaryloader.so.440.33.01" else - echo "$0: Please set the NODE environnement variable to bora or miriel or sirocco." + echo "$0: Please set the NODE environnement variable to bora or sirocco." exit -1 fi @@ -41,25 +33,25 @@ if [ $NODE = "sirocco" ] then GUIX_ENV="chameleon-cuda --with-input=openblas=mkl" fi +export MPI_OPTIONS="" if [ $MPI = "openmpi" ] then - export MPI_OPTIONS="--map-by ppr:1:node:pe=36" - if [ $NODE = "miriel" ] + if [ $NODE = "bora" ] then - export MPI_OPTIONS="--mca mtl psm --map-by ppr:1:node:pe=24" + export MPI_OPTIONS="--map-by ppr:1:node:pe=36" fi GUIX_ENV_MPI="" GUIX_ADHOC_MPI="openssh openmpi" elif [ $MPI = "nmad" ] then export MPI_OPTIONS="-DPIOM_DEDICATED=1 -DPIOM_DEDICATED_WAIT=1" - GUIX_ENV_MPI="--with-input=openmpi=nmad" + GUIX_ENV_MPI="--with-input=openmpi=nmad --with-branch=starpu=starpu-1.3" GUIX_ADHOC_MPI="which gzip zlib tar inetutils util-linux procps openssh nmad" else echo "$0: Please set the MPI environnement variable to openmpi or nmad." exit -1 fi -GUIX_ADHOC="slurm jube python python-click python-gitpython python-elasticsearch python-certifi sed coreutils grep gawk perl" +GUIX_ADHOC="coreutils gawk grep jube perl python python-click python-certifi python-elasticsearch python-gitpython python-matplotlib python-pandas python-seaborn r-ggplot2 r-plyr r-reshape2 sed slurm" GUIX_RULE="$GUIX_ENV $GUIX_ENV_MPI --ad-hoc $GUIX_ADHOC $GUIX_ADHOC_MPI" # Submit jobs @@ -68,6 +60,7 @@ GUIX_RULE="$GUIX_ENV $GUIX_ENV_MPI --ad-hoc $GUIX_ADHOC $GUIX_ADHOC_MPI" exec guix environment --pure \ --preserve=PLATFORM \ --preserve=NODE \ + --preserve=LD_PRELOAD \ --preserve=^CI \ --preserve=^SLURM \ --preserve=^JUBE \ diff --git a/tools/pages.sh b/tools/pages.sh new file mode 100755 index 000000000..f7be64c65 --- /dev/null +++ b/tools/pages.sh @@ -0,0 +1,61 @@ +#!/usr/bin/env bash + +CHAMELEON_SRC_DIR=${CHAMELEON_SRC_DIR:-$PWD} + +mkdir tmp_fig +cd tmp_fig + +## need to generate figures from last benchmarks +# get the most recent chameleon commit date for which benchs have been performed +commit_sha=`curl -X GET "https://elasticsearch.bordeaux.inria.fr/hiepacs-chameleon_perf/_search?pretty" -H 'Content-Type: application/json' -d' +{ + "query": { "match_all": {} }, + "sort": [ + { "Commit_date_chameleon": "desc" } + ], + "size": 1 +} +' | grep "Commit_sha_chameleon" | awk '{ print $3" "$4}' |sed -e "s#,##g" |sed -e "s#\"##g" |sed -e "s# ##g"` +echo $commit_sha + +# generate the csv file from elasticsearch for the given chameleon commit +python3 ${CHAMELEON_SRC_DIR}/tools/bench/jube/get_result.py -e https://elasticsearch.bordeaux.inria.fr -t hiepacs -p chameleon -c $commit_sha + +# generate the figures +Rscript ${CHAMELEON_SRC_DIR}/tools/bench/jube/GenFigures.R + +# add the performance chapter to the doc. we need the performances files to add +# this chapter that are not commited in the sources so that this chapter is not +# here by default +cat >> ${CHAMELEON_SRC_DIR}/doc/orgmode/users_guide.org.in <<EOF +* Chameleon Performances on PlaFRIM +Chameleon commit: *$commit_sha*. +#+INCLUDE: @CMAKE_CURRENT_SOURCE_DIR@/chapters/performances.org +EOF + +cd .. + +## Build the doc +VERSION=${VERSION:-pages} +mkdir -p build-$VERSION +cd build-$VERSION + +cmake $CHAMELEON_SRC_DIR -DCHAMELEON_ENABLE_DOC=ON +make doc -j5 + +cd .. +mv build-$VERSION/doc/orgmode public/ +mv build-$VERSION/doc/doxygen/out/html public/doxygen +mv tmp_fig/*.png public/ + +cd public/ +if [ -f users_guide.html ] +then + ln -sfn users_guide.html index.html +else + echo -e "ERROR: missing users_guide.html file" + exit 1 +fi + +# Change the width of the page in the CSS file +sed -i -e "s#max-width:800px#max-width:1800px#" org-html-themes/styles/readtheorg/css/readtheorg.css -- GitLab