From 910074e079bce7093fc8c572ed7c29717283bbdb Mon Sep 17 00:00:00 2001 From: Mathieu Carbou Date: Fri, 12 Jan 2024 19:04:28 +0100 Subject: [PATCH] Preparing 2.1.0 --- .github/scripts/install-arduino-core-esp32.sh | 36 - .../scripts/install-arduino-core-esp8266.sh | 29 - .github/scripts/install-arduino-ide.sh | 228 - .github/scripts/install-platformio.sh | 140 - .github/scripts/on-push.sh | 75 - .github/stale.yml | 31 - .github/workflows/push.yml | 34 - README.md | 4 +- examples/CaptivePortal/CaptivePortal.ino | 47 - .../ESP_AsyncFSBrowser/ESP_AsyncFSBrowser.ino | 257 - .../ESP_AsyncFSBrowser/data/.exclude.files | 3 - examples/ESP_AsyncFSBrowser/data/ace.ico.gz | Bin 6307 -> 0 bytes .../ESP_AsyncFSBrowser/data/acefull.js.gz | Bin 118766 -> 0 bytes examples/ESP_AsyncFSBrowser/data/edit_gz | Bin 4503 -> 0 bytes examples/ESP_AsyncFSBrowser/data/favicon.ico | Bin 1150 -> 0 bytes .../ESP_AsyncFSBrowser/data/folder/image.jpg | Bin 6071 -> 0 bytes .../ESP_AsyncFSBrowser/data/folder/test.txt | 1 - examples/ESP_AsyncFSBrowser/data/index.htm | 131 - .../ESP_AsyncFSBrowser/data/worker-css.js.gz | Bin 32927 -> 0 bytes .../ESP_AsyncFSBrowser/data/worker-html.js.gz | Bin 45019 -> 0 bytes .../data/worker-javascript.js.gz | Bin 112558 -> 0 bytes .../ESP_AsyncFSBrowser/data/worker-json.js.gz | Bin 6923 -> 0 bytes examples/SmartSwitch/1.PNG | Bin 17650 -> 0 bytes examples/SmartSwitch/2.PNG | Bin 12835 -> 0 bytes examples/SmartSwitch/3.PNG | Bin 26824 -> 0 bytes examples/SmartSwitch/4.PNG | Bin 17958 -> 0 bytes examples/SmartSwitch/ESPAsyncWiFiManager.cpp | 1177 ---- examples/SmartSwitch/ESPAsyncWiFiManager.h | 283 - examples/SmartSwitch/PinOut_Notes.txt | 56 - examples/SmartSwitch/README.md | 19 - examples/SmartSwitch/SmartSwitch.ino | 750 --- examples/SmartSwitch/Xtea.cpp | 48 - examples/SmartSwitch/Xtea.h | 20 - examples/SmartSwitch/data/.exclude.files | 3 - examples/SmartSwitch/data/ace.ico.gz | Bin 6307 -> 0 bytes examples/SmartSwitch/data/acefull.js.gz | Bin 118766 -> 0 bytes examples/SmartSwitch/data/app.css.gz | Bin 2740 -> 0 bytes examples/SmartSwitch/data/app.min.js.gz | Bin 38439 -> 0 bytes examples/SmartSwitch/data/edit_gz | Bin 4503 -> 0 bytes examples/SmartSwitch/data/favicon.ico.gz | Bin 4314 -> 0 bytes examples/SmartSwitch/data/index.htm | 626 -- .../SmartSwitch/data/login/favicon.ico.gz | Bin 5806 -> 0 bytes examples/SmartSwitch/data/login/index.htm | 36 - examples/SmartSwitch/data/worker-css.js.gz | Bin 32927 -> 0 bytes examples/SmartSwitch/data/worker-html.js.gz | Bin 45019 -> 0 bytes .../SmartSwitch/data/worker-javascript.js.gz | Bin 112558 -> 0 bytes examples/SmartSwitch/data/worker-json.js.gz | Bin 6923 -> 0 bytes examples/SmartSwitch/data_src/.exclude.files | 2 - examples/SmartSwitch/data_src/acefull.js | 30 - examples/SmartSwitch/data_src/app.css | 1 - examples/SmartSwitch/data_src/app.min.js | 533 -- examples/SmartSwitch/data_src/favicon.ico | Bin 15406 -> 0 bytes examples/SmartSwitch/data_src/index.htm | 599 -- .../data_src/js_css_src/.exclude.files | 2 - .../data_src/js_css_src/ace-drafts/ace.js | 14 - .../js_css_src/ace-drafts/ext-searchbox.js | 5 - .../js_css_src/ace-drafts/mode-css.js | 1 - .../js_css_src/ace-drafts/mode-html.js | 1 - .../js_css_src/ace-drafts/mode-javascript.js | 1 - .../js_css_src/ace-drafts/worker-html.js | 1 - .../SmartSwitch/data_src/js_css_src/ace.js | 14 - .../SmartSwitch/data_src/js_css_src/app.js | 5787 ----------------- .../js_css_src/js-time-picker/1-inline.html | 30 - .../js_css_src/js-time-picker/2-popup.html | 27 - .../js_css_src/js-time-picker/README.txt | 29 - .../js-time-picker/tpick-light-pop.css | 65 - .../js_css_src/js-time-picker/tpick-light.css | 47 - .../js_css_src/js-time-picker/tpick-pop.js | 136 - .../js_css_src/js-time-picker/tpick.js | 116 - .../justgage-1.2.2/examples/auto-adjust.htm | 94 - .../justgage-1.2.2/examples/counter.html | 58 - .../examples/custom-interval.htm | 82 - .../justgage-1.2.2/examples/custom-node.html | 130 - .../examples/custom-sectors.html | 88 - .../examples/custom-value-renderer.html | 116 - .../examples/customize-style.htm | 137 - .../justgage-1.2.2/examples/defaults.html | 60 - .../justgage-1.2.2/examples/font-options.html | 62 - .../examples/format-number.html | 56 - .../examples/html5-data-attribute-config.html | 54 - .../examples/human-friendly-numbers.html | 109 - .../justgage-1.2.2/examples/pointer.html | 168 - .../examples/refresh-maximum.html | 91 - .../examples/responsive-gauges.htm | 71 - .../justgage-1.2.2/examples/reverse.html | 144 - .../js_css_src/justgage-1.2.2/justgage.js | 1220 ---- .../justgage-1.2.2/raphael-2.1.4.min.js | 12 - .../js_css_src/styled-notifications/.babelrc | 3 - .../styled-notifications/.eslintrc.js | 31 - .../styled-notifications/.gitignore | 30 - .../styled-notifications/.travis.yml | 3 - .../styled-notifications/LICENSE.md | 7 - .../__tests__/helpers.test.js | 104 - .../__tests__/index.tests.js | 144 - .../styled-notifications/demo/demo.js | 34 - .../styled-notifications/demo/index.html | 101 - .../styled-notifications/demo/index_my.html | 37 - .../dist/notifications.css | 1 - .../dist/notifications.css.gz | Bin 2487 -> 0 bytes .../dist/notifications.js | 1 - .../dist/notifications.js.gz | Bin 1723 -> 0 bytes .../styled-notifications/package.json | 58 - .../js_css_src/styled-notifications/readme.md | 82 - .../styled-notifications/src/helpers.js | 24 - .../styled-notifications/src/index.js | 148 - .../src/polyfills/classList.js | 68 - .../styled-notifications/src/style.scss | 134 - .../styled-notifications/webpack.config.js | 41 - examples/regex_patterns/.test.build_flags | 1 - examples/regex_patterns/regex_patterns.ino | 77 - examples/simple_server/simple_server.ino | 74 - extras/README.md | 25 - extras/do_ed_fs.bat | 9 - extras/do_emb.bat | 9 - extras/ehg.c | 124 - extras/ehg.exe | Bin 4096 -> 0 bytes extras/rehg.c | 101 - extras/rehg.exe | Bin 2560 -> 0 bytes extras/tmp1/placeholder | 0 extras/undo.bat | 4 - extras/update_ace.bat | 44 - library.json | 2 +- library.properties | 4 +- 123 files changed, 5 insertions(+), 15747 deletions(-) delete mode 100755 .github/scripts/install-arduino-core-esp32.sh delete mode 100644 .github/scripts/install-arduino-core-esp8266.sh delete mode 100755 .github/scripts/install-arduino-ide.sh delete mode 100644 .github/scripts/install-platformio.sh delete mode 100755 .github/scripts/on-push.sh delete mode 100644 .github/stale.yml delete mode 100644 .github/workflows/push.yml delete mode 100644 examples/CaptivePortal/CaptivePortal.ino delete mode 100644 examples/ESP_AsyncFSBrowser/ESP_AsyncFSBrowser.ino delete mode 100644 examples/ESP_AsyncFSBrowser/data/.exclude.files delete mode 100644 examples/ESP_AsyncFSBrowser/data/ace.ico.gz delete mode 100644 examples/ESP_AsyncFSBrowser/data/acefull.js.gz delete mode 100644 examples/ESP_AsyncFSBrowser/data/edit_gz delete mode 100644 examples/ESP_AsyncFSBrowser/data/favicon.ico delete mode 100644 examples/ESP_AsyncFSBrowser/data/folder/image.jpg delete mode 100644 examples/ESP_AsyncFSBrowser/data/folder/test.txt delete mode 100644 examples/ESP_AsyncFSBrowser/data/index.htm delete mode 100644 examples/ESP_AsyncFSBrowser/data/worker-css.js.gz delete mode 100644 examples/ESP_AsyncFSBrowser/data/worker-html.js.gz delete mode 100644 examples/ESP_AsyncFSBrowser/data/worker-javascript.js.gz delete mode 100644 examples/ESP_AsyncFSBrowser/data/worker-json.js.gz delete mode 100644 examples/SmartSwitch/1.PNG delete mode 100644 examples/SmartSwitch/2.PNG delete mode 100644 examples/SmartSwitch/3.PNG delete mode 100644 examples/SmartSwitch/4.PNG delete mode 100644 examples/SmartSwitch/ESPAsyncWiFiManager.cpp delete mode 100644 examples/SmartSwitch/ESPAsyncWiFiManager.h delete mode 100644 examples/SmartSwitch/PinOut_Notes.txt delete mode 100644 examples/SmartSwitch/README.md delete mode 100644 examples/SmartSwitch/SmartSwitch.ino delete mode 100644 examples/SmartSwitch/Xtea.cpp delete mode 100644 examples/SmartSwitch/Xtea.h delete mode 100644 examples/SmartSwitch/data/.exclude.files delete mode 100644 examples/SmartSwitch/data/ace.ico.gz delete mode 100644 examples/SmartSwitch/data/acefull.js.gz delete mode 100644 examples/SmartSwitch/data/app.css.gz delete mode 100644 examples/SmartSwitch/data/app.min.js.gz delete mode 100644 examples/SmartSwitch/data/edit_gz delete mode 100644 examples/SmartSwitch/data/favicon.ico.gz delete mode 100644 examples/SmartSwitch/data/index.htm delete mode 100644 examples/SmartSwitch/data/login/favicon.ico.gz delete mode 100644 examples/SmartSwitch/data/login/index.htm delete mode 100644 examples/SmartSwitch/data/worker-css.js.gz delete mode 100644 examples/SmartSwitch/data/worker-html.js.gz delete mode 100644 examples/SmartSwitch/data/worker-javascript.js.gz delete mode 100644 examples/SmartSwitch/data/worker-json.js.gz delete mode 100644 examples/SmartSwitch/data_src/.exclude.files delete mode 100644 examples/SmartSwitch/data_src/acefull.js delete mode 100644 examples/SmartSwitch/data_src/app.css delete mode 100644 examples/SmartSwitch/data_src/app.min.js delete mode 100644 examples/SmartSwitch/data_src/favicon.ico delete mode 100644 examples/SmartSwitch/data_src/index.htm delete mode 100644 examples/SmartSwitch/data_src/js_css_src/.exclude.files delete mode 100644 examples/SmartSwitch/data_src/js_css_src/ace-drafts/ace.js delete mode 100644 examples/SmartSwitch/data_src/js_css_src/ace-drafts/ext-searchbox.js delete mode 100644 examples/SmartSwitch/data_src/js_css_src/ace-drafts/mode-css.js delete mode 100644 examples/SmartSwitch/data_src/js_css_src/ace-drafts/mode-html.js delete mode 100644 examples/SmartSwitch/data_src/js_css_src/ace-drafts/mode-javascript.js delete mode 100644 examples/SmartSwitch/data_src/js_css_src/ace-drafts/worker-html.js delete mode 100644 examples/SmartSwitch/data_src/js_css_src/ace.js delete mode 100644 examples/SmartSwitch/data_src/js_css_src/app.js delete mode 100644 examples/SmartSwitch/data_src/js_css_src/js-time-picker/1-inline.html delete mode 100644 examples/SmartSwitch/data_src/js_css_src/js-time-picker/2-popup.html delete mode 100644 examples/SmartSwitch/data_src/js_css_src/js-time-picker/README.txt delete mode 100644 examples/SmartSwitch/data_src/js_css_src/js-time-picker/tpick-light-pop.css delete mode 100644 examples/SmartSwitch/data_src/js_css_src/js-time-picker/tpick-light.css delete mode 100644 examples/SmartSwitch/data_src/js_css_src/js-time-picker/tpick-pop.js delete mode 100644 examples/SmartSwitch/data_src/js_css_src/js-time-picker/tpick.js delete mode 100644 examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/auto-adjust.htm delete mode 100644 examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/counter.html delete mode 100644 examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/custom-interval.htm delete mode 100644 examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/custom-node.html delete mode 100644 examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/custom-sectors.html delete mode 100644 examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/custom-value-renderer.html delete mode 100644 examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/customize-style.htm delete mode 100644 examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/defaults.html delete mode 100644 examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/font-options.html delete mode 100644 examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/format-number.html delete mode 100644 examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/html5-data-attribute-config.html delete mode 100644 examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/human-friendly-numbers.html delete mode 100644 examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/pointer.html delete mode 100644 examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/refresh-maximum.html delete mode 100644 examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/responsive-gauges.htm delete mode 100644 examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/reverse.html delete mode 100644 examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/justgage.js delete mode 100644 examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/raphael-2.1.4.min.js delete mode 100644 examples/SmartSwitch/data_src/js_css_src/styled-notifications/.babelrc delete mode 100644 examples/SmartSwitch/data_src/js_css_src/styled-notifications/.eslintrc.js delete mode 100644 examples/SmartSwitch/data_src/js_css_src/styled-notifications/.gitignore delete mode 100644 examples/SmartSwitch/data_src/js_css_src/styled-notifications/.travis.yml delete mode 100644 examples/SmartSwitch/data_src/js_css_src/styled-notifications/LICENSE.md delete mode 100644 examples/SmartSwitch/data_src/js_css_src/styled-notifications/__tests__/helpers.test.js delete mode 100644 examples/SmartSwitch/data_src/js_css_src/styled-notifications/__tests__/index.tests.js delete mode 100644 examples/SmartSwitch/data_src/js_css_src/styled-notifications/demo/demo.js delete mode 100644 examples/SmartSwitch/data_src/js_css_src/styled-notifications/demo/index.html delete mode 100644 examples/SmartSwitch/data_src/js_css_src/styled-notifications/demo/index_my.html delete mode 100644 examples/SmartSwitch/data_src/js_css_src/styled-notifications/dist/notifications.css delete mode 100644 examples/SmartSwitch/data_src/js_css_src/styled-notifications/dist/notifications.css.gz delete mode 100644 examples/SmartSwitch/data_src/js_css_src/styled-notifications/dist/notifications.js delete mode 100644 examples/SmartSwitch/data_src/js_css_src/styled-notifications/dist/notifications.js.gz delete mode 100644 examples/SmartSwitch/data_src/js_css_src/styled-notifications/package.json delete mode 100644 examples/SmartSwitch/data_src/js_css_src/styled-notifications/readme.md delete mode 100644 examples/SmartSwitch/data_src/js_css_src/styled-notifications/src/helpers.js delete mode 100644 examples/SmartSwitch/data_src/js_css_src/styled-notifications/src/index.js delete mode 100644 examples/SmartSwitch/data_src/js_css_src/styled-notifications/src/polyfills/classList.js delete mode 100644 examples/SmartSwitch/data_src/js_css_src/styled-notifications/src/style.scss delete mode 100644 examples/SmartSwitch/data_src/js_css_src/styled-notifications/webpack.config.js delete mode 100644 examples/regex_patterns/.test.build_flags delete mode 100644 examples/regex_patterns/regex_patterns.ino delete mode 100644 examples/simple_server/simple_server.ino delete mode 100644 extras/README.md delete mode 100644 extras/do_ed_fs.bat delete mode 100644 extras/do_emb.bat delete mode 100644 extras/ehg.c delete mode 100644 extras/ehg.exe delete mode 100644 extras/rehg.c delete mode 100644 extras/rehg.exe delete mode 100644 extras/tmp1/placeholder delete mode 100644 extras/undo.bat delete mode 100644 extras/update_ace.bat diff --git a/.github/scripts/install-arduino-core-esp32.sh b/.github/scripts/install-arduino-core-esp32.sh deleted file mode 100755 index cf1026d..0000000 --- a/.github/scripts/install-arduino-core-esp32.sh +++ /dev/null @@ -1,36 +0,0 @@ -#!/bin/bash - -export ARDUINO_ESP32_PATH="$ARDUINO_USR_PATH/hardware/espressif/esp32" -if [ ! -d "$ARDUINO_ESP32_PATH" ]; then - echo "Installing ESP32 Arduino Core ..." - script_init_path="$PWD" - mkdir -p "$ARDUINO_USR_PATH/hardware/espressif" - cd "$ARDUINO_USR_PATH/hardware/espressif" - - echo "Installing Python Serial ..." - pip install pyserial > /dev/null - - if [ "$OS_IS_WINDOWS" == "1" ]; then - echo "Installing Python Requests ..." - pip install requests > /dev/null - fi - - if [ "$GITHUB_REPOSITORY" == "espressif/arduino-esp32" ]; then - echo "Linking Core..." - ln -s $GITHUB_WORKSPACE esp32 - else - echo "Cloning Core Repository..." - git clone https://github.com/espressif/arduino-esp32.git esp32 > /dev/null 2>&1 - fi - - echo "Updating Submodules ..." - cd esp32 - git submodule update --init --recursive > /dev/null 2>&1 - - echo "Installing Platform Tools ..." - cd tools && python get.py - cd $script_init_path - - echo "ESP32 Arduino has been installed in '$ARDUINO_ESP32_PATH'" - echo "" -fi diff --git a/.github/scripts/install-arduino-core-esp8266.sh b/.github/scripts/install-arduino-core-esp8266.sh deleted file mode 100644 index 048cd02..0000000 --- a/.github/scripts/install-arduino-core-esp8266.sh +++ /dev/null @@ -1,29 +0,0 @@ -#!/bin/bash - -echo "Installing ESP8266 Arduino Core ..." -script_init_path="$PWD" -mkdir -p "$ARDUINO_USR_PATH/hardware/esp8266com" -cd "$ARDUINO_USR_PATH/hardware/esp8266com" - -echo "Installing Python Serial ..." -pip install pyserial > /dev/null - -if [ "$OS_IS_WINDOWS" == "1" ]; then - echo "Installing Python Requests ..." - pip install requests > /dev/null -fi - -echo "Cloning Core Repository ..." -git clone https://github.com/esp8266/Arduino.git esp8266 > /dev/null 2>&1 - -echo "Updating submodules ..." -cd esp8266 -git submodule update --init --recursive > /dev/null 2>&1 - -echo "Installing Platform Tools ..." -cd tools -python get.py > /dev/null -cd $script_init_path - -echo "ESP8266 Arduino has been installed in '$ARDUINO_USR_PATH/hardware/esp8266com'" -echo "" diff --git a/.github/scripts/install-arduino-ide.sh b/.github/scripts/install-arduino-ide.sh deleted file mode 100755 index ce60cb8..0000000 --- a/.github/scripts/install-arduino-ide.sh +++ /dev/null @@ -1,228 +0,0 @@ -#!/bin/bash - -#OSTYPE: 'linux-gnu', ARCH: 'x86_64' => linux64 -#OSTYPE: 'msys', ARCH: 'x86_64' => win32 -#OSTYPE: 'darwin18', ARCH: 'i386' => macos - -OSBITS=`arch` -if [[ "$OSTYPE" == "linux"* ]]; then - export OS_IS_LINUX="1" - ARCHIVE_FORMAT="tar.xz" - if [[ "$OSBITS" == "i686" ]]; then - OS_NAME="linux32" - elif [[ "$OSBITS" == "x86_64" ]]; then - OS_NAME="linux64" - elif [[ "$OSBITS" == "armv7l" || "$OSBITS" == "aarch64" ]]; then - OS_NAME="linuxarm" - else - OS_NAME="$OSTYPE-$OSBITS" - echo "Unknown OS '$OS_NAME'" - exit 1 - fi -elif [[ "$OSTYPE" == "darwin"* ]]; then - export OS_IS_MACOS="1" - ARCHIVE_FORMAT="zip" - OS_NAME="macosx" -elif [[ "$OSTYPE" == "cygwin" ]] || [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "win32" ]]; then - export OS_IS_WINDOWS="1" - ARCHIVE_FORMAT="zip" - OS_NAME="windows" -else - OS_NAME="$OSTYPE-$OSBITS" - echo "Unknown OS '$OS_NAME'" - exit 1 -fi -export OS_NAME - -ARDUINO_BUILD_DIR="$HOME/.arduino/build.tmp" -ARDUINO_CACHE_DIR="$HOME/.arduino/cache.tmp" - -if [ "$OS_IS_MACOS" == "1" ]; then - export ARDUINO_IDE_PATH="/Applications/Arduino.app/Contents/Java" - export ARDUINO_USR_PATH="$HOME/Documents/Arduino" -elif [ "$OS_IS_WINDOWS" == "1" ]; then - export ARDUINO_IDE_PATH="$HOME/arduino_ide" - export ARDUINO_USR_PATH="$HOME/Documents/Arduino" -else - export ARDUINO_IDE_PATH="$HOME/arduino_ide" - export ARDUINO_USR_PATH="$HOME/Arduino" -fi - -if [ ! -d "$ARDUINO_IDE_PATH" ]; then - echo "Installing Arduino IDE on $OS_NAME ..." - echo "Downloading 'arduino-nightly-$OS_NAME.$ARCHIVE_FORMAT' to 'arduino.$ARCHIVE_FORMAT' ..." - if [ "$OS_IS_LINUX" == "1" ]; then - wget -O "arduino.$ARCHIVE_FORMAT" "https://www.arduino.cc/download.php?f=/arduino-nightly-$OS_NAME.$ARCHIVE_FORMAT" > /dev/null 2>&1 - echo "Extracting 'arduino.$ARCHIVE_FORMAT' ..." - tar xf "arduino.$ARCHIVE_FORMAT" > /dev/null - mv arduino-nightly "$ARDUINO_IDE_PATH" - else - curl -o "arduino.$ARCHIVE_FORMAT" -L "https://www.arduino.cc/download.php?f=/arduino-nightly-$OS_NAME.$ARCHIVE_FORMAT" > /dev/null 2>&1 - echo "Extracting 'arduino.$ARCHIVE_FORMAT' ..." - unzip "arduino.$ARCHIVE_FORMAT" > /dev/null - if [ "$OS_IS_MACOS" == "1" ]; then - mv "Arduino.app" "/Applications/Arduino.app" - else - mv arduino-nightly "$ARDUINO_IDE_PATH" - fi - fi - rm -rf "arduino.$ARCHIVE_FORMAT" - - mkdir -p "$ARDUINO_USR_PATH/libraries" - mkdir -p "$ARDUINO_USR_PATH/hardware" - - echo "Arduino IDE Installed in '$ARDUINO_IDE_PATH'" - echo "" -fi - -function build_sketch(){ # build_sketch [extra-options] - if [ "$#" -lt 2 ]; then - echo "ERROR: Illegal number of parameters" - echo "USAGE: build_sketch [extra-options]" - return 1 - fi - - local fqbn="$1" - local sketch="$2" - local build_flags="$3" - local xtra_opts="$4" - local win_opts="" - if [ "$OS_IS_WINDOWS" == "1" ]; then - local ctags_version=`ls "$ARDUINO_IDE_PATH/tools-builder/ctags/"` - local preprocessor_version=`ls "$ARDUINO_IDE_PATH/tools-builder/arduino-preprocessor/"` - win_opts="-prefs=runtime.tools.ctags.path=$ARDUINO_IDE_PATH/tools-builder/ctags/$ctags_version -prefs=runtime.tools.arduino-preprocessor.path=$ARDUINO_IDE_PATH/tools-builder/arduino-preprocessor/$preprocessor_version" - fi - - echo "" - echo "Compiling '"$(basename "$sketch")"' ..." - mkdir -p "$ARDUINO_BUILD_DIR" - mkdir -p "$ARDUINO_CACHE_DIR" - $ARDUINO_IDE_PATH/arduino-builder -compile -logger=human -core-api-version=10810 \ - -fqbn=$fqbn \ - -warnings="all" \ - -tools "$ARDUINO_IDE_PATH/tools-builder" \ - -tools "$ARDUINO_IDE_PATH/tools" \ - -built-in-libraries "$ARDUINO_IDE_PATH/libraries" \ - -hardware "$ARDUINO_IDE_PATH/hardware" \ - -hardware "$ARDUINO_USR_PATH/hardware" \ - -libraries "$ARDUINO_USR_PATH/libraries" \ - -build-cache "$ARDUINO_CACHE_DIR" \ - -build-path "$ARDUINO_BUILD_DIR" \ - -prefs=compiler.cpp.extra_flags="$build_flags" \ - $win_opts $xtra_opts "$sketch" -} - -function count_sketches() # count_sketches -{ - local examples="$1" - rm -rf sketches.txt - if [ ! -d "$examples" ]; then - touch sketches.txt - return 0 - fi - local sketches=$(find $examples -name *.ino) - local sketchnum=0 - for sketch in $sketches; do - local sketchdir=$(dirname $sketch) - local sketchdirname=$(basename $sketchdir) - local sketchname=$(basename $sketch) - if [[ "${sketchdirname}.ino" != "$sketchname" ]]; then - continue - fi; - if [[ -f "$sketchdir/.test.skip" ]]; then - continue - fi - echo $sketch >> sketches.txt - sketchnum=$(($sketchnum + 1)) - done - return $sketchnum -} - -function build_sketches() # build_sketches [extra-options] -{ - local fqbn=$1 - local examples=$2 - local chunk_idex=$3 - local chunks_num=$4 - local xtra_opts=$5 - - if [ "$#" -lt 2 ]; then - echo "ERROR: Illegal number of parameters" - echo "USAGE: build_sketches [ ] [extra-options]" - return 1 - fi - - if [ "$#" -lt 4 ]; then - chunk_idex="0" - chunks_num="1" - xtra_opts=$3 - fi - - if [ "$chunks_num" -le 0 ]; then - echo "ERROR: Chunks count must be positive number" - return 1 - fi - if [ "$chunk_idex" -ge "$chunks_num" ]; then - echo "ERROR: Chunk index must be less than chunks count" - return 1 - fi - - set +e - count_sketches "$examples" - local sketchcount=$? - set -e - local sketches=$(cat sketches.txt) - rm -rf sketches.txt - - local chunk_size=$(( $sketchcount / $chunks_num )) - local all_chunks=$(( $chunks_num * $chunk_size )) - if [ "$all_chunks" -lt "$sketchcount" ]; then - chunk_size=$(( $chunk_size + 1 )) - fi - - local start_index=$(( $chunk_idex * $chunk_size )) - if [ "$sketchcount" -le "$start_index" ]; then - echo "Skipping job" - return 0 - fi - - local end_index=$(( $(( $chunk_idex + 1 )) * $chunk_size )) - if [ "$end_index" -gt "$sketchcount" ]; then - end_index=$sketchcount - fi - - local start_num=$(( $start_index + 1 )) - echo "Found $sketchcount Sketches"; - echo "Chunk Count : $chunks_num" - echo "Chunk Size : $chunk_size" - echo "Start Sketch: $start_num" - echo "End Sketch : $end_index" - - local sketchnum=0 - for sketch in $sketches; do - local sketchdir=$(dirname $sketch) - local sketchdirname=$(basename $sketchdir) - local sketchname=$(basename $sketch) - if [ "${sketchdirname}.ino" != "$sketchname" ] \ - || [ -f "$sketchdir/.test.skip" ]; then - continue - fi - sketchnum=$(($sketchnum + 1)) - if [ "$sketchnum" -le "$start_index" ] \ - || [ "$sketchnum" -gt "$end_index" ]; then - continue - fi - local sketchBuildFlags="" - if [ -f "$sketchdir/.test.build_flags" ]; then - while read line; do - sketchBuildFlags="$sketchBuildFlags $line" - done < "$sketchdir/.test.build_flags" - fi - build_sketch "$fqbn" "$sketch" "$sketchBuildFlags" "$xtra_opts" - local result=$? - if [ $result -ne 0 ]; then - return $result - fi - done - return 0 -} diff --git a/.github/scripts/install-platformio.sh b/.github/scripts/install-platformio.sh deleted file mode 100644 index 594948e..0000000 --- a/.github/scripts/install-platformio.sh +++ /dev/null @@ -1,140 +0,0 @@ -#!/bin/bash - -echo "Installing Python Wheel ..." -pip install wheel > /dev/null 2>&1 - -echo "Installing PlatformIO ..." -pip install -U platformio > /dev/null 2>&1 - -echo "PlatformIO has been installed" -echo "" - - -function build_pio_sketch(){ # build_pio_sketch - if [ "$#" -lt 3 ]; then - echo "ERROR: Illegal number of parameters" - echo "USAGE: build_pio_sketch " - return 1 - fi - - local board="$1" - local sketch="$2" - local buildFlags="$3" - local sketch_dir=$(dirname "$sketch") - echo "" - echo "Compiling '"$(basename "$sketch")"' ..." - python -m platformio ci -l '.' --board "$board" "$sketch_dir" --project-option="board_build.partitions = huge_app.csv" --project-option="build_flags=$buildFlags" -} - -function count_sketches() # count_sketches -{ - local examples="$1" - rm -rf sketches.txt - if [ ! -d "$examples" ]; then - touch sketches.txt - return 0 - fi - local sketches=$(find $examples -name *.ino) - local sketchnum=0 - for sketch in $sketches; do - local sketchdir=$(dirname $sketch) - local sketchdirname=$(basename $sketchdir) - local sketchname=$(basename $sketch) - if [[ "${sketchdirname}.ino" != "$sketchname" ]]; then - continue - fi; - if [[ -f "$sketchdir/.test.skip" ]]; then - continue - fi - echo $sketch >> sketches.txt - sketchnum=$(($sketchnum + 1)) - done - return $sketchnum -} - -function build_pio_sketches() # build_pio_sketches -{ - if [ "$#" -lt 2 ]; then - echo "ERROR: Illegal number of parameters" - echo "USAGE: build_pio_sketches [ ]" - return 1 - fi - - local board=$1 - local examples=$2 - local chunk_idex=$3 - local chunks_num=$4 - - if [ "$#" -lt 4 ]; then - chunk_idex="0" - chunks_num="1" - fi - - if [ "$chunks_num" -le 0 ]; then - echo "ERROR: Chunks count must be positive number" - return 1 - fi - if [ "$chunk_idex" -ge "$chunks_num" ]; then - echo "ERROR: Chunk index must be less than chunks count" - return 1 - fi - - set +e - count_sketches "$examples" - local sketchcount=$? - set -e - local sketches=$(cat sketches.txt) - rm -rf sketches.txt - - local chunk_size=$(( $sketchcount / $chunks_num )) - local all_chunks=$(( $chunks_num * $chunk_size )) - if [ "$all_chunks" -lt "$sketchcount" ]; then - chunk_size=$(( $chunk_size + 1 )) - fi - - local start_index=$(( $chunk_idex * $chunk_size )) - if [ "$sketchcount" -le "$start_index" ]; then - echo "Skipping job" - return 0 - fi - - local end_index=$(( $(( $chunk_idex + 1 )) * $chunk_size )) - if [ "$end_index" -gt "$sketchcount" ]; then - end_index=$sketchcount - fi - - local start_num=$(( $start_index + 1 )) - echo "Found $sketchcount Sketches"; - echo "Chunk Count : $chunks_num" - echo "Chunk Size : $chunk_size" - echo "Start Sketch: $start_num" - echo "End Sketch : $end_index" - - local sketchnum=0 - for sketch in $sketches; do - local sketchdir=$(dirname $sketch) - local sketchdirname=$(basename $sketchdir) - local sketchname=$(basename $sketch) - if [ "${sketchdirname}.ino" != "$sketchname" ] \ - || [ -f "$sketchdir/.test.skip" ]; then - continue - fi - local sketchBuildFlags="" - if [ -f "$sketchdir/.test.build_flags" ]; then - while read line; do - sketchBuildFlags="$sketchBuildFlags $line" - done < "$sketchdir/.test.build_flags" - fi - sketchnum=$(($sketchnum + 1)) - if [ "$sketchnum" -le "$start_index" ] \ - || [ "$sketchnum" -gt "$end_index" ]; then - continue - fi - build_pio_sketch "$board" "$sketch" "$sketchBuildFlags" - local result=$? - if [ $result -ne 0 ]; then - return $result - fi - done - return 0 -} diff --git a/.github/scripts/on-push.sh b/.github/scripts/on-push.sh deleted file mode 100755 index 1eedd07..0000000 --- a/.github/scripts/on-push.sh +++ /dev/null @@ -1,75 +0,0 @@ -#!/bin/bash - -set -e - -if [ ! -z "$TRAVIS_BUILD_DIR" ]; then - export GITHUB_WORKSPACE="$TRAVIS_BUILD_DIR" - export GITHUB_REPOSITORY="$TRAVIS_REPO_SLUG" -elif [ -z "$GITHUB_WORKSPACE" ]; then - export GITHUB_WORKSPACE="$PWD" - export GITHUB_REPOSITORY="lorol/ESPAsyncWebServer" -fi - -TARGET_PLATFORM="$1" -CHUNK_INDEX=$2 -CHUNKS_CNT=$3 -BUILD_PIO=0 -if [ "$#" -lt 1 ]; then - TARGET_PLATFORM="esp32" -fi -if [ "$#" -lt 3 ] || [ "$CHUNKS_CNT" -le 0 ]; then - CHUNK_INDEX=0 - CHUNKS_CNT=1 -elif [ "$CHUNK_INDEX" -gt "$CHUNKS_CNT" ]; then - CHUNK_INDEX=$CHUNKS_CNT -elif [ "$CHUNK_INDEX" -eq "$CHUNKS_CNT" ]; then - BUILD_PIO=1 -fi - -if [ "$BUILD_PIO" -eq 0 ]; then - # ArduinoIDE Test - source ./.github/scripts/install-arduino-ide.sh - - echo "Installing ESPAsyncWebServer ..." - cp -rf "$GITHUB_WORKSPACE" "$ARDUINO_USR_PATH/libraries/ESPAsyncWebServer" - echo "Installing ArduinoJson ..." - git clone https://github.com/bblanchon/ArduinoJson "$ARDUINO_USR_PATH/libraries/ArduinoJson" > /dev/null 2>&1 - echo "Installing DHT sensor library ..." - git clone https://github.com/adafruit/DHT-sensor-library "$ARDUINO_USR_PATH/libraries/DHT-sensor-library" > /dev/null 2>&1 - - if [[ "$TARGET_PLATFORM" == "esp32" ]]; then - echo "Installing LITTLEFS for ESP32 ..." - git clone https://github.com/lorol/LITTLEFS "$ARDUINO_USR_PATH/libraries/LITTLEFS" > /dev/null 2>&1 - echo "Installing AsyncTCP ..." - git clone https://github.com/me-no-dev/AsyncTCP "$ARDUINO_USR_PATH/libraries/AsyncTCP" > /dev/null 2>&1 - FQBN="espressif:esp32:esp32:PSRAM=enabled,PartitionScheme=huge_app" - source ./.github/scripts/install-arduino-core-esp32.sh - echo "BUILDING ESP32 EXAMPLES" - else - echo "Installing ESPAsyncTCP ..." - git clone https://github.com/me-no-dev/ESPAsyncTCP "$ARDUINO_USR_PATH/libraries/ESPAsyncTCP" > /dev/null 2>&1 - FQBN="esp8266com:esp8266:generic:eesz=4M1M,ip=lm2f" - source ./.github/scripts/install-arduino-core-esp8266.sh - echo "BUILDING ESP8266 EXAMPLES" - fi - build_sketches "$FQBN" "$GITHUB_WORKSPACE/examples" "$CHUNK_INDEX" "$CHUNKS_CNT" -else - # PlatformIO Test - source ./.github/scripts/install-platformio.sh - - python -m platformio lib --storage-dir "$GITHUB_WORKSPACE" install - echo "Installing ArduinoJson ..." - python -m platformio lib -g install https://github.com/bblanchon/ArduinoJson.git > /dev/null 2>&1 - if [[ "$TARGET_PLATFORM" == "esp32" ]]; then - BOARD="esp32dev" - echo "Installing AsyncTCP ..." - python -m platformio lib -g install https://github.com/me-no-dev/AsyncTCP.git > /dev/null 2>&1 - echo "BUILDING ESP32 EXAMPLES" - else - BOARD="esp12e" - echo "Installing ESPAsyncTCP ..." - python -m platformio lib -g install https://github.com/me-no-dev/ESPAsyncTCP.git > /dev/null 2>&1 - echo "BUILDING ESP8266 EXAMPLES" - fi - build_pio_sketches "$BOARD" "$GITHUB_WORKSPACE/examples" -fi diff --git a/.github/stale.yml b/.github/stale.yml deleted file mode 100644 index ce7a8e3..0000000 --- a/.github/stale.yml +++ /dev/null @@ -1,31 +0,0 @@ -# Configuration for probot-stale - https://github.com/probot/stale - -daysUntilStale: 60 -daysUntilClose: 14 -limitPerRun: 30 -staleLabel: stale -exemptLabels: - - pinned - - security - - "to be implemented" - - "for reference" - - "move to PR" - - "enhancement" - -only: issues -onlyLabels: [] -exemptProjects: false -exemptMilestones: false -exemptAssignees: false - -markComment: > - [STALE_SET] This issue has been automatically marked as stale because it has not had - recent activity. It will be closed in 14 days if no further activity occurs. Thank you - for your contributions. - -unmarkComment: > - [STALE_CLR] This issue has been removed from the stale queue. Please ensure activity to keep it openin the future. - -closeComment: > - [STALE_DEL] This stale issue has been automatically closed. Thank you for your contributions. - diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml deleted file mode 100644 index 231dc52..0000000 --- a/.github/workflows/push.yml +++ /dev/null @@ -1,34 +0,0 @@ -name: ESP Async Web Server CI - -on: - push: - branches: - - master - - release/* - pull_request: - -jobs: - - build-arduino: - name: Arduino for ${{ matrix.board }} on ${{ matrix.os }} - runs-on: ${{ matrix.os }} - strategy: - matrix: - os: [ubuntu-latest, windows-latest, macOS-latest] - board: [esp32, esp8266] - steps: - - uses: actions/checkout@v1 - - name: Build Tests - run: bash ./.github/scripts/on-push.sh ${{ matrix.board }} 0 1 - -# build-pio: -# name: PlatformIO for ${{ matrix.board }} on ${{ matrix.os }} -# runs-on: ${{ matrix.os }} -# strategy: -# matrix: -# os: [ubuntu-latest, windows-latest, macOS-latest] -# board: [esp32, esp8266] -# steps: -# - uses: actions/checkout@v1 -# - name: Build Tests -# run: bash ./.github/scripts/on-push.sh ${{ matrix.board }} 1 1 diff --git a/README.md b/README.md index d3d3cf9..fd2c610 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,7 @@ # In this fork - SPIFFSEditor modifications -- Added [extras](https://github.com/lorol/ESPAsyncWebServer/tree/master/extras) folder with (Win) tools for re-packing, editing, updating and compressing html to binary arrays embedded to source -- Added a [SmartSwitch](https://github.com/lorol/ESPAsyncWebServer/tree/master/examples/SmartSwitch) example to test code features +- Added [extras](https://github.com/mathieucarbou/ESPAsyncWebServer/tree/master/extras) folder with (Win) tools for re-packing, editing, updating and compressing html to binary arrays embedded to source +- Added a [SmartSwitch](https://github.com/mathieucarbou/ESPAsyncWebServer/tree/master/examples/SmartSwitch) example to test code features - Applied the memory optimizations from [sascha432](https://github.com/sascha432/ESPAsyncWebServer) fork - Cookie Authentication including on Websocket part, based on [ayushsharma82](https://github.com/me-no-dev/ESPAsyncWebServer/pull/684) PR, new functions added: - For Websocket: ```void handleHandshake(AwsHandshakeHandler handler) ``` diff --git a/examples/CaptivePortal/CaptivePortal.ino b/examples/CaptivePortal/CaptivePortal.ino deleted file mode 100644 index f97f142..0000000 --- a/examples/CaptivePortal/CaptivePortal.ino +++ /dev/null @@ -1,47 +0,0 @@ -#include -#ifdef ESP32 -#include -#include -#elif defined(ESP8266) -#include -#include -#endif -#include "ESPAsyncWebServer.h" - -DNSServer dnsServer; -AsyncWebServer server(80); - -class CaptiveRequestHandler : public AsyncWebHandler { -public: - CaptiveRequestHandler() {} - virtual ~CaptiveRequestHandler() {} - - bool canHandle(AsyncWebServerRequest *request){ - //request->addInterestingHeader("ANY"); - return true; - } - - void handleRequest(AsyncWebServerRequest *request) { - AsyncResponseStream *response = request->beginResponseStream("text/html"); - response->print("Captive Portal"); - response->print("

This is out captive portal front page.

"); - response->printf("

You were trying to reach: http://%s%s

", request->host().c_str(), request->url().c_str()); - response->printf("

Try opening this link instead

", WiFi.softAPIP().toString().c_str()); - response->print(""); - request->send(response); - } -}; - - -void setup(){ - //your other setup stuff... - WiFi.softAP("esp-captive"); - dnsServer.start(53, "*", WiFi.softAPIP()); - server.addHandler(new CaptiveRequestHandler()).setFilter(ON_AP_FILTER);//only when requested from AP - //more handlers... - server.begin(); -} - -void loop(){ - dnsServer.processNextRequest(); -} diff --git a/examples/ESP_AsyncFSBrowser/ESP_AsyncFSBrowser.ino b/examples/ESP_AsyncFSBrowser/ESP_AsyncFSBrowser.ino deleted file mode 100644 index 3381b9f..0000000 --- a/examples/ESP_AsyncFSBrowser/ESP_AsyncFSBrowser.ino +++ /dev/null @@ -1,257 +0,0 @@ -// Defaulut is SPIFFS, FatFS: only on ESP32, also choose partition scheme w/ ffat. -// Comment 2 lines below or uncomment only one of them - -//#define USE_LittleFS -//#define USE_FatFS // Only ESP32 - -#include -#ifdef ESP32 - #include - #ifdef USE_LittleFS - #define MYFS LITTLEFS - #include "LITTLEFS.h" - #elif defined(USE_FatFS) - #define MYFS FFat - #include "FFat.h" - #else - #define MYFS SPIFFS - #include - #endif - #include - #include - #include -#elif defined(ESP8266) - #ifdef USE_LittleFS - #include - #define MYFS LittleFS - #include - #elif defined(USE_FatFS) - #error "FatFS only on ESP32 for now!" - #else - #define MYFS SPIFFS - #endif - #include - #include - #include -#endif -#include -#include - - -// SKETCH BEGIN -AsyncWebServer server(80); -AsyncWebSocket ws("/ws"); -AsyncEventSource events("/events"); - -void onWsEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventType type, void * arg, uint8_t *data, size_t len){ - if(type == WS_EVT_CONNECT){ - Serial.printf("ws[%s][%u] connect\n", server->url(), client->id()); - client->printf("Hello Client %u :)", client->id()); - client->ping(); - } else if(type == WS_EVT_DISCONNECT){ - Serial.printf("ws[%s][%u] disconnect\n", server->url(), client->id()); - } else if(type == WS_EVT_ERROR){ - Serial.printf("ws[%s][%u] error(%u): %s\n", server->url(), client->id(), *((uint16_t*)arg), (char*)data); - } else if(type == WS_EVT_PONG){ - Serial.printf("ws[%s][%u] pong[%u]: %s\n", server->url(), client->id(), len, (len)?(char*)data:""); - } else if(type == WS_EVT_DATA){ - AwsFrameInfo * info = (AwsFrameInfo*)arg; - String msg = ""; - if(info->final && info->index == 0 && info->len == len){ - //the whole message is in a single frame and we got all of it's data - Serial.printf("ws[%s][%u] %s-message[%llu]: ", server->url(), client->id(), (info->opcode == WS_TEXT)?"text":"binary", info->len); - - if(info->opcode == WS_TEXT){ - for(size_t i=0; i < info->len; i++) { - msg += (char) data[i]; - } - } else { - char buff[3]; - for(size_t i=0; i < info->len; i++) { - sprintf(buff, "%02x ", (uint8_t) data[i]); - msg += buff ; - } - } - Serial.printf("%s\n",msg.c_str()); - - if(info->opcode == WS_TEXT) - client->text("I got your text message"); - else - client->binary("I got your binary message"); - } else { - //message is comprised of multiple frames or the frame is split into multiple packets - if(info->index == 0){ - if(info->num == 0) - Serial.printf("ws[%s][%u] %s-message start\n", server->url(), client->id(), (info->message_opcode == WS_TEXT)?"text":"binary"); - Serial.printf("ws[%s][%u] frame[%u] start[%llu]\n", server->url(), client->id(), info->num, info->len); - } - - Serial.printf("ws[%s][%u] frame[%u] %s[%llu - %llu]: ", server->url(), client->id(), info->num, (info->message_opcode == WS_TEXT)?"text":"binary", info->index, info->index + len); - - if(info->opcode == WS_TEXT){ - for(size_t i=0; i < len; i++) { - msg += (char) data[i]; - } - } else { - char buff[3]; - for(size_t i=0; i < len; i++) { - sprintf(buff, "%02x ", (uint8_t) data[i]); - msg += buff ; - } - } - Serial.printf("%s\n",msg.c_str()); - - if((info->index + len) == info->len){ - Serial.printf("ws[%s][%u] frame[%u] end[%llu]\n", server->url(), client->id(), info->num, info->len); - if(info->final){ - Serial.printf("ws[%s][%u] %s-message end\n", server->url(), client->id(), (info->message_opcode == WS_TEXT)?"text":"binary"); - if(info->message_opcode == WS_TEXT) - client->text("I got your text message"); - else - client->binary("I got your binary message"); - } - } - } - } -} - -const char* ssid = "*****"; -const char* password = "*****"; -const char* hostName = "esp-async"; -const char* http_username = "admin"; -const char* http_password = "admin"; - -void setup(){ - Serial.begin(115200); - Serial.setDebugOutput(true); - WiFi.mode(WIFI_AP_STA); - WiFi.softAP(hostName); - WiFi.begin(ssid, password); - if (WiFi.waitForConnectResult() != WL_CONNECTED) { - Serial.printf("STA: Failed!\n"); - WiFi.disconnect(false); - delay(1000); - WiFi.begin(ssid, password); - } - - Serial.print(F("*CONNECTED* IP:")); - Serial.println(WiFi.localIP()); - - //Send OTA events to the browser - ArduinoOTA.onStart([]() { events.send("Update Start", "ota"); }); - ArduinoOTA.onEnd([]() { events.send("Update End", "ota"); }); - ArduinoOTA.onProgress([](unsigned int progress, unsigned int total) { - char p[32]; - sprintf(p, "Progress: %u%%\n", (progress/(total/100))); - events.send(p, "ota"); - }); - ArduinoOTA.onError([](ota_error_t error) { - if(error == OTA_AUTH_ERROR) events.send("Auth Failed", "ota"); - else if(error == OTA_BEGIN_ERROR) events.send("Begin Failed", "ota"); - else if(error == OTA_CONNECT_ERROR) events.send("Connect Failed", "ota"); - else if(error == OTA_RECEIVE_ERROR) events.send("Recieve Failed", "ota"); - else if(error == OTA_END_ERROR) events.send("End Failed", "ota"); - }); - ArduinoOTA.setHostname(hostName); - ArduinoOTA.begin(); - - MDNS.addService("http","tcp",80); - -//FS -#ifdef USE_FatFS - if (MYFS.begin(false,"/ffat",3)) { //limit the RAM usage, bottom line 8kb + 4kb takes per each file, default is 10 -#else - if (MYFS.begin()) { -#endif - Serial.print(F("FS mounted\n")); - } else { - Serial.print(F("FS mount failed\n")); - } - - ws.onEvent(onWsEvent); - server.addHandler(&ws); - - events.onConnect([](AsyncEventSourceClient *client){ - client->send("hello!",NULL,millis(),1000); - }); - server.addHandler(&events); - -#ifdef ESP32 - server.addHandler(new SPIFFSEditor(MYFS, http_username,http_password)); -#elif defined(ESP8266) - server.addHandler(new SPIFFSEditor(http_username,http_password, MYFS)); -#endif - - server.on("/heap", HTTP_GET, [](AsyncWebServerRequest *request){ - request->send(200, "text/plain", String(ESP.getFreeHeap())); - }); - - server.serveStatic("/", MYFS, "/").setDefaultFile("index.htm"); - - server.onNotFound([](AsyncWebServerRequest *request){ - Serial.printf("NOT_FOUND: "); - if(request->method() == HTTP_GET) - Serial.printf("GET"); - else if(request->method() == HTTP_POST) - Serial.printf("POST"); - else if(request->method() == HTTP_DELETE) - Serial.printf("DELETE"); - else if(request->method() == HTTP_PUT) - Serial.printf("PUT"); - else if(request->method() == HTTP_PATCH) - Serial.printf("PATCH"); - else if(request->method() == HTTP_HEAD) - Serial.printf("HEAD"); - else if(request->method() == HTTP_OPTIONS) - Serial.printf("OPTIONS"); - else - Serial.printf("UNKNOWN"); - Serial.printf(" http://%s%s\n", request->host().c_str(), request->url().c_str()); - - if(request->contentLength()){ - Serial.printf("_CONTENT_TYPE: %s\n", request->contentType().c_str()); - Serial.printf("_CONTENT_LENGTH: %u\n", request->contentLength()); - } - - int headers = request->headers(); - int i; - for(i=0;igetHeader(i); - Serial.printf("_HEADER[%s]: %s\n", h->name().c_str(), h->value().c_str()); - } - - int params = request->params(); - for(i=0;igetParam(i); - if(p->isFile()){ - Serial.printf("_FILE[%s]: %s, size: %u\n", p->name().c_str(), p->value().c_str(), p->size()); - } else if(p->isPost()){ - Serial.printf("_POST[%s]: %s\n", p->name().c_str(), p->value().c_str()); - } else { - Serial.printf("_GET[%s]: %s\n", p->name().c_str(), p->value().c_str()); - } - } - - request->send(404); - }); - server.onFileUpload([](AsyncWebServerRequest *request, const String& filename, size_t index, uint8_t *data, size_t len, bool final){ - if(!index) - Serial.printf("UploadStart: %s\n", filename.c_str()); - Serial.printf("%s", (const char*)data); - if(final) - Serial.printf("UploadEnd: %s (%u)\n", filename.c_str(), index+len); - }); - server.onRequestBody([](AsyncWebServerRequest *request, uint8_t *data, size_t len, size_t index, size_t total){ - if(!index) - Serial.printf("BodyStart: %u\n", total); - Serial.printf("%s", (const char*)data); - if(index + len == total) - Serial.printf("BodyEnd: %u\n", total); - }); - server.begin(); -} - -void loop(){ - ArduinoOTA.handle(); - ws.cleanupClients(); -} diff --git a/examples/ESP_AsyncFSBrowser/data/.exclude.files b/examples/ESP_AsyncFSBrowser/data/.exclude.files deleted file mode 100644 index a1c4278..0000000 --- a/examples/ESP_AsyncFSBrowser/data/.exclude.files +++ /dev/null @@ -1,3 +0,0 @@ -/*.gz -/edit_gz -/.exclude.files diff --git a/examples/ESP_AsyncFSBrowser/data/ace.ico.gz b/examples/ESP_AsyncFSBrowser/data/ace.ico.gz deleted file mode 100644 index 49e15bcebdeba0b55db396e5b6266b6e72730070..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6307 zcmb2|=HM{-FgK2gAu%~sFEcrx;cXOqL5QnF-`$HF`>kHxU=^CBASM#1qY<(3`@QP- zN;eD|N}LoL1)RAQVwssZRVK`fS@*O`|9#cFON|qre7;>S{wCIa?nxv0->3H7{kw1f zn|t1 zH}%k2b9F|KO;I}R?u&buo0yvR=HzAVQWopB74LRcKep&%|Ki?Wd7;Vw4P8?AoZlGt zbVq;jpXgb$XCJlkDZQ8Uw z%OZR(N_6gUKA3Rh{dafOlj5H%ma6q1|9$?@>)cOOOJ_X!e3Yrt!9;|sRa#p4-Lhpf zR&Cvy8d_a_`?ajBta3%oiW%j;p*QD0irtc#9OUm`9^~!)Iq}W=Tidp6)5*%=YCqij zL~85pw}O-7gs*9rxs-^$Ui|CQ9ks*TRF6DLd;E>Xi)EULwDH|6l-!coepqm!+C>i)q1?>8ZDl1}p1--bH(Tec#gyaq z9oClWM;G<}{`|As#s0}#PPXR2<(DOmvP2VeUw)cVc6W(c^1J5hH<6Eb+jQ%{=F{7` zM19wnNAsr5>ApCzob#JVkJIxm?~6OTB8;WxzSeVo&i3f_>5GvbIWnJ}KS;elnR~=H>H0ux5Rnedqg|o6c|SlD@yYtAFu+??exaS4BIU z*g{=hVl6hiPA&~!UUyH`cADkk#QD{FF`wHG&Nh>2{PM6PWlsCDqskYym9Ui67utQ( z+s$zIr#QoDeU`8|mNiP(dRVThZO~(sJAFM|{nnb4YP-vG%Nc)L$nU-po_&quh|ziH zii-t5ET@_0O3abDZT387Mmle6;x&Ve=P{QSpW2n*UsYVSIdVPM&zgM-kGB+FU)R@l z?%cUThHvlRz55q=FK)g0%GKHVLbvC7oE5vk-qf>x!qFQ7LG_y#?5w-k;`g=Z^Mbi{ zEW9m=#{_0@yk4VNa7K>l`yIs(XXU#dG%f7Vu@U!`e7>mkq(Mmv@9}wW9^RO3EE9YB zoU^~&M0+LyjURk_)b77dlfGDHK0oukRNJ(phXs=3AAVWLv4pqP#NKY&+~lY-z zD}BFfdG@TY;KI2RH!h9(cuVhSPj{8b%I3iNr~XB*4rX_pZ6&}P%znrsSK-WM_CsdL z3UfBI9W+iCsQJvMIKxb$_ocHyv;~WoK8lj-ml5tAj$96m>Kg#@!Lsyn5iVJGdw z<0!juMs?}*G;g=fm-D!Tngo(>`px^^5%FUm+mo{~*NZJ`>-FBsCED>zWNkNFRU~(N z@vL&oSLr=2Z>K1(_?x0Iv1yn8q=hP1=JPomPG?@=FUxRwOG?Bt^}}|`lItQhKb-Sx z%zx)_u2$htX0w2=e9N-d<_mi=48C?O-YVW%d~fn?Q$2|mj`^Htq&2=jOpHG_Q}d0r zU0dNRh8Gs=%1$vDvY$(35RvD1czgWhik}v&rgPHIPB~b}o7Vg4n#j3~Qp>lF>n$t=v?KJVB372kYfGzq-RSt{-;Q6+gr`o zbomh|AK!tEUl;{He`#G;7xOr4 z(Z!4ti5J_qXvg1O8e1TG<@5Rlb&EHCzRVqHQ!3+SH2>(iJ)SpaS_`Uj%eh``7hgEV z>Pl?|pXm$r^QR}=l2@+|G|YoAJZ6|I|FWA;^DZNBpt=cxyl)UB9vM}8_NZX*XK(p z^YgU{Z>}u4-+D_w&f)E%>cH7mj9Xuc_lq8^4C69gtScF8I=|PU^p)$1e=|O(&5zo4 z*}wPu%B26I@^gCMzF)qe;uD96uTllCXFW@&2n<4ya z8DFZO4BOdN=GJ@U!Y9}XEaI=>ePD6y@5(KI`4X#l2Z~;MW_M|&uRQmsr}9^$U5jr*Bf{$xZUBBqv8LWPH9x-6iLm=pN3gi{`w|Ua)F? zL(%V|D=Bt5pE~a>Yup%Y{n_iv+PQ40FS9ht^BR)8%~ln~9qjXWzqIZ7iMlwumG))l z_Dh>e8(SiBXzcaVLUOwNd_4bwC z>a6JGWD}_cZ*#vi7WVwMj*5=Hd&iB<$NKXuDWmnTFY4`adlvusr$$KHeumyvQc|UF z?IgZv&EUy0$#}gm?7CxYeBY;~`in}E>@_4NZ(>_{^32&M|85qn@S5hlIPi;|y!|ud z($#iuKaU>{{P*%_favp2Rknf0&0H4ky|CEkFJn&aZ<#kU%GIxIy)FEG-}Sy-THDsT zoczPS;py9dHw-_{+3}aPUXXcZr^F0Pre9|_M>Q>+Fntr)`*G^N&wk~#(fF<0 zn*8giKZQ3w{i}H6r=$I+{^typZ|B+ZteScF;)XvrV<#O~ z{gg1_j`@Y}`yW<^T*$rL{^j)i7gtjIl>cX^{=RPbUGsXaTL0q9*MwzuS7~qa+sijw zJ+>h?czx@-3e7LPUyGzmZ?cK_OExbmKbPcZA-(kd=6N-GCe~r~*Vz*=o)Qs(C8rLSV=KQ)<`*u}W zZQG(w=YWF}E9NTQj_<4gs`KgmzSWnL&08{x1(~5j1y*>IVD(!Dd8e)~Ec@5HA!i=zYR9Y9`S)wj-s+#Z`_bpH^gCS9m5gWH zbicf*zi;!(JJ2XsXWRaAH7&b``*JSkZU{2wzRj7t>eD@^mrGJ+?r-|-^pxk|e;bn& z-y5&DtvGD>Nxj_m@d1y2jLX;Uxj3P^e0$=_uNP8#oDUz``03YjpZ$W@b~(-PutAD;8?&kCJdx`Y)dklXc zef(YHaMU)y`Q77!%&v!9q&bD>oI1N9cP{7eZ95C5=rt{V!)>v8+Tn%k+ghz=`bOR0 zDJ^)Z{m@K1!92U=F9+}Y&CAZd4%^dhw9)@(&wD*r?$p0OWZo`!J9|kz;9sKsltSP8 zhMIBVb#_u|t`lGE-!A|2hQqur-ucPDuV@FH+7=qzc4$kcm5iD4747?vs%AO8dwy!$ z^>eoJZGV1SsZNjlQ9t31_KtVqZj%4yy0voRetJyT{Ou;OX5`|IXU}a7)GuaW;u;u0X@@YFEzeWc&4q z=jW`mi@Fc5YG0Yht+hP9N$XbR%+D;Qmk!O^5kLFC)HZ*)mQ_dl7rg3z9yrNrR%MC; z&+X0oUbmZ-t?GWbDJc8bf`z*TtTW$#>fa$gvrur&Y`bQ)&tg~nrFD+)O*_Y7a%Mln zv#;yla{Z`1$nu}*Q~b$4;-4ztIKB>F|IYCF9iGRRq!-2)$?gz4Vj59lx`lgPir*fa zMnjwZN{n*d#c}JGuaEFHdQdbYVf(8mrTb@825hZTk|`6;O%mw%Jt0l{Ra$>qPw{<& zbe=b_a&wZW++JyZ_UN}OrxQb`pSsR7wP*Uu>5enM+srZBd#C;GBG=Gs!U1~qvVK_) z3T7X?}Trm8S`MQ*zj$d4ik$#ZZs?zxja&8^%+3Wjzo#y^oeY*4e+I*wc=3C#$FTK^fVzwE_DoN+e@|nAH z%4>hQZg}GR;?t~brJnMG@yEC3t6Xn5ed4}EW)It)TZ>lIUah@5EoR|C-zyJ(?O^LZ z{`HkZkLtQ*a!gkmFX-+Ha=7L)w@mVj_Ppkl>jz$MbKG2LwrZLkYyV+}{?knTx4GKa z@q`-dC&vkWmQlLBa^Cxyd0)*xRK58Sz#RNk%7W+WBHP60amlKuByaC(N>{M_x+hIJ z{@qfu<;HAR-rVLgKOT@~uk$N)o%FGa{^IMpJ2;jdUHstAx5(;_c+(x%d5iy^e|GP? z!9H#|Pu;MhV2N+lv5wcTdG5|Ro!@-nfDf)yMN{ z!Udz!I5zfB6?(r;}j(?UR4&R#F^xw7J4`QDG zB+0rx!~ceYr{9g$;ftnKOR!!yynXE@M@8-;-iaB`9I;n!e!uX}`JzESOXcymd1rP= z^qKO%nY!j{;=5Ybdh6PHnYZ&?_WM8je#cr`TH01g&xY4E@cORy-Ko5vRva|S`f!x@ z%EPJ|)B5~hC}dAOU|Ogn=Y3@B0=6^L%@3@;*U@mFcX}1K%4(sy`IBc^So+Jp+Wf9D z=$!ZAh4aqZ3N2is|6=-G_WgCzPK@SFjO%+QoaejzYx}|_emSRWsug8iFAIE<*q1H* z<a7t>?I=WJPyvYXZ`A3Odv!m4lUfvs2C zCVWj;cVY)qo2b9Si%Uu#_Z(05Ex7NxBhy;@d#Jy0n49DF4?!k65}MC^>Ywgr%3U5= z!I~p|zdd9!_ev}FX{GB6=I)&Ez5U|4!wXeSKA&sP{OSB*+S0?}v)RK7wZ24N->5(F zx!a)`m7HfHrytt;YMWmE-&1OJ>iisaTmFW69 z9M%!|mKw8Jtfur!;a{g)*2zn9^0_OmKd)=r{^6wG%EaI=)pt&x{H#pkyO!?g{7r#u`PK@#4P3h@W{#?{lS#nY1 z)2tAX_aAbeexUo-yH~pQ&j_|(s6S?GHPg!Lg^~X;(KKn4^ zC*F(O?oas5Dk>`aC_4U9e|HBn1G|x#++w!0k3I*U^Lo50_1(AVx^=DeyY}j{u?6dP zG4m}v+I5>FYhzQC&U}XIgJ-X_L>(zrSmAuG;@#3?hju&?G}(2v!HoZQTi=z`ouBshkGJYWcJ@pBYA%N! zo)X~xo%rLG^S)nC&;FalU-o-{<*M7?zc$-mYO7XUyFZ$(zk11f`IlvD_pMH!&sS+4 zz`gKr#fxb%yzU=MOeWVC>u4+vG;%s`y1&Zqdzj>t9bd8@X)zY zybMb6OAO-Df|-IR)Uw^!*k9?m>57X=Zlces^ZC#4j)_toGagh0eqczllZ~2nI3ts56W>DBSIxVZF|0aj&LyvKeB+U;oFC?F zII(AaU-9|9V&DE`C;onQ)K+h{=8>euxtmWEYu1)YzHXiKnf=Sd+dJ34JT771alazP zu6|2L#e>c57sOrS<~Z4UuWar$3P}68e?x!5*+XwPUl-pHs+V21cBgQke*WvL4LbtA zu__lgh0JW+HjN`H`cQ`I|9iK#y{tWUa_W-`U#8^m2fc2bxIN9h&#+AP`X=dw`!lbd zy6<>cN80jua?5!kc477}&%W$m-C@I-P`^%6J*eAz#oO8|e@tKfvHK|2FaLC_xn}d} z%#fD5((`Y>jw@#WeB^Dx1#uZ|HG_O3xlcRup55=8kS2O-HuH;&?uCnO+tT8h*Q}O* zzcpXxG|Rfit<%f@Rai`m*Do$#TfgD-O6~3+fBtRQ@O84ko#OGg`$K1hPg-&I;~n?h zhwu9m(_PcLPw>7gEkC&RSDD5BJyWfG7VsSspCQeyc3|&MS(YrL2kWC4e(zd7L;2Xm z=Ra7EeQo+CwkPwmsQHHZvmZp-GM>9MGxw3XuGQR`-*!Z-x%)p&@Z-_|jY$&9{@!-; z?`K|YvvGa@X5zkG>gyWcaBnaAxBWt$d2sve6^FkXg=;6CSFiY&eBqu^{`FI{A4HWJ z+hnU9*!=RR-#+VBOTQVZhQ(JGD*63?dniWp&jXiV2i(?&b6Ib_Exq*Y`7+P=yWITO z*}vbie!;z6wPc3C_x2rPoOgc6h8=sTlCNI5J8bgzThR)+HCs-v)at2J^}KP<;dcL` zXZ5Pr{$G<(tg}y(lQ@1q;LIQE-U-1!L(lC0IaBZc_3wvvKa{I@!Obb#5uJHCT4;uY zFH7FEgT*s9SAW&LlYfWn{jb{(ZhwiGzPe8L|G&e+Pu_20{8Z=t#A@TRzu{dox@QO% zUpmdh+*#EU^XhD1{KwaG8+*Su?{koSCuSv3erZ{GK>zK?`)>2@H$LBU{`Kqk4gXhL zKfL|vPu%oZt7q)FcKmN0XYD_UkGHSZuPul>B+mCZ%BHh;DO=Eq)F78VPdDFYj-LOH zFK3thCVK<(0PaV6j758c8;+MdDW%sxjOD2L?6JN4`4ztD3$>JL;wCLIxc-~z*sYac zHvezA|9=u&Oh4b^{(WA&YbHJ6uD-KwL3H>njnH%1{5jR7`30wwZ4c(lxlE{HF}o|y z-rqc1{w1f#{vF|3^Ka_yJ6dt4PoX&W#Bry0+&iaRx8C}fzVrW&*rx2uU(bX_tKRZ| z@gViju3X;4a^{_yT(kCGm0TNiwaG01>moD%*t+iM-Kwv)Ww}^?`qu6;FWoLM@bvSW z&nG_lKmYl^zqKWai3=m7{g$1LQ|k}Xj8obqHc8)wMN--En$Zc%Gu3h)|3<&n92e_*UVfWb98LQaEG%}&@dn4-3mw@ngkF8MsN{dJnf+gU z<^L|R-^FV!X6>sn+wVBU*H~xKISy1?%eRH-yW%K>`OCWubUgvdol~;e&-mm`u^V8*z7X9+)-mh?}tqN{( zZ{n|dw4L#%V*`8Vt|z-^88MuD|BBh=?vZ=KO&<#vbnkT*`PNtA-f(Ba*?-?Y=`u5_ KOty1kU;qFMq`X-G diff --git a/examples/ESP_AsyncFSBrowser/data/acefull.js.gz b/examples/ESP_AsyncFSBrowser/data/acefull.js.gz deleted file mode 100644 index 54069806c524a3c84eb31eedc650c3efa1686331..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118766 zcmb2|=HT#pwl1EDAu%~Mtu!Y`FRPegNpx-XZ4-h2S}Plqgs*zu>dWO*^1o^I;_$9_ zna2+=&_3Kd_1Kw>%{t#()$Y%|?-}-IQpw||^F6HQzVlmt`DIDb9nXn

vk5E6-m& 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 P|9Bs7lb!SA2^#|dWcGow diff --git a/examples/ESP_AsyncFSBrowser/data/edit_gz b/examples/ESP_AsyncFSBrowser/data/edit_gz deleted file mode 100644 index be687a3942deeecdc96ea3fc3a2302c7b73408b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4503 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 YqPpL?rloSr%ai`;O6EA)&nDK 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 diff --git a/examples/ESP_AsyncFSBrowser/data/folder/test.txt b/examples/ESP_AsyncFSBrowser/data/folder/test.txt deleted file mode 100644 index 8318c86..0000000 --- a/examples/ESP_AsyncFSBrowser/data/folder/test.txt +++ /dev/null @@ -1 +0,0 @@ -Test \ No newline at end of file diff --git a/examples/ESP_AsyncFSBrowser/data/index.htm b/examples/ESP_AsyncFSBrowser/data/index.htm deleted file mode 100644 index 28f47e9..0000000 --- a/examples/ESP_AsyncFSBrowser/data/index.htm +++ /dev/null @@ -1,131 +0,0 @@ - - - - - - WebSocketTester - - - - -


-    
- $ -
- - diff --git a/examples/ESP_AsyncFSBrowser/data/worker-css.js.gz b/examples/ESP_AsyncFSBrowser/data/worker-css.js.gz deleted file mode 100644 index 6bab483026a8fb0ef25353f10db64a75d38d99b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32927 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 CgHFN# diff --git a/examples/ESP_AsyncFSBrowser/data/worker-html.js.gz b/examples/ESP_AsyncFSBrowser/data/worker-html.js.gz deleted file mode 100644 index b256b50c0d2da0779833d602f8ee30a686eac6eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45019 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

s@_bk!(fukBjyG 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 diff --git a/examples/ESP_AsyncFSBrowser/data/worker-javascript.js.gz b/examples/ESP_AsyncFSBrowser/data/worker-javascript.js.gz deleted file mode 100644 index 9cbfd2049f4dc579c777e291376a775707d0a573..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112558 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�Z96|NE)^Uy=<{fPtq>QgsKneXYl@#~I? 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 Ui*4BxGWIb`UEtWjwTGPn0Ph_r+W-In diff --git a/examples/ESP_AsyncFSBrowser/data/worker-json.js.gz b/examples/ESP_AsyncFSBrowser/data/worker-json.js.gz deleted file mode 100644 index fec1f65b323b3e5e21bf3b6a4945fe7623628312..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6923 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 diff --git a/examples/SmartSwitch/1.PNG b/examples/SmartSwitch/1.PNG deleted file mode 100644 index 3c95d818575e4956eeda30b8bcd39f2026e1c912..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17650 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 WF6|?B4X`bpqcmcB>tGFw|2F~Zj#QNZ diff --git a/examples/SmartSwitch/2.PNG b/examples/SmartSwitch/2.PNG deleted file mode 100644 index 6c02cabc7a16ade2e4e4e7003a4aa9ec145b9eaf..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12835 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 diff --git a/examples/SmartSwitch/ESPAsyncWiFiManager.cpp b/examples/SmartSwitch/ESPAsyncWiFiManager.cpp deleted file mode 100644 index 4455258..0000000 --- a/examples/SmartSwitch/ESPAsyncWiFiManager.cpp +++ /dev/null @@ -1,1177 +0,0 @@ -/************************************************************** - AsyncWiFiManager is a library for the ESP8266/Arduino platform - (https://github.com/esp8266/Arduino) to enable easy - configuration and reconfiguration of WiFi credentials using a Captive Portal - inspired by: - http://www.esp8266.com/viewtopic.php?f=29&t=2520 - https://github.com/chriscook8/esp-arduino-apboot - https://github.com/esp8266/Arduino/tree/esp8266/hardware/esp8266com/esp8266/libraries/DNSServer/examples/CaptivePortalAdvanced - Built by AlexT https://github.com/tzapu - Ported to Async Web Server by https://github.com/alanswx - Licensed under MIT license - **************************************************************/ - -#include "ESPAsyncWiFiManager.h" - -AsyncWiFiManagerParameter::AsyncWiFiManagerParameter(const char *custom) { - _id = NULL; - _placeholder = NULL; - _length = 0; - _value = NULL; - - _customHTML = custom; -} - -AsyncWiFiManagerParameter::AsyncWiFiManagerParameter(const char *id, const char *placeholder, const char *defaultValue, int length) { - init(id, placeholder, defaultValue, length, ""); -} - -AsyncWiFiManagerParameter::AsyncWiFiManagerParameter(const char *id, const char *placeholder, const char *defaultValue, int length, const char *custom) { - init(id, placeholder, defaultValue, length, custom); -} - -void AsyncWiFiManagerParameter::init(const char *id, const char *placeholder, const char *defaultValue, int length, const char *custom) { - _id = id; - _placeholder = placeholder; - _length = length; - _value = new char[length + 1]; - for (int i = 0; i < length; i++) { - _value[i] = 0; - } - if (defaultValue != NULL) { - strncpy(_value, defaultValue, length); - } - - _customHTML = custom; -} - -const char* AsyncWiFiManagerParameter::getValue() { - return _value; -} -const char* AsyncWiFiManagerParameter::getID() { - return _id; -} -const char* AsyncWiFiManagerParameter::getPlaceholder() { - return _placeholder; -} -int AsyncWiFiManagerParameter::getValueLength() { - return _length; -} -const char* AsyncWiFiManagerParameter::getCustomHTML() { - return _customHTML; -} - -#ifdef USE_EADNS -AsyncWiFiManager::AsyncWiFiManager(AsyncWebServer *server, AsyncDNSServer *dns) :server(server), dnsServer(dns) { -#else -AsyncWiFiManager::AsyncWiFiManager(AsyncWebServer *server, DNSServer *dns) :server(server), dnsServer(dns) { -#endif - wifiSSIDs = NULL; - wifiSSIDscan=true; - _modeless=false; - shouldscan=true; -} - -void AsyncWiFiManager::addParameter(AsyncWiFiManagerParameter *p) { - _params[_paramsCount] = p; - _paramsCount++; - DEBUG_WM("Adding parameter"); - DEBUG_WM(p->getID()); -} - -void AsyncWiFiManager::setupConfigPortal() { - // dnsServer.reset(new DNSServer()); - // server.reset(new ESP8266WebServer(80)); - server->reset(); - - DEBUG_WM(F("")); - _configPortalStart = millis(); - - DEBUG_WM(F("Configuring access point... ")); - DEBUG_WM(_apName); - if (_apPassword != NULL) { - if (strlen(_apPassword) < 8 || strlen(_apPassword) > 63) { - // fail passphrase to short or long! - DEBUG_WM(F("Invalid AccessPoint password. Ignoring")); - _apPassword = NULL; - } - DEBUG_WM(_apPassword); - } - - //optional soft ip config - if (_ap_static_ip) { - DEBUG_WM(F("Custom AP IP/GW/Subnet")); - WiFi.softAPConfig(_ap_static_ip, _ap_static_gw, _ap_static_sn); - } - - if (_apPassword != NULL) { - WiFi.softAP(_apName, _apPassword);//password option - } else { - WiFi.softAP(_apName); - } - - delay(500); // Without delay I've seen the IP address blank - DEBUG_WM(F("AP IP address: ")); - DEBUG_WM(WiFi.softAPIP()); - - /* Setup the DNS server redirecting all the domains to the apIP */ - #ifdef USE_EADNS - dnsServer->setErrorReplyCode(AsyncDNSReplyCode::NoError); - #else - dnsServer->setErrorReplyCode(DNSReplyCode::NoError); - #endif - dnsServer->start(DNS_PORT, "*", WiFi.softAPIP()); - - setInfo(); - - /* Setup web pages: root, wifi config pages, SO captive portal detectors and not found. */ - server->on("/", std::bind(&AsyncWiFiManager::handleRoot, this,std::placeholders::_1)).setFilter(ON_AP_FILTER); - server->on("/wifi", std::bind(&AsyncWiFiManager::handleWifi, this, std::placeholders::_1,true)).setFilter(ON_AP_FILTER); - server->on("/0wifi", std::bind(&AsyncWiFiManager::handleWifi, this,std::placeholders::_1, false)).setFilter(ON_AP_FILTER); - server->on("/wifisave", std::bind(&AsyncWiFiManager::handleWifiSave,this,std::placeholders::_1)).setFilter(ON_AP_FILTER); - server->on("/i", std::bind(&AsyncWiFiManager::handleInfo,this, std::placeholders::_1)).setFilter(ON_AP_FILTER); - server->on("/r", std::bind(&AsyncWiFiManager::handleReset, this,std::placeholders::_1)).setFilter(ON_AP_FILTER); - //server->on("/generate_204", std::bind(&AsyncWiFiManager::handle204, this)); //Android/Chrome OS captive portal check. - server->on("/fwlink", std::bind(&AsyncWiFiManager::handleRoot, this,std::placeholders::_1)).setFilter(ON_AP_FILTER); //Microsoft captive portal. Maybe not needed. Might be handled by notFound handler. - server->onNotFound (std::bind(&AsyncWiFiManager::handleNotFound,this,std::placeholders::_1)); - server->begin(); // Web server start - DEBUG_WM(F("HTTP server started")); - -} - -static const char HEX_CHAR_ARRAY[17] = "0123456789ABCDEF"; -/** -* convert char array (hex values) to readable string by seperator -* buf: buffer to convert -* length: data length -* strSeperator seperator between each hex value -* return: formated value as String -*/ -static String byteToHexString(uint8_t* buf, uint8_t length, String strSeperator="-") { - String dataString = ""; - for (uint8_t i = 0; i < length; i++) { - byte v = buf[i] / 16; - byte w = buf[i] % 16; - if (i>0) { - dataString += strSeperator; - } - dataString += String(HEX_CHAR_ARRAY[v]); - dataString += String(HEX_CHAR_ARRAY[w]); - } - dataString.toUpperCase(); - return dataString; -} // byteToHexString - -#if !defined(ESP8266) -String getESP32ChipID() { - uint64_t chipid; - chipid=ESP.getEfuseMac();//The chip ID is essentially its MAC address(length: 6 bytes). - int chipid_size = 6; - uint8_t chipid_arr[chipid_size]; - for (uint8_t i=0; i < chipid_size; i++) { - chipid_arr[i] = (chipid >> (8 * i)) & 0xff; - } - return byteToHexString(chipid_arr, chipid_size, ""); -} -#endif - -boolean AsyncWiFiManager::autoConnect(unsigned long maxConnectRetries, unsigned long retryDelayMs) { - String ssid = "ESP"; - #if defined(ESP8266) - ssid += String(ESP.getChipId()); - #else - ssid += getESP32ChipID(); - #endif - return autoConnect(ssid.c_str(), NULL); -} - -boolean AsyncWiFiManager::autoConnect(char const *apName, char const *apPassword, unsigned long maxConnectRetries, unsigned long retryDelayMs) { - DEBUG_WM(F("")); - - // read eeprom for ssid and pass - //String ssid = getSSID(); - //String pass = getPassword(); - - // attempt to connect; should it fail, fall back to AP - WiFi.mode(WIFI_STA); - - for(unsigned long tryNumber = 0; tryNumber < maxConnectRetries; tryNumber++) { - DEBUG_WM(F("AutoConnect Try No.:")); - DEBUG_WM(tryNumber); - - if (connectWifi("", "") == WL_CONNECTED) { - DEBUG_WM(F("IP Address:")); - DEBUG_WM(WiFi.localIP()); - //connected - return true; - } - - if(tryNumber + 1 < maxConnectRetries) { - - // we might connect during the delay - unsigned long restDelayMs = retryDelayMs; - while(restDelayMs != 0) { - if(WiFi.status() == WL_CONNECTED) { - DEBUG_WM(F("IP Address (connected during delay):")); - DEBUG_WM(WiFi.localIP()); - return true; - } - unsigned long thisDelay = std::min(restDelayMs, 100ul); - delay(thisDelay); - restDelayMs -= thisDelay; - } - - } - } - - - return startConfigPortal(apName, apPassword); -} - - -String AsyncWiFiManager::networkListAsString() -{ - String pager ; - //display networks in page - for (int i = 0; i < wifiSSIDCount; i++) { - if (wifiSSIDs[i].duplicate == true) continue; // skip dups - int quality = getRSSIasQuality(wifiSSIDs[i].RSSI); - - if (_minimumQuality == -1 || _minimumQuality < quality) { - String item = FPSTR(HTTP_ITEM); - String rssiQ; - rssiQ += quality; - item.replace("{v}", wifiSSIDs[i].SSID); - item.replace("{r}", rssiQ); -#if defined(ESP8266) - if (wifiSSIDs[i].encryptionType != ENC_TYPE_NONE) { -#else - if (wifiSSIDs[i].encryptionType != WIFI_AUTH_OPEN) { -#endif - item.replace("{i}", "l"); - } else { - item.replace("{i}", ""); - } - pager += item; - - } else { - DEBUG_WM(F("Skipping due to quality")); - } - - } - return pager; -} - -String AsyncWiFiManager::scanModal() -{ - shouldscan=true; - scan(); - String pager=networkListAsString(); - return pager; -} - -void AsyncWiFiManager::scan() -{ - if (!shouldscan) return; - DEBUG_WM(F("About to scan()")); - if (wifiSSIDscan) - { - delay(100); - } - - if (wifiSSIDscan) - { - wifi_ssid_count_t n = WiFi.scanNetworks(); - DEBUG_WM(F("Scan done")); - if(n == WIFI_SCAN_FAILED) { - DEBUG_WM(F("scanNetworks returned: WIFI_SCAN_FAILED!")); - } else if(n == WIFI_SCAN_RUNNING) { - DEBUG_WM(F("scanNetworks returned: WIFI_SCAN_RUNNING!")); - } else if(n < 0) { - DEBUG_WM(F("scanNetworks failed with unknown error code!")); - } else if (n == 0) { - DEBUG_WM(F("No networks found")); - // page += F("No networks found. Refresh to scan again."); - } else { - - - if (wifiSSIDscan) - { - /* WE SHOULD MOVE THIS IN PLACE ATOMICALLY */ - if (wifiSSIDs) delete [] wifiSSIDs; - wifiSSIDs = new WiFiResult[n]; - wifiSSIDCount = n; - - if (n>0) - shouldscan=false; - - for (wifi_ssid_count_t i=0;i wifiSSIDs[i].RSSI) { - std::swap(wifiSSIDs[i], wifiSSIDs[j]); - } - } - } - - - // remove duplicates ( must be RSSI sorted ) - if (_removeDuplicateAPs) { - String cssid; - for (int i = 0; i < n; i++) { - if (wifiSSIDs[i].duplicate == true) continue; - cssid = wifiSSIDs[i].SSID; - for (int j = i + 1; j < n; j++) { - if (cssid == wifiSSIDs[j].SSID) { - DEBUG_WM("DUP AP: " +wifiSSIDs[j].SSID); - wifiSSIDs[j].duplicate=true; // set dup aps to NULL - } - } - } - } - - } - } - } -} - - -void AsyncWiFiManager::startConfigPortalModeless(char const *apName, char const *apPassword) { - - _modeless =true; - _apName = apName; - _apPassword = apPassword; - - /* - AJS - do we want this? - - */ - - //setup AP - WiFi.mode(WIFI_AP_STA); - DEBUG_WM("SET AP STA"); - - // try to connect - if (connectWifi("", "") == WL_CONNECTED) { - DEBUG_WM(F("IP Address:")); - DEBUG_WM(WiFi.localIP()); - //connected - // call the callback! - if ( _savecallback != NULL) { - //todo: check if any custom parameters actually exist, and check if they really changed maybe - _savecallback(); - } - } - - - - //notify we entered AP mode - if ( _apcallback != NULL) { - _apcallback(this); - } - - connect = false; - setupConfigPortal(); - scannow= -1 ; - -} - -void AsyncWiFiManager::loop(){ - safeLoop(); - criticalLoop(); -} - -void AsyncWiFiManager::setInfo() { - if (needInfo) { - pager = infoAsString(); - wifiStatus = WiFi.status(); - needInfo = false; - } -} - -/** - * Anything that accesses WiFi, ESP or EEPROM goes here - */ -void AsyncWiFiManager::criticalLoop(){ - if (_modeless) - { - - if ( scannow==-1 || millis() > scannow + 60000) - { - scan(); - scannow= millis() ; - } - if (connect) { - connect = false; - //delay(2000); - DEBUG_WM(F("Connecting to new AP")); - - // using user-provided _ssid, _pass in place of system-stored ssid and pass - if (connectWifi(_ssid, _pass) != WL_CONNECTED) { - DEBUG_WM(F("Failed to connect.")); - } else { - //connected - // alanswx - should we have a config to decide if we should shut down AP? - // WiFi.mode(WIFI_STA); - //notify that configuration has changed and any optional parameters should be saved - if ( _savecallback != NULL) { - //todo: check if any custom parameters actually exist, and check if they really changed maybe - _savecallback(); - } - - return; - } - - if (_shouldBreakAfterConfig) { - //flag set to exit after config after trying to connect - //notify that configuration has changed and any optional parameters should be saved - if ( _savecallback != NULL) { - //todo: check if any custom parameters actually exist, and check if they really changed maybe - _savecallback(); - } - } - } - } -} - -/* - * Anything that doesn't access WiFi, ESP or EEPROM can go here - */ -void AsyncWiFiManager::safeLoop(){ - #ifndef USE_EADNS - dnsServer->processNextRequest(); - #endif -} - -boolean AsyncWiFiManager::startConfigPortal(char const *apName, char const *apPassword) { - //setup AP - WiFi.mode(WIFI_AP_STA); - DEBUG_WM("SET AP STA"); - - _apName = apName; - _apPassword = apPassword; - - //notify we entered AP mode - if ( _apcallback != NULL) { - _apcallback(this); - } - - connect = false; - setupConfigPortal(); - scannow= -1 ; - while (_configPortalTimeout == 0 || millis() < _configPortalStart + _configPortalTimeout) { - //DNS - #ifndef USE_EADNS - dnsServer->processNextRequest(); - #endif - - // - // we should do a scan every so often here and - // try to reconnect to AP while we are at it - // - if ( scannow == -1 || millis() > scannow + 10000) - { - DEBUG_WM(F("About to scan()")); - shouldscan=true; // since we are modal, we can scan every time - #if defined(ESP8266) - // we might still be connecting, so that has to stop for scanning - ETS_UART_INTR_DISABLE (); - wifi_station_disconnect (); - ETS_UART_INTR_ENABLE (); - #else - WiFi.disconnect (false); - #endif - scan(); - if(_tryConnectDuringConfigPortal) WiFi.begin(); // try to reconnect to AP - scannow= millis() ; - } - - // attempts to reconnect were successful - if(WiFi.status() == WL_CONNECTED) { - //connected - WiFi.mode(WIFI_STA); - //notify that configuration has changed and any optional parameters should be saved - if ( _savecallback != NULL) { - //todo: check if any custom parameters actually exist, and check if they really changed maybe - _savecallback(); - } - break; - } - - - if (connect) { - connect = false; - delay(2000); - DEBUG_WM(F("Connecting to new AP")); - - // using user-provided _ssid, _pass in place of system-stored ssid and pass - if (connectWifi(_ssid, _pass) == WL_CONNECTED) { - //connected - WiFi.mode(WIFI_STA); - //notify that configuration has changed and any optional parameters should be saved - if ( _savecallback != NULL) { - //todo: check if any custom parameters actually exist, and check if they really changed maybe - _savecallback(); - } - break; - } else { - DEBUG_WM(F("Failed to connect.")); - } - - if (_shouldBreakAfterConfig) { - //flag set to exit after config after trying to connect - //notify that configuration has changed and any optional parameters should be saved - if ( _savecallback != NULL) { - //todo: check if any custom parameters actually exist, and check if they really changed maybe - _savecallback(); - } - break; - } - } - yield(); - } - - server->reset(); - #ifdef USE_EADNS - *dnsServer=AsyncDNSServer(); - #else - *dnsServer=DNSServer(); - #endif - - return WiFi.status() == WL_CONNECTED; -} - - -int AsyncWiFiManager::connectWifi(String ssid, String pass) { - DEBUG_WM(F("Connecting as wifi client...")); - - // check if we've got static_ip settings, if we do, use those. - if (_sta_static_ip) { - DEBUG_WM(F("Custom STA IP/GW/Subnet/DNS")); - WiFi.config(_sta_static_ip, _sta_static_gw, _sta_static_sn, _sta_static_dns1, _sta_static_dns2); - DEBUG_WM(WiFi.localIP()); - } - //fix for auto connect racing issue - // if (WiFi.status() == WL_CONNECTED) { - // DEBUG_WM("Already connected. Bailing out."); - // return WL_CONNECTED; - // } - //check if we have ssid and pass and force those, if not, try with last saved values - if (ssid != "") { - #if defined(ESP8266) - //trying to fix connection in progress hanging - ETS_UART_INTR_DISABLE(); - wifi_station_disconnect(); - ETS_UART_INTR_ENABLE(); - #else - WiFi.disconnect(false); - #endif - - WiFi.begin(ssid.c_str(), pass.c_str()); - } else { - - if (WiFi.SSID().length() > 0) { - DEBUG_WM("Using last saved values, should be faster"); -#if defined(ESP8266) - //trying to fix connection in progress hanging - ETS_UART_INTR_DISABLE(); - wifi_station_disconnect(); - ETS_UART_INTR_ENABLE(); -#else - WiFi.disconnect(false); -#endif - - WiFi.begin(); - } else { - DEBUG_WM("Try to connect with saved credentials"); - WiFi.begin(); - } - } - - int connRes = waitForConnectResult(); - DEBUG_WM ("Connection result: "); - DEBUG_WM ( connRes ); - //not connected, WPS enabled, no pass - first attempt -#ifdef NO_EXTRA_4K_HEAP - if (_tryWPS && connRes != WL_CONNECTED && pass == "") { - startWPS(); - //should be connected at the end of WPS - connRes = waitForConnectResult(); - } -#endif - needInfo = true; - setInfo(); - return connRes; -} - -uint8_t AsyncWiFiManager::waitForConnectResult() { - if (_connectTimeout == 0) { - return WiFi.waitForConnectResult(); - } else { - DEBUG_WM (F("Waiting for connection result with time out")); - unsigned long start = millis(); - boolean keepConnecting = true; - uint8_t status; - while (keepConnecting) { - status = WiFi.status(); - if (millis() > start + _connectTimeout) { - keepConnecting = false; - DEBUG_WM (F("Connection timed out")); - } - if (status == WL_CONNECTED || status == WL_CONNECT_FAILED) { - keepConnecting = false; - } - delay(100); - } - return status; - } -} -#ifdef NO_EXTRA_4K_HEAP -void AsyncWiFiManager::startWPS() { - DEBUG_WM("START WPS"); -#if defined(ESP8266) - WiFi.beginWPSConfig(); -#else - //esp_wps_config_t config = WPS_CONFIG_INIT_DEFAULT(ESP_WPS_MODE); - esp_wps_config_t config = {}; - config.wps_type = ESP_WPS_MODE; - config.crypto_funcs = &g_wifi_default_wps_crypto_funcs; - strcpy(config.factory_info.manufacturer,"ESPRESSIF"); - strcpy(config.factory_info.model_number, "ESP32"); - strcpy(config.factory_info.model_name, "ESPRESSIF IOT"); - strcpy(config.factory_info.device_name,"ESP STATION"); - - esp_wifi_wps_enable(&config); - esp_wifi_wps_start(0); -#endif - DEBUG_WM("END WPS"); - -} -#endif -/* -String AsyncWiFiManager::getSSID() { -if (_ssid == "") { -DEBUG_WM(F("Reading SSID")); -_ssid = WiFi.SSID(); -DEBUG_WM(F("SSID: ")); -DEBUG_WM(_ssid); -} -return _ssid; -} - -String AsyncWiFiManager::getPassword() { -if (_pass == "") { -DEBUG_WM(F("Reading Password")); -_pass = WiFi.psk(); -DEBUG_WM("Password: " + _pass); -//DEBUG_WM(_pass); -} -return _pass; -} -*/ -String AsyncWiFiManager::getConfigPortalSSID() { - return _apName; -} - -void AsyncWiFiManager::resetSettings() { - DEBUG_WM(F("settings invalidated")); - DEBUG_WM(F("THIS MAY CAUSE AP NOT TO START UP PROPERLY. YOU NEED TO COMMENT IT OUT AFTER ERASING THE DATA.")); - WiFi.disconnect(true); - //delay(200); -} -void AsyncWiFiManager::setTimeout(unsigned long seconds) { - setConfigPortalTimeout(seconds); -} - -void AsyncWiFiManager::setConfigPortalTimeout(unsigned long seconds) { - _configPortalTimeout = seconds * 1000; -} - -void AsyncWiFiManager::setConnectTimeout(unsigned long seconds) { - _connectTimeout = seconds * 1000; -} - -void AsyncWiFiManager::setTryConnectDuringConfigPortal(boolean v) { - _tryConnectDuringConfigPortal = v; -} - -void AsyncWiFiManager::setDebugOutput(boolean debug) { - _debug = debug; -} - -void AsyncWiFiManager::setAPStaticIPConfig(IPAddress ip, IPAddress gw, IPAddress sn) { - _ap_static_ip = ip; - _ap_static_gw = gw; - _ap_static_sn = sn; -} - -void AsyncWiFiManager::setSTAStaticIPConfig(IPAddress ip, IPAddress gw, IPAddress sn, IPAddress dns1, IPAddress dns2) { - _sta_static_ip = ip; - _sta_static_gw = gw; - _sta_static_sn = sn; - _sta_static_dns1 = dns1; - _sta_static_dns2 = dns2; -} - -void AsyncWiFiManager::setMinimumSignalQuality(int quality) { - _minimumQuality = quality; -} - -void AsyncWiFiManager::setBreakAfterConfig(boolean shouldBreak) { - _shouldBreakAfterConfig = shouldBreak; -} - -/** Handle root or redirect to captive portal */ -void AsyncWiFiManager::handleRoot(AsyncWebServerRequest *request) { - // AJS - maybe we should set a scan when we get to the root??? - // and only scan on demand? timer + on demand? plus a link to make it happen? - shouldscan=true; - scannow= -1 ; - DEBUG_WM(F("Handle root")); - if (captivePortal(request)) { // If captive portal redirect instead of displaying the page. - return; - } - - String page = FPSTR(WFM_HTTP_HEAD); - page.replace("{v}", "Options"); - page += FPSTR(HTTP_SCRIPT); - page += FPSTR(HTTP_STYLE); - page += _customHeadElement; - page += FPSTR(HTTP_HEAD_END); - page += "

"; - page += _apName; - page += "

"; - page += F("

AsyncWiFiManager

"); - page += FPSTR(HTTP_PORTAL_OPTIONS); - page += _customOptionsElement; - page += FPSTR(HTTP_END); - - request->send(200, "text/html", page); - -} - -/** Wifi config page handler */ -void AsyncWiFiManager::handleWifi(AsyncWebServerRequest *request,boolean scan) { - shouldscan=true; - scannow= -1 ; - - DEBUG_WM(F("Handle wifi")); - - String page = FPSTR(WFM_HTTP_HEAD); - page.replace("{v}", "Config ESP"); - page += FPSTR(HTTP_SCRIPT); - page += FPSTR(HTTP_STYLE); - page += _customHeadElement; - page += FPSTR(HTTP_HEAD_END); - - if (scan) { - wifiSSIDscan=false; - - - - DEBUG_WM(F("Scan done")); - if (wifiSSIDCount==0) { - DEBUG_WM(F("No networks found")); - page += F("No networks found. Refresh to scan again."); - } else { - - - //display networks in page - String pager = networkListAsString(); - - page += pager; - page += "
"; - } - - } - wifiSSIDscan=true; - - page += FPSTR(HTTP_FORM_START); - char parLength[2]; - // add the extra parameters to the form - for (int i = 0; i < _paramsCount; i++) { - if (_params[i] == NULL) { - break; - } - - String pitem = FPSTR(HTTP_FORM_PARAM); - if (_params[i]->getID() != NULL) { - pitem.replace("{i}", _params[i]->getID()); - pitem.replace("{n}", _params[i]->getID()); - pitem.replace("{p}", _params[i]->getPlaceholder()); - snprintf(parLength, 2, "%d", _params[i]->getValueLength()); - pitem.replace("{l}", parLength); - pitem.replace("{v}", _params[i]->getValue()); - pitem.replace("{c}", _params[i]->getCustomHTML()); - } else { - pitem = _params[i]->getCustomHTML(); - } - - page += pitem; - } - if (_params[0] != NULL) { - page += "
"; - } - - if (_sta_static_ip) { - - String item = FPSTR(HTTP_FORM_PARAM); - item.replace("{i}", "ip"); - item.replace("{n}", "ip"); - item.replace("{p}", "Static IP"); - item.replace("{l}", "15"); - item.replace("{v}", _sta_static_ip.toString()); - - page += item; - - item = FPSTR(HTTP_FORM_PARAM); - item.replace("{i}", "gw"); - item.replace("{n}", "gw"); - item.replace("{p}", "Static Gateway"); - item.replace("{l}", "15"); - item.replace("{v}", _sta_static_gw.toString()); - - page += item; - - item = FPSTR(HTTP_FORM_PARAM); - item.replace("{i}", "sn"); - item.replace("{n}", "sn"); - item.replace("{p}", "Subnet"); - item.replace("{l}", "15"); - item.replace("{v}", _sta_static_sn.toString()); - - page += item; - - item = FPSTR(HTTP_FORM_PARAM); - item.replace("{i}", "dns1"); - item.replace("{n}", "dns1"); - item.replace("{p}", "DNS1"); - item.replace("{l}", "15"); - item.replace("{v}", _sta_static_dns1.toString()); - - page += item; - - item = FPSTR(HTTP_FORM_PARAM); - item.replace("{i}", "dns2"); - item.replace("{n}", "dns2"); - item.replace("{p}", "DNS2"); - item.replace("{l}", "15"); - item.replace("{v}", _sta_static_dns2.toString()); - - page += item; - - page += "
"; - } - - page += FPSTR(HTTP_FORM_END); - page += FPSTR(HTTP_SCAN_LINK); - - page += FPSTR(HTTP_END); - - request->send(200, "text/html", page); - - - DEBUG_WM(F("Sent config page")); -} - -/** Handle the WLAN save form and redirect to WLAN config page again */ -void AsyncWiFiManager::handleWifiSave(AsyncWebServerRequest *request) { - DEBUG_WM(F("WiFi save")); - - //SAVE/connect here - needInfo = true; - _ssid = request->arg("s").c_str(); - _pass = request->arg("p").c_str(); - - //parameters - for (int i = 0; i < _paramsCount; i++) { - if (_params[i] == NULL) { - break; - } - //read parameter - String value = request->arg(_params[i]->getID()).c_str(); - //store it in array - value.toCharArray(_params[i]->_value, _params[i]->_length); - DEBUG_WM(F("Parameter")); - DEBUG_WM(_params[i]->getID()); - DEBUG_WM(value); - } - - if (request->hasArg("ip")) { - DEBUG_WM(F("static ip")); - DEBUG_WM(request->arg("ip")); - //_sta_static_ip.fromString(request->arg("ip")); - String ip = request->arg("ip"); - optionalIPFromString(&_sta_static_ip, ip.c_str()); - } - if (request->hasArg("gw")) { - DEBUG_WM(F("static gateway")); - DEBUG_WM(request->arg("gw")); - String gw = request->arg("gw"); - optionalIPFromString(&_sta_static_gw, gw.c_str()); - } - if (request->hasArg("sn")) { - DEBUG_WM(F("static netmask")); - DEBUG_WM(request->arg("sn")); - String sn = request->arg("sn"); - optionalIPFromString(&_sta_static_sn, sn.c_str()); - } - if (request->hasArg("dns1")) { - DEBUG_WM(F("static DNS 1")); - DEBUG_WM(request->arg("dns1")); - String dns1 = request->arg("dns1"); - optionalIPFromString(&_sta_static_dns1, dns1.c_str()); - } - if (request->hasArg("dns2")) { - DEBUG_WM(F("static DNS 2")); - DEBUG_WM(request->arg("dns2")); - String dns2 = request->arg("dns2"); - optionalIPFromString(&_sta_static_dns2, dns2.c_str()); - } - - String page = FPSTR(WFM_HTTP_HEAD); - page.replace("{v}", "Credentials Saved"); - page += FPSTR(HTTP_SCRIPT); - page += FPSTR(HTTP_STYLE); - page += _customHeadElement; - page += F(""); - page += FPSTR(HTTP_HEAD_END); - page += FPSTR(HTTP_SAVED); - page += FPSTR(HTTP_END); - - request->send(200, "text/html", page); - - DEBUG_WM(F("Sent wifi save page")); - - connect = true; //signal ready to connect/reset -} - -/** Handle the info page */ -String AsyncWiFiManager::infoAsString() -{ - String page; - page += F("
Chip ID
"); -#if defined(ESP8266) - page += ESP.getChipId(); -#else - page += getESP32ChipID(); -#endif - page += F("
"); - page += F("
Flash Chip ID
"); -#if defined(ESP8266) - page += ESP.getFlashChipId(); -#else - page += F("N/A for ESP32"); -#endif - page += F("
"); - page += F("
IDE Flash Size
"); - page += ESP.getFlashChipSize(); - page += F(" bytes
"); - page += F("
Real Flash Size
"); -#if defined(ESP8266) - page += ESP.getFlashChipRealSize(); -#else - page += F("N/A for ESP32"); -#endif - page += F(" bytes
"); - page += F("
Soft AP IP
"); - page += WiFi.softAPIP().toString(); - page += F("
"); - page += F("
Soft AP MAC
"); - page += WiFi.softAPmacAddress(); - page += F("
"); - page += F("
Station SSID
"); - page += WiFi.SSID(); - page += F("
"); - page += F("
Station IP
"); - page += WiFi.localIP().toString(); - page += F("
"); - page += F("
Station MAC
"); - page += WiFi.macAddress(); - page += F("
"); - page += F(""); - return page; -} - -void AsyncWiFiManager::handleInfo(AsyncWebServerRequest *request) { - DEBUG_WM(F("Info")); - - String page = FPSTR(WFM_HTTP_HEAD); - page.replace("{v}", "Info"); - page += FPSTR(HTTP_SCRIPT); - page += FPSTR(HTTP_STYLE); - page += _customHeadElement; - if (connect==true) - page += F(""); - page += FPSTR(HTTP_HEAD_END); - page += F("
"); - if (connect==true) - { - page += F("
Trying to connect
"); - page += wifiStatus; - page += F("
"); - } - - page +=pager; - page += FPSTR(HTTP_END); - - request->send(200, "text/html", page); - - DEBUG_WM(F("Sent info page")); -} - -/** Handle the reset page */ -void AsyncWiFiManager::handleReset(AsyncWebServerRequest *request) { - DEBUG_WM(F("Reset")); - - String page = FPSTR(WFM_HTTP_HEAD); - page.replace("{v}", "Info"); - page += FPSTR(HTTP_SCRIPT); - page += FPSTR(HTTP_STYLE); - page += _customHeadElement; - page += FPSTR(HTTP_HEAD_END); - page += F("Module will reset in a few seconds."); - page += FPSTR(HTTP_END); - request->send(200, "text/html", page); - - DEBUG_WM(F("Sent reset page")); - delay(5000); - #if defined(ESP8266) - ESP.reset(); - #else - ESP.restart(); - #endif - delay(2000); -} - - - -//removed as mentioned here https://github.com/tzapu/AsyncWiFiManager/issues/114 -/*void AsyncWiFiManager::handle204(AsyncWebServerRequest *request) { -DEBUG_WM(F("204 No Response")); -request->sendHeader("Cache-Control", "no-cache, no-store, must-revalidate"); -request->sendHeader("Pragma", "no-cache"); -request->sendHeader("Expires", "-1"); -request->send ( 204, "text/plain", ""); - -}*/ - -void AsyncWiFiManager::handleNotFound(AsyncWebServerRequest *request) { - DEBUG_WM(F("Handle not found")); - if (captivePortal(request)) { // If captive portal redirect instead of displaying the error page. - return; - } - String message = "File Not Found\n\n"; - message += "URI: "; - message += request->url(); - message += "\nMethod: "; - message += ( request->method() == HTTP_GET ) ? "GET" : "POST"; - message += "\nArguments: "; - message += request->args(); - message += "\n"; - - for ( uint8_t i = 0; i < request->args(); i++ ) { - message += " " + request->argName ( i ) + ": " + request->arg ( i ) + "\n"; - } - AsyncWebServerResponse *response = request->beginResponse(404,"text/plain",message); - response->addHeader("Cache-Control", "no-cache, no-store, must-revalidate"); - response->addHeader("Pragma", "no-cache"); - response->addHeader("Expires", "-1"); - request->send (response ); -} - - -/** Redirect to captive portal if we got a request for another domain. Return true in that case so the page handler do not try to handle the request again. */ -boolean AsyncWiFiManager::captivePortal(AsyncWebServerRequest *request) { - if (!isIp(request->host()) ) { - DEBUG_WM(F("Request redirected to captive portal")); - AsyncWebServerResponse *response = request->beginResponse(302,"text/plain",""); - response->addHeader("Location", String("http://") + toStringIp(request->client()->localIP())); - request->send ( response); - return true; - } - return false; -} - -//start up config portal callback -void AsyncWiFiManager::setAPCallback( void (*func)(AsyncWiFiManager* myAsyncWiFiManager) ) { - _apcallback = func; -} - -//start up save config callback -void AsyncWiFiManager::setSaveConfigCallback( void (*func)(void) ) { - _savecallback = func; -} - -//sets a custom element to add to head, like a new style tag -void AsyncWiFiManager::setCustomHeadElement(const char* element) { - _customHeadElement = element; -} - -//sets a custom element to add to options page -void AsyncWiFiManager::setCustomOptionsElement(const char* element) { - _customOptionsElement = element; -} - -//if this is true, remove duplicated Access Points - defaut true -void AsyncWiFiManager::setRemoveDuplicateAPs(boolean removeDuplicates) { - _removeDuplicateAPs = removeDuplicates; -} - - - -template -void AsyncWiFiManager::DEBUG_WM(Generic text) { - if (_debug) { - Serial.print("*WM: "); - Serial.println(text); - } -} - -int AsyncWiFiManager::getRSSIasQuality(int RSSI) { - int quality = 0; - - if (RSSI <= -100) { - quality = 0; - } else if (RSSI >= -50) { - quality = 100; - } else { - quality = 2 * (RSSI + 100); - } - return quality; -} - -/** Is this an IP? */ -boolean AsyncWiFiManager::isIp(String str) { - for (int i = 0; i < str.length(); i++) { - int c = str.charAt(i); - if (c != '.' && (c < '0' || c > '9')) { - return false; - } - } - return true; -} - -/** IP to String? */ -String AsyncWiFiManager::toStringIp(IPAddress ip) { - String res = ""; - for (int i = 0; i < 3; i++) { - res += String((ip >> (8 * i)) & 0xFF) + "."; - } - res += String(((ip >> 8 * 3)) & 0xFF); - return res; -} diff --git a/examples/SmartSwitch/ESPAsyncWiFiManager.h b/examples/SmartSwitch/ESPAsyncWiFiManager.h deleted file mode 100644 index deecf4f..0000000 --- a/examples/SmartSwitch/ESPAsyncWiFiManager.h +++ /dev/null @@ -1,283 +0,0 @@ -/************************************************************** - WiFiManager is a library for the ESP8266/Arduino platform - (https://github.com/esp8266/Arduino) to enable easy - configuration and reconfiguration of WiFi credentials using a Captive Portal - inspired by: - http://www.esp8266.com/viewtopic.php?f=29&t=2520 - https://github.com/chriscook8/esp-arduino-apboot - https://github.com/esp8266/Arduino/tree/esp8266/hardware/esp8266com/esp8266/libraries/DNSServer/examples/CaptivePortalAdvanced - Built by AlexT https://github.com/tzapu - Ported to Async Web Server by https://github.com/alanswx - Licensed under MIT license - **************************************************************/ - -#ifndef ESPAsyncWiFiManager_h -#define ESPAsyncWiFiManager_h - -#if defined(ESP8266) -#include //https://github.com/esp8266/Arduino -#else -#include -#include "esp_wps.h" -#define ESP_WPS_MODE WPS_TYPE_PBC -#endif -#include - -//#define USE_EADNS //Uncomment to use ESPAsyncDNSServer -#ifdef USE_EADNS -#include //https://github.com/devyte/ESPAsyncDNSServer - //https://github.com/me-no-dev/ESPAsyncUDP -#else -#include -#endif -#include - -// fix crash on ESP32 (see https://github.com/alanswx/ESPAsyncWiFiManager/issues/44) -#if defined(ESP8266) -typedef int wifi_ssid_count_t; -#else -typedef int16_t wifi_ssid_count_t; -#endif - -#if defined(ESP8266) -extern "C" { - #include "user_interface.h" -} -#else -#if __has_include() -#include -#else -#include -#endif -#endif - -const char WFM_HTTP_HEAD[] PROGMEM = "{v}"; -const char HTTP_STYLE[] PROGMEM = ""; -const char HTTP_SCRIPT[] PROGMEM = ""; -const char HTTP_HEAD_END[] PROGMEM = "
"; -const char HTTP_PORTAL_OPTIONS[] PROGMEM = "



"; -const char HTTP_ITEM[] PROGMEM = "
{v} {r}%
"; -const char HTTP_FORM_START[] PROGMEM = "


"; -const char HTTP_FORM_PARAM[] PROGMEM = "
"; -const char HTTP_FORM_END[] PROGMEM = "
"; -const char HTTP_SCAN_LINK[] PROGMEM = "
"; -const char HTTP_SAVED[] PROGMEM = "
Credentials Saved
Trying to connect ESP to network.
If it fails reconnect to AP to try again
"; -const char HTTP_END[] PROGMEM = "
"; - -#define WIFI_MANAGER_MAX_PARAMS 10 - -class AsyncWiFiManagerParameter { -public: - AsyncWiFiManagerParameter(const char *custom); - AsyncWiFiManagerParameter(const char *id, const char *placeholder, const char *defaultValue, int length); - AsyncWiFiManagerParameter(const char *id, const char *placeholder, const char *defaultValue, int length, const char *custom); - - const char *getID(); - const char *getValue(); - const char *getPlaceholder(); - int getValueLength(); - const char *getCustomHTML(); -private: - const char *_id; - const char *_placeholder; - char *_value; - int _length; - const char *_customHTML; - - void init(const char *id, const char *placeholder, const char *defaultValue, int length, const char *custom); - - friend class AsyncWiFiManager; -}; - - -class WiFiResult -{ -public: - bool duplicate; - String SSID; - uint8_t encryptionType; - int32_t RSSI; - uint8_t* BSSID; - int32_t channel; - bool isHidden; - - WiFiResult() - { - } - - -}; - -class AsyncWiFiManager -{ -public: - #ifdef USE_EADNS - AsyncWiFiManager(AsyncWebServer * server, AsyncDNSServer *dns); - #else - AsyncWiFiManager(AsyncWebServer * server, DNSServer *dns); - #endif - - void scan(); - String scanModal(); - void loop(); - void safeLoop(); - void criticalLoop(); - String infoAsString(); - - boolean autoConnect(unsigned long maxConnectRetries = 1, unsigned long retryDelayMs = 1000); - boolean autoConnect(char const *apName, char const *apPassword = NULL, unsigned long maxConnectRetries = 1, unsigned long retryDelayMs = 1000); - - //if you want to always start the config portal, without trying to connect first - boolean startConfigPortal(char const *apName, char const *apPassword = NULL); - void startConfigPortalModeless(char const *apName, char const *apPassword); - - // get the AP name of the config portal, so it can be used in the callback - String getConfigPortalSSID(); - - void resetSettings(); - - //sets timeout before webserver loop ends and exits even if there has been no setup. - //usefully for devices that failed to connect at some point and got stuck in a webserver loop - //in seconds setConfigPortalTimeout is a new name for setTimeout - void setConfigPortalTimeout(unsigned long seconds); - void setTimeout(unsigned long seconds); - - //sets timeout for which to attempt connecting, usefull if you get a lot of failed connects - void setConnectTimeout(unsigned long seconds); - - //wether or not the wifi manager tries to connect to configured access point even when - //configuration portal (ESP as access point) is running [default true/on] - void setTryConnectDuringConfigPortal(boolean v); - - - void setDebugOutput(boolean debug); - //defaults to not showing anything under 8% signal quality if called - void setMinimumSignalQuality(int quality = 8); - //sets a custom ip /gateway /subnet configuration - void setAPStaticIPConfig(IPAddress ip, IPAddress gw, IPAddress sn); - //sets config for a static IP - void setSTAStaticIPConfig(IPAddress ip, IPAddress gw, IPAddress sn, IPAddress dns1=(uint32_t)0x00000000, IPAddress dns2=(uint32_t)0x00000000); - //called when AP mode and config portal is started - void setAPCallback( void (*func)(AsyncWiFiManager*) ); - //called when settings have been changed and connection was successful - void setSaveConfigCallback( void (*func)(void) ); - //adds a custom parameter - void addParameter(AsyncWiFiManagerParameter *p); - //if this is set, it will exit after config, even if connection is unsucessful. - void setBreakAfterConfig(boolean shouldBreak); - //if this is set, try WPS setup when starting (this will delay config portal for up to 2 mins) - //TODO - //if this is set, customise style - void setCustomHeadElement(const char* element); - //if this is true, remove duplicated Access Points - defaut true - void setRemoveDuplicateAPs(boolean removeDuplicates); - //sets a custom element to add to options page - void setCustomOptionsElement(const char* element); - -private: - AsyncWebServer *server; - #ifdef USE_EADNS - AsyncDNSServer *dnsServer; - #else - DNSServer *dnsServer; - #endif - - - boolean _modeless; - int scannow; - int shouldscan; - boolean needInfo = true; - - //const int WM_DONE = 0; - //const int WM_WAIT = 10; - - //const String HTTP_HEAD = "{v}"; - - void setupConfigPortal(); -#ifdef NO_EXTRA_4K_HEAP - void startWPS(); -#endif - String pager; - wl_status_t wifiStatus; - const char* _apName = "no-net"; - const char* _apPassword = NULL; - String _ssid = ""; - String _pass = ""; - unsigned long _configPortalTimeout = 0; - unsigned long _connectTimeout = 0; - unsigned long _configPortalStart = 0; - - IPAddress _ap_static_ip; - IPAddress _ap_static_gw; - IPAddress _ap_static_sn; - IPAddress _sta_static_ip; - IPAddress _sta_static_gw; - IPAddress _sta_static_sn; - IPAddress _sta_static_dns1= (uint32_t)0x00000000; - IPAddress _sta_static_dns2= (uint32_t)0x00000000; - - int _paramsCount = 0; - int _minimumQuality = -1; - boolean _removeDuplicateAPs = true; - boolean _shouldBreakAfterConfig = false; -#ifdef NO_EXTRA_4K_HEAP - boolean _tryWPS = false; -#endif - const char* _customHeadElement = ""; - const char* _customOptionsElement = ""; - - //String getEEPROMString(int start, int len); - //void setEEPROMString(int start, int len, String string); - - int status = WL_IDLE_STATUS; - int connectWifi(String ssid, String pass); - uint8_t waitForConnectResult(); - void setInfo(); - - String networkListAsString(); - - void handleRoot(AsyncWebServerRequest *); - void handleWifi(AsyncWebServerRequest*,boolean scan); - void handleWifiSave(AsyncWebServerRequest*); - void handleInfo(AsyncWebServerRequest*); - void handleReset(AsyncWebServerRequest*); - void handleNotFound(AsyncWebServerRequest*); - void handle204(AsyncWebServerRequest*); - boolean captivePortal(AsyncWebServerRequest*); - - // DNS server - const byte DNS_PORT = 53; - - //helpers - int getRSSIasQuality(int RSSI); - boolean isIp(String str); - String toStringIp(IPAddress ip); - - boolean connect; - boolean _debug = true; - - WiFiResult *wifiSSIDs; - wifi_ssid_count_t wifiSSIDCount; - boolean wifiSSIDscan; - - boolean _tryConnectDuringConfigPortal = true; - - void (*_apcallback)(AsyncWiFiManager*) = NULL; - void (*_savecallback)(void) = NULL; - - AsyncWiFiManagerParameter* _params[WIFI_MANAGER_MAX_PARAMS]; - - template - void DEBUG_WM(Generic text); - - template - auto optionalIPFromString(T *obj, const char *s) -> decltype( obj->fromString(s) ) { - return obj->fromString(s); - } - auto optionalIPFromString(...) -> bool { - DEBUG_WM("NO fromString METHOD ON IPAddress, you need ESP8266 core 2.1.0 or newer for Custom IP configuration to work."); - return false; - } -}; - -#endif diff --git a/examples/SmartSwitch/PinOut_Notes.txt b/examples/SmartSwitch/PinOut_Notes.txt deleted file mode 100644 index a55977a..0000000 --- a/examples/SmartSwitch/PinOut_Notes.txt +++ /dev/null @@ -1,56 +0,0 @@ -This application: -D2 = 4; // DHT DATA I/O -D3 = 0; // BUTTON - most modules have it populated on PCB -D4 = 2; // LED (RELAY) - most modules have it populated, on ESP32 is with reversed logic levels - - - -Pinout ESP12 (8266) -D GPIO In Out Notes - -D0 16 no interrupt no PWM or I2C support HIGH at boot used to wake up from deep sleep -D1 5 OK OK often used as SCL (I2C) -D2 4 OK OK often used as SDA (I2C) -D3 0 PU OK pulled up connected to FLASH button, boot fails if pulled LOW -D4 2 PU OK pulled up HIGH at boot connected to on-board LED, boot fails if pulled LOW -D5 14 OK OK SPI (SCLK) -D6 12 OK OK SPI (MISO) -D7 13 OK OK SPI (MOSI) -D8 15 pulled to GND OK SPI (CS) Boot fails if pulled HIGH -RX 3 OK RX pin HIGH at boot -TX 1 TX pin OK HIGH at boot debug output at boot, boot fails if pulled LOW -A0 ADC0 Analog Input - - -Pinout ESP32 -IO In Out Notes - -0 PU OK pulled-up input, outputs PWM signal at boot -1 TX OK debug output at boot -2 OK OK connected to on-board LED -3 OK RX HIGH at boot -4 OK OK -5 OK OK outputs PWM signal at boot - -6-11 x x connected to the integrated SPI flash - -12 OK OK boot fail if pulled high -13 OK OK -14 OK OK outputs PWM signal at boot -15 OK OK outputs PWM signal at boot -16 OK OK -17 OK OK -18 OK OK -19 OK OK -21 OK OK -22 OK OK -23 OK OK -25 OK OK -26 OK OK -27 OK OK -32 OK OK -33 OK OK -34 OK input only -35 OK input only -36 OK input only -39 OK input only \ No newline at end of file diff --git a/examples/SmartSwitch/README.md b/examples/SmartSwitch/README.md deleted file mode 100644 index ffafef7..0000000 --- a/examples/SmartSwitch/README.md +++ /dev/null @@ -1,19 +0,0 @@ - - -## SmartSwitch -- Remote Temperature Control application with schedule - (example: car block heater or car battery charger for winter) -- Based on [ESP_AsyncFSBrowser](https://github.com/lorol/ESPAsyncWebServer/tree/master/examples/ESP_AsyncFSBrowser) example that uses embedded ACE editor -- Wide browser compatibility, no extra server-side needed -- HTTP server and WebSocket on same port -- Standalone, no JS dependencies for the browser from Internet -- [Ace Editor](https://github.com/ajaxorg/ace) embedded to source but also - editable, upgradeable see [extras folder](https://github.com/lorol/ESPAsyncWebServer/tree/master/extras) -- Added [ESPAsyncWiFiManager](https://github.com/alanswx/ESPAsyncWiFiManager) and fallback AP mode after timeout -- Real Time (NTP) w/ Time Zones. Sync from browser time if in AP mode -- Memorized settings to EEPROM -- Multiple clients can be connected at same time, they see each other' requests -- Authentication variants including [Cookie-based](https://github.com/me-no-dev/ESPAsyncWebServer/pull/684) idea -- Used [this Xtea implementation](https://github.com/franksmicro/Arduino/tree/master/libraries/Xtea) for getting a fancier Cookie token -- Default credentials **smart : switch** or only **switch** as password -- OTA included -- Use the latest ESP8266 ESP32 cores from GitHub \ No newline at end of file diff --git a/examples/SmartSwitch/SmartSwitch.ino b/examples/SmartSwitch/SmartSwitch.ino deleted file mode 100644 index 658942f..0000000 --- a/examples/SmartSwitch/SmartSwitch.ino +++ /dev/null @@ -1,750 +0,0 @@ -/* -SmartSwitch application -Based on ESP_AsyncFSBrowser -Temperature Control for heater with schedule -Main purpose - for winter outside car block heater or battery charger -Wide browser compatibility, no other server-side needed. -HTTP server and WebSocket, single port -Standalone, no JS dependencies for the browser from Internet (I hope) -Based on ESP_AsyncFSBrowser -Real Time (NTP) w/ Time Zones -Memorized settings to EEPROM -Multiple clients can be connected at same time, they see each other requests -Use latest ESP core lib (from Github) -*/ - -// Defaulut is SPIFFS, FatFS: only on ESP32 -// Comment 2 lines below or uncomment only one of them - -#define USE_LittleFS -//#define USE_FatFS // select partition scheme w/ ffat! - - -#define USE_WFM // to use ESPAsyncWiFiManager -//#define DEL_WFM // delete Wifi credentials stored - //(use once then comment and flash again), also HTTP /erase-wifi can do the same live - -// AUTH COOKIE uses only the password and unsigned long MY_SECRET_NUMBER - -#define http_username "smart" -#define http_password "switch" - -#define MY_SECRET_NUMBER 0xA217B02F - -//See https://github.com/me-no-dev/ESPAsyncWebServer/pull/684 -//SSWI or other 4 chars -#define USE_AUTH_COOKIE -#define MY_COOKIE_DEL "SSWI=;Max-Age=-1;Path=/;" -#define MY_COOKIE_PREF "SSWI=" -#define MY_COOKIE_SUFF ";Max-Age=31536000;Path=/;" - -#ifndef USE_AUTH_COOKIE - #define USE_AUTH_STAT //Base Auth for stat, /commands and SPIFFSEditor - //#define USE_AUTH_WS //Base Auth also for WS, not very supported -#endif - -#include -#ifdef ESP32 - #include - #ifdef USE_LittleFS - #define HSTNM "ssw32-littlefs" - #define MYFS LITTLEFS - #include "LITTLEFS.h" - #elif defined(USE_FatFS) - #define HSTNM "ssw32-ffat" - #define MYFS FFat - #include "FFat.h" - #else - #define MYFS SPIFFS - #include - #define HSTNM "ssw32-spiffs" - #endif - #include - #include - #include -#elif defined(ESP8266) - #ifdef USE_LittleFS - #include - #define HSTNM "ssw8266-littlefs" - #define MYFS LittleFS - #include - #elif defined(USE_FatFS) - #error "FatFS only on ESP32 for now!" - #else - #define HSTNM "ssw8266-spiffs" - #define MYFS SPIFFS - #endif - #include - #include - #include -#endif - -#include -#ifdef USE_WFM - #include "ESPAsyncWiFiManager.h" -#endif -#include -#include -#include -#include - -#ifdef USE_AUTH_COOKIE - #include - #include "Xtea.h" -#endif - - -#define RTC_UTC_TEST 1577836800 // Some Date -#define MYTZ PSTR("EST5EDT,M3.2.0,M11.1.0") - -#define EESC 100 // fixed eeprom address for sched choice -#define EECH 104 // fixed eeprom address to keep selected active channel, only for reference here -#define EEBEGIN EECH + 1 -#define EEMARK 0x5A -#define MEMMAX 2 // 0,1,2... last max index (only 3 channels) -#define EEALL 512 - -#define HYST 0.5 // C +/- hysteresis - -// DHT -#define DHTTYPE DHT22 // DHT 11 // DHT 22, AM2302, AM2321 // DHT 21, AM2301 -#define DHTPIN 4 //D2 - -#define DHT_T_CORR -0.3 //Temperature offset compensation of the sensor (can be -) -#define DHT_H_CORR -2.2 //Humidity offset compensation of the sensor - -// SKETCH BEGIN MAIN DECLARATIONS - -DHT dht(DHTPIN, DHTTYPE); - -Ticker tim; -AsyncWebServer server(80); //single port - easy for forwarding -AsyncWebSocket ws("/ws"); - -#ifdef USE_WFM - #ifdef USE_EADNS - AsyncDNSServer dns; - #else - DNSServer dns; - #endif - -//Fallback timeout in seconds allowed to config or it creates an own AP, then serves 192.168.4.1 - #define FBTO 120 - const char* fbssid = "FBSSW"; - const char* fbpassword = "FBpassword4"; - -#else - const char* ssid = "MYROUTERSSD"; - const char* password = "MYROUTERPASSWD"; -#endif - -const char* hostName = HSTNM; - -// RTC -static timeval tv; -static time_t now; - -// HW I/O -const int btnPin = 0; //D3 -const int ledPin = 2; //D4 - -#ifdef ESP32 - #define LED_ON 0x1 - #define LED_OFF 0x0 -#elif defined(ESP8266) - #define LED_ON 0x0 - #define LED_OFF 0x1 -#endif - -int btnState = HIGH; - -// Globals -uint8_t count = 0; -uint8_t sched = 0; // automatic schedule -byte memch = 0; // select memory "channel" to work with -float t = 0; -float h = 0; -bool udht = false; -bool heat_enabled_prev = false; -bool ledState = LED_OFF; -bool ledOut = LED_OFF; - -struct EE_bl { - byte memid; //here goes the EEMARK stamp - uint8_t hstart; - uint8_t mstart; - uint8_t hstop; - uint8_t mstop; - float tempe; -}; - -EE_bl ee = {0,0,0,0,0,0.1}; //populate as initial - -// SUBS -void writeEE(){ - ee.memid = EEMARK; - //EEPROM.put(EESC, sched); // only separately when needed with commit() - //EEPROM.put(EECH, memch); // not need to store and retrieve memch - EEPROM.put(EEBEGIN + memch*sizeof(ee), ee); - EEPROM.commit(); //needed for ESP8266? -} - -void readEE(){ - byte ChkEE; - if (memch > MEMMAX) memch = 0; - EEPROM.get(EEBEGIN + memch*sizeof(ee), ChkEE); - if (ChkEE == EEMARK){ //otherwise stays with defaults - EEPROM.get(EEBEGIN + memch*sizeof(ee), ee); - EEPROM.get(EESC, sched); - if (sched > MEMMAX + 1) sched = 0; - } -} - -void doOut(){ - if (ledOut != ledState){ // only if changed - digitalWrite(ledPin, ledState); //consolidated here - ledOut = ledState; //update - if (ledState == LED_OFF){ - ws.textAll("led,ledoff"); - Serial.println(F("LED-OFF")); - } else { - ws.textAll("led,ledon"); - Serial.println(F("LED-ON")); - } - } -} - -void showTime() -{ - byte tmpch = 0; - bool heat_enabled = false; - - gettimeofday(&tv, nullptr); - now = time(nullptr); - const tm* tm = localtime(&now); - ws.printfAll("Now,Clock,%02d:%02d,%d", tm->tm_hour, tm->tm_min, tm->tm_wday); - if ((2==tm->tm_hour )&&(2==tm->tm_min)){ - configTzTime(MYTZ, "pool.ntp.org"); - Serial.print(F("Sync Clock at 02:02\n")); - } - Serial.printf("RTC: %02d:%02d\n", tm->tm_hour, tm->tm_min); - - if (sched == 0){ // automatic - if ((tm->tm_wday > 0)&&(tm->tm_wday < 6)) tmpch = 0; //Mon - Fri - else if (tm->tm_wday == 6) tmpch = 1; //Sat - else if (tm->tm_wday == 0) tmpch = 2; //Sun - } else { // manual - tmpch = sched - 1; //and stays - } - - if (tmpch != memch){ // update if different - memch = tmpch; - readEE(); - ws.printfAll("Now,Setting,%02d:%02d,%02d:%02d,%+2.1f", ee.hstart, ee.mstart, ee.hstop, ee.mstop, ee.tempe); - } - - // process smart switch by time and temperature - uint16_t xmi = (uint16_t)(60*tm->tm_hour) + tm->tm_min; // max 24h = 1440min, current time - uint16_t bmi = (uint16_t)(60*ee.hstart) + ee.mstart; // begin in minutes - uint16_t emi = (uint16_t)(60*ee.hstop) + ee.mstop; // end in minutes - - if (bmi == emi) heat_enabled = false; - else { //enable smart if different - - if (((bmi < emi)&&(bmi <= xmi)&&(xmi < emi))|| - ((emi < bmi)&&((bmi <= xmi)||(xmi < emi)))){ - heat_enabled = true; - } else heat_enabled = false; - } - - if (heat_enabled_prev){ // smart control (delayed one cycle) - if (((t + HYST) < ee.tempe)&&(ledState == LED_OFF)){ // OFF->ON once - ledState = LED_ON; - ws.textAll("led,ledon"); - } - if ((((t - HYST) > ee.tempe)&&(ledState == LED_ON))||(!heat_enabled)){ // ->OFF - ledState = LED_OFF; - ws.textAll("led,ledoff"); - } - - Serial.printf(ledState == LED_ON ? "LED ON" : "LED OFF"); - Serial.print(F(", Smart enabled\n")); - } - heat_enabled_prev = heat_enabled; //update -} - -void updateDHT(){ - float h1 = dht.readHumidity(); - float t1 = dht.readTemperature(); //Celsius or dht.readTemperature(true) for Fahrenheit - if (isnan(h1) || isnan(t1)){ - Serial.println(F("Failed to read from DHT sensor!")); - } else { - h = h1 + DHT_H_CORR; - t = t1 + DHT_T_CORR; - } -} - -void analogSample() -{ - ws.printfAll("wpMeter,Arduino,%+2.1f,%2.1f,%d", t, h, heat_enabled_prev); - Serial.printf("T/H.: %+2.1f°C/%2.1f%%,%d\n", t, h, heat_enabled_prev); -} - -void checkPhysicalButton() -{ - if (digitalRead(btnPin) == LOW){ - if (btnState != LOW){ // btnState is used to avoid sequential toggles - ledState = !ledState; - } - btnState = LOW; - } else { - btnState = HIGH; - } -} - -void mytimer(){ - ++count; //200ms increments - checkPhysicalButton(); - if ((count % 25) == 1){ // update temp every 5 seconds - analogSample(); - udht = true; - } - if ((count % 50) == 0){ // update temp every 10 seconds - ws.cleanupClients(); - } - if (count >= 150){ // cycle every 30 sec - showTime(); - count = 0; - } -} - -#ifdef USE_AUTH_COOKIE - unsigned long key[4] = {0x01F20304,0x05060708,0x090a0b0c,0x0d0e0f00}; - Xtea x(key); - -void encip(String &mtk, unsigned long token){ - unsigned long res[2] = {(unsigned long)random(0xFFFFFFFF),token}; - x.encrypt(res); - char buf1[18]; - sprintf(buf1, "%08X_%08X",res[0],res[1]); //8 bytes for encryping the IP cookie - mtk = (String)buf1; -} - -unsigned long decip(const char *pch){ - unsigned long res[2] = {0,0}; - res[0] = strtoul(pch, NULL, 16); - res[1] = strtoul(&pch[9], NULL, 16); - x.decrypt(res); - return res[1]; -} - -bool myHandshake(AsyncWebServerRequest *request){ // false will 401 - bool rslt = false; - if (request->hasHeader("Cookie")){ - String cookie = request->header("Cookie"); - Serial.println(cookie); - - uint8_t pos = cookie.indexOf(MY_COOKIE_PREF); - if (pos != -1){ - unsigned long ix = decip(cookie.substring(pos+5, pos+22).c_str()); - Serial.printf("Ask:%08X Got:%08X\n", MY_SECRET_NUMBER, ix); - if (MY_SECRET_NUMBER == ix) - rslt=true; - } else rslt=false; - } else rslt=false; - Serial.printf(rslt ? "C-YES\n" : "C-NO\n"); - return rslt; -} -#endif - -// server -void onWsEvent(AsyncWebSocket * server, AsyncWebSocketClient * client, AwsEventType type, void * arg, uint8_t *data, size_t len){ - if(type == WS_EVT_CONNECT){ - Serial.printf("ws[%s][%u] connect\n", server->url(), client->id()); - //client->printf("Hello Client %u :)", client->id()); - //client->ping(); - - IPAddress ip = client->remoteIP(); - Serial.printf("[%u] Connected from %d.%d.%d.%d\n", client->id(), ip[0], ip[1], ip[2], ip[3]); - showTime(); - analogSample(); - if (ledState == LED_OFF) ws.textAll("led,ledoff"); - else ws.textAll("led,ledon"); - - ws.printfAll("Now,Setting,%02d:%02d,%02d:%02d,%+2.1f", ee.hstart, ee.mstart, ee.hstop, ee.mstop, ee.tempe); - ws.printfAll("Now,sched,%d", sched); - - } else if(type == WS_EVT_DISCONNECT){ - Serial.printf("ws[%s][%u] disconnect\n", server->url(), client->id()); - ws.textAll("Now,remoff"); - - } else if(type == WS_EVT_ERROR){ - Serial.printf("ws[%s][%u] error(%u): %s\n", server->url(), client->id(), *((uint16_t*)arg), (char*)data); - } else if(type == WS_EVT_PONG){ - Serial.printf("ws[%s][%u] pong[%u]: %s\n", server->url(), client->id(), len, (len)?(char*)data:""); - } else if(type == WS_EVT_DATA){ - AwsFrameInfo * info = (AwsFrameInfo*)arg; - String msg = ""; - if(info->final && info->index == 0 && info->len == len){ - //the whole message is in a single frame and we got all of it's data - Serial.printf("ws[%s][%u] %s-message[%llu]: ", server->url(), client->id(), (info->opcode == WS_TEXT)?"text":"binary", info->len); - - if(info->opcode == WS_TEXT){ - for(size_t i=0; i < info->len; i++){ //debug - msg += (char) data[i]; - } - if(data[0] == 'L'){ // LED - if(data[1] == '1'){ - ledState = LED_ON; - ws.textAll("led,ledon"); // for others - } - else if(data[1] == '0'){ - ledState = LED_OFF; - ws.textAll("led,ledoff"); - } - - } else if(data[0] == 'T'){ // timeset - if (len > 11){ - data[3] = data[6] = data[9] = data[12] = 0; // cut strings - ee.hstart = (uint8_t) atoi((const char *) &data[1]); - ee.mstart = (uint8_t) atoi((const char *) &data[4]); - ee.hstop = (uint8_t) atoi((const char *) &data[7]); - ee.mstop = (uint8_t) atoi((const char *) &data[10]); - Serial.printf("[%u] Timer set %02d:%02d - %02d:%02d\n", client->id(), ee.hstart, ee.mstart, ee.hstop, ee.mstop); - writeEE(); - memch = 255; // to force showTime()to send Setting - showTime(); - } - } else if(data[0] == 'W'){ // temperatureset - if (len > 3){ - if (ee.tempe != (float) atof((const char *) &data[1])){ - ee.tempe = (float) atof((const char *) &data[1]); - Serial.printf("[%u] Temp set %+2.1f\n", client->id(), ee.tempe); - writeEE(); - memch = 255; // to force showTime()to send Setting - showTime(); - } - } - } else if ((data[0] == 'Z')&&(len > 2)){ // sched - data[2] = 0; - if (sched != (uint8_t) atoi((const char *) &data[1])){ - sched = (uint8_t) atoi((const char *) &data[1]); - EEPROM.put(EESC, sched); //separately - EEPROM.commit(); //needed for ESP8266? - ws.printfAll("Now,sched,%d", sched); - showTime(); - } - } - - } else { - char buff[3]; - for(size_t i=0; i < info->len; i++){ - sprintf(buff, "%02x ", (uint8_t) data[i]); - msg += buff ; - } - } - Serial.printf("%s\n",msg.c_str()); - - if(info->opcode == WS_TEXT) - client->text("I got your text message"); - else - client->binary("I got your binary message"); - - } else { - //message is comprised of multiple frames or the frame is split into multiple packets - if(info->index == 0){ - if(info->num == 0) - Serial.printf("ws[%s][%u] %s-message start\n", server->url(), client->id(), (info->message_opcode == WS_TEXT)?"text":"binary"); - Serial.printf("ws[%s][%u] frame[%u] start[%llu]\n", server->url(), client->id(), info->num, info->len); - } - - Serial.printf("ws[%s][%u] frame[%u] %s[%llu - %llu]: ", server->url(), client->id(), info->num, (info->message_opcode == WS_TEXT)?"text":"binary", info->index, info->index + len); - - if(info->opcode == WS_TEXT){ - for(size_t i=0; i < len; i++){ - msg += (char) data[i]; - } - } else { - char buff[3]; - for(size_t i=0; i < len; i++){ - sprintf(buff, "%02x ", (uint8_t) data[i]); - msg += buff ; - } - } - Serial.printf("%s\n",msg.c_str()); - - if((info->index + len) == info->len){ - Serial.printf("ws[%s][%u] frame[%u] end[%llu]\n", server->url(), client->id(), info->num, info->len); - if(info->final){ - Serial.printf("ws[%s][%u] %s-message end\n", server->url(), client->id(), (info->message_opcode == WS_TEXT)?"text":"binary"); - if(info->message_opcode == WS_TEXT) - client->text("I got your text message"); - else - client->binary("I got your binary message"); - } - } - } - } -} - - -// setup ----------------------------------- - -void setup(){ - Serial.begin(115200); - //Serial.setDebugOutput(true); - -//Wifi -#ifdef USE_WFM - AsyncWiFiManager wifiManager(&server,&dns); - #ifdef DEL_WFM - wifiManager.resetSettings(); - #endif - wifiManager.setTimeout(FBTO); // seconds to config or it creates an own AP, then browse 192.168.4.1 - if (!wifiManager.autoConnect(hostName)){ - Serial.print(F("*FALLBACK AP*\n")); - WiFi.mode(WIFI_AP); - WiFi.softAP(fbssid, fbpassword); - // MDNS.begin(fbssid); - // MDNS.addService("http","tcp",80); // Core SVN 5179 use STA as default interface in mDNS (#7042) - } - -#else -// Manual simple STA mode to connect to known router - //WiFi.mode(WIFI_AP_STA); // Core SVN 5179 use STA as default interface in mDNS (#7042) - //WiFi.softAP(hostName); // Core SVN 5179 use STA as default interface in mDNS (#7042) - WiFi.mode(WIFI_STA); // Core SVN 5179 use STA as default interface in mDNS (#7042) - WiFi.begin(ssid, password); - if (WiFi.waitForConnectResult() != WL_CONNECTED){ - Serial.print(F("STA: Failed!\n")); - WiFi.disconnect(false); - delay(1000); - WiFi.begin(ssid, password); - } -#endif - - Serial.print(F("*CONNECTED* OWN IP:")); - Serial.println(WiFi.localIP()); - -//DHT - dht.begin(); - updateDHT(); //first reading takes time, hold here than the loop; - -//Real Time - time_t rtc = RTC_UTC_TEST; - timeval tv = { rtc, 0 }; - //timezone tz = { 0, 0 }; //(insert) <#5194 - settimeofday(&tv, nullptr); //settimeofday(&tv, &tz); // <#5194 - configTzTime(MYTZ, "pool.ntp.org"); - -//MDNS (not needed) - // MDNS.begin(hostName); - // MDNS.addService("http","tcp",80); // Core SVN 5179 use STA as default interface in mDNS (#7042) - -//I/O & DHT - pinMode(ledPin, OUTPUT); - pinMode(btnPin, INPUT_PULLUP); - -//EE - EEPROM.begin(EEALL); - //EEPROM.get(EECH, memch); //current channel, no need - readEE(); // populate structure if healthy - Serial.printf("Timer set %02d:%02d - %02d:%02d\n", ee.hstart, ee.mstart, ee.hstop, ee.mstop); - Serial.printf("Temp set %+2.1f\n", ee.tempe); - -//FS -#ifdef USE_FatFS - if (MYFS.begin(false,"/ffat",3)){ //limit the RAM usage, bottom line 8kb + 4kb takes per each file, default is 10 -#else - if (MYFS.begin()){ -#endif - Serial.print(F("FS mounted\n")); - } else { - Serial.print(F("FS mount failed\n")); - } - -#ifdef USE_AUTH_WS - ws.setAuthentication(http_username,http_password); -#endif - -#ifdef USE_AUTH_COOKIE - ws.handleHandshake(myHandshake); -#endif - - ws.onEvent(onWsEvent); - server.addHandler(&ws); - -#ifdef ESP32 - #ifdef USE_AUTH_STAT - server.addHandler(new SPIFFSEditor(MYFS, http_username,http_password)); - #elif defined(USE_AUTH_COOKIE) - server.addHandler(new SPIFFSEditor(MYFS)).setFilter(myHandshake); - #else - server.addHandler(new SPIFFSEditor(MYFS)); - #endif -#elif defined(ESP8266) - #ifdef USE_AUTH_STAT - server.addHandler(new SPIFFSEditor(http_username,http_password,MYFS)); - #elif defined(USE_AUTH_COOKIE) - server.addHandler(new SPIFFSEditor("","",MYFS)).setFilter(myHandshake); - #else - server.addHandler(new SPIFFSEditor("","",MYFS)); - #endif -#endif - -#ifdef USE_AUTH_COOKIE - server.on("/lg2n", HTTP_POST, [](AsyncWebServerRequest *request){ - - String ckx; - encip(ckx, MY_SECRET_NUMBER); - - AsyncWebServerResponse *response; - - if(request->hasParam("lg0f",true)){ - response = request->beginResponse(200, "text/html;charset=utf-8", "

Logged Out! Back

"); - response->addHeader("Cache-Control", "no-cache"); - response->addHeader("Set-Cookie", MY_COOKIE_DEL); - - } else if(request->hasParam("pa2w",true) && (String(request->getParam("pa2w",true)->value().c_str()) == String(http_password))){ - response = request->beginResponse(301); - response->addHeader("Location", "/"); - response->addHeader("Cache-Control", "no-cache"); - response->addHeader("Set-Cookie", MY_COOKIE_PREF + ckx + MY_COOKIE_SUFF); - - } else response = request->beginResponse(200, "text/html;charset=utf-8", "

Wrong password! Back

"); - - request->send(response); - }); -#endif - -// below paths need individual auth //////////////////////////////////////////////// - - server.on("/free-ram", HTTP_GET, [](AsyncWebServerRequest *request){ // direct request->answer -#ifdef USE_AUTH_STAT - if(!request->authenticate(http_username, http_password)) return request->requestAuthentication(); -#endif - -#ifdef ESP32 - request->send(200, "text/plain", String(ESP.getMinFreeHeap()) + ':' + String(ESP.getFreeHeap()) + ':'+ String(ESP.getHeapSize())); -#else - request->send(200, "text/plain", String(ESP.getFreeHeap())); -#endif - - -#ifdef USE_AUTH_COOKIE - }).setFilter(myHandshake); -#else - }); -#endif - - server.on("/get-time", HTTP_GET, [](AsyncWebServerRequest *request){ -#ifdef USE_AUTH_STAT - if(!request->authenticate(http_username, http_password)) return request->requestAuthentication(); -#endif - if(request->hasParam("btime")){ - time_t rtc = (request->getParam("btime")->value()).toInt(); - timeval tv = { rtc, 0 }; - settimeofday(&tv, nullptr); - } - request->send(200, "text/plain","Got browser time ..."); -#ifdef USE_AUTH_COOKIE - }).setFilter(myHandshake); -#else - }); -#endif - - server.on("/hw-reset", HTTP_GET, [](AsyncWebServerRequest *request){ -#ifdef USE_AUTH_STAT - if(!request->authenticate(http_username, http_password)) return request->requestAuthentication(); -#endif - request->onDisconnect([](){ -#ifdef ESP32 - ESP.restart(); -#elif defined(ESP8266) - ESP.reset(); -#endif - }); - request->send(200, "text/plain","Restarting ..."); -#ifdef USE_AUTH_COOKIE - }).setFilter(myHandshake); -#else - }); -#endif - - server.on("/erase-wifi", HTTP_GET, [](AsyncWebServerRequest *request){ -#ifdef USE_AUTH_STAT - if(!request->authenticate(http_username, http_password)) return request->requestAuthentication(); -#endif - request->onDisconnect([](){ -#ifdef ESP32 -/* - //https://github.com/espressif/arduino-esp32/issues/400#issuecomment-499631249 - //WiFi.disconnect(true); // doesn't work on esp32, below needs #include "esp_wifi.h" - wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); //load the flash-saved configs - esp_wifi_init(&cfg); //initiate and allocate wifi resources (does not matter if connection fails) - if(esp_wifi_restore()!=ESP_OK){ - Serial.print(F("WiFi is not initialized by esp_wifi_init ")); - } else { - Serial.print(F("WiFi Configurations Cleared!")); - } -*/ - WiFi.disconnect(true, true); // Works on esp32 - ESP.restart(); -#elif defined(ESP8266) - WiFi.disconnect(true); - ESP.reset(); -#endif - }); - request->send(200, "text/plain","Erasing WiFi data ..."); -#ifdef USE_AUTH_COOKIE - }).setFilter(myHandshake); -#else - }); -#endif - -// above paths need individual auth //////////////////////////////////////////////// - -#ifdef USE_AUTH_COOKIE - server.serveStatic("/", MYFS, "/").setDefaultFile("index.htm").setFilter(myHandshake); - server.serveStatic("/", MYFS, "/login/").setDefaultFile("index.htm"); -#else - #ifdef USE_AUTH_STAT - server.serveStatic("/", MYFS, "/").setDefaultFile("index.htm").setAuthentication(http_username,http_password); - #else - server.serveStatic("/", MYFS, "/").setDefaultFile("index.htm"); - #endif -#endif - - server.onNotFound([](AsyncWebServerRequest *request){ // nothing known - Serial.print(F("NOT_FOUND: ")); - if (request->method() == HTTP_OPTIONS) request->send(200); //CORS - else request->send(404); - }); - - DefaultHeaders::Instance().addHeader("Access-Control-Allow-Origin", "*");//CORS - server.begin(); - - //Timer tick - tim.attach(0.2, mytimer); //every 0.2s - - //OTA - ArduinoOTA.setHostname(hostName); - ArduinoOTA.onStart([](){ - Serial.print(F("OTA Started ...\n")); - MYFS.end(); // Clean FS - ws.textAll("Now,OTA"); // for all clients - ws.enable(false); - ws.closeAll(); - }); - ArduinoOTA.begin(); -} // setup end - -// loop ----------------------------------- -void loop(){ - if (udht){ // 5sec - updateDHT(); - udht = false; - } - doOut(); - ArduinoOTA.handle(); -} diff --git a/examples/SmartSwitch/Xtea.cpp b/examples/SmartSwitch/Xtea.cpp deleted file mode 100644 index 97d99b0..0000000 --- a/examples/SmartSwitch/Xtea.cpp +++ /dev/null @@ -1,48 +0,0 @@ -/* - Xtea.cpp - Xtea encryption/decryption - Written by Frank Kienast in November, 2010 - https://github.com/franksmicro/Arduino/tree/master/libraries/Xtea -*/ -#include -#include "Xtea.h" - -#define NUM_ROUNDS 32 - -Xtea::Xtea(unsigned long key[4]) -{ - _key[0] = key[0]; - _key[1] = key[1]; - _key[2] = key[2]; - _key[3] = key[3]; -} - -void Xtea::encrypt(unsigned long v[2]) -{ - unsigned int i; - unsigned long v0=v[0], v1=v[1], sum=0, delta=0x9E3779B9; - - for (i=0; i < NUM_ROUNDS; i++) - { - v0 += (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + _key[sum & 3]); - sum += delta; - v1 += (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + _key[(sum>>11) & 3]); - } - - v[0]=v0; v[1]=v1; -} - -void Xtea::decrypt(unsigned long v[2]) -{ - unsigned int i; - uint32_t v0=v[0], v1=v[1], delta=0x9E3779B9, sum=delta*NUM_ROUNDS; - - for (i=0; i < NUM_ROUNDS; i++) - { - v1 -= (((v0 << 4) ^ (v0 >> 5)) + v0) ^ (sum + _key[(sum>>11) & 3]); - sum -= delta; - v0 -= (((v1 << 4) ^ (v1 >> 5)) + v1) ^ (sum + _key[sum & 3]); - } - - v[0]=v0; v[1]=v1; -} - diff --git a/examples/SmartSwitch/Xtea.h b/examples/SmartSwitch/Xtea.h deleted file mode 100644 index fc8fa43..0000000 --- a/examples/SmartSwitch/Xtea.h +++ /dev/null @@ -1,20 +0,0 @@ -/* - Xtea.h - Crypto library - Written by Frank Kienast in November, 2010 - https://github.com/franksmicro/Arduino/tree/master/libraries/Xtea -*/ -#ifndef Xtea_h -#define Xtea_h - - -class Xtea -{ - public: - Xtea(unsigned long key[4]); - void encrypt(unsigned long data[2]); - void decrypt(unsigned long data[2]); - private: - unsigned long _key[4]; -}; - -#endif diff --git a/examples/SmartSwitch/data/.exclude.files b/examples/SmartSwitch/data/.exclude.files deleted file mode 100644 index a1c4278..0000000 --- a/examples/SmartSwitch/data/.exclude.files +++ /dev/null @@ -1,3 +0,0 @@ -/*.gz -/edit_gz -/.exclude.files diff --git a/examples/SmartSwitch/data/ace.ico.gz b/examples/SmartSwitch/data/ace.ico.gz deleted file mode 100644 index 49e15bcebdeba0b55db396e5b6266b6e72730070..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6307 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 KOty1kU;qFMq`X-G diff --git a/examples/SmartSwitch/data/acefull.js.gz b/examples/SmartSwitch/data/acefull.js.gz deleted file mode 100644 index 54069806c524a3c84eb31eedc650c3efa1686331..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 118766 zcmb2|=HT#pwl1EDAu%~Mtu!Y`FRPegNpx-XZ4-h2S}Plqgs*zu>dWO*^1o^I;_$9_ zna2+=&_3Kd_1Kw>%{t#()$Y%|?-}-IQpw||^F6HQzVlmt`DIDb9nXn

vk5E6-m& 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 P|9Bs7lb!SA2^#|dWcGow diff --git a/examples/SmartSwitch/data/app.css.gz b/examples/SmartSwitch/data/app.css.gz deleted file mode 100644 index a5beb7d7e4f80b82d9860430de622bd7f38ff88d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2740 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 diff --git a/examples/SmartSwitch/data/app.min.js.gz b/examples/SmartSwitch/data/app.min.js.gz deleted file mode 100644 index dce4784ea304a514e44df1ca6e3356c8d4bf29dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 38439 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 - - - - Smart Switch - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - -
-
- - - - - - - - -
- - - - - -
-
- -
-
-
- -
-
- - - - - -
- -

-
-
-
-
- -
- - - - - - - - \ No newline at end of file diff --git a/examples/SmartSwitch/data/login/favicon.ico.gz b/examples/SmartSwitch/data/login/favicon.ico.gz deleted file mode 100644 index 9e605465c6e22500502ba34a11be2488bc508355..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5806 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 - - - - Login - - - - - - -
-

-

Login - Logout

-
-

-

- -
-
Back -
- - - - - \ No newline at end of file diff --git a/examples/SmartSwitch/data/worker-css.js.gz b/examples/SmartSwitch/data/worker-css.js.gz deleted file mode 100644 index 6bab483026a8fb0ef25353f10db64a75d38d99b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32927 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 CgHFN# diff --git a/examples/SmartSwitch/data/worker-html.js.gz b/examples/SmartSwitch/data/worker-html.js.gz deleted file mode 100644 index b256b50c0d2da0779833d602f8ee30a686eac6eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45019 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

s@_bk!(fukBjyG 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 diff --git a/examples/SmartSwitch/data/worker-javascript.js.gz b/examples/SmartSwitch/data/worker-javascript.js.gz deleted file mode 100644 index 9cbfd2049f4dc579c777e291376a775707d0a573..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 112558 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�Z96|NE)^Uy=<{fPtq>QgsKneXYl@#~I? z!v(YGdSAzBGuN3Md%n^w(_d2DDO>o-6S?yRo$u>DFP!k^!?`qDk8caj?$j@Sc{bC; zHp?#RTfWJhyh$%#o^{ELjGxJ}MXAcyd|8}Y{sq@lUGb9^u2ua1B_!QUipgnp-LtDl z_Gj4q`H|tdao@QV-s2tiozjYdEnm}=7rj$o*y1N=@MV3EUBoy4WX+C>0|$Ov_V`)8 zPl;W%_K@?(i^bb@K7^awvQlvD~xObCu>HOS-Mjw)u4=HZG9j(AzQ0(}v#9RB~ zhIDr+7rhGEo2i*CK6xPvo~V2*-N0dBP-!iAp2sNs(XoiMJQZud4;;3Z$u)DMgjc1r zHdwCj|EesT9umi+{pKgvVuec2XOVdp={M@9I&SLSGqhvnhEAdauD<5sRysXkewliHcHS4(T^L>0)+Y9y;EPJ|Gt!du8xl37P)a@6uZktxf zpPaR2!IXU7Gjk5;D6T)?ZR@;j{r2rvJ?pZkzw|YjJS+t^fnXi_qM`~=zu*#a1^Qt0t0>eg^3Sp~kVR`UDvdwgZKxmcF1Xuf1>5E@>xE!cHk zpvH3X^)f}hT$!r7;{NTL@%-_>I#!`5Kdpr0hi_FJ;9^Ka@m{-3DUYP?rxiQs>XXJG6w$R zyzZdNy6(&Q8jj9{l8B1doORp!N<`Y(l)~#R&)e_b&&|2f&!73?k~M6P`|h4xE4@aS z&qdA7D{oiUp1p5%CPylV#2I$V%})GfEc7noxIyJ2ZuOSz9Btcxc#G@n&Nk@HjZ2z$ zE=v9VwqJ6;l6}h~YA1h>u5GA1{waFD^qdMq{>Te!C7)}bQ2ttL+OnyS^EY==ggl#> z#vR?CQ+Nfdvn1NB*y=6chc4W3eA@1{2d%>nOYxmp>%*4sA~|ExO;0VKi#+T3qI@-N z&#J95v13?RxoYo?m9CE}zXTh6HC^8BcWw>FeIfNB*dN(r)~#l~6B#Q~q~lLLJ}P^XJc;-}v+A#($BkV;tYO z#ID-@YH8KleF6SgrOzI%o96JeUf=qclXcAhM_QMsbXzU1_!HUrF~;xwy(X9HV$;_v zy>8_!>Y3}Va%H<{=*r!i6E6oo+824%iTlvBHQI*uPCvrex~ctboPJOHUfkX}=VO@r zBVVo&Q`OB~cB5Zw<=x-5$NycNwe=(y@3pi|rBa)H&&=H_>CJqOIn@2-%*Ly?cbx5Z z{JN-Us`|ot&N2r~rytqZ|8{Qd8|%go7x>*1Ig4I%E$%Vnn5(n!Rb<W|Mq>^sh&GmU*9F7hc2$zPe-Z60?h|GlyGdvD2K zVEpJ6VAUQj~uZx{`liHi{$1H z5qBoFAAdSc$4cVVC6jd<{uh6~{Eh9!hdVX@8jo~~d|G05;va|F_56J2K5kvMz2*Wu zufA-Jc=Sm0RSqL-wZnSN)3CvF`zogHj8{ybT(oIct;~Cku1hR)w@n#3-$>`u)aZLg0q?f^_dY#f-BKr7w(83Ne$OW#79^|?JF1*>)NiR`gD2na>nyqJY_3aP z4$PVMT6T8quSZXhUbt1MJ?n_;W~Q0vV&lwh`OIa#t7p6^Xg-yh`G4`*#+P{vUmpKk zx8eC*!TPNa*YMlC`7hDnU-jo`>B%~Ep@q!TkIa=&slEQP_eOBV14kyo6)FYEyENl2 z8C_rQQgu$pMdeD)Q~A!qSo@acF{z%jrNo`~x2lP`h^&#_r0};@-;L?-i)jx!SNK@3 zP8X~zyLJA>v)i5B6Rv;Od9Y<;(V^wL{v0aV+$VZ#)43NyD|Hx;c6nSm!)8+d{N{U+ zMh4yelOD4~UB6(msYn#gZk<%*H4C{g%Xy7PTc;n;4foEVOL?Dm^{G z;g3s?^ahq)%|bjggq~+EW_k2l=uC(CjF8{9H{Sg7kPEJPd?lGF^}bP*gj(K&P}?ni zK2JV|SDHPrjc!~j7PqrSciZzM?SMb)1*Y}({XhNo^SQP|fjU9EeRo(lifm5W{QF>9 z`P#roGUh9b)UDPEyKYGesBTTvJ8sBht-LSvUjC;!m4&~eR+ZhqPz7tJqzc$ zM?Q_?+`D8;&K>c?t4!w2kk+!DwCU>OxK&!cJRfUT&gFk+p0|F=+@koSuB#L>?RwS+ z-~M%%eRfp;wP%fHLJFJIce1{#ZD2U5axH4w^^!fz9v?HO@BY?(-d#TO>ud;ZIS;ds-xvh6#&PwriO z&DdDUZACHrWX~U0IKOMJ`L;m(i)75#DL#TF;R#9pCp9v{kFBiTAKJX-$4k9U30iv= z7hg?EU7Yq@LgVzliKjT;L`&WG(>An|JXjWKyHarXRr4<`YP*-Lw@RJK!@Py##)p8Z zQ@V^Eot*vjte19<+TYbn=bSs(FKYR-bbF%NOU|WzPfmX_e9_Cv*|P812GyrxCszqc zB(L_Fx@?}Amt|e_CePN3ztx`}+xgdi#<}nF+Vcv227hr5JF_6pFzd9ow;ZclmvD*k z`E%7@=S+O?LTSEffC=}y%(LvAowY5@4tC2+0)HE=oPJ9w8?vs zYXqOGZru?5#7erfxAJP=8tLDYw$0hn?AmPTa>6=+?cQRh)TTLSpB~}(7;(HxI$vjZ zZ~yI^FB#ZAeT|Pl=5?x@HRSEa{C!vM<{nGtc@HB0o1`c`vo$kXY6F*;Ef0*N{{ELO3 z4X16$4lKXFkn!7G_Cs8ZpEjPb4ZZg35Oc~4A!)myFTBetmYGhQS9i{&&?Di@S)IR6 zllJY=yQ0&0@?_$Z=nLO2X5LTM7yKNww##d((c+d_cOInKY;Bgyk!?;OAx8>$j z(wvLW@-A3;a`NnSWnQcQ4<7JtGTry#sG>~$6~X!_S?l>$b5F^JzSeoDa(b!N>dBi_ zj5S@8I=NPVn5y8EDQw97S3fa#)2^-5n9g$%tR}?KXEr>dtZguZkz=Y>9&6E9>?w-kXBjCf2+2YUH=gUkE*1qn( z<+_Z^RmJ-|Ppzt(F*7Nq{$;wx>_i3Emh+iGcBi)V7;j+9Wn9ql_t=UFi!b=stDoJc zEE%xndDFDUxwFL|XL{~dY?HHmTT>L!I-&bNuaUFvpY8ENi*m~kH2BT-%9d3Z+RT0Q zTcxJx4i<$Q+z(D!XG{~0eY#}ovR9k-tjJO5>u&MW-mIY~w9#Ap@1X{#B^$MtSnDpE zW}-gLA=GcjjThflFFTj)_uiqmr}dH7?C$u>PPcOuZl)PdHP&v;+x7DDqSK3XSTC9^ zZF;!R$z*53tMDYZjhct#EMq*+H*4xzt(v;J@%-%Ri*x<&tm*FJy?^%IRks}15Qa*5 zo{G4P-KmTl^!fMX9NaYT>YoMY7l$gecem=_Im_^fZ@=0$wVR8kI&vud+;TE?bX)F>zz_T!~cyx6X7jrX5J1sS`v~M zePh)h4)2-OuhuvTq|2w?f8}ZLc$?4Ci()(fY}GlPdSco8jLE+*-Hv{s8#z6K@zYVS zzzd~M%By#a%;!=tdb74^=bg6#Z}XNN6#2+&I^%8fR}QDcqE5B-X?v_1oZK%;sBgW| z@ng&Gk9_ZiuekC3I^B`9_nz6$Wf^L%rAvPqf7#x2=EvPRSw|R`Es5Wx^|+@;$E)zA z;q@)`J^L3%@7{4PPUT8qcJ_;tB^4jb#*{ae@SMGfm|1H|B$F;I{$Fonr zcNe56YRng1dG+Pw#>Y~|&3BL8GD_~zeKG6HbKdlOM!)x8E5EeNBkt*(VoA+|6JPXC zWZBa|xV$cpIF4@Jp}hF&`GKm25o|>2b~`K~iA%-b;D)E4oj4`xlfQ+Wl8F;zxDB!^IC2 zo_mDxoY?qb(aMdDYVrTo{Xy)<<+YB>Zwqcl^{xNS5qDaU=XK0w zkDu(PFT65$XtGt1toiP^+O=!P`l@d-f3jyXuy(xdYS1{K|2pLKEB2osuis*4ZCYo_ zwekGy&9@?Ng=${DqjmX?vU*773Foy(-pxC;?P=n2t?qTlZ!JmxdiAZURH^-E zYGoDPF8Aryk<;A%gEu(SPk+xzE!}sor;2_!c6z$ye zZ^8?yX1Xa;Eb&Zx^JMZ1mQ~AEZeD5n!6aAW+N?HRlaD#2 zH}=11DJ#*wR2>$x*({)F+0LtxQ+|eNoXfbuQMT>8n%08a1Cbl<`O8b+?+_8Ks;UZ$ zRFDj3^El@tKh>{z9<$z#MR8}lh0K-3K3d$rp^_ecdHt%Bx_KiTwNf0B0)5!kRqNUe#* zvuokhxxH&Hynk7DAng6yT!l?lyhYkMdw5*mr)+oiwLSKEQ`N)BSNmFhx9dqON8}kk zH3|*R%=HV_Gk)v0Ms>+WlXj!q>#m)4a_rWaH{th+Gtx?OP1#l(`WDQJkr(Z5dss9z z^Rf{4r=vPs@7;d0BX8r(59$}JIsdcm+~MEe`*3#i`)l4S>Q?-=3U8h#cd20`AJ4j! zRqt4Q_luUa2=_{Rs!VY|T5+09Y_H$u_RRvna<~LP2<^#r_ulHOkY!yRcIL&oT5WN2 z^@TZqYec7>w>>^nyub3BUjFa@S+n|<7nVqD&-r!ltBd(l0oUZem4C~oR0J`_1!c`Y zG3~4IUM;30DIX>_M|F4}FxnEMZ@1b-wf0rQ##G~kzt4RS|D8Rp>R*A+L{?tg?D^IH-lGSvt~M$!yz(Y(v(%{rTQ3w|yZFTK^1F)jfn`w|(&Czry56-; zXcc#Qrn{*sQYS^P^W>)Px0~+P>uF0}6}-r@=F_x_*YOPIjf&+JzUF7dCHte;HgRW# zJl9m=uIyo7#QP~{naJ{c+xJe9<2zXOZWG_+>kapgPra4Gd}V>LfBgNuJGyqy6Q9|+ z`kvI$P49(^&zG>a-B~Wa-ENh$MgNmTPl07uV};X<3isVVe)zg1n`UH`-OZTmCqy14 z8BFoE(QX&&5y{Q>kw3Z7_};Ou#_iqDCQbYh*EV~8q+0abcSSQJzXt`Jyk;hLTCI8d zle=o^(N^tVqH^obUCLG#)0tLrn`djS{I3IgTTbtqd~mAoU4@zN6D79$FYZ0}xvW6V zr-0S?I+kY=}7f7FbC0okAQ6=#FIs#(rQo?c!3_>)?hKZ~Ao{Fre%U~im}!?fzQAD&m<-G2AQcVl3+$$S3G z1`3BaB!Aw`)aU$-ad~ZSK8sv77qfqx*N>CO!#X_O#4}#U^@QFzJLldZ!MmKPp6pu3 znvdGNX`HIx!7H@fuRp&nY7_U9ThV<+iT~=9*Sz|>EJwN`rsEDDLzLk}?zP-)YpU*M z`YxU0nB;yof6}y#1r4S1eO#sNW-Ljw?q1e(EnDjHjr*n5&#v8ToDh`%>FK9WMmfKi zXr1%flYgdw!_>6( zU6$waYmTO(@q44!>+Z`qbGBADfA>DOuB!O&*WWKYcWC$9*O_6rym=01Y`;F2=ISpR&p;+dM^KZG;fM4R4bRR=mtFj69f8Rdn z=hjvEANFnLY0;8Z(n{VPKgBsy|IAbkx+Z((?AP6Lf7=$#zMZ=;^GBukogVM>CFiBz zPH+dt$zn;wcZ`qsn zbwVt2V|Lx=tonQIpTieLlcN{?{{C4|+@xmzYDo^;>c-#zi`Un6p6V~qGkNH#dijxt z+p{k{)i>X23+!mIcFCP9GcWE$-CPAXuJ6+ObdN^;y*uynqU^HdytbA4QZGD97dzV4 z)?Cr~ed1+{_1e5G^{GPF&NaI|p4XCaeZtdRwz7>M-xqYxIHA1OPRDyg_A>FMF%O)C zV|#61utwi_mNfTfn98L&NvBr)XHNaJXxHw0k1z8jl{8P2xGQM1Xj+Q#rhrrrKfTn3 zyxf{t*B^@#mz*%39@QvpP_QQ2{ft7gT=0vyOBqs@qKbAemz>DimaeA2=wDFIx$pAE zy*BSZd#_*+d;DbA?+d?#R$V%?ebur}eh-&-%m@=sU6XTA{KO%@Xqv3U z?ZWR{58UIIT4b)3J@*Ww{k2E!(evls;`W`ntmJjk^EzIUrURe)?lP$?ZA}#JJk@Ke ze&$%uzZs79I{yzoi9K2H=}+a`O;=stHQv~^P}S@1S@&{wx8lW1?j2iV)SzL+ar^Hb zFKM@5%1{2vD%@3>oXXzw4(V;7 zi(eKsd#&Y<&Ntz`Xr&!A$vhyi;O&k@w(pvz{=U%s!KB=OqlN{aIk&3fa#6uYQ`kL4 z-kEe9E(y}o`+3cE$Cha>U+Om~xjnos!k~UzG-dscab}-t#cw>)) z?X2tT6nqoAe1shhUOLFTRWG<@>F}~P24>tu4>UV*}gTqZFRJ^|NnJRs+PYeWiy}dH^p-0 zZa?lnc>=xv`1@{W?TF-$J>@1V{Q8YNDrRVsk4@?uT2L{xCZ7;ePE<68HEWh@a z_o@b)XKr_T(!9Q*oT+mH+wImZv#P>gfBjbaY%!zqW?7LWS&6-m1YbH#K7aT2-*sno zLnocn(2U+9ob<9hQB3)O&eYNaH}ixV8{SOKb0~QniB97YMyEh5tQ z?u!q7djGDbDhgdL`PRET_0Ib5zSm+do~?Be|NB{Cdd=q^uGw?CIShI|-QrWkImA*6z8{k3ivRKT z-|~y?_y6%9QQJMg_g`VUK*_#Vf7RP9=VEy4KX~kKX+9iV9V=F&dc~lZebRTw>uYx` z*vz0CvCa6lb-k(B^Tr?F!iu-#oOdri``}_(&+_!DyAOhGo}ava+i0uf+N#{<=bxXR zo_S=sf&bOuY0I~#&3Q9DOow;DuZvT@y}kJ%$8PGpm_whJ^JYEuTE*)5P;7d@r`B6b zv+X#Sc6Yyw+_iJoO`H8&REzf6-RjStbLsNwv#o~hH_vXlGb=N0S^9zC=uM30Zr*%m z6LQ~Nc8UGd+@G#Z?vrP2lXzyYziA88<+C#946+`suB`UdPA>f!!2N8IJ7g8ka_}Y%`So-MP%53@9yOO0X9iQAX ztDGSbrDuFiF*a=7>svF7V%;iKmltl$2;IT9>_xV3jLhT1K}Xiic;1;?m3wy5M4@~G z#)yT<6PE3EyM9W!i`8f?FOx*zjw8PP*RF}ptDE3IyKIh@RN>lnb5E9(`ebdIQ+4U4 zi1i)|qgR4ocSct=duy+ICU{iA#NRm9{ZVa*(8Z~aZ-uv3oZn{PzD;s_sKJBtYt@_f z)qM66c;UY2_d(V-OpWbFrhZer>zvqZ{kpF4M6`Bt^XY4wADu3Eb7jKi(#%zB7HaCw z+;Zmj&Ry)@YFpm!`Ov&2rvE0_r|K;;_WcX9W@ZqZuB>4yaPyJF<+SNt4#Er9A2pre zee1Xy+m=r(?_{&quHVXJ_%$Ru`BM2(934^f_@dU%>RhyR*Bu6P))0-A z7guad%-v)bmwH+y&Fg{TzV)kDDQYB{C>{;v6P0LfxR`O_K&br<7cc4Cg|DaoJA8*h zKJEVM&cv%n6t1*5u=VE5TdMZ-+B#1L?GF{-Z!t8R-r;)ID6VDq_W-ZZv?Cv1KJ0!h zuD|c+lXUjS%6I1Y$NPl6KKXI!tGyK;Px^03KIFZe?N(hu!O81e7xsswmCauv5;0-_ zn>|w{y`;C*1#i@0`~Q$tQZv)_?{qiW(Y8IdGaoliYFB3vwA&cCnd~m)~oB z%=pUUxLB`dol&ky(*&veGwvU$J6`*7;u`Z`X9YP~C#XIXb~qY#?O6BL_Z6C4$u_~e zL_+o^!?D?`ytk$z7A3 zy)2j33(d9o_3lgfWR=77zeb6Leww>VEcBC0<)R;*-)pO@*Pkmgt!*xyR&js(_V4Ty zYUGOc?e{OZ80vrZ`K`_0zq>Q|y#HD$38 zO()E`wN35S)_Ya)DmhQRCQE)`&9ixKv&`O`|KOCX)vv=tE*z8Pc%x|Jx%4C#xA>#Q zx72%A^MB-@5E!5QBzvj2S-SeY2YWfWuda!IR?qWiO55i7FIApA>wNW8dET1MDo>+c zuKZ^7XR)Py*EH562cu0Lm-j_%`3y`>b)B>zHU~YU0S=u^2#2w#mlx&{EOl>2abHbf9KvjKc>=!hFU93di5$ly*~T9Aotj|qDwZ4%eGm+5r3)E zY+PZ|^LU}<$+tQd2bedW%(Ujq*dZ&)!gti7L5ZUHfrS z#m7f4pQJy&$0+0zR_gZX!Va-Z&t`A-Hkx(%)fU^}+5C@{W%kUlQVOVuO)foM*O_2m z^uxWvzxd&jt&&?We5ChRdvb?#J)|}ZtN)+aepy>z|5ce&s^IWq3msZwp6*F|79qJn%*8Opd`2JJBnd48s-94$Q=J`z} z+sit9lRj6sC0>{v&^J-+>zmIfKR?GZ&C8yoxiuYmOEtjVlcv#QO%%3yccYWaO z-T&|89D2Te`}v!~7I6*q{k)KAD^C!-~%L-O^ z&40an>LqO{N4*>eZgr-8J`Ra9Uz_}8e!S*S=+#;7PNHsFTidQr-Ke}!Vsckn%QUBZ zu`K?ZoO~7xt&{At@+;<;JUbYR-E{zonGA`wbNel{5ddbs`=ytHIEtoo|@rr z+`aa|qj|euv96pEt}WEC;>C)`JHNGT_`&+VxYT!5#uXKpqNKO`bR9}{{myCoH9iY| zdh+MXq(vTYr$3u%z5eV$g|48md7=KrTE;=_5~2EB$HL>y{%_HcT+dt@66EgR%Uq^-x#Lr5$m~V6wX=L*$j+E?<3!)9gip7O4n3LkWYT~4k6hK9 z-2(F2TT-=8-rb$*7sm48Sor?hX?I+*1y;KsXAt6Y-umsw3y=TlT2^{u>64aBc&(+& zWl-0>Zp|dUpJ%VVJf(MXlJuDepPkPIgmdb1dncxsKXse*7>H&mWmI z=SQE=Bn`{^=d6m20*jIsmhc5$5}Cj814rQxArIN`CvP6*u6E#i^69PU#F)Z6=jwel zv#(9NR}i|nX0eFylj9~fv*-JFhqo=gLm9S#cexGi zzQ(5SaR25Z^gS<2ODJx`gO^!V6(4^-oG$!Ptm(-t@#?3O=6s!Le1!4piSkHU@#Vsa z&9C0d?_N@`C2=tQ%fbyeZs-&`>iaKQdGVm5JSMv2-J$5?VheIU zT>7ecy}a|)WAScrOUtl|(?!Xu=k9e%u-W>p4*He<_U324yEp!4%nwywI_d8Fmp9+I z{=RnqdW_y@t664FC!$|Q8VX#R;;?tg?ahnzzcl?mEPR5nf{>7(e81##;-sLyR`A}rtUY(1KKQCz=$}qjT{pGdgI?pcEbpQXn{FhR2 z$K9}^E`!*gC+}?DGvRe`Q5}oWH-&>|Q*wDGFZ~<0ch1jE{Suq^e+YfxePP?q z8ebG_&N}&HakB3knZv4;(`2u`H*2@LHf6rrX=SzR*BQ(HOTK*7UH0nz>LW96vzQq0 zN1y%RmVV3f_N<>$mHf{uQjA&S8jZKEn%&#}>ig6M88z+?^Cl)8w_Et_kIuf;XYRV} zd#`C7`LXuv>@RP#*9w1hn0Y(-&&;Z{^jF~q7v%ZbuYSKC&@y-F$AXBXHqEMUDmuPB z^Z(kk?c#}|a^7R7UOk`XFLV9oW9!!!qt}?)>I>`=+%p~SY>T}r zRdDE}Nc~jd?O~gqMkh}XTDj@zB)6TfP5$cHs5dcpC?+hD4WH)N(zfsPI%(ERESiU< zX3D6n>~>tWU_<-m?@9VQBMi=D2Hjx372+9Nyji4P_xHix@D!G-r>~Vf}-K(Ptm1hlY zCw|_kXWFA>rj~1=uzt42IfmCetj*3%Gur+1*NRt*_rzR`{&VZrqm4aHC;s)lSue!a z^mp!!`#1jmJN>V(`s1`~LEBuWwd{798_WNi+r?wzt*Dc`B0Z=54&|`X`f}m^!fWzx zZ8}y}8r3h=J{R)Y@akNltp#@P-MV@hez{C>&}(cJl#nR*zq8oAU*Upu_$$_>ET7i8 zPIUBow?F!1?X)+qzE6ASby8Tfa#QeZb@hj4+oyj~+_HA^OUKMj(+fN*3o1UnP~UF9 zdhc#0U1P}}*ZkDz&uiW)#2=TAKKw#X^*4LF{qK+ddHXHD-PS74ND5}oma0)K6FRlN zqj{R^a^K@;m)jPVPpnKM<2`Sn)`Fil$?)G9C`-RkTa^RfvSvITN&1EeGG zt)BO5@|-#P6Q&)#e(TTDjs17#%QM_LF1Ps43=!Kt$=&UJUt1bJm7ZB1$>a4?e!`hu zj%x3xs>!;FzcoH3ar{Kf+WrkI|3~;+i0wb%y3gi;$Ie$f&OZIODEsE+><#-ucVzA? zF}C$6;tAb!RrJAGE$70O6#>^@Y%ev)*>3hGgSWV`hrMocP=AD!-s;wwlb5gEz3Bi~ zX;i#SMY3u3N{=~$`bxEJabK0&ms@HrFYpULr3K`BfIF*rZQFN^Qh|yh{a>v`b zpYL4hUOi>uk`MbXc2BRF_^7mDP2#5Q+zy@9CuEgoyt;d{{mi~N|H(Cb*YVqTb6=VH zvvyhXa-1*byx{uF$hO%YZ6B^*mNetOv-jA~iJwcWSFe5^yT|eIle5VM z4+SO|9WVc~cf+m|Ou8XkmPZ-+C@pWy?blw~&1S3SAEI6K_TvtQ$(e25^DTRRS~46+ zn)U7K+VGYucB_vmzuRY$mQ>TFeT6+NjNflt!>n(nmjbRi{bybGAc#4tBkW&k&4V)E z9!_h9)bkfy#aC^c%o{YJ+CO`;jLNL}2lsY`>}&Xt)yTS6nMb}Y@y0Wif;9$T>lTLb zy*jpf|L&X*k&^v(1=G8X3&O<%6E;>?=Ny<*S`?c%@!^8?4?oM!yZ`X>+=Zvq|9qVI z?fk1VDN9`cX6&8YwjtxmgiU`;a$5H%JbIwtTN)f9pD1#SU$?n?s(Z(UvQYgb_Z-o*aBnf-g$B<;fn-CI8;U%ediJtTI{G=cnsuHv09uGC&-R;gmo zJfdk-e|NV*%XG7tI?aQ=oQzGaB|X}cf8U&IxT1N7P2=nvA4PmOUtGB9?9r$jj*FOb z_y0}Ejo)(H?*0uk76JX=Qzz{7%k>GFm$LO()~9QyJxvx=uDrSH(!**_DfhG4Q)^Ca z-cuwwLEue!WdASEO$Isc-oL~q+UmvhxvQ!u&6rm;RqV3y_V06Iy(oe6c+ZZM*{?y_6K4bAg@6)aS_Zf29=A79R z!{5B~+^n5#2YuGd+&NHvP~BpZ~w>zMs>4(IH}fz5dqw^KZZ3ubLJkrLp^O z^p)mQb5f%}&6HNTC{Ql(TG~W-{?FeWzk3utS@l;(`gSgT9U6O4g*j!r_NMP_wrLOa z_pb0*S8|!(CvmTn`=ngGn{~@KpPleFIDK#3oTJ}&Zx*uSFzM{J`kt0nc*4o&Ft_1_ zuhTDmo&S2>{DrT}?W(RPUM|{I@%vxx{IABf(?vZl&kmc~b$X%aeuJH_TDGdH`X9KR zbH27-{+Y*Fr9(+tA6`FD3Oj$a>YbQMXQsz#ChfOO%bBmAt5oTCzFI5s*u_2RW{qcu~NA# zFI#S7`q?MM6~1juigrm} zu-Rns&fi5xQWwrxW6G^jq92tNcCmK*Wpnw=;5%){}0-t zhXNP>I{xXEl*H6ahxYr%+dt&cWfFbaB;e@JleO|8oBxInl}-B^x;Xf^RwmTHca@*L zX!1G^-RtCiQ~{}cYV zitQz1(V8l~@E?DzOnJ&rO>Ia#?siE(r=Iy4H}f;Iug#qoSZ=Z=KK=6Hk%uzF=_j!> zb{>mmi4^Z$Dq)%b)br8XwvS&Y>Mw8M=~J1!f7M~_hs;c;=Q}PkZqBftICJ-gr=5&1 zM2*)S{1lx3{7us=w)y`UxDE;)-fqjd@PUECYb#^+$B+K5@VwCWtyr?IzTtjiY>oP> z^n&;As{3>I?<&5OniQDy`Q42dbNQJsIIu5bV->c^D9g6tN^*R^?N&rrWQY-+L>v_qX2i7oF3V>^UZI!mwh?!zWA9yYB{G z2{O21VmPDom6BfJrnpykGYYRp{%=7CKkFm0-iS;;`T7Z#5)Zh|_>>(HpTEAzvMLTsES}il{p+IIm2G!T7pBx(de>j9_*o@W@pIC5 z);}kudUkHPSFupBxqBMd|A?)pcBVzW$!^)Iqh*jfCt~r`nl&G7tu}I$Iqfh{o1D4$ zU-!nlZz@YB-FTpMNb)+v<#I;l8+*l1bN^Xy&Sm#&U&Pngvol{D{WZ=1pc<2A``Z$j9>j0STKnUBy#J;vwdyBNE5s+rUHo!F^$E+oPmfjw zb20x-HEC11;Q8snzrVY`AAfkM@aBZZGM{66BK|$PeDHyQz5V}Br#t`EB5-fg$3Gw&-@TO%=Goc4*9E#?T#*p zFZ^i6?>=$b&P+kQI9>K`|8~xGu9pTHB~cX_r{7%e%$rvalophpT9lc{CwUa zhDYW3Yj^hU?Y{Y?$T^RAyn53SLRG2PGGwNFSv=~01BBO?>HW7duT-9OL79Oe?7n@}b3(s1MJ zKMQ}K`WIpwsxRu-q5e3%^MdCzyH`i0)GaS=`m3;N+08}wAMzA$*k;CPExvx6e5zi( zp?;$D@!6-&n;AB3{>y!=Y5RFWstYEKH4OQyD{yE+3Dq^^VTbU8L6%Wuo|K;xkiy z!&$3$?>%o{Q{UHF;Q6LS|N5~toyq*^E7OvmJ}$ly?`dbhY1bF0qc+mt?M>Ex$yxOB zfA=?=H>W2yMT&N<;9M%uP_~EdY7dKX$zjJ2OV*rs;mex$KPK64%a{B|>$aFzDY5;Z z%4oNwHE7q}yYCoT3%wNhI)gbT%qrU~AUNrg%AG&ua`tlSezWvyEd{G)&)sNiEZ6_` zV~qU6Yd23Ox4yekSQ&eN-=pcvH+|ugseSn3^tU%}u5NxT-nZRoqyF-9;Xzx!f82l0 z@_76P2QK;OP#Le+0!PpNOjy|6{Ohs0%=cMVe2aJK>`zFUSzGXbYFhOZ4{dSVZT8*Q zdCRvO-dOsRciFrn73@-<{APvs-I@13czZQ(M%CWfEsq*{rBzO5x3#`=uauB93#^Qk zPFe20+gRwY$g20(3}1-LPF?S}%fIZzmzxD;ef$PTlO@%Ey2QNbGh1r!Vp-}Q`m*fu zr$tg*cK`jo#n0<=SI@?(D{@ax_Pz|}uVQ@@yz`yVakH9T6a0C0ByDN6x#U&f z&0miK&SBQ>L!L`d?<@)M zI`qy;z~cA5H$log*ZnyUu0K6PsQC9%0medm{n~pQV}8AuEz$V4>E`K}8Rx1~^^E^k zU;5QCsb2ck%HOASzrCr5d^`2i3Eoo6Q`>v>P3k6ZE1mo{?xA7B;>1N2O9TTaKDZHA zw!|@PtFf(4Jb%&44cgWJRCc$_30B*^mW}OfYvm%XERCL3{f9CfPy224&&b+s^YOgd zvYtb%d6{coEpdMWSr+-+fdQ9OT-pv9sq{5giV|6t=y)@7`D z`Y-Eu=SsfW(zWL4?LLQ|SBcj@+HHK%+rzc}Pj+YXjMEFcbDu15(YFiq(kXkq)K}R} zctKgexV+)ZzN@#*=GAOJ+PZ*?=}BN{rP%+Fe{&9`c(++^d4KMO^`ZV3lL~F>E&2<3 zi;N|&Z@B+a{@JtlY4!*G|4PQMcP}q!-)+Jlf77h=<>SN`lbhY;)L+Q5*;W1#%}YMi z?`mE7WNJ~ry8jgSd*6Tlh_;rm*M7FYV)@d$Gk$e+>&own`4ArS+WxlP->6;O`-du>!|8m&V%vX4PS)QR@#*9mhnBSN`OIp3O?};`_Z?fhj%)iZ zwf9d;b&poCwY=lHciH8@wcE=>o7?0+t@2n}*tP$r-QUJ-rVk%=@O)8Gm^Ibpq1EeY zO_vu;U&Ipk+w02Bo8Ml#ywmcy@nRL{9fRc`wu-g&^&K!~XnyQ@AV;?0g5vJ^fevA( z(xxdLT`a-H{_nF}v%-ZXZ{l|H`icsDS#j^$91S+BXIGaAUTfrJ3QWv>#iy(^$-(E> zGik*sY(ajf-2}xQcqG_#yZ95n${ykF*V)?L@aq;1MqO(l6FEP)V{i|zXvyV&ct3%v7&PP~% z$Q9BOw2N}@;QZy-s3&t_!_s|o6;?gaX8$*p{eO~BO>dqy*AG$F$oW~Xj(wfNm$>Y_ z?PEowy?Sz+&u%S}n>xYn=)KZ+f9_o7GBvaMnm(g-^&S^xOP30}HN6(6k|yylT%f)0 z+=8UdY6%K$=Jru-wu{1bpM)^ROuvym*>TO1XK_1(4&Jmn?R4w){KA7L9v269?S6Er zy=Luh{SQBNufAO-vtoT#7+)3JmAVyq6&V&aWz+AmWkmOUT6Lo7W($XqJ@fnv*SF~` z*&bA4JGK0Pb4TvR=Ad7S+?B!YuZ{<`uJu^I*~u{N())^!4qv*aNb$d4u|WI8&K1{R zeY=*D)EM_;hmfXreb|nOUx%W0Mtob9*#GY25vS zs;OLY&xonf;4xYAb>o`QaIq(nd*9CVw0mXEw_y2{nEg6ti=-Qsy#gH88<+h!*Zb$G zq&^|McRcsG3P)NGx*yRBlS zLim|KOL$i|{^MY+ndFqStV-rwm9FBKJ1Gf5bJG(FqBpPHaq8dftnm45alCS>4|nCt zNjRQX-6id6r231muUICc+C(`(rl2z5cEE&`q9rUB?q7^ry6Znzg#fppm)gvUHZRXc z%9)BBSk&}hexdT&Q2oS=fLpwGbzfKBDu1#|{+{VOkG(6qR$ZCXJK=$_k1yXLtBfo$ zPBH7p2e>-KmI{XPWti$IsJ%ZNIQ8lLEz2L?IQ(pxmbGb{zuw@dE@th;}Tlsn(XQ;EG^gcPgQyH?l6z-ecK9wvQV+uSpnO(7pVtz z2+OVA_vozQtLQ6R9_N@lt&KF>6taNnS(<>cYn;R;gJ+H|c_(H&#eehK#CK7VEA+NU zwc>|+jLK^jCb!PYf3&OYRCVqZ?VOyjP0cc^rj;_LCg>js(^cVL5xD(Y;fuc$p1p~k zruz3|&DP~ss|EWeZjZBHe1GnN-^K6uU)(SJcB0s&FD2<=tQTHP@jsYl)>d>ZD=xj{ zechhPvujq~zF%j&MzQIY^5GX+-~N24FzVC%aH!$)Ia66Cor4S~T$et*T4a?{s;ewTf(R(D168dcZl zhEe-B9MkX8NZ7N=qbOBsX@}MHc?bV5mA`jgbQ#kQ4cG4YGFRT^ez|wMCpfKpQ8lyg z;+C!N8x6aD-6?hBoqGNK^7pe>F3r8H{%X++<=}u9ef1s33TiS=^=QsLd|kBg(Q=Io zi+0K_*aeVwT{zSW(o;ky=G`|8RwqRJd$~8{Y~C4$M3JOn6p(QVbi^tx*NYA zju%|h|6r2+Ol9f5O9}4-**cfYOPyyn ze+{elMN`5`E+6S%q?9C@S+=+`WQFN6?MJs}uGMROym!0Tf{pI)f3MM>+EsmK=E4rG ztuw!JuxcN4+two1y~^tL`#`_76G|FRyi)t=@t*e#~ zN>A8xJkI?*hl>Tz@;N_+tzL3Ai)=Y!^s1{VZ1Web>cm?e`+lyzv-i(4_V=&)0tCVr z?95{Fb~(!0@%a263+q*qpK3KW=cIoTcM+}3kbU0%WI9*yHsy7CdM-+*Tv(Y7Uf8|m z^2ef0Yrk#K-pJ5!qI-W9lh|uV^ZPHp-M(frsAFIWQ20uulGZE8oxb$hzl6 zExr%mT4}ZV^~EXfC_X)T@#B`m4T94;)AD>y?EYJ{{6XiFi;VX}&3$Y|k85@p8DFf} zb^X&}hYJ_)zm0x&(SO=cvs`ATpxrjP|58rz&h>p88QkptTJNURwA`R5BPk;$i`Vn6 z3ogy$UNvQl_N$ht?Q1$7YhAb!x$*j{u5~`rw?YnB#+;4&vPSjw%QH{x4+^9|RkVw@ zxLr2=U4x;)vXZHfSC^c+{Gn=26T^gzby{iWH!Qj}CU#Y6^evvXNA17m#D&)XzunH? zyYfoRjZI~D&S$TmJB35#DR-Z8Ro!)w+YkO^YVapU#=q&hCLpD8?9idWdn?|vJ>NfJ z*+Iqh1}5G{>pGt$GkdH>60RoS*}idt$Nv(U6AO*Hit9L*KmWqu9iFW-M(&E@KMmhOH&@ztHKs|O}Uh3>7J z^1YeSZpz`SSrYG@kN3r6BoK0O;lu(JG1xB*U~)3rMvdszI7HA!n+%8KHTGE zF!OH1j3a3|vg(X0?UG8Q?2MMrwtUE8ImLRyOXCvR&2DL4-z2K|fA^njnfu(+3)DfScbG2_~ z?0+w~ymD@R{+nAo)73&=8z#TBI$`pyf=wYN_yxDT$RD%h5|5}I+4)Cew=ym2TrJA^ zy3$BvPolB*Tk#)PR^FfS{_Pcp!&8>dIlstxUC3GX`E%!%#v8}(Fw6}P*V_BN^;quHt*`^GfgU@^chz5%}D$ z+^Hx(LvpFcT*SJXRXY*>^3XJJmK8mr=m-@ggkGXXnJ_{OVu*&&0FQTxbK^s zefy2|Zp1-bC;fz~fZNQQ^=%frANKf~Br)N~uXR~3Yj3SuG;QxJt{txBg)F}g=3E^{^V{Uqc8ht+a=;7xF{C}l9PVTFeJ9yykXQP)7Bm!HGW;AA5Rh)m>uls1v z&tKK+wai<2uCJPMZBlo^mb6zlZc24Z$a`wP4ZS;Is{NC4QQz#8wYnuYqh|N>?V4y9 zKXbtwqq&V+SBXD7-22=#B*iM8_59K7o|ve^Kd)|ZxzBq~U6k|emd!bp#~CNJ#rKpY zp9`#9q^ff%X3p2i9({tob0fPC&Qs5N{-~zmrf$_sMuRDf9(HNh-f_PAr#rmM>U*8` zt5pLIeosk~iTcC&ODEGX?RnAzjermd77sxY&4$}a)zjbF z9(a|#QfnYp)G*jI?=+bZOT$O3Tg6>???wVQrd-vzt_U)Hm>dfB4Z2Y0a|NEWlx3Axo*=y;X*E;p^$yD}4 z_anXUX5}Pq?#lZtk#AHuy?0r9{!XVBhJ_1?(u5A}c{r}hOrUTZYs^o~|_m&+yU$9)mn(Z0#aHR8mr8*w`P-GVcY zDeX}Gbw5T;#7d$2{i9d0e^Sm{JxiJDn&_MRRIWxdchlsv=hl4Em)iPOl>eQQv&sDz zuR{|ruCWRWYurB>NcLz3*zI^e6LZgl?$Jubg-8{u0)^X})QmpTwO->KZZpF8fF$3~fVCZcmhOq`Vpcb;zq7C9X+hk- z=?2>w9Mz|{C_X>_XpX&8XUu;_*_j36dhTcS?rbu1{PD)%kidj3iJyL1^=~@7wJGV` zWBa;>m(KPQ(^S_8b2XjGk}>Xmp!Lae@R*!;f;U7J@=9QxvuO525gA|dC!&= z&sp*F{F$?|*EW3n6>2p1-$5;}lm+v*cZXCn)-^CDWt447@V3y|=XK{s+A)R`%O6Yc zO|VjwNZxtksKY<@=;_yvZ}Z_?dnWMZexQ!}-Jvt#-% zrr5A)R;#89JaYJ}!m{N6>#lU~BRa)#^UtnRIivdIR7h5?_(ActdOl$%gtT&vUssfx zox5)kvhIMZn$Oa6Kkg(1q)!Nap}Fiw)HSWwYg-;Oznp96`EgR6|B|q!zfZJEB_CG4 z_icNvoL;H4^X>I^X@N7=maTg!|CF_LZ%f;=)h`SdYU?*FG=23$v+I6Y4uARfR3n)k zw$s-(t)2PjZ$PR|?(GE+19zCW_{wfFIms?4Y-zAWX7aW^U+HSA!+Rc`WVu#rt+i~2 zV%6oa-~BKnqQ*u> zaovv{rQZ{*>Zc@adEz5KZAFry>yGYvxl`xwJvli2tzwSVspILw$7&5H?oUttW9wq} zucmAN{I^Pp?>B$;|M@*($Bp}U_g0*k-}&e6|2gu%|5&&<{ycb`#oRu_Pblz{v83&) z13&wAJgaBCk~-z%(HAF0I*jW~{#5+%U|4%Yv*Og7oT8~W{|0>e$H?34$Mj{xq}mIs z7rpyeu>a)It*(3R${RIJ3Z>p8U8|a7c)!?K%h@KG?Qqh%i5-cX8#4uSCH^P!$lv9? zIC=NO<9GSl?jC&kUcSdJapI{u!DIiLAEwOUO+WnegQEnOn_g`*^G@p#O^NUwo;j48|-~!Yl~@h`X-sW{{$w%|w z9X~wRUHZGu$w$s}rZ_H|zxRE!uEckZf_t+({+NiLI-9@5pkC|auU9;GERNo?*-}2e z-H$=sAzXI16MNeJy!FjRAy?WqNfzY$J$rchS<2p|o+qq!Ey0ckjsX`n?KIv=#7JdN z`;>A0j4Q97`?}KVj$qmdA)kU){tj&sRZ>?s2IXn2)`*nLxt^0rW zl%D0e3e5YOc&F=FZ~$|EKaB~R;knhvdzs>m<&rKBe~3-eiq=fLw7up;z|U-* z{sw*BV@WsBiO{?FK;T60;Zg2kf>(=!@F07w!%IbYFi}!J^$lS-F#==i68UO8c zPHC&@ym>09EbbZ~e@%{uOyBHlVQYTQ?Y~s%j$l{?$WqldxB=OS~8_w;Y?|nad7A4_!S%%tW|@g zT3Hh|YzJG}!e%Z5c7Rp722YK|DWZ5r>XcTgvJ9E~j zq`x!vNWDy7HPxBu%~_ zZLaLG+kcDFG=^o8&gliZa(c5g9AiVg%qkv6d}-a?5%tJC{k9#OpyJu4`yNN^52i|; zR12!(dBpe8D&xSb?Q8#Cm75bgKa?xbR`A55)|@Z(Zc3AVB}IZ=%`aN)>d9ODc!%4X z#giv6xaMa+`cSyNe$VGms-lki@pcs-wi!){IyQ?lQl;qDUlFBk(h6H=>))3O+HJVx zTk)T7U(#5PD;+mD-1W7fN#5~{`>YyK`Ow-|@yEh5+~g-RuRhVfb8EU}nRewu{iSg} zel7m0s`*oAZ@$8l_1FH0y;QD_Wt*XcZ2iyXMk}@zL7RJ*@x9|;{&=GJ$*^^))i%ez zO*r!6`8zF@H}=;hc%C2q`RO3@frK+cnPsf56CNFIx%Q;B#+vI>#_hkie`q~L!G3mK+dHDfdp$zv#zqbJ;q1%Jr@950` zVsnsp)0)YAzv?9GAFmhwIbki!F3G&wxuQ#)kD48{I+#*XBW`}K*zU!Xu${YaPvZD> zvDZw!IG({Gopar-#+C)rZb$6hBojCnf7E>bYkvak!D&~v-TLuTDCPyrvYSa0gQOzyZpUpq(QQV(1|KF6(%Uz&mH~Idm88u(}S9B;l z**#vK!RheC?%>2-k#8<~JhamIxH<1h*v2nHVN>sQ>^BwN*ul0e;cvRN@RVPSe{Owu zs!J5xf6}G?L|sE_&J@qEyMlMyoc+I+DOaVqUf~p_#=VqN=;{QKI7Z5B~8l5cgM6WPW6xvj^5F&tcIeL>V7j!i$^LhOHRoE&ueTJmy!KFvL@nr5rytQVQjxp-)Hknp6xj=doXroGoV zbkbb+GrZxPKV`F)Q*_12UpaS8WR3S+Zu#$c3>2<%g_^*fD+p+A=rYTkh*PWj|J^E(lCGo2- z#a~ZbTI*9DIBVVh6*n@swC7IBNnSa*befeH2lIU8+|1f#;Syba5sTR0ZvGY@`nEXP z^ar=*-ULox28FoS2NGxSvQG^Uy?)?VtMsCit_RO*9oqHE)Z~lH%S!hv9uf)slTA2M z)Jx47mUk|{w)ld}nzBD(`g&#|3u+QpG!;EtrtFa5!@8>MmVx&?Z=+c}k(FuMqM?~Q z_x4?SxWw%om&x2$^D;$6FRW@@m7u|NNA*y)c83ZFqv{*IW}nvuvyPQaRn&c^nKAV!}iV&pIaJ?PZzR?95b8J6{pD~_HiDsM8yS%QnhB+{9CyyHzVgT zjn67ef96Wj?_YA;_Qy>P&HIvzKE3l=;lll~_W>L8T~nz;m$F-w&F<<|RX*8R{5j9n zH^RWGD4IEYJF|ws&0USw^7WPLy(YdfS{HszJo2+{_SQbvtuhyb+8%js-G9<9uk~(+ zT-LnpHFJ8`nG~;0oX*3v-}~;0$hE#(y;iBb$e1O*qv=>`h2ona#XB6YU+K=CSQ+w3 zrP%PBREgQF%q>M1`Zzl;dHuhiSTy&b+?(&;Lgoa-%>Kr0sjTs)M}hsDZb$8BwUn!; zHUzwDOnK|D&~W|BRWkX;4&6J%Z=TkilBAz=^tuhMPf&ircZqG`{;6$ySV}kS^LSDivHFCF(ZQCqd0gt>+PLOVoW3pGzqoJ8 z3a#C#uGxEeN*t~QJ1kn-^tO5O*A0CszZ2SLGWX8onlD`zGiBf9dE9Kfu4gTM{kvfM zzK=HyCWbv0J2hqU>+0_LGZ~9qpQJ@|mh32vm~h31n`^d-@O_uj!J9B#I{ikW?{63^LeVcMsER8=rzvt|oF9#NG z@hW*0&cE(#j60{bo|Io*C>%+YPiDQm(4ZPT;`mc@QfzLWZ@Dy397`ia$^ z_kY{73aev{-3nT6KyI(tR`a1pliC;6*Y;yuE zPZZ`|FrE2+L!0y3hY5Q(hS_SfnQ2rVSW)mst>9!@<+V_=LvJ~qpNVhTegDSZuP=@_ ztK>aies}e8`HVk~67yHyS5wK_;VYc`L?d9d-$bmnybD)Ivgi(F(QKB)@eiY zr2g3td8FTb%huU=WBKYtrf1>Dl;R$Jc)nF`fp@NyP`JFG{S#9O{kOZ!17w5$gz=j+ zoh>N)k-Mhhj`y161IJFQo=M6xZ79+D-ox6*`;}YZ!P_Zq`U^CD*W_h)$H|@cxcACm z{Y&-IW2e`|t$O3fGWoOFX&tVK21e_i{8d=#GUrmH^N+N=*Qx@}_C)dsEj{?>rdJeB(TpC|8n$4uTQay@mP-mO0m zcKtC~(|2e2JFy=e(>Lzkx=v=Fd-$1!Gw$;y3uVi0TyA-2?u(6w?=OixdG4}-K%LkQ z2BuEgjUCQ6wKcqdF`KJgo|W|Q*wnWSt<%$=ZJs=1XtJ+u0{q^_XuQ@zV|GoE{(iazfU&BtyPcM6;z0rRSAD#Isk3RV+b7aTu{absm z&N{+2|DnN82iLRb*FM{SG`{@w{29OV>I?S1`y6<#r_X0?)9wt#Ww#g|&U4C4-|qAO zjnAx!sr>%w3w$e%Z1F46Q?X`!lKx88XX(lrE19ph#eFmWd%}u!UGjFe6HGhaSg&y? zxHNy|l@$(&i6$#QtbEwHP^sC?Hh%x#x%rbBYn8)4>}~uz?a8jt{GNY@Og&lp+mdU5=9qms|Pr}IA5p1&}syy20+i@*L>{BdjIivE8-^ThdA%Iaf^ z3pX)Z|-cT6I%|vEPdzpX5rPQCzqaF4ssCvaSq2uCLCZD&lP3NL|6DwVIh_whg$K(oKtI1BAup;oU^U}F z!Pyx{nCe7?HNHh?zge;O$d^7gJ5D{-gkSzli#!)N+5D855P3`>BJpp4W8l>Z--L>d z)@Od2p0N1i1jBa4-EF>CU4P6zb8hwF<81q;&qzEU7PW}?$lE=9jtACD#ajP-Gikvy zJ}t-BS|@nxl#`DnsBRFx$GvlXz`tc4(YKGp3g;!x{e7wFdevo*l0637oAw_&_Tgl6 z9qUmm>A2jK%e8kiWb@C2?PmI&!Neczvq;&fG1Fwpp8Xa4zi+3@2>VAFHWo>zUKe3> zYMQ?+XU)2c+B29B{+v0(FMrPSn;Z=5yq8SgTf08DF`-ZU$MkdR*LV}fHl;UJAD?Jd zctK*(B-R(3H-5R3yZpKGk1AQqCjutxRf-Y?K5f3a^2LG|zn zdrzyVg-vK(c6@74r(Tjph98Ijyt;zf+0TN%1+lX|JA1Cd>wb=7Cck}Jifq$YwTC7_ zyj7`Y_gqEodbL?zRQMhe$c{GJS+(NK6}^|nokj~zx&Jz%I<=sn_EhDKinYIeEVI+O z9vaO()cWK?MvkY$qnxviXSdzSDc|3kE#{%#y}BcD8~?$*m3wB)wvCXMzy0{3^54%l z#I{^ay;80Cuy)o&x71G;0%y1_UBbCe=6Zdw%imr6f6``O(!C@W5%-SkOQOG+8c&vH z?%^z2EYP&YBe#k7?er~Mp1SEJ?$cEAFnG_P!&Lq5^$rH7#mX@bnYr2r zR%)g8y*f4jy845j`w_Y(Yb*;4Sx&v*yCl=-Pr|7UK|yN9dAdt_vh4E|IxaNxZz>Fw z<`d$SZoH5XvO&NrZ{}V5ZGl&AYb^Z4uB-I(l(%oHwXA`8yWUQ(yJ!{}UOZ*b zj}MA3R^55A`>fQ%-@9)*rf%M(SpK#_{e=aS^q=32QWxF447#^(n11gKZ~e)r^yjhN z5_>D{U1ZhvRy?YB{A%9sS&AEbPMuKB63U%&Jz|wC6W`2RleXU9!n%I%M5gs;*NJB{ zbhu<6l)2hqWqGIEt9mUNe& zR?ZVPx}Mxt@+|!8g55zm>>fHbLL6*O6E6mS%-bE{`9H;E)raLT*Uq{Yr)8WOc9VJ2 zwcYb~w%*sd*Ut5N%U{Xe=Vyoda91plG~D(3aJBLyK_{0V+7D;dzOEH{7_GIxtM$*1 zoV{I2{JO37#{!-&U3={u|Mmqh1a`H}x5(eOadzQv_ttoqKiofhzfDmUTq|O(%)6*? z&7J2~{~J|?L+ zvzRtHE^@06C|hdlci7>}`W$7IuBd6BN)=a~(k%>jm=jexT}Nb>=gET$yZ)b>Z7x?m zD~K`Z>X{zd`{6e8o^N2>YwUjO`#$lTQQOW(S60l_7Fkj3qb}ll!KU-na>IT5*HrJc zRzH!mQ+wh}yAAoPUe$ypEsXDSC`vyc9kT7}v3q*LyKVgEe_4?iYHu4LdgkO^c4Ik@ z#(QhJ7A>h!k`9sLInuIgW96o&6RSf6+~cCN&IiW_3(0=?$=NQ~{jb=ICwLv}r1X<1 z;o=kB3pdZpS?=<*IHyj$#yN5+Z~O!t(g$^E#>{zw^g?f?^#iK z&9vp3)-f*xq*u37Pqg8eG}?ZeE?|+q5i4$RuU*KDCTXmsuL`Uw!RUwMvTP z$}YF#%QmzZud5D7*}#3(brZgF#t*Q(1m&m?B0u9(T$ zVRrw+JZG`QaJQ%$L2dKi}W~lhB=n6v#we*tzdz~ z62~W5qP2(17J1Cnv*g)kX*cbB)a^`byJMb4$%}NS8@%#Ma3O1ZbJ@vlc6Od` zQzu<=c8Pb~eNWdW{{7!c@3spUZ{N){nSJtx4}Uo??~VMs-sWvui{R1EYk#UOWLqwv zW|Y?9R2sk0fP+c#x%8};w)~45@0gbV&R(9W-E$#ZaNFeQu(xZU%-pkFzMhli*d<;6 zswI|QTEC*J{ryu3}GP586suZn2Gal4KWJu<)Ama02fSOwfX z=4Kzpldkc=(OB&5lP|MxsNeA9ukI+?%`ezEmZb#GnZdXF;I z_rV-<*Iu}jyHw!uh3}JCR{1V>nino`$zihTcgAa0_qS*;%(dluk+RjvRC0Mw`rp{# z^GmqiFwKo%vJ#qK|MzzzB zn15l_qZ{iVch1$%T*#BS=8WLNO`rcA6gvLu=cNC3*_Z6&Chhodqqgb)g^sf!ylkrY&Cgf?!Hw?5ArUmE#L4<*Kn>#?LW8eF|`{uU$x!d-hDoF@A=%wyq$aZ98@W~ zGvoea=e^Bu^fgOf2)y}Jqx?VW;{2_aoe$h!rPPI7exof_y>I7%d!IvQJV>&5cknIK z|8(EQZ@;zit#)$aTym=S#>E|f7qH}6>rPqq^NY9q6X$1ME+>j5|Mj>{a<*=GF3%Tk zptf&uOXoX-{a03S74nDa*EsF|dq?crm2B-&wJU!vPrBQc^=5ik;zG*}zf0xjbC&P_ zQ5lpdB_1W#A~owx?1#wE^GlDk)E$|<&wUqwd6^KaBz`+;|~Fs z(6t(VDFvIB^L%=LL*#1dk6jy!6W%PU$g2AI^?~@ZHR0?l@YtM~HN&0Tuqr=rKVG}X(Ra@$Vy zpP7;_^|axT+|Jv3>h4}&u-y0T%1wUl6>pz#=j;!gyY^CDnL%sS-zL$YQU4s|Zy)fH z-@~JL|ASy!KuhtV7j+eG$601){+PH#$bI#)5RJIFsV+_PgpM9FnPJOq&zxBC;+j^( zm5h?qFQ&`83(ud8+$`{}{e*erkLNjW{ADf|rJwBIdF&d~y!>nS^3&@KkKUZ;S2WY3 z*-Y}K$mN`^U4pDq9>0EVahY`S$=a_{4&CSHYivEd&AP1ah1~}sxq7=2>z<~)*Ew~M zuAjy6r1IXZiDy+7Fy6MzGAuElF`-4S>1e6m^GN{fyeRq&t(Od@Zw4>48Ob*@}4+Zs> zS+C=GwL*fWVlN{Pf8SZvquYx~4j@@VtDO345X17U-J~Gl( zP2t=6lV?lwokZ=-&mneAEYr3hWJ#XuvoPVzl_BL=@Yf4(aZbME;-=^=8 z`~h?Jsl0u@Xa35!Vg|Dg^-h}ZCds75_jZxzrdOx+mIc>q?wNn@&`f!I_9WJ?FAJ`< zX!ai8+%A24j>d5*MTab19|`;D9`~(>4xM{itt}T2U$y0vux{auXsf2{qv7m+&A#Ku>R-5J(twZ#a)~HrsnQO zJBF)HpL10&UTfZ~)#}wXVY|V}c@|HPUHpGa;MEHeOAA)#ZL_=E)>}?%6J>UOS<)Mp zuOh;IYhU*4n624~I~o%Czz@_)Xh8NF?fUb%djT%;hIzvV2$ zb~`hv3;TJ#DsM^LyrifgRCeJM(YWP(y*F%>lq7B2#29jaEDcs&pLWfDUUW6n3b!1C zOII$JU%%kC%KPy==WM>5xWYp-HYN3O{ju!${aDzu!dhaF0qx&~}lHBgLnCtL_gp7OqNB;8gTO5p-+F_Wu!R^&KrkRUgT=0Hf z)=|!Mko8FBJynAl!Hmt8tP(tmf&TZsEh?56eA~Y<@@a+h##0k6Y}dZA@=<^3c4iLa z!iK-w+%DbWRg=ii2{?C1ZszSzr;gd*QTTaB%y*An!G*l3&*P=yUrW#L%X_c9$j^JT z&dZJ+3p#wyf3G=`{L|toOZSuLEP-Q_!vX;+8~=DktcBp2qNY0BVy#7h6T zs`cy!JDW+z!k=FXzT#IrOO|Kz#7oK&?P=~Ce(pArx>j()&2(p>V@r6*XCccD@dw9t zCkr#Y&~UhJUg_aI_Y#xECC7!ulb>aA3WRhmX`gzX#f~$g^Sr81$+x3RB_7^gW&7gP z`|eHhlE0U;1t{@UPfcuVidm-hV^g})aUHovqb-%OVG-g__6Q}m-+a$CL+^g(qT6LT zC-{%YKW}`k|K(S#4zv1C(X}1tS84q=o#M?SlyQ=C!Q*uYoG!*yT<>YyaVGu8x`VpD z6XJJXi~qai2G5iJhv~QXU6HW$ajlf*5RJO)l%pd1D2SKO?a{R}8*a?HwCw&4n^Rvy zS)y6pg+I>UjtU1HX}WsFa~JRA#gfsp*H&j*C+L1VXvnlYEK0XiBqHdt z!sq(?#pO0HT}~H&=i1WeA$Rie$F~*k_bk5(+*Iw_ZF#TA;0~KTpLD$T>=@}?Q`?%) zq-)eUq*SW;habFL;B6Bw@$}e^Z(Z}R8e2r?Oj&iMzM0!ib;rXw$K0>&TW)uBhEA*e zVJ&UTEPjQibp8f~Y4h%Ky^dGT@~!Z=>FMUSw&Q=>`D&TI_PXzGf25n3mo6?WI=&{O zsLy`Q0fW8z+DBKh~{BtJWyV6L^1p4FG;f1hT5;qVJF-35(& zIboV7-bvl=mi~S8=G=@=6&0*^uX>0GxO}&3U6;Moq5semrF0tNip5i zbI=<(DsW2s#cH;5$KD*>mpaW%byxc1jjLxpz4HA}k-SmE7G?YWtcO0?mR0SndV1)|X`6eU zJyxBYe*a2I{jgaga?jDO?x$KjyF8zsHY_if5m54xU%BF(=H#*;Om9n@uawK>KW=z& zcJ51~*)6LX!lNfe{P&*aHv8Z7*(dFHAK4zd#VC#?n<*ez@O$d4XC;T)1En{X-MP_| z{pIy(y4$o4ui5@*A(_OE2acmIu~WQEL{g(94^jdODTMPik^H$%XBNyS>rEfE>h%>P9Ft`>a5c&I;V^MqO5 zlVuAhxk~J1EX!Q-bz9BXLsHdiE#0FgB_4NsBT!?+?Y320?BDx@dDS8@&Y#S0d00LW z(O$jhg@=vrq0rqm$;&dU`rmWOJv%33R^hGPeDzCr)|tVoTK}EWw{Tlm`apC+E-Dw_s`ZU!|2lY?P8xe&(f~Yz{eo=R((1ah0$>rbUr%Z0oOUd}0;d zInmpNxn9YwgQ>7b%3#s-y{!{IeD&{+U{VNJRT_0(w#;$czIQ@F*{Yi#$jw-P^59ef ziI2&B^A+pP@yYAf=54>gp32ALniqNDpHr8MR6@C#ZI7PrA2;pz{Z)_Bf1FHP@GbNE zss~v;%-@%n&ybUPYE@He6ShfU(&hbEoj1zz8a2H&c#zna8nbknjj~^f%3WXoNlSe` zu27Q~Quk!!J>7fpo#fq?Lr*WtMoUdj#xx9p|Jy-&n3q5MTVcFY8&X@|~)y z*2{Rp#b@R(d#>;M{&~vPESI#@Z%->uuw^(WpV9tdD-ax~R@ATL=l?zD&dbb(h#UKw zW~HuAuX;MME3Lw8?ib}=!473X`;P)4@3$RZd0UOq<~_SgV2Hp;`OV#Twj{k^sBV(E zzMXr~?xJTcQmd{h)v&#D;5u3*>E|u!@_y?Iv)*%a6W?5N zEK^P0w)6UeUu!llF5A^|)>P+(v}$^c5?ka=vxCc~UFu+3Txb~iW&IuhyIehHVS>5R zr>;Bs^GsgGVjKHr`j553)}8yjU!Fa(IR1x!y53Q_1b!Crj;jl}Zw7}+*h;UH(0yZb zWxiyogqga_j+slVPac|i$x6=OFy&K0)aP%{7b#DRITm;4FtbSNQ>}B8?rv~-7iHt) zRg%7MwxXHBQRQ<5`$Z%5CSr=)C`O|0Mg)Q=@85)Yfs?3jBgzSeHuvn{*2clRbpu@ss*U2JyP zdiByp!9^y0Azuuiui9lGwjf?z@6)3-C0u*gE!*vXe!cgazyN87t2-q3Zt?vp>|gcz z!qa=7|LysDt}&GF>*0^Hm6*Sua{gI6QI~yRohxs}X0P9tb(7^-CtTd{53J?D3%;52M3Z_BO7asT3b{=FZt;J8tew=W%px+Fq@-@VRT;Ug@?AO}S&z|IEIxoyrT>pY5;JJgm}wT2p=M zn)X><>Mu4-4V+cx;mIEG*K|Wb;+mMuh}E(DOWsz^bCqjbv!LpOL+QGM%w^IX&NouC z6L&okZ=KSpd&#b$ z)7Vj5yGh`w>6BO%jU>KD(}aJ?^cEE@-><;>Nchi8F=e~YI!WIdt<1ORKG77v*Szr8 zl~d=8mGiaQE^Sr)ztTnPe@KyFL*TbnUL{N#m%JrctgODE#M#hksuXIQ<+-T0?W)@E z&T^$0c~!F`YlIkghMV%1Z(KRUg!l2c9L@YgzNfgGHM39NKIq`0b~D)9M4WYMm7$~Q zmlM4FtE_?+Nc!5$1JQ7?Wa+^>EYJs=PR>o^Jdw-yd=N4=0k!c zzrhVpJF(DLPp|1mw1&*t&?hAs6y(0u>(#rBGLP3?bS$Z`=vSE7_RC_PtZTb_@kdp~ zbJ6nd?fnzyT>dT2vcH3G|BTDlQ?yt=h+n)oy|`*_k@)$2GQ|&MjDHDvO0D92XUKl< zj&2c)-E|+$Rz6D?eWuS@jUUow*tFZ;GymJ?eKM1&$(>`7q1Jcrce2gW>>))0C;dd& zCn;u}?@&86V?8fNez}cH#|l9gqnDPtt`k+NJDJ;K1v=L#@P(b=U!`R{bmN^6>`3-3Pc{=BibbN=1P56poUKg^ag{+lEFzrJ?! zqx?k=`Ag634;P8wfAqcnOWwNpeJelwUR2Q^Z)4B*Y)1Etwz3tkINVM8-?!WB+NkPY zZ=~|DcPV=BqtS{Hlf5yZL{;*x_TgsKNE} z^uOX)FYE2uyT?NJo9ykJ3B7fDV>G~&U*RuyMTefNK z$_KMfZCfT~di4*(BEIfO+wH1rws)QQb4wuemG-S)S?kst%#nW;EhD}nU+~)IqkDqe z)_%OTeBqj^{|z0>7=q77hxdEwD|h@m!+Y?Lavn$APQh)jCn>yG6s)YZOyJ341=+c8 z1QqwHO`P7z%dxdqxBgb$u}X=Vk37DHIJ`gpX>mz%(6W0yBInlfsS20;TpTFw!tur< zpgfOlht18BY3^Tb<~e5B_ixVRonF3SWqn|x+L5jIZceDW;Zwh>g*#SAwMfO%;6K-+ zMNy&KB|^B^-O7}lmp(nmY}2G|e1}uw1NUxWfmL1)Uz+S~J9>d}N6+blMr)r)na>pu zIkd%`Br-eHi>($edoTN8~ZEqdy`em{--Cu?UQJ~FzrLu`5&hy)p1|mb3f@qX5KqB z+u~pDDV9xq$2NYIUD`5TGCzw?ou~Fg;RW5x%nRqAuKHoVY1V(17xu1vR^v-(c%QY*-r2g}G3;cV2IlRQ`zk$nBuaFpnk4M%zB`QsIUHo-g_vVGMzjF7U zQjiyLSf}{3t8`cI-scjpJf?Z8>s6I7c$wYZedyhkeh;%2`A5s2dvb+UP3n5Lx%zYb zMU%%XE;SxDsul@PJhH}V!{c=du9v&&r}8b6an<Kr)ZG)02UtGNGphTYIN3Q3Ws*bh9op_fel4$fI?cTZI*;$q`%#ZKwmFY{I(sAGO#959n zjfVptOey$PalBhD&gEdcLeVSVT?aQGNS3UsTejYE-J##CmbTG8zquQ}t!y`TpZJaK z!Hgb;uRHnD*ne$Q=MF9Wx!mo_Jh}dl%(~9E&M*3^lsLnraK}eGS&z;KS6{W9+gSMi zpwh}*@d}ydy=T%tuGQHm`tbC-Qid(8Pw#A+eB1Eq!Q1609^I|F>-a5Kf77&A`A-xZ z&Z^DH~;0*ky8^@<&&4=(yFl__{HKjy76 zZ}Gg6?>P<6q-V)3eb(Z>CsFZx+;fBYEqe|*i?u&%xOiKh=lhG7IULjcKE=JUUd?#p zs@}ELOOCBu@_TCS`m)sdw=@bBX8PB>nd*N?^6*Bh_X`$H|1P(1k50JTvt^ziBt)1? zMf7>Egnc`lRw=Xp{@kN%eJ1sXk4#BBd_vAD|ATAMf%G*=CX0-(9cDhgO62p&(&%hS zGyhw=lDU0$^tr!pT7Tei$1&C&&zbI?5qO-ddAjMLcI)1z{Q>81tY>#VbNcIj8KJi& z&t{#IUUTSzPsaLG{l@v*-u*vzdHFlPC3`o!ZF+fRS7g|~#fvLm>ISUQH1a*9qE~t? zU9Hj4cuh&g=ae1sEr;9r%~RuVXe_Ty+ElT_=cL5x2CYu7ez`}s*FBk4PI9s6{O0~- zwtB^;)3Qc)#ZNj{c1Nj4{ubN1Z2O9>d*aS2e48kCF?@UAjl0$p1+1=|6JaY7JN}q2 zmn*Men|@P+!Lg-LC+ej7WLDM$c06S-srtQIH$I?w>h*hOs}gn{$;hG$@ zj_ckja-MtJ=1)XohD7jZ$JYHOF=sM3m5&w(3x58T8_^W`xK7+K;_jwTtY5Qwug>Il z)SG{4VU+Wu$!YwN?cA5S{|ZQ_y2*PhM(P#Kt^d2+FnDcb>8CQICkwaO<{z(dOx|~3 z#{Ef>BAn{c?9-bq}es7laJ-%_yN+H28q`;&8_z8%sI@V$hT-;toZwT(`T=`S9jy(-c4=uwO$pfACy>pQ01`S75jxb6K5@A z6A64$zI?lCUq%U!_X1rnk-e|fStc&dkQLuw;&FYs>b7Thncp&X$7dH)Tik-OWd} zERNrd`?)?v;)mYfu!Uue&rZc0xGwyhO};nI%4x^HpOw!<+E1Gu@L*oN&uSN|=DUUu z8<~<{ANTxiF*j*RZBNvXHBQ2NIsQi9E=V}t;`DCT%Ie)d*S1_`KO^9DO>9z8%&hX} zgYNN+zXKa|b!8qt%G}Y#@#KiXgH5?AjdANH8|f`PVPg6Ge1860Wrq0k+qy5VTbbZ; z^z5!(?WKoy6!~ZRSh+8Hc7bhXr{yfqn@`f-%VsXx+}3XS%qhn3nz^j8s8+YZ!)4jg zeIK4b+2WCk7Du6en8J~(ea7kM=-(P3|{lj}lPV}`((ZDuCv)0!Qn>RKYUeq`Oh ztmto9vl>_G%yW5P0>rn^zI>Of)98=C;&BzjgC7_s+wdp}y}0Wxz^y6VY#DgUHbb-J z&h{T4OSLP~OxsjG&8c_g`F8q?$LA@!S`I3^cGsRPj^eQ2@19k5hb7>?6cDhTmNja5)Hl@@o~4QllA{F<)AO@z9!NxN8V0sRkuAo%UJ!F zc6_b5q`rRI{{w9uF%8u^Cu08pzp?i3d+R&*PsD$n`Ty@}KC6zudw;IHdGo)a;qT8c z%OeDQlNWORyXQDH`0eqk?Ixbb=Kpz~z@N)k?bP~3;=yJ^)|KM-cU&*>Z|gd^qVJ12 zxi_X(DLE_t`t2iIgtZa^#PW}w2oC(S zW5N49UxTbH?|qPdW3j{|hAD9Uoc3u8nY!$1%Kjgm{JbQR-SgwM2h7)2bY6cybJy&3 zOgc6y>5I!*r}DNvd{JW}v$7)Napg}I2|cAw&w8fUuBpsUDyqOy|NJ9hQnH<;D0mga;=9XKem<>O-qpnzt+$xp;_SKHZx4A-Iscg~ z{VMc~#=(C#??^TCbhF++CRFezLI3)(Ra}?$GG)0=y)Ju1MlVzJ#JS_yUh9Mw_B5QU zm}lp-Z!ybv?c7vP`#o|ON(1LN=X!m-aPmldPSMGDplWn18)c^QrPkFH|v<`K5dLyp5gO*{)>I*L&L>Hky1Fd303H4uH(WR&7Ep`>lR&&mbg%=`qt{iwVA7zA2;8u^7+s0^YbL<&JKS(Q$zOO%IsNYC9V!`*A9A~>o5P7$Y-?Fx`=O{y>#;S0NL|L*_&$&B+fsZ|7`X8 zhdC?6k_)>}DsN&_{p{57HZO3;N~X>;av2w9Mm{j`)7_BKrBWDtR8QZ;&`(^s@xDtR zQ^?_`_qQ1=bBccN%VFeyA;wkjYUc(EWzp!;6CQWJb==TO>t@N9+TgW;<3emOuSR>$ z?288_Ue+89neX(ym+J<1^M|v`W>r0LRb&6S-9(6atI079zuC;LSwBy{Nm;J&a7k?1 Ui*4BxGWIb`UEtWjwTGPn0Ph_r+W-In diff --git a/examples/SmartSwitch/data/worker-json.js.gz b/examples/SmartSwitch/data/worker-json.js.gz deleted file mode 100644 index fec1f65b323b3e5e21bf3b6a4945fe7623628312..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6923 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 diff --git a/examples/SmartSwitch/data_src/.exclude.files b/examples/SmartSwitch/data_src/.exclude.files deleted file mode 100644 index 1d600fd..0000000 --- a/examples/SmartSwitch/data_src/.exclude.files +++ /dev/null @@ -1,2 +0,0 @@ -*.gz -.exclude.files diff --git a/examples/SmartSwitch/data_src/acefull.js b/examples/SmartSwitch/data_src/acefull.js deleted file mode 100644 index 2384aa6..0000000 --- a/examples/SmartSwitch/data_src/acefull.js +++ /dev/null @@ -1,30 +0,0 @@ -(function(){function o(n){var i=e;n&&(e[n]||(e[n]={}),i=e[n]);if(!i.define||!i.define.packaged)t.original=i.define,i.define=t,i.define.packaged=!0;if(!i.require||!i.require.packaged)r.original=i.require,i.require=r,i.require.packaged=!0}var ACE_NAMESPACE="",e=function(){return this}();!e&&typeof window!="undefined"&&(e=window);if(!ACE_NAMESPACE&&typeof requirejs!="undefined")return;var t=function(e,n,r){if(typeof e!="string"){t.original?t.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(r=n),t.modules[e]||(t.payloads[e]=r,t.modules[e]=null)};t.modules={},t.payloads={};var n=function(e,t,n){if(typeof t=="string"){var i=s(e,t);if(i!=undefined)return n&&n(),i}else if(Object.prototype.toString.call(t)==="[object Array]"){var o=[];for(var u=0,a=t.length;u1&&u(t,"")>-1&&(a=RegExp(this.source,r.replace.call(o(this),"g","")),r.replace.call(e.slice(t.index),a,function(){for(var e=1;et.index&&this.lastIndex--}return t},s||(RegExp.prototype.test=function(e){var t=r.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t})}),define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+ta)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n=0?parseFloat((s.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((s.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=s.match(/ Gecko\/\d+/),t.isOpera=typeof opera=="object"&&Object.prototype.toString.call(window.opera)=="[object Opera]",t.isWebKit=parseFloat(s.split("WebKit/")[1])||undefined,t.isChrome=parseFloat(s.split(" Chrome/")[1])||undefined,t.isEdge=parseFloat(s.split(" Edge/")[1])||undefined,t.isAIR=s.indexOf("AdobeAIR")>=0,t.isAndroid=s.indexOf("Android")>=0,t.isChromeOS=s.indexOf(" CrOS ")>=0,t.isIOS=/iPad|iPhone|iPod/.test(s)&&!window.MSStream,t.isIOS&&(t.isMac=!0),t.isMobile=t.isIOS||t.isAndroid}),define("ace/lib/dom",["require","exports","module","ace/lib/useragent"],function(e,t,n){"use strict";var r=e("./useragent"),i="http://www.w3.org/1999/xhtml";t.buildDom=function o(e,t,n){if(typeof e=="string"&&e){var r=document.createTextNode(e);return t&&t.appendChild(r),r}if(!Array.isArray(e))return e;if(typeof e[0]!="string"||!e[0]){var i=[];for(var s=0;s=1.5:!0;if(typeof document!="undefined"){var s=document.createElement("div");t.HI_DPI&&s.style.transform!==undefined&&(t.HAS_CSS_TRANSFORMS=!0),!r.isEdge&&typeof s.style.animationName!="undefined"&&(t.HAS_CSS_ANIMATION=!0),s=null}t.HAS_CSS_TRANSFORMS?t.translate=function(e,t,n){e.style.transform="translate("+Math.round(t)+"px, "+Math.round(n)+"px)"}:t.translate=function(e,t,n){e.style.top=Math.round(n)+"px",e.style.left=Math.round(t)+"px"}}),define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),define("ace/lib/keys",["require","exports","module","ace/lib/oop"],function(e,t,n){"use strict";var r=e("./oop"),i=function(){var e={MODIFIER_KEYS:{16:"Shift",17:"Ctrl",18:"Alt",224:"Meta",91:"MetaLeft",92:"MetaRight",93:"ContextMenu"},KEY_MODS:{ctrl:1,alt:2,option:2,shift:4,"super":8,meta:8,command:8,cmd:8},FUNCTION_KEYS:{8:"Backspace",9:"Tab",13:"Return",19:"Pause",27:"Esc",32:"Space",33:"PageUp",34:"PageDown",35:"End",36:"Home",37:"Left",38:"Up",39:"Right",40:"Down",44:"Print",45:"Insert",46:"Delete",96:"Numpad0",97:"Numpad1",98:"Numpad2",99:"Numpad3",100:"Numpad4",101:"Numpad5",102:"Numpad6",103:"Numpad7",104:"Numpad8",105:"Numpad9","-13":"NumpadEnter",112:"F1",113:"F2",114:"F3",115:"F4",116:"F5",117:"F6",118:"F7",119:"F8",120:"F9",121:"F10",122:"F11",123:"F12",144:"Numlock",145:"Scrolllock"},PRINTABLE_KEYS:{32:" ",48:"0",49:"1",50:"2",51:"3",52:"4",53:"5",54:"6",55:"7",56:"8",57:"9",59:";",61:"=",65:"a",66:"b",67:"c",68:"d",69:"e",70:"f",71:"g",72:"h",73:"i",74:"j",75:"k",76:"l",77:"m",78:"n",79:"o",80:"p",81:"q",82:"r",83:"s",84:"t",85:"u",86:"v",87:"w",88:"x",89:"y",90:"z",107:"+",109:"-",110:".",186:";",187:"=",188:",",189:"-",190:".",191:"/",192:"`",219:"[",220:"\\",221:"]",222:"'",111:"/",106:"*"}},t,n;for(n in e.FUNCTION_KEYS)t=e.FUNCTION_KEYS[n].toLowerCase(),e[t]=parseInt(n,10);for(n in e.PRINTABLE_KEYS)t=e.PRINTABLE_KEYS[n].toLowerCase(),e[t]=parseInt(n,10);return r.mixin(e,e.MODIFIER_KEYS),r.mixin(e,e.PRINTABLE_KEYS),r.mixin(e,e.FUNCTION_KEYS),e.enter=e["return"],e.escape=e.esc,e.del=e["delete"],e[173]="-",function(){var t=["cmd","ctrl","alt","shift"];for(var n=Math.pow(2,t.length);n--;)e.KEY_MODS[n]=t.filter(function(t){return n&e.KEY_MODS[t]}).join("-")+"-"}(),e.KEY_MODS[0]="",e.KEY_MODS[-1]="input-",e}();r.mixin(t,i),t.keyCodeToString=function(e){var t=i[e];return typeof t!="string"&&(t=String.fromCharCode(e)),t.toLowerCase()}}),define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function a(){u=!1;try{document.createComment("").addEventListener("test",function(){},{get passive(){u={passive:!1}}})}catch(e){}}function f(){return u==undefined&&a(),u}function c(e,t,n){var u=l(t);if(!i.isMac&&s){t.getModifierState&&(t.getModifierState("OS")||t.getModifierState("Win"))&&(u|=8);if(s.altGr){if((3&u)==3)return;s.altGr=0}if(n===18||n===17){var a="location"in t?t.location:t.keyLocation;if(n===17&&a===1)s[n]==1&&(o=t.timeStamp);else if(n===18&&u===3&&a===2){var f=t.timeStamp-o;f<50&&(s.altGr=!0)}}}n in r.MODIFIER_KEYS&&(n=-1);if(!u&&n===13){var a="location"in t?t.location:t.keyLocation;if(a===3){e(t,u,-n);if(t.defaultPrevented)return}}if(i.isChromeOS&&u&8){e(t,u,n);if(t.defaultPrevented)return;u&=-9}return!!u||n in r.FUNCTION_KEYS||n in r.PRINTABLE_KEYS?e(t,u,n):!1}function h(){s=Object.create(null)}var r=e("./keys"),i=e("./useragent"),s=null,o=0,u;t.addListener=function(e,t,n){return e.addEventListener(t,n,f())},t.removeListener=function(e,t,n){return e.removeEventListener(t,n,f())},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation&&e.stopPropagation()},t.preventDefault=function(e){e.preventDefault&&e.preventDefault()},t.getButton=function(e){return e.type=="dblclick"?0:e.type=="contextmenu"||i.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.button},t.capture=function(e,n,r){function i(e){n&&n(e),r&&r(e),t.removeListener(document,"mousemove",n,!0),t.removeListener(document,"mouseup",i,!0),t.removeListener(document,"dragstart",i,!0)}return t.addListener(document,"mousemove",n,!0),t.addListener(document,"mouseup",i,!0),t.addListener(document,"dragstart",i,!0),i},t.addMouseWheelListener=function(e,n){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){var t=8;e.wheelDeltaX!==undefined?(e.wheelX=-e.wheelDeltaX/t,e.wheelY=-e.wheelDeltaY/t):(e.wheelX=0,e.wheelY=-e.wheelDelta/t),n(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){var t=.35;switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=e.deltaX*t||0,e.wheelY=e.deltaY*t||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=(e.deltaX||0)*5,e.wheelY=(e.deltaY||0)*5}n(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=(e.detail||0)*5,e.wheelY=0):(e.wheelX=0,e.wheelY=(e.detail||0)*5),n(e)})},t.addMultiMouseDownListener=function(e,n,r,s){function c(e){t.getButton(e)!==0?o=0:e.detail>1?(o++,o>4&&(o=1)):o=1;if(i.isIE){var c=Math.abs(e.clientX-u)>5||Math.abs(e.clientY-a)>5;if(!f||c)o=1;f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),o==1&&(u=e.clientX,a=e.clientY)}e._clicks=o,r[s]("mousedown",e);if(o>4)o=0;else if(o>1)return r[s](l[o],e)}var o=0,u,a,f,l={2:"dblclick",3:"tripleclick",4:"quadclick"};Array.isArray(e)||(e=[e]),e.forEach(function(e){t.addListener(e,"mousedown",c)})};var l=function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)};t.getModifierString=function(e){return r.KEY_MODS[l(e)]},t.addCommandKeyListener=function(e,n){var r=t.addListener;if(i.isOldGecko||i.isOpera&&!("KeyboardEvent"in window)){var o=null;r(e,"keydown",function(e){o=e.keyCode}),r(e,"keypress",function(e){return c(n,e,o)})}else{var u=null;r(e,"keydown",function(e){s[e.keyCode]=(s[e.keyCode]||0)+1;var t=c(n,e,e.keyCode);return u=e.defaultPrevented,t}),r(e,"keypress",function(e){u&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),u=null)}),r(e,"keyup",function(e){s[e.keyCode]=null}),s||(h(),r(window,"focus",h))}};if(typeof window=="object"&&window.postMessage&&!i.isOldIE){var p=1;t.nextTick=function(e,n){n=n||window;var r="zero-timeout-message-"+p++,i=function(s){s.data==r&&(t.stopPropagation(s),t.removeListener(n,"message",i),e())};t.addListener(n,"message",i),n.postMessage(r,"*")}}t.$idleBlocked=!1,t.onIdle=function(e,n){return setTimeout(function r(){t.$idleBlocked?setTimeout(r,100):e()},n)},t.$idleBlockId=null,t.blockIdle=function(e){t.$idleBlockId&&clearTimeout(t.$idleBlockId),t.$idleBlocked=!0,t.$idleBlockId=setTimeout(function(){t.$idleBlocked=!1},e||100)},t.nextFrame=typeof window=="object"&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?tthis.end.column?1:0:ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.rowt)var r={row:t+1,column:0};else if(this.start.row0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;nDate.now()-50?!0:r=!1},cancel:function(){r=Date.now()}}}),define("ace/keyboard/textinput",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/lib/dom","ace/lib/lang","ace/clipboard","ace/lib/keys"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=e("../lib/dom"),o=e("../lib/lang"),u=e("../clipboard"),a=i.isChrome<18,f=i.isIE,l=i.isChrome>63,c=400,h=e("../lib/keys"),p=h.KEY_MODS,d=i.isIOS,v=d?/\s/:/\n/,m=function(e,t){function W(){S=!0,n.blur(),n.focus(),S=!1}function V(e){e.keyCode==27&&n.value.lengthN&&x[s]=="\n")o=h.end;else if(rN&&x.slice(0,s).split("\n").length>2)o=h.down;else if(s>N&&x[s-1]==" ")o=h.right,u=p.option;else if(s>N||s==N&&N!=T&&r==s)o=h.right;r!==s&&(u|=p.shift);if(o){var a=t.onCommandKey({},u,o);if(!a&&t.commands){o=h.keyCodeToString(o);var f=t.commands.findKeyCommand(u,o);f&&t.execCommand(f)}T=r,N=s,A("")}};document.addEventListener("selectionchange",s),t.on("destroy",function(){document.removeEventListener("selectionchange",s)})}var n=s.createElement("textarea");n.className="ace_text-input",n.setAttribute("wrap","off"),n.setAttribute("autocorrect","off"),n.setAttribute("autocapitalize","off"),n.setAttribute("spellcheck",!1),n.style.opacity="0",e.insertBefore(n,e.firstChild);var m=!1,g=!1,y=!1,b=!1,w="";i.isMobile||(n.style.fontSize="1px");var E=!1,S=!1,x="",T=0,N=0,C=0;try{var k=document.activeElement===n}catch(L){}r.addListener(n,"blur",function(e){if(S)return;t.onBlur(e),k=!1}),r.addListener(n,"focus",function(e){if(S)return;k=!0;if(i.isEdge)try{if(!document.hasFocus())return}catch(e){}t.onFocus(e),i.isEdge?setTimeout(A):A()}),this.$focusScroll=!1,this.focus=function(){if(w||l||this.$focusScroll=="browser")return n.focus({preventScroll:!0});var e=n.style.top;n.style.position="fixed",n.style.top="0px";try{var t=n.getBoundingClientRect().top!=0}catch(r){return}var i=[];if(t){var s=n.parentElement;while(s&&s.nodeType==1)i.push(s),s.setAttribute("ace_nocontext",!0),!s.parentElement&&s.getRootNode?s=s.getRootNode().host:s=s.parentElement}n.focus({preventScroll:!0}),t&&i.forEach(function(e){e.removeAttribute("ace_nocontext")}),setTimeout(function(){n.style.position="",n.style.top=="0px"&&(n.style.top=e)},0)},this.blur=function(){n.blur()},this.isFocused=function(){return k},t.on("beforeEndOperation",function(){if(t.curOp&&t.curOp.command.name=="insertstring")return;y&&(x=n.value="",z()),A()});var A=d?function(e){if(!k||m&&!e||b)return;e||(e="");var r="\n ab"+e+"cde fg\n";r!=n.value&&(n.value=x=r);var i=4,s=4+(e.length||(t.selection.isEmpty()?0:1));(T!=i||N!=s)&&n.setSelectionRange(i,s),T=i,N=s}:function(){if(y||b)return;if(!k&&!D)return;y=!0;var e=t.selection,r=e.getRange(),i=e.cursor.row,s=r.start.column,o=r.end.column,u=t.session.getLine(i);if(r.start.row!=i){var a=t.session.getLine(i-1);s=r.start.rowi+1?f.length:o,o+=u.length+1,u=u+"\n"+f}u.length>c&&(s=x.length&&e.value===x&&x&&e.selectionEnd!==N},M=function(e){if(y)return;m?m=!1:O(n)&&(t.selectAll(),A())},_=null;this.setInputHandler=function(e){_=e},this.getInputHandler=function(){return _};var D=!1,P=function(e,r){D&&(D=!1);if(g)return A(),e&&t.onPaste(e),g=!1,"";var i=n.selectionStart,s=n.selectionEnd,o=T,u=x.length-N,a=e,f=e.length-i,l=e.length-s,c=0;while(o>0&&x[c]==e[c])c++,o--;a=a.slice(c),c=1;while(u>0&&x.length-c>T-1&&x[x.length-c]==e[e.length-c])c++,u--;f-=c-1,l-=c-1;var h=a.length-c+1;return h<0&&(o=-h,h=0),a=a.slice(0,h),!r&&!a&&!f&&!o&&!u&&!l?"":(b=!0,a&&!o&&!u&&!f&&!l||E?t.onTextInput(a):t.onTextInput(a,{extendLeft:o,extendRight:u,restoreStart:f,restoreEnd:l}),b=!1,x=e,T=i,N=s,C=l,a)},H=function(e){if(y)return U();if(e&&e.inputType){if(e.inputType=="historyUndo")return t.execCommand("undo");if(e.inputType=="historyRedo")return t.execCommand("redo")}var r=n.value,i=P(r,!0);(r.length>c+100||v.test(i))&&A()},B=function(e,t,n){var r=e.clipboardData||window.clipboardData;if(!r||a)return;var i=f||n?"Text":"text/plain";try{return t?r.setData(i,t)!==!1:r.getData(i)}catch(e){if(!n)return B(e,t,!0)}},j=function(e,i){var s=t.getCopyText();if(!s)return r.preventDefault(e);B(e,s)?(d&&(A(s),m=s,setTimeout(function(){m=!1},10)),i?t.onCut():t.onCopy(),r.preventDefault(e)):(m=!0,n.value=s,n.select(),setTimeout(function(){m=!1,A(),i?t.onCut():t.onCopy()}))},F=function(e){j(e,!0)},I=function(e){j(e,!1)},q=function(e){var s=B(e);if(u.pasteCancelled())return;typeof s=="string"?(s&&t.onPaste(s,e),i.isIE&&setTimeout(A),r.preventDefault(e)):(n.value="",g=!0)};r.addCommandKeyListener(n,t.onCommandKey.bind(t)),r.addListener(n,"select",M),r.addListener(n,"input",H),r.addListener(n,"cut",F),r.addListener(n,"copy",I),r.addListener(n,"paste",q),(!("oncut"in n)||!("oncopy"in n)||!("onpaste"in n))&&r.addListener(e,"keydown",function(e){if(i.isMac&&!e.metaKey||!e.ctrlKey)return;switch(e.keyCode){case 67:I(e);break;case 86:q(e);break;case 88:F(e)}});var R=function(e){if(y||!t.onCompositionStart||t.$readOnly)return;y={};if(E)return;setTimeout(U,0),t.on("mousedown",W);var r=t.getSelectionRange();r.end.row=r.start.row,r.end.column=r.start.column,y.markerRange=r,y.selectionStart=T,t.onCompositionStart(y),y.useTextareaForIME?(n.value="",x="",T=0,N=0):(n.msGetInputContext&&(y.context=n.msGetInputContext()),n.getInputContext&&(y.context=n.getInputContext()))},U=function(){if(!y||!t.onCompositionUpdate||t.$readOnly)return;if(E)return W();if(y.useTextareaForIME)t.onCompositionUpdate(n.value);else{var e=n.value;P(e),y.markerRange&&(y.context&&(y.markerRange.start.column=y.selectionStart=y.context.compositionStartOffset),y.markerRange.end.column=y.markerRange.start.column+N-y.selectionStart+C)}},z=function(e){if(!t.onCompositionEnd||t.$readOnly)return;y=!1,t.onCompositionEnd(),t.off("mousedown",W),e&&H()},X=o.delayedCall(U,50).schedule.bind(null,null);r.addListener(n,"compositionstart",R),r.addListener(n,"compositionupdate",U),r.addListener(n,"keyup",V),r.addListener(n,"keydown",X),r.addListener(n,"compositionend",z),this.getElement=function(){return n},this.setCommandMode=function(e){E=e,n.readOnly=!1},this.setReadOnly=function(e){E||(n.readOnly=e)},this.setCopyWithEmptySelection=function(e){},this.onContextMenu=function(e){D=!0,A(),t._emit("nativecontextmenu",{target:t,domEvent:e}),this.moveToMouse(e,!0)},this.moveToMouse=function(e,o){w||(w=n.style.cssText),n.style.cssText=(o?"z-index:100000;":"")+(i.isIE?"opacity:0.1;":"")+"text-indent: -"+(T+N)*t.renderer.characterWidth*.5+"px;";var u=t.container.getBoundingClientRect(),a=s.computedStyle(t.container),f=u.top+(parseInt(a.borderTopWidth)||0),l=u.left+(parseInt(u.borderLeftWidth)||0),c=u.bottom-f-n.clientHeight-2,h=function(e){s.translate(n,e.clientX-l-2,Math.min(e.clientY-f-2,c))};h(e);if(e.type!="mousedown")return;t.renderer.$isMousePressed=!0,clearTimeout($),i.isWin&&r.capture(t.container,h,J)},this.onContextMenuClose=J;var $,K=function(e){t.textInput.onContextMenu(e),J()};r.addListener(n,"mouseup",K),r.addListener(n,"mousedown",function(e){e.preventDefault(),J()}),r.addListener(t.renderer.scroller,"contextmenu",K),r.addListener(n,"contextmenu",K),d&&Q(e,t,n)};t.TextInput=m}),define("ace/mouse/default_handlers",["require","exports","module","ace/lib/useragent"],function(e,t,n){"use strict";function o(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler("mousedown",this.onMouseDown.bind(e)),t.setDefaultHandler("dblclick",this.onDoubleClick.bind(e)),t.setDefaultHandler("tripleclick",this.onTripleClick.bind(e)),t.setDefaultHandler("quadclick",this.onQuadClick.bind(e)),t.setDefaultHandler("mousewheel",this.onMouseWheel.bind(e));var n=["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"];n.forEach(function(t){e[t]=this[t]},this),e.selectByLines=this.extendSelectionBy.bind(e,"getLineRange"),e.selectByWords=this.extendSelectionBy.bind(e,"getWordRange")}function u(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}function a(e,t){if(e.start.row==e.end.row)var n=2*t.column-e.start.column-e.end.column;else if(e.start.row==e.end.row-1&&!e.start.column&&!e.end.column)var n=t.column-4;else var n=2*t.row-e.start.row-e.end.row;return n<0?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}var r=e("../lib/useragent"),i=0,s=550;(function(){this.onMouseDown=function(e){var t=e.inSelection(),n=e.getDocumentPosition();this.mousedownEvent=e;var i=this.editor,s=e.getButton();if(s!==0){var o=i.getSelectionRange(),u=o.isEmpty();(u||s==1)&&i.selection.moveToPosition(n),s==2&&(i.textInput.onContextMenu(e.domEvent),r.isMozilla||e.preventDefault());return}this.mousedownEvent.time=Date.now();if(t&&!i.isFocused()){i.focus();if(this.$focusTimeout&&!this.$clickSelection&&!i.inMultiSelectMode){this.setState("focusWait"),this.captureMouse(e);return}}return this.captureMouse(e),this.startSelect(n,e.domEvent._clicks>1),e.preventDefault()},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var n=this.editor;if(!this.mousedownEvent)return;this.mousedownEvent.getShiftKey()?n.selection.selectToPosition(e):t||n.selection.moveToPosition(e),t||this.select(),n.renderer.scroller.setCapture&&n.renderer.scroller.setCapture(),n.setStyle("ace_selecting"),this.setState("select")},this.select=function(){var e,t=this.editor,n=t.renderer.screenToTextCoordinates(this.x,this.y);if(this.$clickSelection){var r=this.$clickSelection.comparePoint(n);if(r==-1)e=this.$clickSelection.end;else if(r==1)e=this.$clickSelection.start;else{var i=a(this.$clickSelection,n);n=i.cursor,e=i.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(n),t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,n=this.editor,r=n.renderer.screenToTextCoordinates(this.x,this.y),i=n.selection[e](r.row,r.column);if(this.$clickSelection){var s=this.$clickSelection.comparePoint(i.start),o=this.$clickSelection.comparePoint(i.end);if(s==-1&&o<=0){t=this.$clickSelection.end;if(i.end.row!=r.row||i.end.column!=r.column)r=i.start}else if(o==1&&s>=0){t=this.$clickSelection.start;if(i.start.row!=r.row||i.start.column!=r.column)r=i.end}else if(s==-1&&o==1)r=i.end,t=i.start;else{var u=a(this.$clickSelection,r);r=u.cursor,t=u.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(r),n.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=u(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>i||t-this.mousedownEvent.time>this.$focusTimeout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,r=n.session,i=r.getBracketRange(t);i?(i.isEmpty()&&(i.start.column--,i.end.column++),this.setState("select")):(i=n.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=i,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines");var r=n.getSelectionRange();r.isMultiLine()&&r.contains(t.row,t.column)?(this.$clickSelection=n.selection.getLineRange(r.start.row),this.$clickSelection.end=n.selection.getLineRange(r.end.row).end):this.$clickSelection=n.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(e.getAccelKey())return;e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=this.editor;this.$lastScroll||(this.$lastScroll={t:0,vx:0,vy:0,allowed:0});var n=this.$lastScroll,r=e.domEvent.timeStamp,i=r-n.t,o=i?e.wheelX/i:n.vx,u=i?e.wheelY/i:n.vy;i=1&&t.renderer.isScrollableBy(e.wheelX*e.speed,0)&&(f=!0),a<=1&&t.renderer.isScrollableBy(0,e.wheelY*e.speed)&&(f=!0);if(f)n.allowed=r;else if(r-n.allowedt.session.documentToScreenRow(l.row,l.column))return c()}if(f==s)return;f=s.text.join("
"),i.setHtml(f),i.show(),t._signal("showGutterTooltip",i),t.on("mousewheel",c);if(e.$tooltipFollowsMouse)h(u);else{var p=u.domEvent.target,d=p.getBoundingClientRect(),v=i.getElement().style;v.left=d.right+"px",v.top=d.bottom+"px"}}function c(){o&&(o=clearTimeout(o)),f&&(i.hide(),f=null,t._signal("hideGutterTooltip",i),t.removeEventListener("mousewheel",c))}function h(e){i.setPosition(e.x,e.y)}var t=e.editor,n=t.renderer.$gutterLayer,i=new a(t.container);e.editor.setDefaultHandler("guttermousedown",function(r){if(!t.isFocused()||r.getButton()!=0)return;var i=n.getRegion(r);if(i=="foldWidgets")return;var s=r.getDocumentPosition().row,o=t.session.selection;if(r.getShiftKey())o.selectTo(s,0);else{if(r.domEvent.detail==2)return t.selectAll(),r.preventDefault();e.$clickSelection=t.selection.getLineRange(s)}return e.setState("selectByLines"),e.captureMouse(r),r.preventDefault()});var o,u,f;e.editor.setDefaultHandler("guttermousemove",function(t){var n=t.domEvent.target||t.domEvent.srcElement;if(r.hasCssClass(n,"ace_fold-widget"))return c();f&&e.$tooltipFollowsMouse&&h(t),u=t;if(o)return;o=setTimeout(function(){o=null,u&&!e.isMousePressed?l():c()},50)}),s.addListener(t.renderer.$gutter,"mouseout",function(e){u=null;if(!f||o)return;o=setTimeout(function(){o=null,c()},50)}),t.on("changeSession",c)}function a(e){o.call(this,e)}var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/event"),o=e("../tooltip").Tooltip;i.inherits(a,o),function(){this.setPosition=function(e,t){var n=window.innerWidth||document.documentElement.clientWidth,r=window.innerHeight||document.documentElement.clientHeight,i=this.getWidth(),s=this.getHeight();e+=15,t+=15,e+i>n&&(e-=e+i-n),t+s>r&&(t-=20+s),o.prototype.setPosition.call(this,e,t)}}.call(a.prototype),t.GutterHandler=u}),define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){r.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){r.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(this.$inSelection!==null)return this.$inSelection;var e=this.editor,t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var n=this.getDocumentPosition();this.$inSelection=t.contains(n.row,n.column)}return this.$inSelection},this.getButton=function(){return r.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=i.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(s.prototype)}),define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";function f(e){function T(e,n){var r=Date.now(),i=!n||e.row!=n.row,s=!n||e.column!=n.column;if(!S||i||s)t.moveCursorToPosition(e),S=r,x={x:p,y:d};else{var o=l(x.x,x.y,p,d);o>a?S=null:r-S>=u&&(t.renderer.scrollCursorIntoView(),S=null)}}function N(e,n){var r=Date.now(),i=t.renderer.layerConfig.lineHeight,s=t.renderer.layerConfig.characterWidth,u=t.renderer.scroller.getBoundingClientRect(),a={x:{left:p-u.left,right:u.right-p},y:{top:d-u.top,bottom:u.bottom-d}},f=Math.min(a.x.left,a.x.right),l=Math.min(a.y.top,a.y.bottom),c={row:e.row,column:e.column};f/s<=2&&(c.column+=a.x.left=o&&t.renderer.scrollCursorIntoView(c):E=r:E=null}function C(){var e=g;g=t.renderer.screenToTextCoordinates(p,d),T(g,e),N(g,e)}function k(){m=t.selection.toOrientedRange(),h=t.session.addMarker(m,"ace_selection",t.getSelectionStyle()),t.clearSelection(),t.isFocused()&&t.renderer.$cursorLayer.setBlinking(!1),clearInterval(v),C(),v=setInterval(C,20),y=0,i.addListener(document,"mousemove",O)}function L(){clearInterval(v),t.session.removeMarker(h),h=null,t.selection.fromOrientedRange(m),t.isFocused()&&!w&&t.$resetCursorStyle(),m=null,g=null,y=0,E=null,S=null,i.removeListener(document,"mousemove",O)}function O(){A==null&&(A=setTimeout(function(){A!=null&&h&&L()},20))}function M(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return e=="text/plain"||e=="Text"})}function _(e){var t=["copy","copymove","all","uninitialized"],n=["move","copymove","linkmove","all","uninitialized"],r=s.isMac?e.altKey:e.ctrlKey,i="uninitialized";try{i=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var o="none";return r&&t.indexOf(i)>=0?o="copy":n.indexOf(i)>=0?o="move":t.indexOf(i)>=0&&(o="copy"),o}var t=e.editor,n=r.createElement("img");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",s.isOpera&&(n.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");var f=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];f.forEach(function(t){e[t]=this[t]},this),t.addEventListener("mousedown",this.onMouseDown.bind(e));var c=t.container,h,p,d,v,m,g,y=0,b,w,E,S,x;this.onDragStart=function(e){if(this.cancelDrag||!c.draggable){var r=this;return setTimeout(function(){r.startSelect(),r.captureMouse(e)},0),e.preventDefault()}m=t.getSelectionRange();var i=e.dataTransfer;i.effectAllowed=t.getReadOnly()?"copy":"copyMove",s.isOpera&&(t.container.appendChild(n),n.scrollTop=0),i.setDragImage&&i.setDragImage(n,0,0),s.isOpera&&t.container.removeChild(n),i.clearData(),i.setData("Text",t.session.getTextRange()),w=!0,this.setState("drag")},this.onDragEnd=function(e){c.draggable=!1,w=!1,this.setState(null);if(!t.getReadOnly()){var n=e.dataTransfer.dropEffect;!b&&n=="move"&&t.session.remove(t.getSelectionRange()),t.$resetCursorStyle()}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||k(),y++,e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragOver=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||(k(),y++),A!==null&&(A=null),e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragLeave=function(e){y--;if(y<=0&&h)return L(),b=null,i.preventDefault(e)},this.onDrop=function(e){if(!g)return;var n=e.dataTransfer;if(w)switch(b){case"move":m.contains(g.row,g.column)?m={start:g,end:g}:m=t.moveText(m,g);break;case"copy":m=t.moveText(m,g,!0)}else{var r=n.getData("Text");m={start:g,end:t.session.insert(g,r)},t.focus(),b=null}return L(),i.preventDefault(e)},i.addListener(c,"dragstart",this.onDragStart.bind(e)),i.addListener(c,"dragend",this.onDragEnd.bind(e)),i.addListener(c,"dragenter",this.onDragEnter.bind(e)),i.addListener(c,"dragover",this.onDragOver.bind(e)),i.addListener(c,"dragleave",this.onDragLeave.bind(e)),i.addListener(c,"drop",this.onDrop.bind(e));var A=null}function l(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}var r=e("../lib/dom"),i=e("../lib/event"),s=e("../lib/useragent"),o=200,u=200,a=5;(function(){this.dragWait=function(){var e=Date.now()-this.mousedownEvent.time;e>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var e=this.editor.container;e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.$resetCursorStyle(),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor,t=e.container;t.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var n=s.isWin?"default":"move";e.renderer.setCursorStyle(n),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(s.isIE&&this.state=="dragReady"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>3&&t.dragDrop()}if(this.state==="dragWait"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(!this.$dragEnabled)return;this.mousedownEvent=e;var t=this.editor,n=e.inSelection(),r=e.getButton(),i=e.domEvent.detail||1;if(i===1&&r===0&&n){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var o=e.domEvent.target||e.domEvent.srcElement;"unselectable"in o&&(o.unselectable="on");if(t.getDragDelay()){if(s.isWebKit){this.cancelDrag=!0;var u=t.container;u.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}).call(f.prototype),t.DragdropHandler=f}),define("ace/mouse/touch_handler",["require","exports","module","ace/mouse/mouse_event","ace/lib/event","ace/lib/dom"],function(e,t,n){"use strict";var r=e("./mouse_event").MouseEvent,i=e("../lib/event"),s=e("../lib/dom");t.addTouchListeners=function(e,t){function b(){var e=window.navigator&&window.navigator.clipboard,r=!1,i=function(){var n=t.getCopyText(),i=t.session.getUndoManager().hasUndo();y.replaceChild(s.buildDom(r?["span",!n&&["span",{"class":"ace_mobile-button",action:"selectall"},"Select All"],n&&["span",{"class":"ace_mobile-button",action:"copy"},"Copy"],n&&["span",{"class":"ace_mobile-button",action:"cut"},"Cut"],e&&["span",{"class":"ace_mobile-button",action:"paste"},"Paste"],i&&["span",{"class":"ace_mobile-button",action:"undo"},"Undo"],["span",{"class":"ace_mobile-button",action:"find"},"Find"],["span",{"class":"ace_mobile-button",action:"openCommandPallete"},"Pallete"]]:["span"]),y.firstChild)},o=function(n){var s=n.target.getAttribute("action");if(s=="more"||!r)return r=!r,i();if(s=="paste")e.readText().then(function(e){t.execCommand(s,e)});else if(s){if(s=="cut"||s=="copy")e?e.writeText(t.getCopyText()):document.execCommand("copy");t.execCommand(s)}y.firstChild.style.display="none",r=!1,s!="openCommandPallete"&&t.focus()};y=s.buildDom(["div",{"class":"ace_mobile-menu",ontouchstart:function(e){n="menu",e.stopPropagation(),e.preventDefault(),t.textInput.focus()},ontouchend:function(e){e.stopPropagation(),e.preventDefault(),o(e)},onclick:o},["span"],["span",{"class":"ace_mobile-button",action:"more"},"..."]],t.container)}function w(){y||b();var e=t.selection.cursor,n=t.renderer.textToScreenCoordinates(e.row,e.column),r=t.container.getBoundingClientRect();y.style.top=n.pageY-r.top-3+"px",y.style.right="10px",y.style.display="",y.firstChild.style.display="none",t.on("input",E)}function E(e){y&&(y.style.display="none"),t.off("input",E)}function S(){l=null,clearTimeout(l);var e=t.selection.getRange(),r=e.contains(p.row,p.column);if(e.isEmpty()||!r)t.selection.moveToPosition(p),t.selection.selectWord();n="wait",w()}function x(){l=null,clearTimeout(l),t.selection.moveToPosition(p);var e=d>=2?t.selection.getLineRange(p.row):t.session.getBracketRange(p);e&&!e.isEmpty()?t.selection.setRange(e):t.selection.selectWord(),n="wait"}function T(){h+=60,c=setInterval(function(){h--<=0&&(clearInterval(c),c=null),Math.abs(v)<.01&&(v=0),Math.abs(m)<.01&&(m=0),h<20&&(v=.9*v),h<20&&(m=.9*m);var e=t.session.getScrollTop();t.renderer.scrollBy(10*v,10*m),e==t.session.getScrollTop()&&(h=0)},10)}var n="scroll",o,u,a,f,l,c,h=0,p,d=0,v=0,m=0,g,y;i.addListener(e,"contextmenu",function(e){if(!g)return;var n=t.textInput.getElement();n.focus()}),i.addListener(e,"touchstart",function(e){var i=e.touches;if(l||i.length>1){clearTimeout(l),l=null,a=-1,n="zoom";return}g=t.$mouseHandler.isMousePressed=!0;var s=t.renderer.layerConfig.lineHeight,c=t.renderer.layerConfig.lineHeight,y=e.timeStamp;f=y;var b=i[0],w=b.clientX,E=b.clientY;Math.abs(o-w)+Math.abs(u-E)>s&&(a=-1),o=e.clientX=w,u=e.clientY=E,v=m=0;var T=new r(e,t);p=T.getDocumentPosition();if(y-a<500&&i.length==1&&!h)d++,e.preventDefault(),e.button=0,x();else{d=0;var N=t.selection.cursor,C=t.selection.isEmpty()?N:t.selection.anchor,k=t.renderer.$cursorLayer.getPixelPosition(N,!0),L=t.renderer.$cursorLayer.getPixelPosition(C,!0),A=t.renderer.scroller.getBoundingClientRect(),O=function(e,t){return e/=c,t=t/s-.75,e*e+t*t};if(e.clientX_?"cursor":"anchor"),_<3.5?n="anchor":M<3.5?n="cursor":n="scroll",l=setTimeout(S,450)}a=y}),i.addListener(e,"touchend",function(e){g=t.$mouseHandler.isMousePressed=!1,c&&clearInterval(c),n=="zoom"?(n="",h=0):l?(t.selection.moveToPosition(p),h=0,w()):n=="scroll"?(T(),e.preventDefault(),E()):w(),clearTimeout(l),l=null}),i.addListener(e,"touchmove",function(e){l&&(clearTimeout(l),l=null);var i=e.touches;if(i.length>1||n=="zoom")return;var s=i[0],a=o-s.clientX,c=u-s.clientY;if(n=="wait"){if(!(a*a+c*c>4))return e.preventDefault();n="cursor"}o=s.clientX,u=s.clientY,e.clientX=s.clientX,e.clientY=s.clientY;var h=e.timeStamp,p=h-f;f=h;if(n=="scroll"){var d=new r(e,t);d.speed=1,d.wheelX=a,d.wheelY=c,10*Math.abs(a)1&&(i=n[n.length-2]);var o=a[t+"Path"];return o==null?o=a.basePath:r=="/"&&(t=r=""),o&&o.slice(-1)!="/"&&(o+="/"),o+t+r+i+this.get("suffix")},t.setModuleUrl=function(e,t){return a.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(n,r){var i,o;Array.isArray(n)&&(o=n[0],n=n[1]);try{i=e(n)}catch(u){}if(i&&!t.$loading[n])return r&&r(i);t.$loading[n]||(t.$loading[n]=[]),t.$loading[n].push(r);if(t.$loading[n].length>1)return;var a=function(){e([n],function(e){t._emit("load.module",{name:n,module:e});var r=t.$loading[n];t.$loading[n]=null,r.forEach(function(t){t&&t(e)})})};if(!t.get("packaged"))return a();s.loadScript(t.moduleUrl(n,o),a),f()};var f=function(){!a.basePath&&!a.workerPath&&!a.modePath&&!a.themePath&&!Object.keys(a.$moduleUrls).length&&(console.error("Unable to infer path to ace from script src,","use ace.config.set('basePath', 'path') to enable dynamic loading of modes and themes","or with webpack use ace/webpack-resolver"),f=function(){})};t.init=l,t.version="1.4.8"}),define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/mouse/touch_handler","ace/config"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=e("./default_handlers").DefaultHandlers,o=e("./default_gutter_handler").GutterHandler,u=e("./mouse_event").MouseEvent,a=e("./dragdrop_handler").DragdropHandler,f=e("./touch_handler").addTouchListeners,l=e("../config"),c=function(e){var t=this;this.editor=e,new s(this),new o(this),new a(this);var n=function(t){var n=!document.hasFocus||!document.hasFocus()||!e.isFocused()&&document.activeElement==(e.textInput&&e.textInput.getElement());n&&window.focus(),e.focus()},u=e.renderer.getMouseEventTarget();r.addListener(u,"click",this.onMouseEvent.bind(this,"click")),r.addListener(u,"mousemove",this.onMouseMove.bind(this,"mousemove")),r.addMultiMouseDownListener([u,e.renderer.scrollBarV&&e.renderer.scrollBarV.inner,e.renderer.scrollBarH&&e.renderer.scrollBarH.inner,e.textInput&&e.textInput.getElement()].filter(Boolean),[400,300,250],this,"onMouseEvent"),r.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel")),f(e.container,e);var l=e.renderer.$gutter;r.addListener(l,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),r.addListener(l,"click",this.onMouseEvent.bind(this,"gutterclick")),r.addListener(l,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),r.addListener(l,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),r.addListener(u,"mousedown",n),r.addListener(l,"mousedown",n),i.isIE&&e.renderer.scrollBarV&&(r.addListener(e.renderer.scrollBarV.element,"mousedown",n),r.addListener(e.renderer.scrollBarH.element,"mousedown",n)),e.on("mousemove",function(n){if(t.state||t.$dragDelay||!t.$dragEnabled)return;var r=e.renderer.screenToTextCoordinates(n.x,n.y),i=e.session.selection.getRange(),s=e.renderer;!i.isEmpty()&&i.insideStart(r.row,r.column)?s.setCursorStyle("default"):s.setCursorStyle("")})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new u(t,this.editor))},this.onMouseMove=function(e,t){var n=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;if(!n||!n.length)return;this.editor._emit(e,new u(t,this.editor))},this.onMouseWheel=function(e,t){var n=new u(t,this.editor);n.speed=this.$scrollSpeed*2,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var n=this.editor,s=this.editor.renderer;s.$isMousePressed=!0;var o=this,a=function(e){if(!e)return;if(i.isWebKit&&!e.which&&o.releaseMouse)return o.releaseMouse();o.x=e.clientX,o.y=e.clientY,t&&t(e),o.mouseEvent=new u(e,o.editor),o.$mouseMoved=!0},f=function(e){n.off("beforeEndOperation",c),clearInterval(h),l(),o[o.state+"End"]&&o[o.state+"End"](e),o.state="",o.isMousePressed=s.$isMousePressed=!1,s.$keepTextAreaAtCursor&&s.$moveTextAreaToCursor(),o.$onCaptureMouseMove=o.releaseMouse=null,e&&o.onMouseEvent("mouseup",e),n.endOperation()},l=function(){o[o.state]&&o[o.state](),o.$mouseMoved=!1};if(i.isOldIE&&e.domEvent.type=="dblclick")return setTimeout(function(){f(e)});var c=function(e){if(!o.releaseMouse)return;n.curOp.command.name&&n.curOp.selectionChanged&&(o[o.state+"End"]&&o[o.state+"End"](),o.state="",o.releaseMouse())};n.on("beforeEndOperation",c),n.startOperation({command:{name:"mouse"}}),o.$onCaptureMouseMove=a,o.releaseMouse=r.capture(this.editor.container,a,f);var h=setInterval(l,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){if(t&&t.domEvent&&t.domEvent.type!="contextmenu")return;this.editor.off("nativecontextmenu",e),t&&t.domEvent&&r.stopEvent(t.domEvent)}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(c.prototype),l.defineOptions(c.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:i.isMac?150:0},dragEnabled:{initialValue:!0},focusTimeout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=c}),define("ace/mouse/fold_handler",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";function i(e){e.on("click",function(t){var n=t.getDocumentPosition(),i=e.session,s=i.getFoldAt(n.row,n.column,1);s&&(t.getAccelKey()?i.removeFold(s):i.expandFold(s),t.stop());var o=t.domEvent&&t.domEvent.target;o&&r.hasCssClass(o,"ace_inline_button")&&r.hasCssClass(o,"ace_toggle_wrap")&&(i.setOption("wrap",!i.getUseWrapMode()),e.renderer.scrollCursorIntoView())}),e.on("gutterclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session;i.foldWidgets&&i.foldWidgets[r]&&e.session.onFoldWidgetClick(r,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session,s=i.getParentFoldRangeData(r,!0),o=s.range||s.firstRange;if(o){r=o.start.row;var u=i.getFoldAt(r,i.getLine(r).length,1);u?i.removeFold(u):(i.addFold("...",o),e.renderer.scrollCursorIntoView({row:o.start.row,column:0}))}t.stop()}})}var r=e("../lib/dom");t.FoldHandler=i}),define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,n){"use strict";var r=e("../lib/keys"),i=e("../lib/event"),s=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]==e)return;while(t[t.length-1]&&t[t.length-1]!=this.$defaultHandler)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)},this.addKeyboardHandler=function(e,t){if(!e)return;typeof e=="function"&&!e.handleKeyboard&&(e.handleKeyboard=e);var n=this.$handlers.indexOf(e);n!=-1&&this.$handlers.splice(n,1),t==undefined?this.$handlers.push(e):this.$handlers.splice(t,0,e),n==-1&&e.attach&&e.attach(this.$editor)},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return t==-1?!1:(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map(function(n){return n.getStatusText&&n.getStatusText(t,e)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(e,t,n,r){var s,o=!1,u=this.$editor.commands;for(var a=this.$handlers.length;a--;){s=this.$handlers[a].handleKeyboard(this.$data,e,t,n,r);if(!s||!s.command)continue;s.command=="null"?o=!0:o=u.exec(s.command,this.$editor,s.args,r),o&&r&&e!=-1&&s.passEvent!=1&&s.command.passEvent!=1&&i.stopEvent(r);if(o)break}return!o&&e==-1&&(s={command:"insertstring"},o=u.exec("insertstring",this.$editor,t)),o&&this.$editor._signal&&this.$editor._signal("keyboardActivity",s),o},this.onCommandKey=function(e,t,n){var i=r.keyCodeToString(n);return this.$callKeyboardHandlers(t,i,n,e)},this.onTextInput=function(e){return this.$callKeyboardHandlers(-1,e)}}).call(s.prototype),t.KeyBinding=s}),define("ace/lib/bidiutil",["require","exports","module"],function(e,t,n){"use strict";function F(e,t,n,r){var i=s?d:p,c=null,h=null,v=null,m=0,g=null,y=null,b=-1,w=null,E=null,T=[];if(!r)for(w=0,r=[];w0)if(g==16){for(w=b;w-1){for(w=b;w=0;C--){if(r[C]!=N)break;t[C]=s}}}function I(e,t,n){if(o=e){u=i+1;while(u=e)u++;for(a=i,l=u-1;a=t.length||(o=n[r-1])!=b&&o!=w||(c=t[r+1])!=b&&c!=w)return E;return u&&(c=w),c==o?c:E;case k:o=r>0?n[r-1]:S;if(o==b&&r+10&&n[r-1]==b)return b;if(u)return E;p=r+1,h=t.length;while(p=1425&&d<=2303||d==64286;o=t[p];if(v&&(o==y||o==T))return y}if(r<1||(o=t[r-1])==S)return E;return n[r-1];case S:return u=!1,f=!0,s;case x:return l=!0,E;case O:case M:case D:case P:case _:u=!1;case H:return E}}function R(e){var t=e.charCodeAt(0),n=t>>8;return n==0?t>191?g:B[t]:n==5?/[\u0591-\u05f4]/.test(e)?y:g:n==6?/[\u0610-\u061a\u064b-\u065f\u06d6-\u06e4\u06e7-\u06ed]/.test(e)?A:/[\u0660-\u0669\u066b-\u066c]/.test(e)?w:t==1642?L:/[\u06f0-\u06f9]/.test(e)?b:T:n==32&&t<=8287?j[t&255]:n==254?t>=65136?T:E:E}function U(e){return e>="\u064b"&&e<="\u0655"}var r=["\u0621","\u0641"],i=["\u063a","\u064a"],s=0,o=0,u=!1,a=!1,f=!1,l=!1,c=!1,h=!1,p=[[0,3,0,1,0,0,0],[0,3,0,1,2,2,0],[0,3,0,17,2,0,1],[0,3,5,5,4,1,0],[0,3,21,21,4,0,1],[0,3,5,5,4,2,0]],d=[[2,0,1,1,0,1,0],[2,0,1,1,0,2,0],[2,0,2,1,3,2,0],[2,0,2,33,3,1,1]],v=0,m=1,g=0,y=1,b=2,w=3,E=4,S=5,x=6,T=7,N=8,C=9,k=10,L=11,A=12,O=13,M=14,_=15,D=16,P=17,H=18,B=[H,H,H,H,H,H,H,H,H,x,S,x,N,S,H,H,H,H,H,H,H,H,H,H,H,H,H,H,S,S,S,x,N,E,E,L,L,L,E,E,E,E,E,k,C,k,C,C,b,b,b,b,b,b,b,b,b,b,C,E,E,E,E,E,E,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,E,E,E,E,E,E,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,g,E,E,E,E,H,H,H,H,H,H,S,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,H,C,E,L,L,L,L,E,E,E,E,g,E,E,H,E,E,L,L,b,b,E,g,E,E,E,b,g,E,E,E,E,E],j=[N,N,N,N,N,N,N,N,N,N,N,H,H,H,g,y,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,N,S,O,M,_,D,P,C,L,L,L,L,L,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,C,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,E,N];t.L=g,t.R=y,t.EN=b,t.ON_R=3,t.AN=4,t.R_H=5,t.B=6,t.RLE=7,t.DOT="\u00b7",t.doBidiReorder=function(e,n,r){if(e.length<2)return{};var i=e.split(""),o=new Array(i.length),u=new Array(i.length),a=[];s=r?m:v,F(i,a,i.length,n);for(var f=0;fT&&n[f]0&&i[f-1]==="\u0644"&&/\u0622|\u0623|\u0625|\u0627/.test(i[f])&&(a[f-1]=a[f]=t.R_H,f++);i[i.length-1]===t.DOT&&(a[i.length-1]=t.B),i[0]==="\u202b"&&(a[0]=t.RLE);for(var f=0;f=0&&(e=this.session.$docRowCache[n])}return e},this.getSplitIndex=function(){var e=0,t=this.session.$screenRowCache;if(t.length){var n,r=this.session.$getRowCacheIndex(t,this.currentRow);while(this.currentRow-e>0){n=this.session.$getRowCacheIndex(t,this.currentRow-e-1);if(n!==r)break;r=n,e++}}else e=this.currentRow;return e},this.updateRowLine=function(e,t){e===undefined&&(e=this.getDocumentRow());var n=e===this.session.getLength()-1,s=n?this.EOF:this.EOL;this.wrapIndent=0,this.line=this.session.getLine(e),this.isRtlDir=this.$isRtl||this.line.charAt(0)===this.RLE;if(this.session.$useWrapMode){var o=this.session.$wrapData[e];o&&(t===undefined&&(t=this.getSplitIndex()),t>0&&o.length?(this.wrapIndent=o.indent,this.wrapOffset=this.wrapIndent*this.charWidths[r.L],this.line=tt?this.session.getOverwrite()?e:e-1:t,i=r.getVisualFromLogicalIdx(n,this.bidiMap),s=this.bidiMap.bidiLevels,o=0;!this.session.getOverwrite()&&e<=t&&s[i]%2!==0&&i++;for(var u=0;ut&&s[i]%2===0&&(o+=this.charWidths[s[i]]),this.wrapIndent&&(o+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset),this.isRtlDir&&(o+=this.rtlLineOffset),o},this.getSelections=function(e,t){var n=this.bidiMap,r=n.bidiLevels,i,s=[],o=0,u=Math.min(e,t)-this.wrapIndent,a=Math.max(e,t)-this.wrapIndent,f=!1,l=!1,c=0;this.wrapIndent&&(o+=this.isRtlDir?-1*this.wrapOffset:this.wrapOffset);for(var h,p=0;p=u&&hn+s/2){n+=s;if(r===i.length-1){s=0;break}s=this.charWidths[i[++r]]}return r>0&&i[r-1]%2!==0&&i[r]%2===0?(e0&&i[r-1]%2===0&&i[r]%2!==0?t=1+(e>n?this.bidiMap.logicalFromVisual[r]:this.bidiMap.logicalFromVisual[r-1]):this.isRtlDir&&r===i.length-1&&s===0&&i[r-1]%2===0||!this.isRtlDir&&r===0&&i[r]%2!==0?t=1+this.bidiMap.logicalFromVisual[r]:(r>0&&i[r-1]%2!==0&&s!==0&&r--,t=this.bidiMap.logicalFromVisual[r]),t===0&&this.isRtlDir&&t++,t+this.wrapIndent}}).call(o.prototype),t.BidiHandler=o}),define("ace/selection",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter","ace/range"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/lang"),s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=function(e){this.session=e,this.doc=e.getDocument(),this.clearSelection(),this.cursor=this.lead=this.doc.createAnchor(0,0),this.anchor=this.doc.createAnchor(0,0),this.$silent=!1;var t=this;this.cursor.on("change",function(e){t.$cursorChanged=!0,t.$silent||t._emit("changeCursor"),!t.$isEmpty&&!t.$silent&&t._emit("changeSelection"),!t.$keepDesiredColumnOnChange&&e.old.column!=e.value.column&&(t.$desiredColumn=null)}),this.anchor.on("change",function(){t.$anchorChanged=!0,!t.$isEmpty&&!t.$silent&&t._emit("changeSelection")})};(function(){r.implement(this,s),this.isEmpty=function(){return this.$isEmpty||this.anchor.row==this.lead.row&&this.anchor.column==this.lead.column},this.isMultiLine=function(){return!this.$isEmpty&&this.anchor.row!=this.cursor.row},this.getCursor=function(){return this.lead.getPosition()},this.setSelectionAnchor=function(e,t){this.$isEmpty=!1,this.anchor.setPosition(e,t)},this.getAnchor=this.getSelectionAnchor=function(){return this.$isEmpty?this.getSelectionLead():this.anchor.getPosition()},this.getSelectionLead=function(){return this.lead.getPosition()},this.isBackwards=function(){var e=this.anchor,t=this.lead;return e.row>t.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.$isEmpty?o.fromPoints(t,t):this.isBackwards()?o.fromPoints(t,e):o.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){this.$setSelection(0,0,Number.MAX_VALUE,Number.MAX_VALUE)},this.setRange=this.setSelectionRange=function(e,t){var n=t?e.end:e.start,r=t?e.start:e.end;this.$setSelection(n.row,n.column,r.row,r.column)},this.$setSelection=function(e,t,n,r){if(this.$silent)return;var i=this.$isEmpty,s=this.inMultiSelectMode;this.$silent=!0,this.$cursorChanged=this.$anchorChanged=!1,this.anchor.setPosition(e,t),this.cursor.setPosition(n,r),this.$isEmpty=!o.comparePoints(this.anchor,this.cursor),this.$silent=!1,this.$cursorChanged&&this._emit("changeCursor"),(this.$cursorChanged||this.$anchorChanged||i!=this.$isEmpty||s)&&this._emit("changeSelection")},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if(typeof t=="undefined"){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var n=typeof e=="number"?e:this.lead.row,r,i=this.session.getFoldLine(n);return i?(n=i.start.row,r=i.end.row):r=n,t===!0?new o(n,0,r,this.session.getLine(r).length):new o(n,0,r+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.wouldMoveIntoSoftTab=function(e,t,n){var r=e.column,i=e.column+t;return n<0&&(r=e.column-t,i=e.column),this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(r,i).split(" ").length-1==t},this.moveCursorLeft=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,-1))this.moveCursorTo(t.start.row,t.start.column);else if(e.column===0)e.row>0&&this.moveCursorTo(e.row-1,this.doc.getLine(e.row-1).length);else{var n=this.session.getTabSize();this.wouldMoveIntoSoftTab(e,n,-1)&&!this.session.getNavigateWithinSoftTabs()?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,1))this.moveCursorTo(t.end.row,t.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=r)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t);this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var i=this.session.getFoldAt(e,t,1);if(i){this.moveCursorTo(i.end.row,i.end.column);return}this.session.nonTokenRe.exec(r)&&(t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,r=n.substring(t));if(t>=n.length){this.moveCursorTo(e,n.length),this.moveCursorRight(),e0&&this.moveCursorWordLeft();return}this.session.tokenRe.exec(s)&&(t-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0),this.moveCursorTo(e,t)},this.$shortWordEndIndex=function(e){var t=0,n,r=/\s/,i=this.session.tokenRe;i.lastIndex=0;if(this.session.tokenRe.exec(e))t=this.session.tokenRe.lastIndex;else{while((n=e[t])&&r.test(n))t++;if(t<1){i.lastIndex=0;while((n=e[t])&&!i.test(n)){i.lastIndex=0,t++;if(r.test(n)){if(t>2){t--;break}while((n=e[t])&&r.test(n))t++;if(t>2)break}}}}return i.lastIndex=0,t},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i=this.session.getFoldAt(e,t,1);if(i)return this.moveCursorTo(i.end.row,i.end.column);if(t==n.length){var s=this.doc.getLength();do e++,r=this.doc.getLine(e);while(e0&&/^\s*$/.test(r));t=r.length,/\s+$/.test(r)||(r="")}var s=i.stringReverse(r),o=this.$shortWordEndIndex(s);return this.moveCursorTo(e,t-o)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var n=this.session.documentToScreenPosition(this.lead.row,this.lead.column),r;t===0&&(e!==0&&(this.session.$bidiHandler.isBidiRow(n.row,this.lead.row)?(r=this.session.$bidiHandler.getPosLeft(n.column),n.column=Math.round(r/this.session.$bidiHandler.charWidths[0])):r=n.column*this.session.$bidiHandler.charWidths[0]),this.$desiredColumn?n.column=this.$desiredColumn:this.$desiredColumn=n.column);if(e!=0&&this.session.lineWidgets&&this.session.lineWidgets[this.lead.row]){var i=this.session.lineWidgets[this.lead.row];e<0?e-=i.rowsAbove||0:e>0&&(e+=i.rowCount-(i.rowsAbove||0))}var s=this.session.screenToDocumentPosition(n.row+e,n.column,r);e!==0&&t===0&&s.row===this.lead.row&&s.column===this.lead.column,this.moveCursorTo(s.row,s.column+t,t===0)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,n){var r=this.session.getFoldAt(e,t,1);r&&(e=r.start.row,t=r.start.column),this.$keepDesiredColumnOnChange=!0;var i=this.session.getLine(e);/[\uDC00-\uDFFF]/.test(i.charAt(t))&&i.charAt(t-1)&&(this.lead.row==e&&this.lead.column==t+1?t-=1:t+=1),this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,n){var r=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(r.row,r.column,n)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e(this);var n=this.getCursor();return o.fromPoints(t,n)}catch(r){return o.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else{var e=this.getRange();e.isBackwards=this.isBackwards()}return e},this.fromJSON=function(e){if(e.start==undefined){if(this.rangeList&&e.length>1){this.toSingleRange(e[0]);for(var t=e.length;t--;){var n=o.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(n.cursor=n.start),this.addRange(n,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(u.prototype),t.Selection=u}),define("ace/tokenizer",["require","exports","module","ace/config"],function(e,t,n){"use strict";var r=e("./config"),i=2e3,s=function(e){this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){var n=this.states[t],r=[],i=0,s=this.matchMappings[t]={defaultToken:"text"},o="g",u=[];for(var a=0;a1?f.onMatch=this.$applyToken:f.onMatch=f.token),c>1&&(/\\\d/.test(f.regex)?l=f.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+i+1)}):(c=1,l=this.removeCapturingGroups(f.regex)),!f.splitRegex&&typeof f.token!="string"&&u.push(f)),s[i]=a,i+=c,r.push(l),f.onMatch||(f.onMatch=null)}r.length||(s[0]=0,r.push("$")),u.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,o)},this),this.regExps[t]=new RegExp("("+r.join(")|(")+")|($)",o)}};(function(){this.$setMaxTokenCount=function(e){i=e|0},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),n=this.token.apply(this,t);if(typeof n=="string")return[{type:n,value:e}];var r=[];for(var i=0,s=n.length;il){var g=e.substring(l,m-v.length);h.type==p?h.value+=g:(h.type&&f.push(h),h={type:p,value:g})}for(var y=0;yi){c>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});while(l1&&n[0]!==r&&n.unshift("#tmp",r),{tokens:f,state:n.length?n:r}},this.reportError=r.reportError}).call(s.prototype),t.Tokenizer=s}),define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../lib/lang"),i=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(!t){for(var n in e)this.$rules[n]=e[n];return}for(var n in e){var r=e[n];for(var i=0;i=this.$rowTokens.length){this.$row+=1,e||(e=this.$session.getLength());if(this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(n!==undefined)return n;n=0;while(t>0)t-=1,n+=e[t].value.length;return n},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}},this.getCurrentTokenRange=function(){var e=this.$rowTokens[this.$tokenIndex],t=this.getCurrentTokenColumn();return new r(this.$row,t,this.$row,t+e.value.length)}}).call(i.prototype),t.TokenIterator=i}),define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","rparen","paren","punctuation.operator"],a=["text","paren.rparen","rparen","paren","punctuation.operator","comment"],f,l={},c={'"':'"',"'":"'"},h=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},p=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},d=function(e){this.add("braces","insertion",function(t,n,r,i,s){var u=r.getCursorPosition(),a=i.doc.getLine(u.row);if(s=="{"){h(r);var l=r.getSelectionRange(),c=i.doc.getTextRange(l);if(c!==""&&c!=="{"&&r.getWrapBehavioursEnabled())return p(l,c,"{","}");if(d.isSaneInsertion(r,i))return/[\]\}\)]/.test(a[u.column])||r.inMultiSelectMode||e&&e.braces?(d.recordAutoInsert(r,i,"}"),{text:"{}",selection:[1,1]}):(d.recordMaybeInsert(r,i,"{"),{text:"{",selection:[1,1]})}else if(s=="}"){h(r);var v=a.substring(u.column,u.column+1);if(v=="}"){var m=i.$findOpeningBracket("}",{column:u.column+1,row:u.row});if(m!==null&&d.isAutoInsertedClosing(u,a,s))return d.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(s=="\n"||s=="\r\n"){h(r);var g="";d.isMaybeInsertedClosing(u,a)&&(g=o.stringRepeat("}",f.maybeInsertedBrackets),d.clearMaybeInsertedClosing());var v=a.substring(u.column,u.column+1);if(v==="}"){var y=i.findMatchingBracket({row:u.row,column:u.column+1},"}");if(!y)return null;var b=this.$getIndent(i.getLine(y.row))}else{if(!g){d.clearMaybeInsertedClosing();return}var b=this.$getIndent(a)}var w=b+i.getTabString();return{text:"\n"+w+"\n"+b+g,selection:[1,w.length,1,w.length]}}d.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){h(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){h(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return p(s,o,"(",")");if(d.isSaneInsertion(n,r))return d.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){h(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&d.isAutoInsertedClosing(u,a,i))return d.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){h(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){h(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return p(s,o,"[","]");if(d.isSaneInsertion(n,r))return d.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){h(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&d.isAutoInsertedClosing(u,a,i))return d.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){h(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){var s=r.$mode.$quotes||c;if(i.length==1&&s[i]){if(this.lineCommentStart&&this.lineCommentStart.indexOf(i)!=-1)return;h(n);var o=i,u=n.getSelectionRange(),a=r.doc.getTextRange(u);if(a!==""&&(a.length!=1||!s[a])&&n.getWrapBehavioursEnabled())return p(u,a,o,o);if(!a){var f=n.getCursorPosition(),l=r.doc.getLine(f.row),d=l.substring(f.column-1,f.column),v=l.substring(f.column,f.column+1),m=r.getTokenAt(f.row,f.column),g=r.getTokenAt(f.row,f.column+1);if(d=="\\"&&m&&/escape/.test(m.type))return null;var y=m&&/string|escape/.test(m.type),b=!g||/string|escape/.test(g.type),w;if(v==o)w=y!==b,w&&/string\.end/.test(g.type)&&(w=!1);else{if(y&&!b)return null;if(y&&b)return null;var E=r.$mode.tokenRe;E.lastIndex=0;var S=E.test(d);E.lastIndex=0;var x=E.test(d);if(S||x)return null;if(v&&!/[\s;,.})\]\\]/.test(v))return null;var T=l[f.column-2];if(!(d!=o||T!=o&&!E.test(T)))return null;w=!0}return{text:w?o+o:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.$mode.$quotes||c,o=r.doc.getTextRange(i);if(!i.isMultiLine()&&s.hasOwnProperty(o)){h(n);var u=r.doc.getLine(i.start.row),a=u.substring(i.start.column+1,i.start.column+2);if(a==o)return i.end.column++,i}})};d.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){if(/[)}\]]/.test(e.session.getLine(n.row)[n.column]))return!0;var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},d.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},d.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},d.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},d.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},d.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},d.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},d.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(d,i),t.CstyleBehaviour=d}),define("ace/unicode",["require","exports","module"],function(e,t,n){"use strict";var r=[48,9,8,25,5,0,2,25,48,0,11,0,5,0,6,22,2,30,2,457,5,11,15,4,8,0,2,0,18,116,2,1,3,3,9,0,2,2,2,0,2,19,2,82,2,138,2,4,3,155,12,37,3,0,8,38,10,44,2,0,2,1,2,1,2,0,9,26,6,2,30,10,7,61,2,9,5,101,2,7,3,9,2,18,3,0,17,58,3,100,15,53,5,0,6,45,211,57,3,18,2,5,3,11,3,9,2,1,7,6,2,2,2,7,3,1,3,21,2,6,2,0,4,3,3,8,3,1,3,3,9,0,5,1,2,4,3,11,16,2,2,5,5,1,3,21,2,6,2,1,2,1,2,1,3,0,2,4,5,1,3,2,4,0,8,3,2,0,8,15,12,2,2,8,2,2,2,21,2,6,2,1,2,4,3,9,2,2,2,2,3,0,16,3,3,9,18,2,2,7,3,1,3,21,2,6,2,1,2,4,3,8,3,1,3,2,9,1,5,1,2,4,3,9,2,0,17,1,2,5,4,2,2,3,4,1,2,0,2,1,4,1,4,2,4,11,5,4,4,2,2,3,3,0,7,0,15,9,18,2,2,7,2,2,2,22,2,9,2,4,4,7,2,2,2,3,8,1,2,1,7,3,3,9,19,1,2,7,2,2,2,22,2,9,2,4,3,8,2,2,2,3,8,1,8,0,2,3,3,9,19,1,2,7,2,2,2,22,2,15,4,7,2,2,2,3,10,0,9,3,3,9,11,5,3,1,2,17,4,23,2,8,2,0,3,6,4,0,5,5,2,0,2,7,19,1,14,57,6,14,2,9,40,1,2,0,3,1,2,0,3,0,7,3,2,6,2,2,2,0,2,0,3,1,2,12,2,2,3,4,2,0,2,5,3,9,3,1,35,0,24,1,7,9,12,0,2,0,2,0,5,9,2,35,5,19,2,5,5,7,2,35,10,0,58,73,7,77,3,37,11,42,2,0,4,328,2,3,3,6,2,0,2,3,3,40,2,3,3,32,2,3,3,6,2,0,2,3,3,14,2,56,2,3,3,66,5,0,33,15,17,84,13,619,3,16,2,25,6,74,22,12,2,6,12,20,12,19,13,12,2,2,2,1,13,51,3,29,4,0,5,1,3,9,34,2,3,9,7,87,9,42,6,69,11,28,4,11,5,11,11,39,3,4,12,43,5,25,7,10,38,27,5,62,2,28,3,10,7,9,14,0,89,75,5,9,18,8,13,42,4,11,71,55,9,9,4,48,83,2,2,30,14,230,23,280,3,5,3,37,3,5,3,7,2,0,2,0,2,0,2,30,3,52,2,6,2,0,4,2,2,6,4,3,3,5,5,12,6,2,2,6,67,1,20,0,29,0,14,0,17,4,60,12,5,0,4,11,18,0,5,0,3,9,2,0,4,4,7,0,2,0,2,0,2,3,2,10,3,3,6,4,5,0,53,1,2684,46,2,46,2,132,7,6,15,37,11,53,10,0,17,22,10,6,2,6,2,6,2,6,2,6,2,6,2,6,2,6,2,31,48,0,470,1,36,5,2,4,6,1,5,85,3,1,3,2,2,89,2,3,6,40,4,93,18,23,57,15,513,6581,75,20939,53,1164,68,45,3,268,4,27,21,31,3,13,13,1,2,24,9,69,11,1,38,8,3,102,3,1,111,44,25,51,13,68,12,9,7,23,4,0,5,45,3,35,13,28,4,64,15,10,39,54,10,13,3,9,7,22,4,1,5,66,25,2,227,42,2,1,3,9,7,11171,13,22,5,48,8453,301,3,61,3,105,39,6,13,4,6,11,2,12,2,4,2,0,2,1,2,1,2,107,34,362,19,63,3,53,41,11,5,15,17,6,13,1,25,2,33,4,2,134,20,9,8,25,5,0,2,25,12,88,4,5,3,5,3,5,3,2],i=0,s=[];for(var o=0;o2?r%f!=f-1:r%f==0}}var E=Infinity;w(function(e,t){var n=e.search(/\S/);n!==-1?(ne.length&&(E=e.length)}),u==Infinity&&(u=E,s=!1,o=!1),l&&u%f!=0&&(u=Math.floor(u/f)*f),w(o?m:v)},this.toggleBlockComment=function(e,t,n,r){var i=this.blockComment;if(!i)return;!i.start&&i[0]&&(i=i[0]);var s=new f(t,r.row,r.column),o=s.getCurrentToken(),u=t.selection,a=t.selection.toOrientedRange(),c,h;if(o&&/comment/.test(o.type)){var p,d;while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.start);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;p=new l(m,g,m,g+i.start.length);break}o=s.stepBackward()}var s=new f(t,r.row,r.column),o=s.getCurrentToken();while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.end);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;d=new l(m,g,m,g+i.end.length);break}o=s.stepForward()}d&&t.remove(d),p&&(t.remove(p),c=p.start.row,h=-i.start.length)}else h=i.start.length,c=n.start.row,t.insert(n.end,i.end),t.insert(n.start,i.start);a.start.row==c&&(a.start.column+=h),a.end.row==c&&(a.end.column+=h),t.selection.fromOrientedRange(a)},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.autoOutdent=function(e,t,n){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)if(e[t]){var n=e[t],i=n.prototype.$id,s=r.$modes[i];s||(r.$modes[i]=s=new n),r.$modes[t]||(r.$modes[t]=s),this.$embeds.push(t),this.$modes[t]=s}var o=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(var t=0;t=0&&t.row=0&&t.column<=e[t.row].length}function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.action must be 'insert' or 'remove'"),t.lines instanceof Array||r(t,"delta.lines must be an Array"),(!t.start||!t.end)&&r(t,"delta.start/end must be an present");var n=t.start;i(e,t.start)||r(t,"delta.start must be contained in document");var s=t.end;t.action=="remove"&&!i(e,s)&&r(t,"delta.end must contained in document for 'remove' actions");var o=s.row-n.row,u=s.column-(o==0?n.column:0);(o!=t.lines.length-1||t.lines[o].length!=u)&&r(t,"delta.range must match delta lines")}t.applyDelta=function(e,t,n){var r=t.start.row,i=t.start.column,s=e[r]||"";switch(t.action){case"insert":var o=t.lines;if(o.length===1)e[r]=s.substring(0,i)+t.lines[0]+s.substring(i);else{var u=[r,1].concat(t.lines);e.splice.apply(e,u),e[r]=s.substring(0,i)+e[r],e[r+t.lines.length-1]+=s.substring(i)}break;case"remove":var a=t.end.column,f=t.end.row;r===f?e[r]=s.substring(0,i)+s.substring(a):e.splice(r,f-r+1,s.substring(0,i)+e[f].substring(a))}}}),define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){function e(e,t,n){var r=n?e.column<=t.column:e.columnthis.row)return;var n=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=e("./anchor").Anchor,a=function(e){this.$lines=[""],e.length===0?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){r.implement(this,s),this.setValue=function(e){var t=this.getLength()-1;this.remove(new o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new u(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),r=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:r,action:"insert",lines:[t]},!0),this.clonePos(r)},this.clippedPos=function(e,t){var n=this.getLength();e===undefined?e=n:e<0?e=0:e>=n&&(e=n-1,t=undefined);var r=this.getLine(e);return t==undefined&&(t=r.length),t=Math.min(Math.max(t,0),r.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var n=0;e0,r=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){e instanceof o||(e=o.fromPoints(e.start,e.end));if(t.length===0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var n;return t?n=this.insert(e.start,t):n=e.start,n},this.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var n=e.action=="insert";if(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))return;n&&e.lines.length>2e4?this.$splitAndapplyLargeDelta(e,2e4):(i(this.$lines,e,t),this._signal("change",e))},this.$splitAndapplyLargeDelta=function(e,t){var n=e.lines,r=n.length-t+1,i=e.start.row,s=e.start.column;for(var o=0,u=0;o20){n.running=setTimeout(n.$worker,20);break}}n.currentLine=t,r==-1&&(r=t),s<=r&&n.fireUpdateEvent(s,r)}};(function(){r.implement(this,i),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._signal("update",{data:n})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.start.row,n=e.end.row-t;if(n===0)this.lines[t]=null;else if(e.action=="remove")this.lines.splice(t,n+1,null),this.states.splice(t,n+1,null);else{var r=Array(n+1);r.unshift(t,1),this.lines.splice.apply(this.lines,r),this.states.splice.apply(this.states,r)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1],r=this.tokenizer.getLineTokens(t,n,e);return this.states[e]+""!=r.state+""?(this.states[e]=r.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=r.tokens}}).call(s.prototype),t.BackgroundTokenizer=s}),define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(e,t,n){this.setRegexp(e),this.clazz=t,this.type=n||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){if(this.regExp+""==e+"")return;this.regExp=e,this.cache=[]},this.update=function(e,t,n,i){if(!this.regExp)return;var o=i.firstRow,u=i.lastRow;for(var a=o;a<=u;a++){var f=this.cache[a];f==null&&(f=r.getMatchOffsets(n.getLine(a),this.regExp),f.length>this.MAX_RANGES&&(f=f.slice(0,this.MAX_RANGES)),f=f.map(function(e){return new s(a,e.offset,a,e.offset+e.length)}),this.cache[a]=f.length?f:"");for(var l=f.length;l--;)t.drawSingleLineMarker(e,f[l].toScreenRange(n),this.clazz,i)}}}).call(o.prototype),t.SearchHighlight=o}),define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,n){"use strict";function i(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var n=t[t.length-1];this.range=new r(t[0].start.row,t[0].start.column,n.end.row,n.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var r=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,n){var r=0,i=this.folds,s,o,u,a=!0;t==null&&(t=this.end.row,n=this.end.column);for(var f=0;f0)continue;var a=i(e,o.start);return u===0?t&&a!==0?-s-2:s:a>0||a===0&&!t?s:-s-1}return-s-1},this.add=function(e){var t=!e.isEmpty(),n=this.pointIndex(e.start,t);n<0&&(n=-n-1);var r=this.pointIndex(e.end,t,n);return r<0?r=-r-1:r++,this.ranges.splice(n,r-n,e)},this.addList=function(e){var t=[];for(var n=e.length;n--;)t.push.apply(t,this.add(e[n]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return i(e.start,t.start)});var n=t[0],r;for(var s=1;s=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.row=r)break}if(e.action=="insert"){var f=i-r,l=-t.column+n.column;for(;or)break;a.start.row==r&&a.start.column>=t.column&&(a.start.column==t.column&&this.$bias<=0||(a.start.column+=l,a.start.row+=f));if(a.end.row==r&&a.end.column>=t.column){if(a.end.column==t.column&&this.$bias<0)continue;a.end.column==t.column&&l>0&&oa.start.column&&a.end.column==s[o+1].start.column&&(a.end.column-=l),a.end.column+=l,a.end.row+=f}}}else{var f=r-i,l=t.column-n.column;for(;oi)break;if(a.end.rowt.column)a.end.column=t.column,a.end.row=t.row}else a.end.column+=l,a.end.row+=f;else a.end.row>i&&(a.end.row+=f);if(a.start.rowt.column)a.start.column=t.column,a.start.row=t.row}else a.start.column+=l,a.start.row+=f;else a.start.row>i&&(a.start.row+=f)}}if(f!=0&&o=e)return i;if(i.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,r=0;t&&(r=n.indexOf(t)),r==-1&&(r=0);for(r;r=e)return i}return null},this.getFoldedRowCount=function(e,t){var n=this.$foldData,r=t-e+1;for(var i=0;i=t){u=e?r-=t-u:r=0);break}o>=e&&(u>=e?r-=o-u:r-=o-e+1)}return r},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var n=this.$foldData,r=!1,o;e instanceof s?o=e:(o=new s(t,e),o.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(o.range);var u=o.start.row,a=o.start.column,f=o.end.row,l=o.end.column,c=this.getFoldAt(u,a,1),h=this.getFoldAt(f,l,-1);if(c&&h==c)return c.addSubFold(o);c&&!c.range.isStart(u,a)&&this.removeFold(c),h&&!h.range.isEnd(f,l)&&this.removeFold(h);var p=this.getFoldsInRange(o.range);p.length>0&&(this.removeFolds(p),p.forEach(function(e){o.addSubFold(e)}));for(var d=0;d0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var n,i;e==null?(n=new r(0,0,this.getLength(),0),t=!0):typeof e=="number"?n=new r(e,0,e,this.getLine(e).length):"row"in e?n=r.fromPoints(e,e):n=e,i=this.getFoldsInRangeList(n);if(t)this.removeFolds(i);else{var s=i;while(s.length)this.expandFolds(s),s=this.getFoldsInRangeList(n)}if(i.length)return i},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var n=this.getFoldLine(e,t);return n?n.end.row:e},this.getRowFoldStart=function(e,t){var n=this.getFoldLine(e,t);return n?n.start.row:e},this.getFoldDisplayLine=function(e,t,n,r,i){r==null&&(r=e.start.row),i==null&&(i=0),t==null&&(t=e.end.row),n==null&&(n=this.getLine(t).length);var s=this.doc,o="";return e.walk(function(e,t,n,u){if(tl)break}while(s&&a.test(s.type));s=i.stepBackward()}else s=i.getCurrentToken();return f.end.row=i.getCurrentTokenRow(),f.end.column=i.getCurrentTokenColumn()+s.value.length-2,f}},this.foldAll=function(e,t,n){n==undefined&&(n=1e5);var r=this.foldWidgets;if(!r)return;t=t||this.getLength(),e=e||0;for(var i=e;i=e){i=s.end.row;try{var o=this.addFold("...",s);o&&(o.collapseChildren=n)}catch(u){}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle==e)return;this.$foldStyle=e,e=="manual"&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)},this.$setFolding=function(e){if(this.$foldMode==e)return;this.$foldMode=e,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("changeAnnotation");if(!e||this.$foldStyle=="manual"){this.foldWidgets=null;return}this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)},this.getParentFoldRangeData=function(e,t){var n=this.foldWidgets;if(!n||t&&n[e])return{};var r=e-1,i;while(r>=0){var s=n[r];s==null&&(s=n[r]=this.getFoldWidget(r));if(s=="start"){var o=this.getFoldWidgetRange(r);i||(i=o);if(o&&o.end.row>=e)break}r--}return{range:r!==-1&&o,firstRange:i}},this.onFoldWidgetClick=function(e,t){t=t.domEvent;var n={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey},r=this.$toggleFoldWidget(e,n);if(!r){var i=t.target||t.srcElement;i&&/ace_fold-widget/.test(i.className)&&(i.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(!this.getFoldWidget)return;var n=this.getFoldWidget(e),r=this.getLine(e),i=n==="end"?-1:1,s=this.getFoldAt(e,i===-1?0:r.length,i);if(s)return t.children||t.all?this.removeFold(s):this.expandFold(s),s;var o=this.getFoldWidgetRange(e,!0);if(o&&!o.isMultiLine()){s=this.getFoldAt(o.start.row,o.start.column,1);if(s&&o.isEqual(s.range))return this.removeFold(s),s}if(t.siblings){var u=this.getParentFoldRangeData(e);if(u.range)var a=u.range.start.row+1,f=u.range.end.row;this.foldAll(a,f,t.all?1e4:0)}else t.children?(f=o?o.end.row:this.getLength(),this.foldAll(e+1,f,t.all?1e4:0)):o&&(t.all&&(o.collapseChildren=1e4),this.addFold("...",o));return o},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var n=this.$toggleFoldWidget(t,{});if(n)return;var r=this.getParentFoldRangeData(t,!0);n=r.range||r.firstRange;if(n){t=n.start.row;var i=this.getFoldAt(t,this.getLine(t).length,1);i?this.removeFold(i):this.addFold("...",n)}},this.updateFoldWidgets=function(e){var t=e.start.row,n=e.end.row-t;if(n===0)this.foldWidgets[t]=null;else if(e.action=="remove")this.foldWidgets.splice(t,n+1,null);else{var r=Array(n+1);r.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,r)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}var r=e("../range").Range,i=e("./fold_line").FoldLine,s=e("./fold").Fold,o=e("../token_iterator").TokenIterator;t.Folding=u}),define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,n){"use strict";function s(){this.findMatchingBracket=function(e,t){if(e.column==0)return null;var n=t||this.getLine(e.row).charAt(e.column-1);if(n=="")return null;var r=n.match(/([\(\[\{])|([\)\]\}])/);return r?r[1]?this.$findClosingBracket(r[1],e):this.$findOpeningBracket(r[2],e):null},this.getBracketRange=function(e){var t=this.getLine(e.row),n=!0,r,s=t.charAt(e.column-1),o=s&&s.match(/([\(\[\{])|([\)\]\}])/);o||(s=t.charAt(e.column),e={row:e.row,column:e.column+1},o=s&&s.match(/([\(\[\{])|([\)\]\}])/),n=!1);if(!o)return null;if(o[1]){var u=this.$findClosingBracket(o[1],e);if(!u)return null;r=i.fromPoints(e,u),n||(r.end.column++,r.start.column--),r.cursor=r.end}else{var u=this.$findOpeningBracket(o[2],e);if(!u)return null;r=i.fromPoints(u,e),n||(r.start.column++,r.end.column--),r.cursor=r.start}return r},this.getMatchingBracketRanges=function(e){var t=this.getLine(e.row),n=t.charAt(e.column-1),r=n&&n.match(/([\(\[\{])|([\)\]\}])/);r||(n=t.charAt(e.column),e={row:e.row,column:e.column+1},r=n&&n.match(/([\(\[\{])|([\)\]\}])/));if(!r)return null;var s=new i(e.row,e.column-1,e.row,e.column),o=r[1]?this.$findClosingBracket(r[1],e):this.$findOpeningBracket(r[2],e);if(!o)return[s];var u=new i(o.row,o.column,o.row,o.column+1);return[s,u]},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{","<":">",">":"<"},this.$findOpeningBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));var a=t.column-o.getCurrentTokenColumn()-2,f=u.value;for(;;){while(a>=0){var l=f.charAt(a);if(l==i){s-=1;if(s==0)return{row:o.getCurrentTokenRow(),column:a+o.getCurrentTokenColumn()}}else l==e&&(s+=1);a-=1}do u=o.stepBackward();while(u&&!n.test(u.type));if(u==null)break;f=u.value,a=f.length-1}return null},this.$findClosingBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));var a=t.column-o.getCurrentTokenColumn();for(;;){var f=u.value,l=f.length;while(a=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510}r.implement(this,u),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e){this.$docRowCache=[],this.$screenRowCache=[];return}var t=this.$docRowCache.length,n=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>n&&(this.$docRowCache.splice(n,t),this.$screenRowCache.splice(n,t))},this.$getRowCacheIndex=function(e,t){var n=0,r=e.length-1;while(n<=r){var i=n+r>>1,s=e[i];if(t>s)n=i+1;else{if(!(t=t)break}return r=n[s],r?(r.index=s,r.start=i-r.value.length,r):null},this.setUndoManager=function(e){this.$undoManager=e,this.$informUndoManager&&this.$informUndoManager.cancel();if(e){var t=this;e.addSession(this),this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.mergeUndoDeltas=!1},this.$informUndoManager=i.delayedCall(this.$syncInformUndoManager)}else this.$syncInformUndoManager=function(){}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},hasUndo:function(){},hasRedo:function(){},reset:function(){},add:function(){},addSelection:function(){},startNewGroup:function(){},addSession:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?i.stringRepeat(" ",this.getTabSize()):" "},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize===0},this.setNavigateWithinSoftTabs=function(e){this.setOption("navigateWithinSoftTabs",e)},this.getNavigateWithinSoftTabs=function(){return this.$navigateWithinSoftTabs},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(r=!!n.charAt(t-1).match(this.tokenRe)),r||(r=!!n.charAt(t).match(this.tokenRe));if(r)var i=this.tokenRe;else if(/^\s+$/.test(n.slice(t-1,t+1)))var i=/\s/;else var i=this.nonTokenRe;var s=t;if(s>0){do s--;while(s>=0&&n.charAt(s).match(i));s++}var o=t;while(oe&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){this.$modified=!1;if(this.$useWrapMode)return this.screenWidth=this.$wrapLimit;var t=this.doc.getAllLines(),n=this.$rowLengthCache,r=0,i=0,s=this.$foldData[i],o=s?s.start.row:Infinity,u=t.length;for(var a=0;ao){a=s.end.row+1;if(a>=u)break;s=this.$foldData[i++],o=s?s.start.row:Infinity}n[a]==null&&(n[a]=this.$getStringScreenWidth(t[a])[0]),n[a]>r&&(r=n[a])}this.screenWidth=r}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},this.undoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;for(var n=e.length-1;n!=-1;n--){var r=e[n];r.action=="insert"||r.action=="remove"?this.doc.revertDelta(r):r.folds&&this.addFolds(r.folds)}!t&&this.$undoSelect&&(e.selectionBefore?this.selection.fromJSON(e.selectionBefore):this.selection.setRange(this.$getUndoSelection(e,!0))),this.$fromUndo=!1},this.redoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;for(var n=0;ne.end.column&&(s.start.column+=u),s.end.row==e.end.row&&s.end.column>e.end.column&&(s.end.column+=u)),o&&s.start.row>=e.end.row&&(s.start.row+=o,s.end.row+=o)}s.end=this.insert(s.start,r);if(i.length){var a=e.start,f=s.start,o=f.row-a.row,u=f.column-a.column;this.addFolds(i.map(function(e){return e=e.clone(),e.start.row==a.row&&(e.start.column+=u),e.end.row==a.row&&(e.end.column+=u),e.start.row+=o,e.end.row+=o,e}))}return s},this.indentRows=function(e,t,n){n=n.replace(/\t/g,this.getTabString());for(var r=e;r<=t;r++)this.doc.insertInLine({row:r,column:0},n)},this.outdentRows=function(e){var t=e.collapseRows(),n=new l(0,0,0,0),r=this.getTabSize();for(var i=t.start.row;i<=t.end.row;++i){var s=this.getLine(i);n.start.row=i,n.end.row=i;for(var o=0;o0){var r=this.getRowFoldEnd(t+n);if(r>this.doc.getLength()-1)return 0;var i=r-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var i=t-e+1}var s=new l(e,0,t,Number.MAX_VALUE),o=this.getFoldsInRange(s).map(function(e){return e=e.clone(),e.start.row+=i,e.end.row+=i,e}),u=n==0?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+i,u),o.length&&this.addFolds(o),i},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){t=Math.max(0,t);if(e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0);if(e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){if(this.$wrapLimitRange.min!==e||this.$wrapLimitRange.max!==t)this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$bidiHandler.markAsDirty(),this.$useWrapMode&&this._signal("changeWrapMode")},this.adjustWrapLimit=function(e,t){var n=this.$wrapLimitRange;n.max<0&&(n={min:t,max:t});var r=this.$constrainWrapLimit(e,n.min,n.max);return r!=this.$wrapLimit&&r>1?(this.$wrapLimit=r,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1},this.$constrainWrapLimit=function(e,t,n){return t&&(e=Math.max(t,e)),n&&(e=Math.min(n,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n=e.action,r=e.start,i=e.end,s=r.row,o=i.row,u=o-s,a=null;this.$updating=!0;if(u!=0)if(n==="remove"){this[t?"$wrapData":"$rowLengthCache"].splice(s,u);var f=this.$foldData;a=this.getFoldsInRange(e),this.removeFolds(a);var l=this.getFoldLine(i.row),c=0;if(l){l.addRemoveChars(i.row,i.column,r.column-i.column),l.shiftRow(-u);var h=this.getFoldLine(s);h&&h!==l&&(h.merge(l),l=h),c=f.indexOf(l)+1}for(c;c=i.row&&l.shiftRow(-u)}o=s}else{var p=Array(u);p.unshift(s,0);var d=t?this.$wrapData:this.$rowLengthCache;d.splice.apply(d,p);var f=this.$foldData,l=this.getFoldLine(s),c=0;if(l){var v=l.range.compareInside(r.row,r.column);v==0?(l=l.split(r.row,r.column),l&&(l.shiftRow(u),l.addRemoveChars(o,0,i.column-r.column))):v==-1&&(l.addRemoveChars(s,0,i.column-r.column),l.shiftRow(u)),c=f.indexOf(l)+1}for(c;c=s&&l.shiftRow(u)}}else{u=Math.abs(e.start.column-e.end.column),n==="remove"&&(a=this.getFoldsInRange(e),this.removeFolds(a),u=-u);var l=this.getFoldLine(s);l&&l.addRemoveChars(s,r.column,u)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(s,o):this.$updateRowLengthCache(s,o),a},this.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var r=this.doc.getAllLines(),i=this.getTabSize(),o=this.$wrapData,u=this.$wrapLimit,a,f,l=e;t=Math.min(t,r.length-1);while(l<=t)f=this.getFoldLine(l,f),f?(a=[],f.walk(function(e,t,i,o){var u;if(e!=null){u=this.$getDisplayTokens(e,a.length),u[0]=n;for(var f=1;fr-b){var w=f+r-b;if(e[w-1]>=c&&e[w]>=c){y(w);continue}if(e[w]==n||e[w]==s){for(w;w!=f-1;w--)if(e[w]==n)break;if(w>f){y(w);continue}w=f+r;for(w;w>2)),f-1);while(w>E&&e[w]E&&e[w]E&&e[w]==a)w--}else while(w>E&&e[w]E){y(++w);continue}w=f+r,e[w]==t&&w--,y(w-b)}return o},this.$getDisplayTokens=function(n,r){var i=[],s;r=r||0;for(var o=0;o39&&u<48||u>57&&u<64?i.push(a):u>=4352&&m(u)?i.push(e,t):i.push(e)}return i},this.$getStringScreenWidth=function(e,t,n){if(t==0)return[0,0];t==null&&(t=Infinity),n=n||0;var r,i;for(i=0;i=4352&&m(r)?n+=2:n+=1;if(n>t)break}return[n,i]},this.lineWidgets=null,this.getRowLength=function(e){var t=1;return this.lineWidgets&&(t+=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0),!this.$useWrapMode||!this.$wrapData[e]?t:this.$wrapData[e].length+t},this.getRowLineCount=function(e){return!this.$useWrapMode||!this.$wrapData[e]?1:this.$wrapData[e].length+1},this.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),n=this.$wrapData[t.row];return n.length&&n[0]=0)var u=f[l],i=this.$docRowCache[l],h=e>f[c-1];else var h=!c;var p=this.getLength()-1,d=this.getNextFoldLine(i),v=d?d.start.row:Infinity;while(u<=e){a=this.getRowLength(i);if(u+a>e||i>=p)break;u+=a,i++,i>v&&(i=d.end.row+1,d=this.getNextFoldLine(i,d),v=d?d.start.row:Infinity),h&&(this.$docRowCache.push(i),this.$screenRowCache.push(u))}if(d&&d.start.row<=i)r=this.getFoldDisplayLine(d),i=d.start.row;else{if(u+a<=e||i>p)return{row:p,column:this.getLine(p).length};r=this.getLine(i),d=null}var m=0,g=Math.floor(e-u);if(this.$useWrapMode){var y=this.$wrapData[i];y&&(o=y[g],g>0&&y.length&&(m=y.indent,s=y[g-1]||y[y.length-1],r=r.substring(s)))}return n!==undefined&&this.$bidiHandler.isBidiRow(u+g,i,g)&&(t=this.$bidiHandler.offsetToCol(n)),s+=this.$getStringScreenWidth(r,t-m)[1],this.$useWrapMode&&s>=o&&(s=o-1),d?d.idxToPosition(s):{row:i,column:s}},this.documentToScreenPosition=function(e,t){if(typeof t=="undefined")var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var r=0,i=null,s=null;s=this.getFoldAt(e,t,1),s&&(e=s.start.row,t=s.start.column);var o,u=0,a=this.$docRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var u=a[f],r=this.$screenRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getNextFoldLine(u),p=h?h.start.row:Infinity;while(u=p){o=h.end.row+1;if(o>e)break;h=this.getNextFoldLine(o,h),p=h?h.start.row:Infinity}else o=u+1;r+=this.getRowLength(u),u=o,c&&(this.$docRowCache.push(u),this.$screenRowCache.push(r))}var d="";h&&u>=p?(d=this.getFoldDisplayLine(h,e,t),i=h.start.row):(d=this.getLine(e).substring(0,t),i=e);var v=0;if(this.$useWrapMode){var m=this.$wrapData[i];if(m){var g=0;while(d.length>=m[g])r++,g++;d=d.substring(m[g-1]||0,d.length),v=g>0?m.indent:0}}return this.lineWidgets&&this.lineWidgets[u]&&this.lineWidgets[u].rowsAbove&&(r+=this.lineWidgets[u].rowsAbove),{row:r,column:v+this.$getStringScreenWidth(d)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(!this.$useWrapMode){e=this.getLength();var n=this.$foldData;for(var r=0;ro&&(s=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:Infinity)}}return this.lineWidgets&&(e+=this.$getWidgetScreenLength()),e},this.$setFontMetrics=function(e){if(!this.$enableVarChar)return;this.$getStringScreenWidth=function(t,n,r){if(n===0)return[0,0];n||(n=Infinity),r=r||0;var i,s;for(s=0;sn)break}return[r,s]}},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()},this.isFullWidth=m}.call(d.prototype),e("./edit_session/folding").Folding.call(d.prototype),e("./edit_session/bracket_match").BracketMatch.call(d.prototype),o.defineOptions(d.prototype,"session",{wrap:{set:function(e){!e||e=="off"?e=!1:e=="free"?e=!0:e=="printMargin"?e=-1:typeof e=="string"&&(e=parseInt(e,10)||!1);if(this.$wrap==e)return;this.$wrap=e;if(!e)this.setUseWrapMode(!1);else{var t=typeof e=="number"?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}},get:function(){return this.getUseWrapMode()?this.$wrap==-1?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){e=e=="auto"?this.$mode.type!="text":e!="text",e!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0)))},initialValue:"auto"},indentedSoftWrap:{set:function(){this.$useWrapMode&&(this.$useWrapMode=!1,this.setUseWrapMode(!0))},initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){e=parseInt(e),e>0&&this.$tabSize!==e&&(this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize"))},initialValue:4,handlesSet:!0},navigateWithinSoftTabs:{initialValue:!1},foldStyle:{set:function(e){this.setFoldStyle(e)},handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId},handlesSet:!0}}),t.EditSession=d}),define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";function u(e,t){function n(e){return/\w/.test(e)||t.regExp?"\\b":""}return n(e[0])+e+n(e[e.length-1])}var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(){this.$options={}};(function(){this.set=function(e){return i.mixin(this.$options,e),this},this.getOptions=function(){return r.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,n=this.$matchIterator(e,t);if(!n)return!1;var r=null;return n.forEach(function(e,n,i,o){return r=new s(e,n,i,o),n==o&&t.start&&t.start.start&&t.skipCurrent!=0&&r.isEqual(t.start)?(r=null,!1):!0}),r},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var n=t.range,i=n?e.getLines(n.start.row,n.end.row):e.doc.getAllLines(),o=[],u=t.re;if(t.$isMultiLine){var a=u.length,f=i.length-a,l;e:for(var c=u.offset||0;c<=f;c++){for(var h=0;hv)continue;o.push(l=new s(c,v,c+a-1,m)),a>2&&(c=c+a-2)}}else for(var g=0;gE&&o[h].end.row==n.end.row)h--;o=o.slice(g,h+1);for(g=0,h=o.length;g=u;n--)if(c(n,Number.MAX_VALUE,e))return;if(t.wrap==0)return;for(n=a,u=o.row;n>=u;n--)if(c(n,Number.MAX_VALUE,e))return};else var f=function(e){var n=o.row;if(c(n,o.column,e))return;for(n+=1;n<=a;n++)if(c(n,0,e))return;if(t.wrap==0)return;for(n=u,a=o.row;n<=a;n++)if(c(n,0,e))return};if(t.$isMultiLine)var l=n.length,c=function(t,i,s){var o=r?t-l+1:t;if(o<0)return;var u=e.getLine(o),a=u.search(n[0]);if(!r&&ai)return;if(s(o,a,o+l-1,c))return!0};else if(r)var c=function(t,r,i){var s=e.getLine(t),o=[],u,a=0;n.lastIndex=0;while(u=n.exec(s)){var f=u[0].length;a=u.index;if(!f){if(a>=s.length)break;n.lastIndex=a+=1}if(u.index+f>r)break;o.push(u.index,f)}for(var l=o.length-1;l>=0;l-=2){var c=o[l-1],f=o[l];if(i(t,c,t,c+f))return!0}};else var c=function(t,r,i){var s=e.getLine(t),o,u;n.lastIndex=r;while(u=n.exec(s)){var a=u[0].length;o=u.index;if(i(t,o,t,o+a))return!0;if(!a){n.lastIndex=o+=1;if(o>=s.length)return!1}}};return{forEach:f}}}).call(o.prototype),t.Search=o}),define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function o(e,t){this.platform=t||(i.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function u(e,t){o.call(this,e,t),this.$singleCommand=!1}var r=e("../lib/keys"),i=e("../lib/useragent"),s=r.KEY_MODS;u.prototype=o.prototype,function(){function e(e){return typeof e=="object"&&e.bindKey&&e.bindKey.position||(e.isDefault?-100:0)}this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var n=e&&(typeof e=="string"?e:e.name);e=this.commands[n],t||delete this.commands[n];var r=this.commandKeyBinding;for(var i in r){var s=r[i];if(s==e)delete r[i];else if(Array.isArray(s)){var o=s.indexOf(e);o!=-1&&(s.splice(o,1),s.length==1&&(r[i]=s[0]))}}},this.bindKey=function(e,t,n){typeof e=="object"&&e&&(n==undefined&&(n=e.position),e=e[this.platform]);if(!e)return;if(typeof t=="function")return this.addCommand({exec:t,bindKey:e,name:t.name||e});e.split("|").forEach(function(e){var r="";if(e.indexOf(" ")!=-1){var i=e.split(/\s+/);e=i.pop(),i.forEach(function(e){var t=this.parseKeys(e),n=s[t.hashId]+t.key;r+=(r?" ":"")+n,this._addCommandToBinding(r,"chainKeys")},this),r+=" "}var o=this.parseKeys(e),u=s[o.hashId]+o.key;this._addCommandToBinding(r+u,t,n)},this)},this._addCommandToBinding=function(t,n,r){var i=this.commandKeyBinding,s;if(!n)delete i[t];else if(!i[t]||this.$singleCommand)i[t]=n;else{Array.isArray(i[t])?(s=i[t].indexOf(n))!=-1&&i[t].splice(s,1):i[t]=[i[t]],typeof r!="number"&&(r=e(n));var o=i[t];for(s=0;sr)break}o.splice(s,0,n)}},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var n=e[t];if(!n)return;if(typeof n=="string")return this.bindKey(n,t);typeof n=="function"&&(n={exec:n});if(typeof n!="object")return;n.name||(n.name=t),this.addCommand(n)},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),n=t.pop(),i=r[n];if(r.FUNCTION_KEYS[i])n=r.FUNCTION_KEYS[i].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(t.length==1&&t[0]=="shift")return{key:n.toUpperCase(),hashId:-1}}var s=0;for(var o=t.length;o--;){var u=r.KEY_MODS[t[o]];if(u==null)return typeof console!="undefined"&&console.error("invalid modifier "+t[o]+" in "+e),!1;s|=u}return{key:n,hashId:s}},this.findKeyCommand=function(t,n){var r=s[t]+n;return this.commandKeyBinding[r]},this.handleKeyboard=function(e,t,n,r){if(r<0)return;var i=s[t]+n,o=this.commandKeyBinding[i];e.$keyChain&&(e.$keyChain+=" "+i,o=this.commandKeyBinding[e.$keyChain]||o);if(o)if(o=="chainKeys"||o[o.length-1]=="chainKeys")return e.$keyChain=e.$keyChain||i,{command:"null"};if(e.$keyChain)if(!!t&&t!=4||n.length!=1){if(t==-1||r>0)e.$keyChain=""}else e.$keyChain=e.$keyChain.slice(0,-i.length-1);return{command:o}},this.getStatusText=function(e,t){return t.$keyChain||""}}.call(o.prototype),t.HashHandler=o,t.MultiHashHandler=u}),define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../keyboard/hash_handler").MultiHashHandler,s=e("../lib/event_emitter").EventEmitter,o=function(e,t){i.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};r.inherits(o,i),function(){r.implement(this,s),this.exec=function(e,t,n){if(Array.isArray(e)){for(var r=e.length;r--;)if(this.exec(e[r],t,n))return!0;return!1}typeof e=="string"&&(e=this.commands[e]);if(!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;if(this.$checkCommandState!=0&&e.isAvailable&&!e.isAvailable(t))return!1;var i={editor:t,command:e,args:n};return i.returnValue=this._emit("exec",i),this._signal("afterExec",i),i.returnValue===!1?!1:!0},this.toggleRecording=function(e){if(this.$inReplay)return;return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(e){if(this.$inReplay||!this.macro)return;if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){typeof t=="string"?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}},this.trimMacro=function(e){return e.map(function(e){return typeof e[0]!="string"&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(o.prototype),t.CommandManager=o}),define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,n){"use strict";function o(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),i=e("../config"),s=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:o("Ctrl-,","Command-,"),exec:function(e){i.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:o("Alt-E","F4"),exec:function(e){i.loadModule("./ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:o("Alt-Shift-E","Shift-F4"),exec:function(e){i.loadModule("./ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",description:"Select all",bindKey:o("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",description:"Center selection",bindKey:o(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",description:"Go to line...",bindKey:o("Ctrl-L","Command-L"),exec:function(e,t){typeof t=="number"&&!isNaN(t)&&e.gotoLine(t),e.prompt({$type:"gotoLine"})},readOnly:!0},{name:"fold",bindKey:o("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:o("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:o("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:o("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",description:"Fold all",bindKey:o(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",description:"Fold other",bindKey:o("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",description:"Unfold all",bindKey:o("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",description:"Find next",bindKey:o("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",description:"Find previous",bindKey:o("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",description:"Select or find next",bindKey:o("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",description:"Select or find previous",bindKey:o("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",description:"Find",bindKey:o("Ctrl-F","Command-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",description:"Overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",description:"Select to start",bindKey:o("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",description:"Go to start",bindKey:o("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",description:"Select up",bindKey:o("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",description:"Go line up",bindKey:o("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",description:"Select to end",bindKey:o("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",description:"Go to end",bindKey:o("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",description:"Select down",bindKey:o("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",description:"Go line down",bindKey:o("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",description:"Select word left",bindKey:o("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",description:"Go to word left",bindKey:o("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",description:"Select to line start",bindKey:o("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",description:"Go to line start",bindKey:o("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",description:"Select left",bindKey:o("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",description:"Go to left",bindKey:o("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",description:"Select word right",bindKey:o("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",description:"Go to word right",bindKey:o("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",description:"Select to line end",bindKey:o("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",description:"Go to line end",bindKey:o("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",description:"Select right",bindKey:o("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",description:"Go to right",bindKey:o("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",description:"Select page down",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",description:"Page down",bindKey:o(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",description:"Go to page down",bindKey:o("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",description:"Select page up",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",description:"Page up",bindKey:o(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",description:"Go to page up",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",description:"Scroll up",bindKey:o("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",description:"Scroll down",bindKey:o("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",description:"Select line start",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",description:"Select line end",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",description:"Toggle recording",bindKey:o("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",description:"Replay macro",bindKey:o("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",description:"Jump to matching",bindKey:o("Ctrl-\\|Ctrl-P","Command-\\"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",description:"Select to matching",bindKey:o("Ctrl-Shift-\\|Ctrl-Shift-P","Command-Shift-\\"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",description:"Expand to matching",bindKey:o("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",description:"Pass keys to browser",bindKey:o(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",description:"Copy",exec:function(e){},readOnly:!0},{name:"cut",description:"Cut",exec:function(e){var t=e.$copyWithEmptySelection&&e.selection.isEmpty(),n=t?e.selection.getLineRange():e.selection.getRange();e._emit("cut",n),n.isEmpty()||e.session.remove(n),e.clearSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",description:"Paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",description:"Remove line",bindKey:o("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",description:"Duplicate selection",bindKey:o("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",description:"Sort lines",bindKey:o("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",description:"Toggle comment",bindKey:o("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",description:"Toggle block comment",bindKey:o("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",description:"Modify number up",bindKey:o("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",description:"Modify number down",bindKey:o("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",description:"Replace",bindKey:o("Ctrl-H","Command-Option-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",description:"Undo",bindKey:o("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",description:"Redo",bindKey:o("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",description:"Copy lines up",bindKey:o("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",description:"Move lines up",bindKey:o("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",description:"Copy lines down",bindKey:o("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",description:"Move lines down",bindKey:o("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",description:"Delete",bindKey:o("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",description:"Backspace",bindKey:o("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",description:"Cut or delete",bindKey:o("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",description:"Remove to line start",bindKey:o("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",description:"Remove to line end",bindKey:o("Alt-Delete","Ctrl-K|Command-Delete"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestarthard",description:"Remove to line start hard",bindKey:o("Ctrl-Shift-Backspace",null),exec:function(e){var t=e.selection.getRange();t.start.column=0,e.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineendhard",description:"Remove to line end hard",bindKey:o("Ctrl-Shift-Delete",null),exec:function(e){var t=e.selection.getRange();t.end.column=Number.MAX_VALUE,e.session.remove(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",description:"Remove word left",bindKey:o("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",description:"Remove word right",bindKey:o("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",description:"Outdent",bindKey:o("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",description:"Indent",bindKey:o("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",description:"Block outdent",bindKey:o("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",description:"Block indent",bindKey:o("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",description:"Insert string",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",description:"Insert text",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",description:"Split line",bindKey:o(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",description:"Transpose letters",bindKey:o("Alt-Shift-X","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",description:"To uppercase",bindKey:o("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",description:"To lowercase",bindKey:o("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",description:"Expand to line",bindKey:o("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",description:"Join lines",bindKey:o(null,null),exec:function(e){var t=e.selection.isBackwards(),n=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),i=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),o=e.session.doc.getLine(n.row).length,u=e.session.doc.getTextRange(e.selection.getRange()),a=u.replace(/\n\s*/," ").length,f=e.session.doc.getLine(n.row);for(var l=n.row+1;l<=i.row+1;l++){var c=r.stringTrimLeft(r.stringTrimRight(e.session.doc.getLine(l)));c.length!==0&&(c=" "+c),f+=c}i.row+10?(e.selection.moveCursorTo(n.row,n.column),e.selection.selectTo(n.row,n.column+a)):(o=e.session.doc.getLine(n.row).length>o?o+1:o,e.selection.moveCursorTo(n.row,o))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",description:"Invert selection",bindKey:o(null,null),exec:function(e){var t=e.session.doc.getLength()-1,n=e.session.doc.getLine(t).length,r=e.selection.rangeList.ranges,i=[];r.length<1&&(r=[e.selection.getRange()]);for(var o=0;o=i.lastRow||r.end.row<=i.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead);break;default:}n=="animate"&&this.renderer.animateScrolling(this.curOp.scrollTop)}var s=this.selection.toJSON();this.curOp.selectionAfter=s,this.$lastSel=this.selection.toJSON(),this.session.getUndoManager().addSelection(s),this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(!this.$mergeUndoDeltas)return;var t=this.prevOp,n=this.$mergeableCommands,r=t.command&&e.command.name==t.command.name;if(e.command.name=="insertstring"){var i=e.args;this.mergeNextCommand===undefined&&(this.mergeNextCommand=!0),r=r&&this.mergeNextCommand&&(!/\s/.test(i)||/\s/.test(t.args)),this.mergeNextCommand=!0}else r=r&&n.indexOf(e.command.name)!==-1;this.$mergeUndoDeltas!="always"&&Date.now()-this.sequenceStartTime>2e3&&(r=!1),r?this.session.mergeUndoDeltas=!0:n.indexOf(e.command.name)!==-1&&(this.sequenceStartTime=Date.now())},this.setKeyboardHandler=function(e,t){if(e&&typeof e=="string"&&e!="ace"){this.$keybindingId=e;var n=this;g.loadModule(["keybinding",e],function(r){n.$keybindingId==e&&n.keyBinding.setKeyboardHandler(r&&r.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session==e)return;this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange);var n=this.session.getSelection();n.off("changeCursor",this.$onCursorChange),n.off("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.on("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.onCursorChange(),this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this}),e&&e.bgTokenizer&&e.bgTokenizer.scheduleStart()},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?t==1?this.navigateFileEnd():t==-1&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||i.computedStyle(this.container).fontSize},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){if(this.$highlightPending)return;var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(!t||!t.bgTokenizer)return;t.$bracketHighlight&&(t.$bracketHighlight.markerIds.forEach(function(e){t.removeMarker(e)}),t.$bracketHighlight=null);var n=t.getMatchingBracketRanges(e.getCursorPosition());!n&&t.$mode.getMatching&&(n=t.$mode.getMatching(e.session));if(!n)return;var r="ace_bracket";Array.isArray(n)?n.length==1&&(r="ace_error_bracket"):n=[n],n.length==2&&(p.comparePoints(n[0].end,n[1].start)==0?n=[p.fromPoints(n[0].start,n[1].end)]:p.comparePoints(n[0].start,n[1].end)==0&&(n=[p.fromPoints(n[1].start,n[0].end)])),t.$bracketHighlight={ranges:n,markerIds:n.map(function(e){return t.addMarker(e,r,"text")})}},50)},this.$highlightTags=function(){if(this.$highlightTagPending)return;var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(!t||!t.bgTokenizer)return;var n=e.getCursorPosition(),r=new y(e.session,n.row,n.column),i=r.getCurrentToken();if(!i||!/\b(?:tag-open|tag-name)/.test(i.type)){t.removeMarker(t.$tagHighlight),t.$tagHighlight=null;return}if(i.type.indexOf("tag-open")!=-1){i=r.stepForward();if(!i)return}var s=i.value,o=0,u=r.stepBackward();if(u.value=="<"){do u=i,i=r.stepForward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="=0)}else{do i=u,u=r.stepBackward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="1)&&(t=!1)}if(e.$highlightLineMarker&&!t)e.removeMarker(e.$highlightLineMarker.id),e.$highlightLineMarker=null;else if(!e.$highlightLineMarker&&t){var n=new p(t.row,t.column,t.row,Infinity);n.id=e.addMarker(n,"ace_active-line","screenLine"),e.$highlightLineMarker=n}else t&&(e.$highlightLineMarker.start.row=t.row,e.$highlightLineMarker.end.row=t.row,e.$highlightLineMarker.start.column=t.column,e._signal("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null;if(!this.selection.isEmpty()){var n=this.selection.getRange(),r=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,"ace_selection",r)}else this.$updateHighlightActiveLine();var i=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(i),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(t.isEmpty()||t.isMultiLine())return;var n=t.start.column,r=t.end.column,i=e.getLine(t.start.row),s=i.substring(n,r);if(s.length>5e3||!/[\w\d]/.test(s))return;var o=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:s}),u=i.substring(n-1,r+1);if(!o.test(u))return;return o},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText(),t=this.session.doc.getNewLineCharacter(),n=!1;if(!e&&this.$copyWithEmptySelection){n=!0;var r=this.selection.getAllRanges();for(var i=0;iu.search(/\S|$/)){var a=u.substr(i.column).search(/\S|$/);n.doc.removeInLine(i.row,i.column,i.column+a)}}this.clearSelection();var f=i.column,l=n.getState(i.row),u=n.getLine(i.row),c=r.checkOutdent(l,u,e);n.insert(i,e),s&&s.selection&&(s.selection.length==2?this.selection.setSelectionRange(new p(i.row,f+s.selection[0],i.row,f+s.selection[1])):this.selection.setSelectionRange(new p(i.row+s.selection[0],s.selection[1],i.row+s.selection[2],s.selection[3])));if(n.getDocument().isNewLine(e)){var h=r.getNextLineIndent(l,u.slice(0,i.column),n.getTabString());n.insert({row:i.row+1,column:0},h)}c&&r.autoOutdent(l,n,i.row)},this.onTextInput=function(e,t){if(!t)return this.keyBinding.onTextInput(e);this.startOperation({command:{name:"insertstring"}});var n=this.applyComposition.bind(this,e,t);this.selection.rangeCount?this.forEachSelection(n):n(),this.endOperation()},this.applyComposition=function(e,t){if(t.extendLeft||t.extendRight){var n=this.selection.getRange();n.start.column-=t.extendLeft,n.end.column+=t.extendRight,this.selection.setRange(n),!e&&!n.isEmpty()&&this.remove()}(e||!this.selection.isEmpty())&&this.insert(e,!0);if(t.restoreStart||t.restoreEnd){var n=this.selection.getRange();n.start.column-=t.restoreStart,n.end.column-=t.restoreEnd,this.selection.setRange(n)}},this.onCommandKey=function(e,t,n){return this.keyBinding.onCommandKey(e,t,n)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&(e=="left"?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,r=n.getState(t.start.row),i=n.getMode().transformAction(r,"deletion",this,n,t);if(t.end.column===0){var s=n.getTextRange(t);if(s[s.length-1]=="\n"){var o=n.getLine(t.end.row);/^\s+$/.test(o)&&(t.end.column=o.length)}}i&&(t=i)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.selection.isEmpty()&&this.selection.selectLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(!this.selection.isEmpty())return;var e=this.getCursorPosition(),t=e.column;if(t===0)return;var n=this.session.getLine(e.row),r,i;tt.toLowerCase()?1:0});var i=new p(0,0,0,0);for(var r=e.first;r<=e.last;r++){var s=t.getLine(r);i.start.row=r,i.end.row=r,i.end.column=s.length,t.replace(i,n[r-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),n=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,n,e)},this.getNumberAt=function(e,t){var n=/[\-]?[0-9]+(?:\.[0-9]+)?/g;n.lastIndex=0;var r=this.session.getLine(e);while(n.lastIndex=t){var s={value:i[0],start:i.index,end:i.index+i[0].length};return s}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,r=new p(t,n-1,t,n),i=this.session.getTextRange(r);if(!isNaN(parseFloat(i))&&isFinite(i)){var s=this.getNumberAt(t,n);if(s){var o=s.value.indexOf(".")>=0?s.start+s.value.indexOf(".")+1:s.end,u=s.start+s.value.length-o,a=parseFloat(s.value);a*=Math.pow(10,u),o!==s.end&&n=u&&o<=a&&(n=t,f.selection.clearSelection(),f.moveCursorTo(e,u+r),f.selection.selectTo(e,a+r)),u=a});var l=this.$toggleWordPairs,c;for(var h=0;hp+1)break;p=d.last}l--,u=this.session.$moveLines(h,p,t?0:e),t&&e==-1&&(c=l+1);while(c<=l)o[c].moveBy(u,0),c++;t||(u=0),a+=u}i.fromOrientedRange(i.ranges[0]),i.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(e)},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var n=this.renderer,r=this.renderer.layerConfig,i=e*Math.floor(r.height/r.lineHeight);t===!0?this.selection.$moveSelection(function(){this.moveCursorBy(i,0)}):t===!1&&(this.selection.moveCursorBy(i,0),this.selection.clearSelection());var s=n.scrollTop;n.scrollBy(0,i*r.lineHeight),t!=null&&n.scrollCursorIntoView(null,.5),n.animateScrolling(s)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,n,r){this.renderer.scrollToLine(e,t,n,r)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.selection.selectAll()},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var n=this.getCursorPosition(),r=new y(this.session,n.row,n.column),i=r.getCurrentToken(),s=i||r.stepForward();if(!s)return;var o,u=!1,a={},f=n.column-s.start,l,c={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(s.value.match(/[{}()\[\]]/g))for(;f=0;--s)this.$tryReplace(n[s],e)&&r++;return this.selection.setSelectionRange(i),r},this.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return t=this.$search.replace(n,t),t!==null?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,n){t||(t={}),typeof e=="string"||e instanceof RegExp?t.needle=e:typeof e=="object"&&r.mixin(t,e);var i=this.selection.getRange();t.needle==null&&(e=this.session.getTextRange(i)||this.$search.$options.needle,e||(i=this.session.getWordRange(i.start.row,i.start.column),e=this.session.getTextRange(i)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:i});var s=this.$search.find(this.session);if(t.preventScroll)return s;if(s)return this.revealRange(s,n),s;t.backwards?i.start=i.end:i.end=i.start,this.selection.setRange(i)},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.session.unfold(e),this.selection.setSelectionRange(e);var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!==!1&&this.renderer.animateScrolling(n)},this.undo=function(){this.session.getUndoManager().undo(this.session),this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.session.getUndoManager().redo(this.session),this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy(),this._$emitInputEvent&&this._$emitInputEvent.cancel(),this.session=null},this.setAutoScrollEditorIntoView=function(e){if(!e)return;var t,n=this,r=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var i=this.$scrollAnchor;i.style.cssText="position:absolute",this.container.insertBefore(i,this.container.firstChild);var s=this.on("changeSelection",function(){r=!0}),o=this.renderer.on("beforeRender",function(){r&&(t=n.renderer.container.getBoundingClientRect())}),u=this.renderer.on("afterRender",function(){if(r&&t&&(n.isFocused()||n.searchBox&&n.searchBox.isFocused())){var e=n.renderer,s=e.$cursorLayer.$pixelPos,o=e.layerConfig,u=s.top-o.offset;s.top>=0&&u+t.top<0?r=!0:s.topwindow.innerHeight?r=!1:r=null,r!=null&&(i.style.top=u+"px",i.style.left=s.left+"px",i.style.height=o.lineHeight+"px",i.scrollIntoView(r)),r=t=null}});this.setAutoScrollEditorIntoView=function(e){if(e)return;delete this.setAutoScrollEditorIntoView,this.off("changeSelection",s),this.renderer.off("afterRender",u),this.renderer.off("beforeRender",o)}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;if(!t)return;t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&e!="wide",i.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e))},this.prompt=function(e,t,n){var r=this;g.loadModule("./ext/prompt",function(i){i.prompt(r,e,t,n)})}}.call(w.prototype),g.defineOptions(w.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.textInput.setReadOnly(e),this.$resetCursorStyle()},initialValue:!1},copyWithEmptySelection:{set:function(e){this.textInput.setCopyWithEmptySelection(e)},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},keyboardHandler:{set:function(e){this.setKeyboardHandler(e)},get:function(){return this.$keybindingId},handlesSet:!0},value:{set:function(e){this.session.setValue(e)},get:function(){return this.getValue()},handlesSet:!0,hidden:!0},session:{set:function(e){this.setSession(e)},get:function(){return this.session},handlesSet:!0,hidden:!0},showLineNumbers:{set:function(e){this.renderer.$gutterLayer.setShowLineNumbers(e),this.renderer.$loop.schedule(this.renderer.CHANGE_GUTTER),e&&this.$relativeLineNumbers?E.attach(this):E.detach(this)},initialValue:!0},relativeLineNumbers:{set:function(e){this.$showLineNumbers&&e?E.attach(this):E.detach(this)}},placeholder:{set:function(e){this.$updatePlaceholder||(this.$updatePlaceholder=function(){var e=this.renderer.$composition||this.getValue();if(e&&this.renderer.placeholderNode)this.renderer.off("afterRender",this.$updatePlaceholder),i.removeCssClass(this.container,"ace_hasPlaceholder"),this.renderer.placeholderNode.remove(),this.renderer.placeholderNode=null;else if(!e&&!this.renderer.placeholderNode){this.renderer.on("afterRender",this.$updatePlaceholder),i.addCssClass(this.container,"ace_hasPlaceholder");var t=i.createElement("div");t.className="ace_placeholder",t.textContent=this.$placeholder||"",this.renderer.placeholderNode=t,this.renderer.content.appendChild(this.renderer.placeholderNode)}}.bind(this),this.on("input",this.$updatePlaceholder)),this.$updatePlaceholder()}},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",displayIndentGuides:"renderer",showGutter:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",hasCssTransforms:"renderer",maxPixelHeight:"renderer",useTextareaForIME:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimeout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",navigateWithinSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"});var E={getText:function(e,t){return(Math.abs(e.selection.lead.row-t)||t+1+(t<9?"\u00b7":""))+""},getWidth:function(e,t,n){return Math.max(t.toString().length,(n.lastRow+1).toString().length,2)*n.characterWidth},update:function(e,t){t.renderer.$loop.schedule(t.renderer.CHANGE_GUTTER)},attach:function(e){e.renderer.$gutterLayer.$renderer=this,e.on("changeSelection",this.update),this.update(null,e)},detach:function(e){e.renderer.$gutterLayer.$renderer==this&&(e.renderer.$gutterLayer.$renderer=null),e.off("changeSelection",this.update),this.update(null,e)}};t.Editor=w}),define("ace/undomanager",["require","exports","module","ace/range"],function(e,t,n){"use strict";function i(e,t){for(var n=t;n--;){var r=e[n];if(r&&!r[0].ignore){while(n0){a.row+=i,a.column+=a.row==r.row?s:0;continue}!t&&l<=0&&(a.row=n.row,a.column=n.column,l===0&&(a.bias=1))}}function f(e){return{row:e.row,column:e.column}}function l(e){return{start:f(e.start),end:f(e.end),action:e.action,lines:e.lines.slice()}}function c(e){e=e||this;if(Array.isArray(e))return e.map(c).join("\n");var t="";e.action?(t=e.action=="insert"?"+":"-",t+="["+e.lines+"]"):e.value&&(Array.isArray(e.value)?t=e.value.map(h).join("\n"):t=h(e.value)),e.start&&(t+=h(e));if(e.id||e.rev)t+=" ("+(e.id||e.rev)+")";return t}function h(e){return e.start.row+":"+e.start.column+"=>"+e.end.row+":"+e.end.column}function p(e,t){var n=e.action=="insert",r=t.action=="insert";if(n&&r)if(o(t.start,e.end)>=0)m(t,e,-1);else{if(!(o(t.start,e.start)<=0))return null;m(e,t,1)}else if(n&&!r)if(o(t.start,e.end)>=0)m(t,e,-1);else{if(!(o(t.end,e.start)<=0))return null;m(e,t,-1)}else if(!n&&r)if(o(t.start,e.start)>=0)m(t,e,1);else{if(!(o(t.start,e.start)<=0))return null;m(e,t,1)}else if(!n&&!r)if(o(t.start,e.start)>=0)m(t,e,1);else{if(!(o(t.end,e.start)<=0))return null;m(e,t,-1)}return[t,e]}function d(e,t){for(var n=e.length;n--;)for(var r=0;r=0?m(e,t,-1):o(e.start,t.start)<=0?m(t,e,1):(m(e,s.fromPoints(t.start,e.start),-1),m(t,e,1));else if(!n&&r)o(t.start,e.end)>=0?m(t,e,-1):o(t.start,e.start)<=0?m(e,t,1):(m(t,s.fromPoints(e.start,t.start),-1),m(e,t,1));else if(!n&&!r)if(o(t.start,e.end)>=0)m(t,e,-1);else{if(!(o(t.end,e.start)<=0)){var i,u;return o(e.start,t.start)<0&&(i=e,e=y(e,t.start)),o(e.end,t.end)>0&&(u=y(e,t.end)),g(t.end,e.start,e.end,-1),u&&!i&&(e.lines=u.lines,e.start=u.start,e.end=u.end,u=e),[t,i,u].filter(Boolean)}m(e,t,-1)}return[t,e]}function m(e,t,n){g(e.start,t.start,t.end,n),g(e.end,t.start,t.end,n)}function g(e,t,n,r){e.row==(r==1?t:n).row&&(e.column+=r*(n.column-t.column)),e.row+=r*(n.row-t.row)}function y(e,t){var n=e.lines,r=e.end;e.end=f(t);var i=e.end.row-e.start.row,s=n.splice(i,n.length),o=i?t.column:t.column-e.start.column;n.push(s[0].substring(0,o)),s[0]=s[0].substr(o);var u={start:f(t),end:r,lines:s,action:e.action};return u}function b(e,t){t=l(t);for(var n=e.length;n--;){var r=e[n];for(var i=0;i0},this.canRedo=function(){return this.$redoStack.length>0},this.bookmark=function(e){e==undefined&&(e=this.$rev),this.mark=e},this.isAtBookmark=function(){return this.$rev===this.mark},this.toJSON=function(){},this.fromJSON=function(){},this.hasUndo=this.canUndo,this.hasRedo=this.canRedo,this.isClean=this.isAtBookmark,this.markClean=this.bookmark,this.$prettyPrint=function(e){return e?c(e):c(this.$undoStack)+"\n---\n"+c(this.$redoStack)}}).call(r.prototype);var s=e("./range").Range,o=s.comparePoints,u=s.comparePoints;t.UndoManager=r}),define("ace/layer/lines",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=function(e,t){this.element=e,this.canvasHeight=t||5e5,this.element.style.height=this.canvasHeight*2+"px",this.cells=[],this.cellCache=[],this.$offsetCoefficient=0};(function(){this.moveContainer=function(e){r.translate(this.element,0,-(e.firstRowScreen*e.lineHeight%this.canvasHeight)-e.offset*this.$offsetCoefficient)},this.pageChanged=function(e,t){return Math.floor(e.firstRowScreen*e.lineHeight/this.canvasHeight)!==Math.floor(t.firstRowScreen*t.lineHeight/this.canvasHeight)},this.computeLineTop=function(e,t,n){var r=t.firstRowScreen*t.lineHeight,i=Math.floor(r/this.canvasHeight),s=n.documentToScreenRow(e,0)*t.lineHeight;return s-i*this.canvasHeight},this.computeLineHeight=function(e,t,n){return t.lineHeight*n.getRowLineCount(e)},this.getLength=function(){return this.cells.length},this.get=function(e){return this.cells[e]},this.shift=function(){this.$cacheCell(this.cells.shift())},this.pop=function(){this.$cacheCell(this.cells.pop())},this.push=function(e){if(Array.isArray(e)){this.cells.push.apply(this.cells,e);var t=r.createFragment(this.element);for(var n=0;ns&&(a=i.end.row+1,i=t.getNextFoldLine(a,i),s=i?i.start.row:Infinity);if(a>r){while(this.$lines.getLength()>u+1)this.$lines.pop();break}o=this.$lines.get(++u),o?o.row=a:(o=this.$lines.createCell(a,e,this.session,f),this.$lines.push(o)),this.$renderCell(o,e,i,a),a++}this._signal("afterRender"),this.$updateGutterWidth(e)},this.$updateGutterWidth=function(e){var t=this.session,n=t.gutterRenderer||this.$renderer,r=t.$firstLineNumber,i=this.$lines.last()?this.$lines.last().text:"";if(this.$fixedWidth||t.$useWrapMode)i=t.getLength()+r-1;var s=n?n.getWidth(t,i,e):i.toString().length*e.characterWidth,o=this.$padding||this.$computePadding();s+=o.left+o.right,s!==this.gutterWidth&&!isNaN(s)&&(this.gutterWidth=s,this.element.parentNode.style.width=this.element.style.width=Math.ceil(this.gutterWidth)+"px",this._signal("changeGutterWidth",s))},this.$updateCursorRow=function(){if(!this.$highlightGutterLine)return;var e=this.session.selection.getCursor();if(this.$cursorRow===e.row)return;this.$cursorRow=e.row},this.updateLineHighlight=function(){if(!this.$highlightGutterLine)return;var e=this.session.selection.cursor.row;this.$cursorRow=e;if(this.$cursorCell&&this.$cursorCell.row==e)return;this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ",""));var t=this.$lines.cells;this.$cursorCell=null;for(var n=0;n=this.$cursorRow){if(r.row>this.$cursorRow){var i=this.session.getFoldLine(this.$cursorRow);if(!(n>0&&i&&i.start.row==t[n-1].row))break;r=t[n-1]}r.element.className="ace_gutter-active-line "+r.element.className,this.$cursorCell=r;break}}},this.scrollLines=function(e){var t=this.config;this.config=e,this.$updateCursorRow();if(this.$lines.pageChanged(t,e))return this.update(e);this.$lines.moveContainer(e);var n=Math.min(e.lastRow+e.gutterOffset,this.session.getLength()-1),r=this.oldLastRow;this.oldLastRow=n;if(!t||r0;i--)this.$lines.shift();if(r>n)for(var i=this.session.getFoldedRowCount(n+1,r);i>0;i--)this.$lines.pop();e.firstRowr&&this.$lines.push(this.$renderLines(e,r+1,n)),this.updateLineHighlight(),this._signal("afterRender"),this.$updateGutterWidth(e)},this.$renderLines=function(e,t,n){var r=[],i=t,s=this.session.getNextFoldLine(i),o=s?s.start.row:Infinity;for(;;){i>o&&(i=s.end.row+1,s=this.session.getNextFoldLine(i,s),o=s?s.start.row:Infinity);if(i>n)break;var u=this.$lines.createCell(i,e,this.session,f);this.$renderCell(u,e,s,i),r.push(u),i++}return r},this.$renderCell=function(e,t,n,i){var s=e.element,o=this.session,u=s.childNodes[0],a=s.childNodes[1],f=o.$firstLineNumber,l=o.$breakpoints,c=o.$decorations,h=o.gutterRenderer||this.$renderer,p=this.$showFoldWidgets&&o.foldWidgets,d=n?n.start.row:Number.MAX_VALUE,v="ace_gutter-cell ";this.$highlightGutterLine&&(i==this.$cursorRow||n&&i=d&&this.$cursorRow<=n.end.row)&&(v+="ace_gutter-active-line ",this.$cursorCell!=e&&(this.$cursorCell&&(this.$cursorCell.element.className=this.$cursorCell.element.className.replace("ace_gutter-active-line ","")),this.$cursorCell=e)),l[i]&&(v+=l[i]),c[i]&&(v+=c[i]),this.$annotations[i]&&(v+=this.$annotations[i].className),s.className!=v&&(s.className=v);if(p){var m=p[i];m==null&&(m=p[i]=o.getFoldWidget(i))}if(m){var v="ace_fold-widget ace_"+m;m=="start"&&i==d&&in.right-t.right)return"foldWidgets"}}).call(a.prototype),t.Gutter=a}),define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../range").Range,i=e("../lib/dom"),s=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){function e(e,t,n,r){return(e?1:0)|(t?2:0)|(n?4:0)|(r?8:0)}this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.elt=function(e,t){var n=this.i!=-1&&this.element.childNodes[this.i];n?this.i++:(n=document.createElement("div"),this.element.appendChild(n),this.i=-1),n.style.cssText=t,n.className=e},this.update=function(e){if(!e)return;this.config=e,this.i=0;var t;for(var n in this.markers){var r=this.markers[n];if(!r.range){r.update(t,this,this.session,e);continue}var i=r.range.clipRows(e.firstRow,e.lastRow);if(i.isEmpty())continue;i=i.toScreenRange(this.session);if(r.renderer){var s=this.$getTop(i.start.row,e),o=this.$padding+i.start.column*e.characterWidth;r.renderer(t,i,o,s,e)}else r.type=="fullLine"?this.drawFullLineMarker(t,i,r.clazz,e):r.type=="screenLine"?this.drawScreenLineMarker(t,i,r.clazz,e):i.isMultiLine()?r.type=="text"?this.drawTextMarker(t,i,r.clazz,e):this.drawMultiLineMarker(t,i,r.clazz,e):this.drawSingleLineMarker(t,i,r.clazz+" ace_start"+" ace_br15",e)}if(this.i!=-1)while(this.ip,l==f),s,l==f?0:1,o)},this.drawMultiLineMarker=function(e,t,n,r,i){var s=this.$padding,o=r.lineHeight,u=this.$getTop(t.start.row,r),a=s+t.start.column*r.characterWidth;i=i||"";if(this.session.$bidiHandler.isBidiRow(t.start.row)){var f=t.clone();f.end.row=f.start.row,f.end.column=this.session.getLine(f.start.row).length,this.drawBidiSingleLineMarker(e,f,n+" ace_br1 ace_start",r,null,i)}else this.elt(n+" ace_br1 ace_start","height:"+o+"px;"+"right:0;"+"top:"+u+"px;left:"+a+"px;"+(i||""));if(this.session.$bidiHandler.isBidiRow(t.end.row)){var f=t.clone();f.start.row=f.end.row,f.start.column=0,this.drawBidiSingleLineMarker(e,f,n+" ace_br12",r,null,i)}else{u=this.$getTop(t.end.row,r);var l=t.end.column*r.characterWidth;this.elt(n+" ace_br12","height:"+o+"px;"+"width:"+l+"px;"+"top:"+u+"px;"+"left:"+s+"px;"+(i||""))}o=(t.end.row-t.start.row-1)*r.lineHeight;if(o<=0)return;u=this.$getTop(t.start.row+1,r);var c=(t.start.column?1:0)|(t.end.column?0:8);this.elt(n+(c?" ace_br"+c:""),"height:"+o+"px;"+"right:0;"+"top:"+u+"px;"+"left:"+s+"px;"+(i||""))},this.drawSingleLineMarker=function(e,t,n,r,i,s){if(this.session.$bidiHandler.isBidiRow(t.start.row))return this.drawBidiSingleLineMarker(e,t,n,r,i,s);var o=r.lineHeight,u=(t.end.column+(i||0)-t.start.column)*r.characterWidth,a=this.$getTop(t.start.row,r),f=this.$padding+t.start.column*r.characterWidth;this.elt(n,"height:"+o+"px;"+"width:"+u+"px;"+"top:"+a+"px;"+"left:"+f+"px;"+(s||""))},this.drawBidiSingleLineMarker=function(e,t,n,r,i,s){var o=r.lineHeight,u=this.$getTop(t.start.row,r),a=this.$padding,f=this.session.$bidiHandler.getSelections(t.start.column,t.end.column);f.forEach(function(e){this.elt(n,"height:"+o+"px;"+"width:"+e.width+(i||0)+"px;"+"top:"+u+"px;"+"left:"+(a+e.left)+"px;"+(s||""))},this)},this.drawFullLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;t.start.row!=t.end.row&&(o+=this.$getTop(t.end.row,r)-s),this.elt(n,"height:"+o+"px;"+"top:"+s+"px;"+"left:0;right:0;"+(i||""))},this.drawScreenLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;this.elt(n,"height:"+o+"px;"+"top:"+s+"px;"+"left:0;right:0;"+(i||""))}}).call(s.prototype),t.Marker=s}),define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/layer/lines","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("./lines").Lines,u=e("../lib/event_emitter").EventEmitter,a=function(e){this.dom=i,this.element=this.dom.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this),this.$lines=new o(this.element)};(function(){r.implement(this,u),this.EOF_CHAR="\u00b6",this.EOL_CHAR_LF="\u00ac",this.EOL_CHAR_CRLF="\u00a4",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="\u2014",this.SPACE_CHAR="\u00b7",this.$padding=0,this.MAX_LINE_LENGTH=1e4,this.$updateEolChar=function(){var e=this.session.doc,t=e.getNewLineCharacter()=="\n"&&e.getNewLineMode()!="windows",n=t?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=n)return this.EOL_CHAR=n,!0},this.setPadding=function(e){this.$padding=e,this.element.style.margin="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;var t=this.$tabStrings=[0];for(var n=1;nl&&(u=a.end.row+1,a=this.session.getNextFoldLine(u,a),l=a?a.start.row:Infinity);if(u>i)break;var c=s[o++];if(c){this.dom.removeChildren(c),this.$renderLine(c,u,u==l?a:!1),f&&(c.style.top=this.$lines.computeLineTop(u,e,this.session)+"px");var h=e.lineHeight*this.session.getRowLength(u)+"px";c.style.height!=h&&(f=!0,c.style.height=h)}u++}if(f)while(o0;i--)this.$lines.shift();if(t.lastRow>e.lastRow)for(var i=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);i>0;i--)this.$lines.pop();e.firstRowt.lastRow&&this.$lines.push(this.$renderLinesFragment(e,t.lastRow+1,e.lastRow))},this.$renderLinesFragment=function(e,t,n){var r=[],s=t,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>n)break;var a=this.$lines.createCell(s,e,this.session),f=a.element;this.dom.removeChildren(f),i.setStyle(f.style,"height",this.$lines.computeLineHeight(s,e,this.session)+"px"),i.setStyle(f.style,"top",this.$lines.computeLineTop(s,e,this.session)+"px"),this.$renderLine(f,s,s==u?o:!1),this.$useLineGroups()?f.className="ace_line_group":f.className="ace_line",r.push(a),s++}return r},this.update=function(e){this.$lines.moveContainer(e),this.config=e;var t=e.firstRow,n=e.lastRow,r=this.$lines;while(r.getLength())r.pop();r.push(this.$renderLinesFragment(e,t,n))},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,r){var i=this,o=/(\t)|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\uFEFF\uFFF9-\uFFFC]+)|(\u3000)|([\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3001-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]|[\uD800-\uDBFF][\uDC00-\uDFFF])/g,u=this.dom.createFragment(this.element),a,f=0;while(a=o.exec(r)){var l=a[1],c=a[2],h=a[3],p=a[4],d=a[5];if(!i.showInvisibles&&c)continue;var v=f!=a.index?r.slice(f,a.index):"";f=a.index+a[0].length,v&&u.appendChild(this.dom.createTextNode(v,this.element));if(l){var m=i.session.getScreenTabSize(t+a.index);u.appendChild(i.$tabStrings[m].cloneNode(!0)),t+=m-1}else if(c)if(i.showInvisibles){var g=this.dom.createElement("span");g.className="ace_invisible ace_invisible_space",g.textContent=s.stringRepeat(i.SPACE_CHAR,c.length),u.appendChild(g)}else u.appendChild(this.com.createTextNode(c,this.element));else if(h){var g=this.dom.createElement("span");g.className="ace_invisible ace_invisible_space ace_invalid",g.textContent=s.stringRepeat(i.SPACE_CHAR,h.length),u.appendChild(g)}else if(p){t+=1;var g=this.dom.createElement("span");g.style.width=i.config.characterWidth*2+"px",g.className=i.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",g.textContent=i.showInvisibles?i.SPACE_CHAR:p,u.appendChild(g)}else if(d){t+=1;var g=this.dom.createElement("span");g.style.width=i.config.characterWidth*2+"px",g.className="ace_cjk",g.textContent=d,u.appendChild(g)}}u.appendChild(this.dom.createTextNode(f?r.slice(f):r,this.element));if(!this.$textToken[n.type]){var y="ace_"+n.type.replace(/\./g," ace_"),g=this.dom.createElement("span");n.type=="fold"&&(g.style.width=n.value.length*this.config.characterWidth+"px"),g.className=y,g.appendChild(u),e.appendChild(g)}else e.appendChild(u);return t+r.length},this.renderIndentGuide=function(e,t,n){var r=t.search(this.$indentGuideRe);if(r<=0||r>=n)return t;if(t[0]==" "){r-=r%this.tabSize;var i=r/this.tabSize;for(var s=0;s=o)u=this.$renderToken(a,u,l,c.substring(0,o-r)),c=c.substring(o-r),r=o,a=this.$createLineElement(),e.appendChild(a),a.appendChild(this.dom.createTextNode(s.stringRepeat("\u00a0",n.indent),this.element)),i++,u=0,o=n[i]||Number.MAX_VALUE;c.length!=0&&(r+=c.length,u=this.$renderToken(a,u,l,c))}}n[n.length-1]>this.MAX_LINE_LENGTH&&this.$renderOverflowMessage(a,u,null,"",!0)},this.$renderSimpleLine=function(e,t){var n=0,r=t[0],i=r.value;this.displayIndentGuides&&(i=this.renderIndentGuide(e,i)),i&&(n=this.$renderToken(e,n,r,i));for(var s=1;sthis.MAX_LINE_LENGTH)return this.$renderOverflowMessage(e,n,r,i);n=this.$renderToken(e,n,r,i)}},this.$renderOverflowMessage=function(e,t,n,r,i){n&&this.$renderToken(e,t,n,r.slice(0,this.MAX_LINE_LENGTH-t));var s=this.dom.createElement("span");s.className="ace_inline_button ace_keyword ace_toggle_wrap",s.textContent=i?"":"",e.appendChild(s)},this.$renderLine=function(e,t,n){!n&&n!=0&&(n=this.session.getFoldLine(t));if(n)var r=this.$getFoldLineTokens(t,n);else var r=this.session.getTokens(t);var i=e;if(r.length){var s=this.session.getRowSplitData(t);if(s&&s.length){this.$renderWrappedLine(e,r,s);var i=e.lastChild}else{var i=e;this.$useLineGroups()&&(i=this.$createLineElement(),e.appendChild(i)),this.$renderSimpleLine(i,r)}}else this.$useLineGroups()&&(i=this.$createLineElement(),e.appendChild(i));if(this.showInvisibles&&i){n&&(t=n.end.row);var o=this.dom.createElement("span");o.className="ace_invisible ace_invisible_eol",o.textContent=t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,i.appendChild(o)}},this.$getFoldLineTokens=function(e,t){function i(e,t,n){var i=0,s=0;while(s+e[i].value.lengthn-t&&(o=o.substring(0,n-t)),r.push({type:e[i].type,value:o}),s=t+o.length,i+=1}while(sn?r.push({type:e[i].type,value:o.substring(0,n-s)}):r.push(e[i]),s+=o.length,i+=1}}var n=this.session,r=[],s=n.getTokens(e);return t.walk(function(e,t,o,u,a){e!=null?r.push({type:"fold",value:e}):(a&&(s=n.getTokens(t)),s.length&&i(s,u,o))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){}}).call(a.prototype),t.Text=a}),define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=this.$updateOpacity.bind(this)};(function(){this.$updateOpacity=function(e){var t=this.cursors;for(var n=t.length;n--;)r.setStyle(t[n].style,"opacity",e?"":"0")},this.$startCssAnimation=function(){var e=this.cursors;for(var t=e.length;t--;)e[t].style.animationDuration=this.blinkInterval+"ms";setTimeout(function(){r.addCssClass(this.element,"ace_animate-blinking")}.bind(this))},this.$stopCssAnimation=function(){r.removeCssClass(this.element,"ace_animate-blinking")},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e!=this.smoothBlinking&&(this.smoothBlinking=e,r.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.restartTimer())},this.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.$stopCssAnimation(),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking"),e(!0);if(!this.isBlinking||!this.blinkInterval||!this.isVisible){this.$stopCssAnimation();return}this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));if(r.HAS_CSS_ANIMATION)this.$startCssAnimation();else{var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()}},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e),r=this.$padding+(this.session.$bidiHandler.isBidiRow(n.row,e.row)?this.session.$bidiHandler.getPosLeft(n.column):n.column*this.config.characterWidth),i=(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:r,top:i}},this.isCursorInView=function(e,t){return e.top>=0&&e.tope.height+e.offset||o.top<0)&&n>1)continue;var u=this.cursors[i++]||this.addCursor(),a=u.style;this.drawCursor?this.drawCursor(u,o,e,t[n],this.session):this.isCursorInView(o,e)?(r.setStyle(a,"display","block"),r.translate(u,o.left,o.top),r.setStyle(a,"width",Math.round(e.characterWidth)+"px"),r.setStyle(a,"height",e.lineHeight+"px")):r.setStyle(a,"display","none")}while(this.cursors.length>i)this.removeCursor();var f=this.session.getOverwrite();this.$setOverwrite(f),this.$pixelPos=o,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(i.prototype),t.Cursor=i}),define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/event"),o=e("./lib/event_emitter").EventEmitter,u=32768,a=function(e){this.element=i.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=i.createElement("div"),this.inner.className="ace_scrollbar-inner",this.inner.textContent="\u00a0",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,s.addListener(this.element,"scroll",this.onScroll.bind(this)),s.addListener(this.element,"mousedown",s.preventDefault)};(function(){r.implement(this,o),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e,this.coeff=1}}).call(a.prototype);var f=function(e,t){a.call(this,e),this.scrollTop=0,this.scrollHeight=0,t.$scrollbarWidth=this.width=i.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px",this.$minWidth=0};r.inherits(f,a),function(){this.classSuffix="-v",this.onScroll=function(){if(!this.skipEvent){this.scrollTop=this.element.scrollTop;if(this.coeff!=1){var e=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-e)/(this.coeff-e)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1},this.getWidth=function(){return Math.max(this.isVisible?this.width:0,this.$minWidth||0)},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=this.setScrollHeight=function(e){this.scrollHeight=e,e>u?(this.coeff=u/e,e=u):this.coeff!=1&&(this.coeff=1),this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=e,this.element.scrollTop=e*this.coeff)}}.call(f.prototype);var l=function(e,t){a.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};r.inherits(l,a),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(l.prototype),t.ScrollBar=f,t.ScrollBarV=f,t.ScrollBarH=l,t.VScrollBar=f,t.HScrollBar=l}),define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,n){"use strict";var r=e("./lib/event"),i=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.$recursionLimit=2,this.window=t||window;var n=this;this._flush=function(e){n.pending=!1;var t=n.changes;t&&(r.blockIdle(100),n.changes=0,n.onRender(t));if(n.changes){if(n.$recursionLimit--<0)return;n.schedule()}else n.$recursionLimit=2}};(function(){this.schedule=function(e){this.changes=this.changes|e,this.changes&&!this.pending&&(r.nextFrame(this._flush),this.pending=!0)},this.clear=function(e){var t=this.changes;return this.changes=0,t}}).call(i.prototype),t.RenderLoop=i}),define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/event"),u=e("../lib/useragent"),a=e("../lib/event_emitter").EventEmitter,f=256,l=typeof ResizeObserver=="function",c=200,h=t.FontMetrics=function(e){this.el=i.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=i.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=i.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),this.$measureNode.innerHTML=s.stringRepeat("X",f),this.$characterSize={width:0,height:0},l?this.$addObserver():this.checkForSizeChanges()};(function(){r.implement(this,a),this.$characterSize={width:0,height:0},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",u.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(e){e===undefined&&(e=this.$measureSizes());if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$addObserver=function(){var e=this;this.$observer=new window.ResizeObserver(function(t){var n=t[0].contentRect;e.checkForSizeChanges({height:n.height,width:n.width/f})}),this.$observer.observe(this.$measureNode)},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer||this.$observer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=o.onIdle(function t(){e.checkForSizeChanges(),o.onIdle(t,500)},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(e){var t={height:(e||this.$measureNode).clientHeight,width:(e||this.$measureNode).clientWidth/f};return t.width===0||t.height===0?null:t},this.$measureCharWidth=function(e){this.$main.innerHTML=s.stringRepeat(e,f);var t=this.$main.getBoundingClientRect();return t.width/f},this.getCharacterWidth=function(e){var t=this.charSizes[e];return t===undefined&&(t=this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$observer&&this.$observer.disconnect(),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)},this.$getZoom=function e(t){return t?(window.getComputedStyle(t).zoom||1)*e(t.parentElement):1},this.$initTransformMeasureNodes=function(){var e=function(e,t){return["div",{style:"position: absolute;top:"+e+"px;left:"+t+"px;"}]};this.els=i.buildDom([e(0,0),e(c,0),e(0,c),e(c,c)],this.el)},this.transformCoordinates=function(e,t){function r(e,t,n){var r=e[1]*t[0]-e[0]*t[1];return[(-t[1]*n[0]+t[0]*n[1])/r,(+e[1]*n[0]-e[0]*n[1])/r]}function i(e,t){return[e[0]-t[0],e[1]-t[1]]}function s(e,t){return[e[0]+t[0],e[1]+t[1]]}function o(e,t){return[e*t[0],e*t[1]]}function u(e){var t=e.getBoundingClientRect();return[t.left,t.top]}if(e){var n=this.$getZoom(this.el);e=o(1/n,e)}this.els||this.$initTransformMeasureNodes();var a=u(this.els[0]),f=u(this.els[1]),l=u(this.els[2]),h=u(this.els[3]),p=r(i(h,f),i(h,l),i(s(f,l),s(h,a))),d=o(1+p[0],i(f,a)),v=o(1+p[1],i(l,a));if(t){var m=t,g=p[0]*m[0]/c+p[1]*m[1]/c+1,y=s(o(m[0],d),o(m[1],v));return s(o(1/g/c,y),a)}var b=i(e,a),w=r(i(d,o(p[0],b)),i(v,o(p[1],b)),b);return o(c,w)}}).call(h.prototype)}),define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter","ace/lib/useragent"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./config"),o=e("./layer/gutter").Gutter,u=e("./layer/marker").Marker,a=e("./layer/text").Text,f=e("./layer/cursor").Cursor,l=e("./scrollbar").HScrollBar,c=e("./scrollbar").VScrollBar,h=e("./renderloop").RenderLoop,p=e("./layer/font_metrics").FontMetrics,d=e("./lib/event_emitter").EventEmitter,v='.ace_br1 {border-top-left-radius : 3px;}.ace_br2 {border-top-right-radius : 3px;}.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}.ace_br4 {border-bottom-right-radius: 3px;}.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}.ace_br8 {border-bottom-left-radius : 3px;}.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_editor {position: relative;overflow: hidden;font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;direction: ltr;text-align: left;-webkit-tap-highlight-color: rgba(0, 0, 0, 0);}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;box-sizing: border-box;min-width: 100%;contain: style size layout;font-variant-ligatures: no-common-ligatures;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \'\';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;contain: style size layout;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {position: absolute;top: 0;left: 0;right: 0;padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {contain: strict;position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;contain: strict;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;white-space: pre!important;}.ace_text-input.ace_composition {background: transparent;color: inherit;z-index: 1000;opacity: 1;}.ace_composition_placeholder { color: transparent }.ace_composition_marker { border-bottom: 1px solid;position: absolute;border-radius: 0;margin-top: 1px;}[ace_nocontext=true] {transform: none!important;filter: none!important;clip-path: none!important;mask : none!important;contain: none!important;perspective: none!important;mix-blend-mode: initial!important;z-index: auto;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;height: 1000000px;contain: style size layout;}.ace_text-layer {font: inherit !important;position: absolute;height: 1000000px;width: 1000000px;contain: style size layout;}.ace_text-layer > .ace_line, .ace_text-layer > .ace_line_group {contain: style size layout;position: absolute;top: 0;left: 0;right: 0;}.ace_hidpi .ace_text-layer,.ace_hidpi .ace_gutter-layer,.ace_hidpi .ace_content,.ace_hidpi .ace_gutter {contain: strict;will-change: transform;}.ace_hidpi .ace_text-layer > .ace_line, .ace_hidpi .ace_text-layer > .ace_line_group {contain: strict;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;box-sizing: border-box;border-left: 2px solid;transform: translatez(0);}.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_hasPlaceholder .ace_hidden-cursors .ace_cursor {opacity: 0;}.ace_smooth-blinking .ace_cursor {transition: opacity 0.18s;}.ace_animate-blinking .ace_cursor {animation-duration: 1000ms;animation-timing-function: step-end;animation-name: blink-ace-animate;animation-iteration-count: infinite;}.ace_animate-blinking.ace_smooth-blinking .ace_cursor {animation-duration: 1000ms;animation-timing-function: ease-in-out;animation-name: blink-ace-animate-smooth;}@keyframes blink-ace-animate {from, to { opacity: 1; }60% { opacity: 0; }}@keyframes blink-ace-animate-smooth {from, to { opacity: 1; }45% { opacity: 1; }60% { opacity: 0; }85% { opacity: 0; }}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_error_bracket {position: absolute;border-bottom: 1px solid #DE5555;border-radius: 0;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;box-sizing: border-box;}.ace_line .ace_fold {box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_tooltip {background-color: #FFF;background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block; }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");}.ace_dark .ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_inline_button {border: 1px solid lightgray;display: inline-block;margin: -1px 8px;padding: 0 5px;pointer-events: auto;cursor: pointer;}.ace_inline_button:hover {border-color: gray;background: rgba(200,200,200,0.2);display: inline-block;pointer-events: auto;}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}.ace_mobile-menu {position: absolute;line-height: 1.5;border-radius: 4px;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;background: white;box-shadow: 1px 3px 2px grey;border: 1px solid #dcdcdc;color: black;}.ace_dark > .ace_mobile-menu {background: #333;color: #ccc;box-shadow: 1px 3px 2px grey;border: 1px solid #444;}.ace_mobile-button {padding: 2px;cursor: pointer;overflow: hidden;}.ace_mobile-button:hover {background-color: #eee;opacity:1;}.ace_mobile-button:active {background-color: #ddd;}.ace_placeholder {font-family: arial;transform: scale(0.9);transform-origin: left;white-space: pre;opacity: 0.7;margin: 0 10px;}',m=e("./lib/useragent"),g=m.isIE;i.importCssString(v,"ace_editor.css");var y=function(e,t){var n=this;this.container=e||i.createElement("div"),i.addCssClass(this.container,"ace_editor"),i.HI_DPI&&i.addCssClass(this.container,"ace_hidpi"),this.setTheme(t),this.$gutter=i.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.$gutter.setAttribute("aria-hidden",!0),this.scroller=i.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=i.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new o(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new u(this.content);var r=this.$textLayer=new a(this.content);this.canvas=r.element,this.$markerFront=new u(this.content),this.$cursorLayer=new f(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new c(this.container,this),this.scrollBarH=new l(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollTop(e.data-n.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollLeft(e.data-n.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new p(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){n.updateCharacterSize(),n.onResize(!0,n.gutterWidth,n.$size.width,n.$size.height),n._signal("changeCharacterSize",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.margin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$keepTextAreaAtCursor=!m.isIOS,this.$loop=new h(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),s.resetOptions(this),s._signal("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,r.implement(this,d),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin(),i.setStyle(this.scroller.style,"line-height",this.lineHeight+"px")},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e);if(!e)return;this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.scrollBarH.scrollLeft=this.scrollBarV.scrollTop=null,this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode)},this.updateLines=function(e,t,n){t===undefined&&(t=Infinity),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow)return;this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar(),this.session.$bidiHandler.setEolChar(this.$textLayer.EOL_CHAR)},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,n,r){if(this.resizing>2)return;this.resizing>0?this.resizing++:this.resizing=e?1:0;var i=this.container;r||(r=i.clientHeight||i.scrollHeight),n||(n=i.clientWidth||i.scrollWidth);var s=this.$updateCachedSize(e,t,n,r);if(!this.$size.scrollerHeight||!n&&!r)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(s|this.$changes,!0):this.$loop.schedule(s|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null},this.$updateCachedSize=function(e,t,n,r){r-=this.$extraHeight||0;var s=0,o=this.$size,u={width:o.width,height:o.height,scrollerHeight:o.scrollerHeight,scrollerWidth:o.scrollerWidth};r&&(e||o.height!=r)&&(o.height=r,s|=this.CHANGE_SIZE,o.scrollerHeight=o.height,this.$horizScroll&&(o.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",s|=this.CHANGE_SCROLL);if(n&&(e||o.width!=n)){s|=this.CHANGE_SIZE,o.width=n,t==null&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,i.setStyle(this.scrollBarH.element.style,"left",t+"px"),i.setStyle(this.scroller.style,"left",t+this.margin.left+"px"),o.scrollerWidth=Math.max(0,n-t-this.scrollBarV.getWidth()-this.margin.h),i.setStyle(this.$gutter.style,"left",this.margin.left+"px");var a=this.scrollBarV.getWidth()+"px";i.setStyle(this.scrollBarH.element.style,"right",a),i.setStyle(this.scroller.style,"right",a),i.setStyle(this.scroller.style,"bottom",this.scrollBarH.getHeight());if(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)s|=this.CHANGE_FULL}return o.$dirty=!n||!r,s&&this._signal("resize",u),s},this.onGutterResize=function(e){var t=this.$showGutter?e:0;t!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,t,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):this.$computeLayerConfig()},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-this.$padding*2,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e),this.session.$bidiHandler.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updatePrintMargin=function(){if(!this.$showPrintMargin&&!this.$printMarginEl)return;if(!this.$printMarginEl){var e=i.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=i.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=Math.round(this.characterWidth*this.$printMarginColumn+this.$padding)+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit()},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(this.$isMousePressed)return;var e=this.textarea.style,t=this.$composition;if(!this.$keepTextAreaAtCursor&&!t){i.translate(this.textarea,-100,0);return}var n=this.$cursorLayer.$pixelPos;if(!n)return;t&&t.markerRange&&(n=this.$cursorLayer.getPixelPosition(t.markerRange.start,!0));var r=this.layerConfig,s=n.top,o=n.left;s-=r.offset;var u=t&&t.useTextareaForIME?this.lineHeight:g?0:1;if(s<0||s>r.height-u){i.translate(this.textarea,0,0);return}var a=1,f=this.$size.height-u;if(!t)s+=this.lineHeight;else if(t.useTextareaForIME){var l=this.textarea.value;a=this.characterWidth*this.session.$getStringScreenWidth(l)[0]}else s+=this.lineHeight+2;o-=this.scrollLeft,o>this.$size.scrollerWidth-a&&(o=this.$size.scrollerWidth-a),o+=this.gutterWidth+this.margin.left,i.setStyle(e,"height",u+"px"),i.setStyle(e,"width",a+"px"),i.translate(this.textarea,Math.min(o,this.$size.scrollerWidth-a),Math.min(s,f))},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)},this.getLastFullyVisibleRow=function(){var e=this.layerConfig,t=e.lastRow,n=this.session.documentToScreenRow(t,0)*e.lineHeight;return n-this.session.getScrollTop()>e.height-e.lineHeight?t-1:t},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,n,r){var i=this.scrollMargin;i.top=e|0,i.bottom=t|0,i.right=r|0,i.left=n|0,i.v=i.top+i.bottom,i.h=i.left+i.right,i.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-i.top),this.updateFull()},this.setMargin=function(e,t,n,r){var i=this.margin;i.top=e|0,i.bottom=t|0,i.right=r|0,i.left=n|0,i.v=i.top+i.bottom,i.h=i.left+i.right,this.$updateCachedSize(!0,this.gutterWidth,this.$size.width,this.$size.height),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){this.$changes&&(e|=this.$changes,this.$changes=0);if(!this.session||!this.container.offsetWidth||this.$frozen||!e&&!t){this.$changes|=e;return}if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender",e),this.session&&this.session.$bidiHandler&&this.session.$bidiHandler.updateCharacterWidths(this.$fontMetrics);var n=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){e|=this.$computeLayerConfig()|this.$loop.clear();if(n.firstRow!=this.layerConfig.firstRow&&n.firstRowScreen==this.layerConfig.firstRowScreen){var r=this.scrollTop+(n.firstRow-this.layerConfig.firstRow)*this.lineHeight;r>0&&(this.scrollTop=r,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig()|this.$loop.clear())}n=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),i.translate(this.content,-this.scrollLeft,-n.offset);var s=n.width+2*this.$padding+"px",o=n.minHeight+"px";i.setStyle(this.content.style,"width",s),i.setStyle(this.content.style,"height",o)}e&this.CHANGE_H_SCROLL&&(i.translate(this.content,-this.scrollLeft,-n.offset),this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left");if(e&this.CHANGE_FULL){this.$changedLines=null,this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this._signal("afterRender",e);return}if(e&this.CHANGE_SCROLL){this.$changedLines=null,e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(n):this.$textLayer.scrollLines(n),this.$showGutter&&(e&this.CHANGE_GUTTER||e&this.CHANGE_LINES?this.$gutterLayer.update(n):this.$gutterLayer.scrollLines(n)),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this._signal("afterRender",e);return}e&this.CHANGE_TEXT?(this.$changedLines=null,this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(n):e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER?this.$showGutter&&this.$gutterLayer.update(n):e&this.CHANGE_CURSOR&&this.$highlightGutterLine&&this.$gutterLayer.updateLineHighlight(n),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(n),this.$moveTextAreaToCursor()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(n),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(n),this._signal("afterRender",e)},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,n=Math.min(t,Math.max((this.$minLines||1)*this.lineHeight,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(n+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&n>this.$maxPixelHeight&&(n=this.$maxPixelHeight);var r=n<=2*this.lineHeight,i=!r&&e>t;if(n!=this.desiredHeight||this.$size.height!=this.desiredHeight||i!=this.$vScroll){i!=this.$vScroll&&(this.$vScroll=i,this.scrollBarV.setVisible(i));var s=this.container.clientWidth;this.container.style.height=n+"px",this.$updateCachedSize(!0,this.$gutterWidth,s,n),this.desiredHeight=n,this._signal("autosize")}},this.$computeLayerConfig=function(){var e=this.session,t=this.$size,n=t.height<=2*this.lineHeight,r=this.session.getScreenLength(),i=r*this.lineHeight,s=this.$getLongestLine(),o=!n&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-s-2*this.$padding<0),u=this.$horizScroll!==o;u&&(this.$horizScroll=o,this.scrollBarH.setVisible(o));var a=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var f=t.scrollerHeight+this.lineHeight,l=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;i+=l;var c=this.scrollMargin;this.session.setScrollTop(Math.max(-c.top,Math.min(this.scrollTop,i-t.scrollerHeight+c.bottom))),this.session.setScrollLeft(Math.max(-c.left,Math.min(this.scrollLeft,s+2*this.$padding-t.scrollerWidth+c.right)));var h=!n&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-i+l<0||this.scrollTop>c.top),p=a!==h;p&&(this.$vScroll=h,this.scrollBarV.setVisible(h));var d=this.scrollTop%this.lineHeight,v=Math.ceil(f/this.lineHeight)-1,m=Math.max(0,Math.round((this.scrollTop-d)/this.lineHeight)),g=m+v,y,b,w=this.lineHeight;m=e.screenToDocumentRow(m,0);var E=e.getFoldLine(m);E&&(m=E.start.row),y=e.documentToScreenRow(m,0),b=e.getRowLength(m)*w,g=Math.min(e.screenToDocumentRow(g,0),e.getLength()-1),f=t.scrollerHeight+e.getRowLength(g)*w+b,d=this.scrollTop-y*w;var S=0;if(this.layerConfig.width!=s||u)S=this.CHANGE_H_SCROLL;if(u||p)S|=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),p&&(s=this.$getLongestLine());return this.layerConfig={width:s,padding:this.$padding,firstRow:m,firstRowScreen:y,lastRow:g,lineHeight:w,characterWidth:this.characterWidth,minHeight:f,maxHeight:i,offset:d,gutterOffset:w?Math.max(0,Math.ceil((d+t.height-t.scrollerHeight)/w)):0,height:this.$size.scrollerHeight},this.session.$bidiHandler&&this.session.$bidiHandler.setContentWidth(s-this.$padding),S},this.$updateLines=function(){if(!this.$changedLines)return;var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(e>n.lastRow+1)return;if(tthis.$textLayer.MAX_LINE_LENGTH&&(e=this.$textLayer.MAX_LINE_LENGTH+30),Math.max(this.$size.scrollerWidth-2*this.$padding,Math.round(e*this.characterWidth))},this.updateFrontMarkers=function(){this.$markerFront.setMarkers(this.session.getMarkers(!0)),this.$loop.schedule(this.CHANGE_MARKER_FRONT)},this.updateBackMarkers=function(){this.$markerBack.setMarkers(this.session.getMarkers()),this.$loop.schedule(this.CHANGE_MARKER_BACK)},this.addGutterDecoration=function(e,t){this.$gutterLayer.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){this.$gutterLayer.removeGutterDecoration(e,t)},this.updateBreakpoints=function(e){this.$loop.schedule(this.CHANGE_GUTTER)},this.setAnnotations=function(e){this.$gutterLayer.setAnnotations(e),this.$loop.schedule(this.CHANGE_GUTTER)},this.updateCursor=function(){this.$loop.schedule(this.CHANGE_CURSOR)},this.hideCursor=function(){this.$cursorLayer.hideCursor()},this.showCursor=function(){this.$cursorLayer.showCursor()},this.scrollSelectionIntoView=function(e,t,n){this.scrollCursorIntoView(e,n),this.scrollCursorIntoView(t,n)},this.scrollCursorIntoView=function(e,t,n){if(this.$size.scrollerHeight===0)return;var r=this.$cursorLayer.getPixelPosition(e),i=r.left,s=r.top,o=n&&n.top||0,u=n&&n.bottom||0,a=this.$scrollAnimation?this.session.getScrollTop():this.scrollTop;a+o>s?(t&&a+o>s+this.lineHeight&&(s-=t*this.$size.scrollerHeight),s===0&&(s=-this.scrollMargin.top),this.session.setScrollTop(s)):a+this.$size.scrollerHeight-ui?(i=1-this.scrollMargin.top)return!0;if(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom)return!0;if(e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left)return!0;if(e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right)return!0},this.pixelToScreenCoordinates=function(e,t){var n;if(this.$hasCssTransforms){n={top:0,left:0};var r=this.$fontMetrics.transformCoordinates([e,t]);e=r[1]-this.gutterWidth-this.margin.left,t=r[0]}else n=this.scroller.getBoundingClientRect();var i=e+this.scrollLeft-n.left-this.$padding,s=i/this.characterWidth,o=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),u=this.$blockCursor?Math.floor(s):Math.round(s);return{row:o,column:u,side:s-u>0?1:-1,offsetX:i}},this.screenToTextCoordinates=function(e,t){var n;if(this.$hasCssTransforms){n={top:0,left:0};var r=this.$fontMetrics.transformCoordinates([e,t]);e=r[1]-this.gutterWidth-this.margin.left,t=r[0]}else n=this.scroller.getBoundingClientRect();var i=e+this.scrollLeft-n.left-this.$padding,s=i/this.characterWidth,o=this.$blockCursor?Math.floor(s):Math.round(s),u=Math.floor((t+this.scrollTop-n.top)/this.lineHeight);return this.session.screenToDocumentPosition(u,Math.max(o,0),i)},this.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=this.session.documentToScreenPosition(e,t),i=this.$padding+(this.session.$bidiHandler.isBidiRow(r.row,e)?this.session.$bidiHandler.getPosLeft(r.column):Math.round(r.column*this.characterWidth)),s=r.row*this.lineHeight;return{pageX:n.left+i-this.scrollLeft,pageY:n.top+s-this.scrollTop}},this.visualizeFocus=function(){i.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){i.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition=e,e.cssText||(e.cssText=this.textarea.style.cssText),e.useTextareaForIME=this.$useTextareaForIME,this.$useTextareaForIME?(i.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor(),this.$cursorLayer.element.style.display="none"):e.markerId=this.session.addMarker(e.markerRange,"ace_composition_marker","text")},this.setCompositionText=function(e){var t=this.session.selection.cursor;this.addToken(e,"composition_placeholder",t.row,t.column),this.$moveTextAreaToCursor()},this.hideComposition=function(){if(!this.$composition)return;this.$composition.markerId&&this.session.removeMarker(this.$composition.markerId),i.removeCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText=this.$composition.cssText,this.$composition=null,this.$cursorLayer.element.style.display=""},this.addToken=function(e,t,n,r){var i=this.session;i.bgTokenizer.lines[n]=null;var s={type:t,value:e},o=i.getTokens(n);if(r==null)o.push(s);else{var u=0;for(var a=0;a50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e})}}).call(f.prototype);var l=function(e,t,n){var r=null,i=!1,u=Object.create(s),a=[],l=new f({messageBuffer:a,terminate:function(){},postMessage:function(e){a.push(e);if(!r)return;i?setTimeout(c):c()}});l.setEmitSync=function(e){i=e};var c=function(){var e=a.shift();e.command?r[e.command].apply(r,e.args):e.event&&u._signal(e.event,e.data)};return u.postMessage=function(e){l.onMessage({data:e})},u.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},u.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},o.loadModule(["worker",t],function(e){r=new e[n](u);while(a.length)c()}),l};t.UIWorkerClient=l,t.WorkerClient=f,t.createWorker=a}),define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,n){"use strict";var r=e("./range").Range,i=e("./lib/event_emitter").EventEmitter,s=e("./lib/oop"),o=function(e,t,n,r,i,s){var o=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=i,this.othersClass=s,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=r,this.$onCursorChange=function(){setTimeout(function(){o.onCursorChange()})},this.$pos=n;var u=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=u.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){s.implement(this,i),this.setup=function(){var e=this,t=this.doc,n=this.session;this.selectionBefore=n.selection.toJSON(),n.selection.inMultiSelectMode&&n.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var i=this.pos;i.$insertRight=!0,i.detach(),i.markerId=n.addMarker(new r(i.row,i.column,i.row,i.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(n){var r=t.createAnchor(n.row,n.column);r.$insertRight=!0,r.detach(),e.others.push(r)}),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(this.othersActive)return;var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(n){n.markerId=e.addMarker(new r(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1)})},this.hideOtherMarkers=function(){if(!this.othersActive)return;this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1,s=t.start.column-this.pos.column;this.updateAnchors(e),i&&(this.length+=n);if(i&&!this.session.$fromUndo)if(e.action==="insert")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};this.doc.insertMergedLines(a,e.lines)}else if(e.action==="remove")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};this.doc.remove(new r(a.row,a.column,a.row,a.column-n))}this.$updating=!1,this.updateMarkers()},this.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},this.updateMarkers=function(){if(this.$updating)return;var e=this,t=this.session,n=function(n,i){t.removeMarker(n.markerId),n.markerId=t.addMarker(new r(n.row,n.column,n.row,n.column+e.length),i,null,!1)};n(this.pos,this.mainClass);for(var i=this.others.length;i--;)n(this.others[i],this.othersClass)},this.onCursorChange=function(e){if(this.$updating||!this.session)return;var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(this.$undoStackDepth===-1)return;var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth;for(var n=0;n1?e.multiSelect.joinSelections():e.multiSelect.splitIntoLines()},bindKey:{win:"Ctrl-Alt-L",mac:"Ctrl-Alt-L"},readOnly:!0},{name:"splitSelectionIntoLines",description:"Split into lines",exec:function(e){e.multiSelect.splitIntoLines()},readOnly:!0},{name:"alignCursors",description:"Align cursors",exec:function(e){e.alignCursors()},bindKey:{win:"Ctrl-Alt-A",mac:"Ctrl-Alt-A"},scrollIntoView:"cursor"},{name:"findAll",description:"Find all",exec:function(e){e.findAll()},bindKey:{win:"Ctrl-Alt-K",mac:"Ctrl-Alt-G"},scrollIntoView:"cursor",readOnly:!0}],t.multiSelectCommands=[{name:"singleSelection",description:"Single selection",bindKey:"esc",exec:function(e){e.exitMultiSelectMode()},scrollIntoView:"cursor",readOnly:!0,isAvailable:function(e){return e&&e.inMultiSelectMode}}];var r=e("../keyboard/hash_handler").HashHandler;t.keyboardHandler=new r(t.multiSelectCommands)}),define("ace/multi_select",["require","exports","module","ace/range_list","ace/range","ace/selection","ace/mouse/multi_select_handler","ace/lib/event","ace/lib/lang","ace/commands/multi_select_commands","ace/search","ace/edit_session","ace/editor","ace/config"],function(e,t,n){function h(e,t,n){return c.$options.wrap=!0,c.$options.needle=t,c.$options.backwards=n==-1,c.find(e)}function v(e,t){return e.row==t.row&&e.column==t.column}function m(e){if(e.$multiselectOnSessionChange)return;e.$onAddRange=e.$onAddRange.bind(e),e.$onRemoveRange=e.$onRemoveRange.bind(e),e.$onMultiSelect=e.$onMultiSelect.bind(e),e.$onSingleSelect=e.$onSingleSelect.bind(e),e.$multiselectOnSessionChange=t.onSessionChange.bind(e),e.$checkMultiselectChange=e.$checkMultiselectChange.bind(e),e.$multiselectOnSessionChange(e),e.on("changeSession",e.$multiselectOnSessionChange),e.on("mousedown",o),e.commands.addCommands(f.defaultCommands),g(e)}function g(e){function r(t){n&&(e.renderer.setMouseCursor(""),n=!1)}if(!e.textInput)return;var t=e.textInput.getElement(),n=!1;u.addListener(t,"keydown",function(t){var i=t.keyCode==18&&!(t.ctrlKey||t.shiftKey||t.metaKey);e.$blockSelectEnabled&&i?n||(e.renderer.setMouseCursor("crosshair"),n=!0):n&&r()}),u.addListener(t,"keyup",r),u.addListener(t,"blur",r)}var r=e("./range_list").RangeList,i=e("./range").Range,s=e("./selection").Selection,o=e("./mouse/multi_select_handler").onMouseDown,u=e("./lib/event"),a=e("./lib/lang"),f=e("./commands/multi_select_commands");t.commands=f.defaultCommands.concat(f.multiSelectCommands);var l=e("./search").Search,c=new l,p=e("./edit_session").EditSession;(function(){this.getSelectionMarkers=function(){return this.$selectionMarkers}}).call(p.prototype),function(){this.ranges=null,this.rangeList=null,this.addRange=function(e,t){if(!e)return;if(!this.inMultiSelectMode&&this.rangeCount===0){var n=this.toOrientedRange();this.rangeList.add(n),this.rangeList.add(e);if(this.rangeList.ranges.length!=2)return this.rangeList.removeAll(),t||this.fromOrientedRange(e);this.rangeList.removeAll(),this.rangeList.add(n),this.$onAddRange(n)}e.cursor||(e.cursor=e.end);var r=this.rangeList.add(e);return this.$onAddRange(e),r.length&&this.$onRemoveRange(r),this.rangeCount>1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length&&this.$onRemoveRange(e)},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){this.rangeCount=this.rangeList.ranges.length;if(this.rangeCount==1&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var r=this.ranges.indexOf(e[n]);this.ranges.splice(r,1)}this._signal("removeRange",{ranges:e}),this.rangeCount===0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){if(this.rangeList)return;this.rangeList=new r,this.ranges=[],this.rangeCount=0},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){var e=this.ranges.length?this.ranges:[this.getRange()],t=[];for(var n=0;n1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var r=this.session.documentToScreenPosition(this.cursor),s=this.session.documentToScreenPosition(this.anchor),o=this.rectangularRangeBlock(r,s);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var r=[],s=e.column0)g--;if(g>0){var y=0;while(r[y].isEmpty())y++}for(var b=g;b>=y;b--)r[b].isEmpty()&&r.splice(b,1)}return r}}.call(s.prototype);var d=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(!e.marker)return;this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);t!=-1&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length},this.removeSelectionMarkers=function(e){var t=this.session.$selectionMarkers;for(var n=e.length;n--;){var r=e[n];if(!r.marker)continue;this.session.removeMarker(r.marker);var i=t.indexOf(r);i!=-1&&t.splice(i,1)}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){if(this.inMultiSelectMode)return;this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onSingleSelect=function(e){if(this.session.multiSelect.inVirtualMode)return;this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection")},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(!n.multiSelect)return;if(!t.multiSelectAction){var r=t.exec(n,e.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}else t.multiSelectAction=="forEach"?r=n.forEachSelection(t,e.args):t.multiSelectAction=="forEachLine"?r=n.forEachSelection(t,e.args,!0):t.multiSelectAction=="single"?(n.exitMultiSelectMode(),r=t.exec(n,e.args||{})):r=t.multiSelectAction(n,e.args||{});return r},this.forEachSelection=function(e,t,n){if(this.inVirtualSelectionMode)return;var r=n&&n.keepOrder,i=n==1||n&&n.$byLines,o=this.session,u=this.selection,a=u.rangeList,f=(r?u:a).ranges,l;if(!f.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var c=u._eventRegistry;u._eventRegistry={};var h=new s(o);this.inVirtualSelectionMode=!0;for(var p=f.length;p--;){if(i)while(p>0&&f[p].start.row==f[p-1].end.row)p--;h.fromOrientedRange(f[p]),h.index=p,this.selection=o.selection=h;var d=e.exec?e.exec(this,t||{}):e(this,t||{});!l&&d!==undefined&&(l=d),h.toOrientedRange(f[p])}h.detach(),this.selection=o.selection=u,this.inVirtualSelectionMode=!1,u._eventRegistry=c,u.mergeOverlappingRanges(),u.ranges[0]&&u.fromOrientedRange(u.ranges[0]);var v=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),v&&v.from==v.to&&this.renderer.animateScrolling(v.from),l},this.exitMultiSelectMode=function(){if(!this.inMultiSelectMode||this.inVirtualSelectionMode)return;this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var t=this.multiSelect.rangeList.ranges,n=[];for(var r=0;r0);u<0&&(u=0),f>=c&&(f=c-1)}var p=this.session.removeFullLines(u,f);p=this.$reAlignText(p,l),this.session.insert({row:u,column:0},p.join("\n")+"\n"),l||(o.start.column=0,o.end.column=p[p.length-1].length),this.selection.setRange(o)}else{s.forEach(function(e){t.substractPoint(e.cursor)});var d=0,v=Infinity,m=n.map(function(t){var n=t.cursor,r=e.getLine(n.row),i=r.substr(n.column).search(/\S/g);return i==-1&&(i=0),n.column>d&&(d=n.column),io?e.insert(r,a.stringRepeat(" ",s-o)):e.remove(new i(r.row,r.column,r.row,r.column-s+o)),t.start.column=t.end.column=d,t.start.row=t.end.row=r.row,t.cursor=t.end}),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(e,t){function u(e){return a.stringRepeat(" ",e)}function f(e){return e[2]?u(i)+e[2]+u(s-e[2].length+o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function l(e){return e[2]?u(i+s-e[2].length)+e[2]+u(o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function c(e){return e[2]?u(i)+e[2]+u(o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var n=!0,r=!0,i,s,o;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?i==null?(i=t[1].length,s=t[2].length,o=t[3].length,t):(i+s+o!=t[1].length+t[2].length+t[3].length&&(r=!1),i!=t[1].length&&(n=!1),i>t[1].length&&(i=t[1].length),st[3].length&&(o=t[3].length),t):[e]}).map(t?f:n?r?l:f:c)}}).call(d.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.off("addRange",this.$onAddRange),n.multiSelect.off("removeRange",this.$onRemoveRange),n.multiSelect.off("multiSelect",this.$onMultiSelect),n.multiSelect.off("singleSelect",this.$onSingleSelect),n.multiSelect.lead.off("change",this.$checkMultiselectChange),n.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=m,e("./config").defineOptions(d.prototype,"editor",{enableMultiselect:{set:function(e){m(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",o)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",o))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})}),define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../../range").Range,i=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?"start":t=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(r)?"end":""},this.getFoldWidgetRange=function(e,t,n){return null},this.indentationBlock=function(e,t,n){var i=/\S/,s=e.getLine(t),o=s.search(i);if(o==-1)return;var u=n||s.length,a=e.getLength(),f=t,l=t;while(++tf){var p=e.getLine(l).length;return new r(f,u,l,p)}},this.openingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i+1},u=e.$findClosingBracket(t,o,s);if(!u)return;var a=e.foldWidgets[u.row];return a==null&&(a=e.getFoldWidget(u.row)),a=="start"&&u.row>o.row&&(u.row--,u.column=e.getLine(u.row).length),r.fromPoints(o,u)},this.closingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i},u=e.$findOpeningBracket(t,o);if(!u)return;return u.column++,o.column--,r.fromPoints(u,o)}}).call(i.prototype)}),define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}',t.$id="ace/theme/textmate";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}),define("ace/line_widgets",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";function i(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeFold",this.updateOnFold),this.session.on("changeEditor",this.$onChangeEditor)}var r=e("./lib/dom");(function(){this.getRowLength=function(e){var t;return this.lineWidgets?t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:t=0,!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&!t.hidden&&(e+=t.rowCount)}),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach();if(this.editor==e)return;this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets))},this.detach=function(e){var t=this.editor;if(!t)return;this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var n=this.session.lineWidgets;n&&n.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})},this.updateOnFold=function(e,t){var n=t.lineWidgets;if(!n||!e.action)return;var r=e.data,i=r.start.row,s=r.end.row,o=e.action=="add";for(var u=i+1;ut[n].column&&n++,s.unshift(n,0),t.splice.apply(t,s),this.$updateRows()}},this.$updateRows=function(){var e=this.session.lineWidgets;if(!e)return;var t=!0;e.forEach(function(e,n){if(e){t=!1,e.row=n;while(e.$oldWidget)e.$oldWidget.row=n,e=e.$oldWidget}}),t&&(this.session.lineWidgets=null)},this.$registerLineWidget=function(e){this.session.lineWidgets||(this.session.lineWidgets=new Array(this.session.getLength()));var t=this.session.lineWidgets[e.row];return t&&(e.$oldWidget=t,t.el&&t.el.parentNode&&(t.el.parentNode.removeChild(t.el),t._inDocument=!1)),this.session.lineWidgets[e.row]=e,e},this.addLineWidget=function(e){this.$registerLineWidget(e),e.session=this.session;if(!this.editor)return e;var t=this.editor.renderer;e.html&&!e.el&&(e.el=r.createElement("div"),e.el.innerHTML=e.html),e.el&&(r.addCssClass(e.el,"ace_lineWidgetContainer"),e.el.style.position="absolute",e.el.style.zIndex=5,t.container.appendChild(e.el),e._inDocument=!0,e.coverGutter||(e.el.style.zIndex=3),e.pixelHeight==null&&(e.pixelHeight=e.el.offsetHeight)),e.rowCount==null&&(e.rowCount=e.pixelHeight/t.layerConfig.lineHeight);var n=this.session.getFoldAt(e.row,0);e.$fold=n;if(n){var i=this.session.lineWidgets;e.row==n.end.row&&!i[n.start.row]?i[n.start.row]=e:e.hidden=!0}return this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows(),this.renderWidgets(null,t),this.onWidgetChanged(e),e},this.removeLineWidget=function(e){e._inDocument=!1,e.session=null,e.el&&e.el.parentNode&&e.el.parentNode.removeChild(e.el);if(e.editor&&e.editor.destroy)try{e.editor.destroy()}catch(t){}if(this.session.lineWidgets){var n=this.session.lineWidgets[e.row];if(n==e)this.session.lineWidgets[e.row]=e.$oldWidget,e.$oldWidget&&this.onWidgetChanged(e.$oldWidget);else while(n){if(n.$oldWidget==e){n.$oldWidget=e.$oldWidget;break}n=n.$oldWidget}}this.session._emit("changeFold",{data:{start:{row:e.row}}}),this.$updateRows()},this.getWidgetsAtRow=function(e){var t=this.session.lineWidgets,n=t&&t[e],r=[];while(n)r.push(n),n=n.$oldWidget;return r},this.onWidgetChanged=function(e){this.session._changedWidgets.push(e),this.editor&&this.editor.renderer.updateFull()},this.measureWidgets=function(e,t){var n=this.session._changedWidgets,r=t.layerConfig;if(!n||!n.length)return;var i=Infinity;for(var s=0;s0&&!r[i])i--;this.firstRow=n.firstRow,this.lastRow=n.lastRow,t.$cursorLayer.config=n;for(var o=i;o<=s;o++){var u=r[o];if(!u||!u.el)continue;if(u.hidden){u.el.style.top=-100-(u.pixelHeight||0)+"px";continue}u._inDocument||(u._inDocument=!0,t.container.appendChild(u.el));var a=t.$cursorLayer.getPixelPosition({row:o,column:0},!0).top;u.coverLine||(a+=n.lineHeight*this.session.getRowLineCount(u.row)),u.el.style.top=a-n.offset+"px";var f=u.coverGutter?0:t.gutterWidth;u.fixedWidth||(f-=t.scrollLeft),u.el.style.left=f+"px",u.fullWidth&&u.screenWidth&&(u.el.style.minWidth=n.width+2*n.padding+"px"),u.fixedWidth?u.el.style.right=t.scrollBar.getWidth()+"px":u.el.style.right=""}}}).call(i.prototype),t.LineWidgets=i}),define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function o(e,t,n){var r=0,i=e.length-1;while(r<=i){var s=r+i>>1,o=n(t,e[s]);if(o>0)r=s+1;else{if(!(o<0))return s;i=s-1}}return-(r+1)}function u(e,t,n){var r=e.getAnnotations().sort(s.comparePoints);if(!r.length)return;var i=o(r,{row:t,column:-1},s.comparePoints);i<0&&(i=-i-1),i>=r.length?i=n>0?0:r.length-1:i===0&&n<0&&(i=r.length-1);var u=r[i];if(!u||!n)return;if(u.row===t){do u=r[i+=n];while(u&&u.row===t);if(!u)return r.slice()}var a=[];t=u.row;do a[n<0?"unshift":"push"](u),u=r[i+=n];while(u&&u.row==t);return a.length&&a}var r=e("../line_widgets").LineWidgets,i=e("../lib/dom"),s=e("../range").Range;t.showErrorMarker=function(e,t){var n=e.session;n.widgetManager||(n.widgetManager=new r(n),n.widgetManager.attach(e));var s=e.getCursorPosition(),o=s.row,a=n.widgetManager.getWidgetsAtRow(o).filter(function(e){return e.type=="errorMarker"})[0];a?a.destroy():o-=t;var f=u(n,o,t),l;if(f){var c=f[0];s.column=(c.pos&&typeof c.column!="number"?c.pos.sc:c.column)||0,s.row=c.row,l=e.renderer.$gutterLayer.$annotations[s.row]}else{if(a)return;l={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(s.row),e.selection.moveToPosition(s);var h={row:s.row,fixedWidth:!0,coverGutter:!0,el:i.createElement("div"),type:"errorMarker"},p=h.el.appendChild(i.createElement("div")),d=h.el.appendChild(i.createElement("div"));d.className="error_widget_arrow "+l.className;var v=e.renderer.$cursorLayer.getPixelPosition(s).left;d.style.left=v+e.renderer.gutterWidth-5+"px",h.el.className="error_widget_wrapper",p.className="error_widget "+l.className,p.innerHTML=l.text.join("
"),p.appendChild(i.createElement("div"));var m=function(e,t,n){if(t===0&&(n==="esc"||n==="return"))return h.destroy(),{command:"null"}};h.destroy=function(){if(e.$mouseHandler.isMousePressed)return;e.keyBinding.removeKeyboardHandler(m),n.widgetManager.removeLineWidget(h),e.off("changeSelection",h.destroy),e.off("changeSession",h.destroy),e.off("mouseup",h.destroy),e.off("change",h.destroy)},e.keyBinding.addKeyboardHandler(m),e.on("changeSelection",h.destroy),e.on("changeSession",h.destroy),e.on("mouseup",h.destroy),e.on("change",h.destroy),e.session.widgetManager.addLineWidget(h),h.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:h.el.offsetHeight})},i.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; }","")}),define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/range","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,n){"use strict";e("./lib/fixoldbrowsers");var r=e("./lib/dom"),i=e("./lib/event"),s=e("./range").Range,o=e("./editor").Editor,u=e("./edit_session").EditSession,a=e("./undomanager").UndoManager,f=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.require=e,typeof define=="function"&&(t.define=define),t.edit=function(e,n){if(typeof e=="string"){var s=e;e=document.getElementById(s);if(!e)throw new Error("ace.edit can't find div #"+s)}if(e&&e.env&&e.env.editor instanceof o)return e.env.editor;var u="";if(e&&/input|textarea/i.test(e.tagName)){var a=e;u=a.value,e=r.createElement("pre"),a.parentNode.replaceChild(e,a)}else e&&(u=e.textContent,e.innerHTML="");var l=t.createEditSession(u),c=new o(new f(e),l,n),h={document:l,editor:c,onResize:c.resize.bind(c,null)};return a&&(h.textarea=a),i.addListener(window,"resize",h.onResize),c.on("destroy",function(){i.removeListener(window,"resize",h.onResize),h.editor.container.env=null}),c.container.env=c.env=h,c},t.createEditSession=function(e,t){var n=new u(e,t);return n.setUndoManager(new a),n},t.Range=s,t.Editor=o,t.EditSession=u,t.UndoManager=a,t.VirtualRenderer=f,t.version=t.config.version}); (function() { - window.require(["ace/ace"], function(a) { - if (a) { - a.config.init(true); - a.define = window.define; - } - if (!window.ace) - window.ace = a; - for (var key in a) if (a.hasOwnProperty(key)) - window.ace[key] = a[key]; - window.ace["default"] = window.ace; - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = window.ace; - } - }); - })(); -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[oO][0-7]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/(?:\d\d*(?:\.\d*)?|\.\d+)(?:[eE][+-]?\d+\b)?/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"from(?=\\s*('|\"))"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"storage.type",regex:/=>/,next:"start"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",consumeLineEnd:!0},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/([\{\[\(])[^\}\]\)]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{\(]*([\}\]\)])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.$quotes={'"':'"',"'":"'","`":"`"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|max-zoom|min-height|min-width|min-zoom|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|user-select|user-zoom|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero|zoom",f=t.supportConstantColor="aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|black|blanchedalmond|blue|blueviolet|brown|burlywood|cadetblue|chartreuse|chocolate|coral|cornflowerblue|cornsilk|crimson|cyan|darkblue|darkcyan|darkgoldenrod|darkgray|darkgreen|darkgrey|darkkhaki|darkmagenta|darkolivegreen|darkorange|darkorchid|darkred|darksalmon|darkseagreen|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|floralwhite|forestgreen|fuchsia|gainsboro|ghostwhite|gold|goldenrod|gray|green|greenyellow|grey|honeydew|hotpink|indianred|indigo|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightseagreen|lightskyblue|lightslategray|lightslategrey|lightsteelblue|lightyellow|lime|limegreen|linen|magenta|maroon|mediumaquamarine|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumspringgreen|mediumturquoise|mediumvioletred|midnightblue|mintcream|mistyrose|moccasin|navajowhite|navy|oldlace|olive|olivedrab|orange|orangered|orchid|palegoldenrod|palegreen|paleturquoise|palevioletred|papayawhip|peachpuff|peru|pink|plum|powderblue|purple|rebeccapurple|red|rosybrown|royalblue|saddlebrown|salmon|sandybrown|seagreen|seashell|sienna|silver|skyblue|slateblue|slategray|slategrey|snow|springgreen|steelblue|tan|teal|thistle|tomato|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+(?:\\.[0-9]+)?)|(?:\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"ruleset"},{token:"paren.rparen",regex:"\\}"},{token:"string",regex:"@(?!viewport)",next:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"keyword",regex:"%"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant.numeric",regex:c},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{include:["strings","url","comments"]},{token:"paren.lparen",regex:"\\{",next:"start"},{token:"paren.rparen",regex:"\\}",next:"start"},{token:"string",regex:";",next:"start"},{token:"keyword",regex:"(?:media|supports|document|charset|import|namespace|media|supports|document|page|font|keyframes|viewport|counter-style|font-feature-values|swash|ornaments|annotation|stylistic|styleset|character-variant)"}],comments:[{token:"comment",regex:"\\/\\*",push:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}]}],ruleset:[{regex:"-(webkit|ms|moz|o)-",token:"text"},{token:"punctuation.operator",regex:"[:;]"},{token:"paren.rparen",regex:"\\}",next:"start"},{include:["strings","url","comments"]},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vmax|vmin|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{include:"url"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}],url:[{token:"support.function",regex:"(?:url(:?-prefix)?|domain|regexp)\\(",push:[{token:"support.function",regex:"\\)",next:"pop"},{defaultToken:"string"}]}],strings:[{token:"string.start",regex:"'",push:[{token:"string.end",regex:"'|$",next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]},{token:"string.start",regex:'"',push:[{token:"string.end",regex:'"|$',next:"pop"},{include:"escapes"},{token:"constant.language.escape",regex:/\\$/,consumeLineEnd:!0},{defaultToken:"string"}]}],escapes:[{token:"constant.language.escape",regex:/\\([a-fA-F\d]{1,6}|[^a-fA-F\d])/}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();if(e==="ruleset"||t.$mode.$id=="ace/mode/scss"){var i=t.getLine(n.row).substr(0,n.column);return/:[^;]+$/.test(i)?(/([\w\-]+):[^:]*$/.test(i),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r)}return[]},this.getPropertyCompletions=function(e,t,n,i){var s=Object.keys(r);return s.map(function(e){return{caption:e,snippet:e+": $0;",meta:"property",score:1e6}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:1e6}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"&&n.selection.isEmpty()){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(/^(\s+[^;]|\s*$)/.test(f.substring(s.column)))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}}),this.add("!important","insertion",function(e,t,n,r,i){if(i==="!"&&n.selection.isEmpty()){var s=n.getCursorPosition(),o=r.doc.getLine(s.row);if(/^\s*(;|}|$)/.test(o.substring(s.column)))return{text:"!important",selection:[10,10]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.start.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.end.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:t},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e&&e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getSelectionRange().start,a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=a.getCurrentTokenColumn()+f.value.length;if(o.column/.test(r.getLine(o.row).slice(o.column)))return;while(!u(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var h=a.getCurrentTokenRow(),p=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var d=f.value;h==o.row&&(d=d.substring(0,o.column-p));if(this.voidElements.hasOwnProperty(d.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":this.getCommentFoldWidget(e,n)},this.getCommentFoldWidget=function(e,t){return/comment/.test(e.getState(t))&&/";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return this.getCommentFoldWidget(e,n)&&e.getCommentFoldRange(n,e.getLine(n).length);var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},abbr:{},address:{},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},article:{pubdate:1},aside:{},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},b:{},base:{href:1,target:1},bdi:{},bdo:{},blockquote:{cite:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},br:{},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},canvas:{width:1,height:1},caption:{},cite:{},code:{},col:{span:1},colgroup:{span:1},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},data:{},datalist:{},dd:{},del:{cite:1,datetime:1},details:{open:1},dfn:{},dialog:{open:1},div:{},dl:{},dt:{},em:{},embed:{src:1,height:1,width:1,type:1},fieldset:{disabled:1,form:1,name:1},figcaption:{},figure:{},footer:{},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},head:{},header:{},hr:{},html:{manifest:1},i:{},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},ins:{cite:1,datetime:1},kbd:{},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},label:{form:1,"for":1},legend:{},li:{value:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},main:{},map:{name:1},mark:{},math:{},menu:{type:1,label:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},nav:{},noscript:{href:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},ol:{start:1,reversed:1},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},output:{"for":1,form:1,name:1},p:{},param:{name:1,value:1},pre:{},progress:{value:1,max:1},q:{cite:1},rp:{},rt:{},ruby:{},s:{},samp:{},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},small:{},source:{src:1,type:1,media:1},span:{},strong:{},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},sub:{},sup:{},svg:{},table:{summary:1},tbody:{},td:{headers:1,rowspan:1,colspan:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},tfoot:{},th:{headers:1,rowspan:1,colspan:1,scope:1},thead:{},time:{datetime:1},title:{},tr:{},track:{kind:1,src:1,srclang:1,label:1,"default":1},section:{},summary:{},u:{},ul:{},"var":{},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},wbr:{}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:1e6}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:1e6}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:1e6}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:1e6}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}); (function() { - window.require(["ace/mode/html"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); -define("ace/theme/monokai",["require","exports","module","ace/lib/dom"],function(e,t,n){t.isDark=!0,t.cssClass="ace-monokai",t.cssText=".ace-monokai .ace_gutter {background: #2F3129;color: #8F908A}.ace-monokai .ace_print-margin {width: 1px;background: #555651}.ace-monokai {background-color: #272822;color: #F8F8F2}.ace-monokai .ace_cursor {color: #F8F8F0}.ace-monokai .ace_marker-layer .ace_selection {background: #49483E}.ace-monokai.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px #272822;}.ace-monokai .ace_marker-layer .ace_step {background: rgb(102, 82, 0)}.ace-monokai .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid #49483E}.ace-monokai .ace_marker-layer .ace_active-line {background: #202020}.ace-monokai .ace_gutter-active-line {background-color: #272727}.ace-monokai .ace_marker-layer .ace_selected-word {border: 1px solid #49483E}.ace-monokai .ace_invisible {color: #52524d}.ace-monokai .ace_entity.ace_name.ace_tag,.ace-monokai .ace_keyword,.ace-monokai .ace_meta.ace_tag,.ace-monokai .ace_storage {color: #F92672}.ace-monokai .ace_punctuation,.ace-monokai .ace_punctuation.ace_tag {color: #fff}.ace-monokai .ace_constant.ace_character,.ace-monokai .ace_constant.ace_language,.ace-monokai .ace_constant.ace_numeric,.ace-monokai .ace_constant.ace_other {color: #AE81FF}.ace-monokai .ace_invalid {color: #F8F8F0;background-color: #F92672}.ace-monokai .ace_invalid.ace_deprecated {color: #F8F8F0;background-color: #AE81FF}.ace-monokai .ace_support.ace_constant,.ace-monokai .ace_support.ace_function {color: #66D9EF}.ace-monokai .ace_fold {background-color: #A6E22E;border-color: #F8F8F2}.ace-monokai .ace_storage.ace_type,.ace-monokai .ace_support.ace_class,.ace-monokai .ace_support.ace_type {font-style: italic;color: #66D9EF}.ace-monokai .ace_entity.ace_name.ace_function,.ace-monokai .ace_entity.ace_other,.ace-monokai .ace_entity.ace_other.ace_attribute-name,.ace-monokai .ace_variable {color: #A6E22E}.ace-monokai .ace_variable.ace_parameter {font-style: italic;color: #FD971F}.ace-monokai .ace_string {color: #E6DB74}.ace-monokai .ace_comment {color: #75715E}.ace-monokai .ace_indent-guide {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAEklEQVQImWPQ0FD0ZXBzd/wPAAjVAoxeSgNeAAAAAElFTkSuQmCC) right repeat-y}";var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}); (function() { - window.require(["ace/theme/monokai"], function(m) { - if (typeof module == "object" && typeof exports == "object" && module) { - module.exports = m; - } - }); - })(); diff --git a/examples/SmartSwitch/data_src/app.css b/examples/SmartSwitch/data_src/app.css deleted file mode 100644 index ea5eebb..0000000 --- a/examples/SmartSwitch/data_src/app.css +++ /dev/null @@ -1 +0,0 @@ -.fpicker{background:#f2f2f2;padding:10px;width:100%;max-width:150px;white-space:nowrap;font-size:32px;font-weight:700;text-align:center}.tpop .fpicker{margin:20px auto 0 auto}.fpicker-h,.fpicker-m{display:inline-block;width:50%}.fpicker input[type=text]{box-sizing:border-box;width:70%;padding:2px;margin:5px 0;border:0;background:#fff;color:#888;text-align:center;font-size:24px}.fpicker-down,.fpicker-up{text-align:center;color:#468c00;cursor:pointer}.fpicker-btn{margin-top:10px}.fpicker-btn input[type=button]{width:50%;padding:10px 0;border:0;background:#468c00;color:#fff;font-size:20px;cursor:pointer}.ncf-container{font-size:14px;box-sizing:border-box;position:fixed;z-index:999999}.ncf-container.nfc-top-left{top:12px;left:12px}.ncf-container.nfc-top-right{top:12px;right:12px}.ncf-container.nfc-bottom-right{bottom:12px;right:12px}.ncf-container.nfc-bottom-left{bottom:12px;left:12px}@media (max-width:350px){.ncf-container{left:0;right:0}}.ncf-container .ncf{background:#fff;transition:.3s ease;position:relative;pointer-events:auto;overflow:hidden;margin:0 0 6px;padding:30px;width:100px;border-radius:3px 3px 3px 3px;box-shadow:0 0 12px #999;color:#000;opacity:.9;background-position:15px!important;background-repeat:no-repeat!important;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ncf-container .ncf:hover{box-shadow:0 0 12px #000;opacity:1;cursor:pointer}.ncf-container .ncf .ncf-title{font-weight:700;font-size:16px;text-align:left;margin-top:0;margin-bottom:6px;word-wrap:break-word}.ncf-container .ncf .nfc-message{margin:0;text-align:left;word-wrap:break-word}.ncf-container .success{background:#51a351;color:#fff;padding:15px 15px 15px 50px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==)}.ncf-container .info{background:#2f96b4;color:#fff;padding:15px 15px 15px 50px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=)}.ncf-container .warning{background:#f87400;color:#fff;padding:15px 15px 15px 50px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=)}.ncf-container .error{background:#bd362f;color:#fff;padding:15px 15px 15px 50px;background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=)!important}.ncf-container button{position:relative;right:-.3em;top:-.3em;float:right;font-weight:700;color:#fff;text-shadow:0 1px 0 #fff;opacity:.8;line-height:1;font-size:16px;padding:0;cursor:pointer;background:0 0;border:0}.ncf-container button:hover{opacity:1}.tpop{position:fixed;top:0;left:0;width:100%;height:100vh;background:rgba(0,0,0,.7);transition:all .5s;visibility:hidden;opacity:0}.tpop.show{visibility:visible;opacity:1}.tpicker{background:#f2f2f2;padding:10px;width:100%;max-width:150px;white-space:nowrap;font-size:32px;font-weight:700;text-align:center}.tpop .tpicker{margin:20px auto 0 auto}.tpicker-h,.tpicker-m{display:inline-block;width:50%}.tpicker input[type=text]{box-sizing:border-box;width:70%;padding:10px;margin:5px 0;border:0;background:#fff;color:#888;text-align:center;font-size:24px}.tpicker-down,.tpicker-up{text-align:center;color:#ff853f;cursor:pointer}.tpicker-btn{margin-top:10px}.tpicker-btn input[type=button]{width:50%;padding:10px 0;border:0;background:#a83a0b;color:#fff;font-size:20px;cursor:pointer} \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/app.min.js b/examples/SmartSwitch/data_src/app.min.js deleted file mode 100644 index f493e7f..0000000 --- a/examples/SmartSwitch/data_src/app.min.js +++ /dev/null @@ -1,533 +0,0 @@ -var tpick={attach:function(target){var dig=document.getElementById(target).value.split(":");var t1=dig[0]||"23";var t2=dig[1]||"59";var uniqueID=0;while(document.getElementById("tpick-"+uniqueID)!=null){uniqueID=Math.floor(Math.random()*(100-2))+1;} -var tw=document.createElement("div");tw.id="tpick-"+uniqueID;tw.classList.add("tpop");tw.dataset.target=target;tw.addEventListener("click",function(evt){if(evt.target.classList.contains("tpop")){this.classList.remove("show");}});var tp=document.createElement("div");tp.classList.add("tpicker");tp.appendChild(this.draw("h",t1));tp.appendChild(this.draw("m",t2));var bottom=document.createElement("div"),ok=document.createElement("input");ok.setAttribute("type","button");ok.value="OK";ok.addEventListener("click",function(){tpick.set(this);});bottom.classList.add("tpicker-btn");bottom.appendChild(ok);tp.appendChild(bottom);tw.appendChild(tp);document.body.appendChild(tw);var target=document.getElementById(target);target.dataset.dp=uniqueID;target.onfocus=function(){document.getElementById("tpick-"+this.dataset.dp).classList.add("show");};},draw:function(type,tv){var docket=document.createElement("div"),up=document.createElement("div"),down=document.createElement("div"),text=document.createElement("input");docket.classList.add("tpicker-"+type);up.classList.add("tpicker-up");down.classList.add("tpicker-down");up.innerHTML="︿";down.innerHTML="﹀";text.readOnly=true;text.setAttribute("type","text");if(type=="h"){text.value=tv;up.addEventListener("click",function(){tpick.spin("h",1,this);});down.addEventListener("click",function(){tpick.spin("h",0,this);});}else if(type=="m"){text.value=tv;up.addEventListener("click",function(){tpick.spin("m",1,this);});down.addEventListener("click",function(){tpick.spin("m",0,this);});} -docket.appendChild(up);docket.appendChild(text);docket.appendChild(down);return docket;},spin:function(type,direction,el){var parent=el.parentElement,field=parent.getElementsByTagName("input")[0],value=field.value;if(type=="h"){value=parseInt(value);if(direction){value++;}else{value--;} -if(value==-1){value=23;}else if(value>23){value=0;}}else if(type=="m"){value=parseInt(value);if(direction){value+=5;}else{value-=5;} -if(value<0){value=55;}else if(value>59){value=0;} -if(value<10){value="0"+value;}} -field.value=('00'+value).substr(-2);},set:function(el){var parent=el.parentElement;while(parent.classList.contains("tpop")==false){parent=parent.parentElement;} -var input=parent.querySelectorAll("input[type=text]");var time=input[0].value+":"+input[1].value;document.getElementById(parent.dataset.target).value=time;parent.classList.remove("show");}};var fpick={attach:function(target){var dig=document.getElementById(target).value.split(".");var t1=dig[0]||"1";var t2=dig[1]||"2";var uniqueID=0;while(document.getElementById("fpick-"+uniqueID)!=null){uniqueID=Math.floor(Math.random()*(100-2))+1;} -var tw=document.createElement("div");tw.id="fpick-"+uniqueID;tw.classList.add("tpop");tw.dataset.target=target;tw.addEventListener("click",function(evt){if(evt.target.classList.contains("tpop")){this.classList.remove("show");}});var tp=document.createElement("div");tp.classList.add("fpicker");tp.appendChild(this.draw("h",t1));tp.appendChild(this.draw("m",t2));var bottom=document.createElement("div"),ok=document.createElement("input");ok.setAttribute("type","button");ok.value="OK";ok.addEventListener("click",function(){fpick.set(this);});bottom.classList.add("fpicker-btn");bottom.appendChild(ok);tp.appendChild(bottom);tw.appendChild(tp);document.body.appendChild(tw);var target=document.getElementById(target);target.dataset.dp=uniqueID;target.onfocus=function(){document.getElementById("fpick-"+this.dataset.dp).classList.add("show");};},draw:function(type,tv){var docket=document.createElement("div"),up=document.createElement("div"),down=document.createElement("div"),text=document.createElement("input");docket.classList.add("fpicker-"+type);up.classList.add("fpicker-up");down.classList.add("fpicker-down");up.innerHTML="︿";down.innerHTML="﹀";text.readOnly=true;text.setAttribute("type","text");if(type=="h"){text.value=tv;up.addEventListener("click",function(){fpick.spin("h",1,this);});down.addEventListener("click",function(){fpick.spin("h",0,this);});}else if(type=="m"){text.value=tv;up.addEventListener("click",function(){fpick.spin("m",1,this);});down.addEventListener("click",function(){fpick.spin("m",0,this);});} -docket.appendChild(up);docket.appendChild(text);docket.appendChild(down);return docket;},spin:function(type,direction,el){var parent=el.parentElement,field=parent.getElementsByTagName("input")[0],value=field.value;if(type=="h"){value=parseInt(value);if(direction){value++;}else{value--;} -if(value==-41){value=99;}else if(value>99){value=-40;}}else if(type=="m"){value=parseInt(value);if(direction){value++;}else{value--;} -if(value<0){value=9;}else if(value>9){value=0;}} -field.value=value;},set:function(el){var parent=el.parentElement;while(parent.classList.contains("tpop")==false){parent=parent.parentElement;} -var input=parent.querySelectorAll("input[type=text]");var temperature=input[0].value+"."+input[1].value;document.getElementById(parent.dataset.target).value=temperature;parent.classList.remove("show");}};!function(t){function n(i){if(e[i]) -return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports} -var e={};n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:i})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},n.p="",n(n.s=0)} -([function(t,n,e){e(1),t.exports=e(4)},function(t,n,e){"use strict";var i=Object.assign||function(t){for(var n=1;n-1} -(t.positionClass)||(console.warn("An invalid notification position class has been specified."),t.positionClass=c.positionClass),t.onclick&&"function"!=typeof t.onclick&&(console.warn("Notification on click must be a function."),t.onclick=c.onclick),"number"!=typeof t.showDuration&&(t.showDuration=c.showDuration),(0,o.isString)(t.theme)&&0!==t.theme.length||(console.warn("Notification theme must be a string with length"),t.theme=c.theme),t} -function e(t){return t=n(t),function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=n.title,i=n.message,c=r(t.positionClass);if(!e&&!i) -return console.warn("Notification must contain a title or a message!");var a=(0,o.createElement)("div","ncf",t.theme);if(!0===t.closeOnClick&&a.addEventListener("click",function(){return c.removeChild(a)}),t.onclick&&a.addEventListener("click",function(n){return t.onclick(n)}),t.displayCloseButton){var s=(0,o.createElement)("button");s.innerText="X",!1===t.closeOnClick&&s.addEventListener("click",function(){return c.removeChild(a)}),(0,o.append)(a,s)} -if((0,o.isString)(e)&&e.length&&(0,o.append)(a,(0,o.createParagraph)("ncf-title")(e)),(0,o.isString)(i)&&i.length&&(0,o.append)(a,(0,o.createParagraph)("nfc-message")(i)),(0,o.append)(c,a),t.showDuration&&t.showDuration>0){var l=setTimeout(function(){c.removeChild(a),0===c.querySelectorAll(".ncf").length&&document.body.removeChild(c)},t.showDuration);(t.closeOnClick||t.displayCloseButton)&&a.addEventListener("click",function(){return clearTimeout(l)})}}} -function r(t){var n=document.querySelector("."+t);return n||(n=(0,o.createElement)("div","ncf-container",t),(0,o.append)(document.body,n)),n} -var c={closeOnClick:!0,displayCloseButton:!1,positionClass:"nfc-top-right",onclick:!1,showDuration:3500,theme:"success"};t.createNotification?console.warn("Window already contains a create notification function. Have you included the script twice?"):t.createNotification=e} -(window)},function(t,n,e){"use strict";!function(){function t(t){this.el=t;for(var n=t.className.replace(/^\s+|\s+$/g,"").split(/\s+/),i=0;i1?n-1:0),i=1;i1?n-1:0),i=1;i1?n-1:0),i=1;i1?n-1:0),c=1;cp;p++)"zIndex"in i[p]&&(l.push(i[p].zIndex),i[p].zIndex<0&&(m[i[p].zIndex]=i[p]));for(l.sort(h);l[k]<0;) -if(e=m[l[k++]],n.push(e.apply(d,g)),b) -return b=f,n;for(p=0;q>p;p++) -if(e=i[p],"zIndex"in e) -if(e.zIndex==l[k]){if(n.push(e.apply(d,g)),b) -break;do -if(k++,e=m[l[k]],e&&n.push(e.apply(d,g)),b) -break;while(e)}else -m[e.zIndex]=e;else if(n.push(e.apply(d,g)),b) -break;return b=f,a=o,n.length?n:null};return j._events=i,j.listeners=function(a){var b,c,d,g,h,j,k,l,m=a.split(e),n=i,o=[n],p=[];for(g=0,h=m.length;h>g;g++){for(l=[],j=0,k=o.length;k>j;j++) -for(n=o[j].n,c=[n[m[g]],n[f]],d=2;d--;) -b=c[d],b&&(l.push(b),p=p.concat(b.f||[]));o=l} -return p},j.on=function(a,b){if(a=String(a),"function"!=typeof b) -return function(){};for(var c=a.split(e),d=i,f=0,h=c.length;h>f;f++) -d=d.n,d=d.hasOwnProperty(c[f])&&d[c[f]]||(d[c[f]]={n:{}});for(d.f=d.f||[],f=0,h=d.f.length;h>f;f++) -if(d.f[f]==b) -return g;return d.f.push(b),function(a){+a==+a&&(b.zIndex=+a)}},j.f=function(a){var b=[].slice.call(arguments,1);return function(){j.apply(null,[a,null].concat(b).concat([].slice.call(arguments,0)))}},j.stop=function(){b=1},j.nt=function(b){return b?new RegExp("(?:\\.|\\/|^)"+b+"(?:\\.|\\/|$)").test(a):a},j.nts=function(){return a.split(e)},j.off=j.unbind=function(a,b){if(!a) -return void(j._events=i={n:{}});var c,g,h,k,l,m,n,o=a.split(e),p=[i];for(k=0,l=o.length;l>k;k++) -for(m=0;mk;k++) -for(c=p[k];c.n;){if(b){if(c.f){for(m=0,n=c.f.length;n>m;m++) -if(c.f[m]==b){c.f.splice(m,1);break} -!c.f.length&&delete c.f} -for(g in c.n) -if(c.n[d](g)&&c.n[g].f){var q=c.n[g].f;for(m=0,n=q.length;n>m;m++) -if(q[m]==b){q.splice(m,1);break} -!q.length&&delete c.n[g].f}}else{delete c.f;for(g in c.n) -c.n[d](g)&&c.n[g].f&&delete c.n[g].f} -c=c.n}},j.once=function(a,b){var c=function(){return j.unbind(a,c),b.apply(this,arguments)};return j.on(a,c)},j.version=c,j.toString=function(){return"You are running Eve "+c},j}),function(a,b){"function"==typeof define&&define.amd?define("raphael.core",["eve"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("eve")):a.Raphael=b(a.eve)} -(this,function(a){function b(c){if(b.is(c,"function")) -return t?c():a.on("raphael.DOMload",c);if(b.is(c,U)) -return b._engine.create[C](b,c.splice(0,3+b.is(c[0],S))).add(c);var d=Array.prototype.slice.call(arguments,0);if(b.is(d[d.length-1],"function")){var e=d.pop();return t?e.call(b._engine.create[C](b,d)):a.on("raphael.DOMload",function(){e.call(b._engine.create[C](b,d))})} -return b._engine.create[C](b,arguments)} -function c(a){if("function"==typeof a||Object(a)!==a) -return a;var b=new a.constructor;for(var d in a) -a[y](d)&&(b[d]=c(a[d]));return b} -function d(a,b){for(var c=0,d=a.length;d>c;c++) -if(a[c]===b) -return a.push(a.splice(c,1)[0])} -function e(a,b,c){function e(){var f=Array.prototype.slice.call(arguments,0),g=f.join("␀"),h=e.cache=e.cache||{},i=e.count=e.count||[];return h[y](g)?(d(i,g),c?c(h[g]):h[g]):(i.length>=1e3&&delete h[i.shift()],i.push(g),h[g]=a[C](b,f),c?c(h[g]):h[g])} -return e} -function f(){return this.hex} -function g(a,b){for(var c=[],d=0,e=a.length;e-2*!b>d;d+=2){var f=[{x:+a[d-2],y:+a[d-1]},{x:+a[d],y:+a[d+1]},{x:+a[d+2],y:+a[d+3]},{x:+a[d+4],y:+a[d+5]}];b?d?e-4==d?f[3]={x:+a[0],y:+a[1]}:e-2==d&&(f[2]={x:+a[0],y:+a[1]},f[3]={x:+a[2],y:+a[3]}):f[0]={x:+a[e-2],y:+a[e-1]}:e-4==d?f[3]=f[2]:d||(f[0]={x:+a[d],y:+a[d+1]}),c.push(["C",(-f[0].x+6*f[1].x+f[2].x)/6,(-f[0].y+6*f[1].y+f[2].y)/6,(f[1].x+6*f[2].x-f[3].x)/6,(f[1].y+6*f[2].y-f[3].y)/6,f[2].x,f[2].y])} -return c} -function h(a,b,c,d,e){var f=-3*b+9*c-9*d+3*e,g=a*f+6*b-12*c+6*d;return a*g-3*b+3*c} -function i(a,b,c,d,e,f,g,i,j){null==j&&(j=1),j=j>1?1:0>j?0:j;for(var k=j/2,l=12,m=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],n=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],o=0,p=0;l>p;p++){var q=k*m[p]+k,r=h(q,a,c,e,g),s=h(q,b,d,f,i),t=r*r+s*s;o+=n[p]*M.sqrt(t)} -return k*o} -function j(a,b,c,d,e,f,g,h,j){if(!(0>j||i(a,b,c,d,e,f,g,h)o;) -m/=2,n+=(j>k?1:-1)*m,k=i(a,b,c,d,e,f,g,h,n);return n}} -function k(a,b,c,d,e,f,g,h){if(!(N(a,c)N(e,g)||N(b,d)N(f,h))){var i=(a*d-b*c)*(e-g)-(a-c)*(e*h-f*g),j=(a*d-b*c)*(f-h)-(b-d)*(e*h-f*g),k=(a-c)*(f-h)-(b-d)*(e-g);if(k){var l=i/k,m=j/k,n=+l.toFixed(2),o=+m.toFixed(2);if(!(n<+O(a,c).toFixed(2)||n>+N(a,c).toFixed(2)||n<+O(e,g).toFixed(2)||n>+N(e,g).toFixed(2)||o<+O(b,d).toFixed(2)||o>+N(b,d).toFixed(2)||o<+O(f,h).toFixed(2)||o>+N(f,h).toFixed(2))) -return{x:l,y:m}}}} -function l(a,c,d){var e=b.bezierBBox(a),f=b.bezierBBox(c);if(!b.isBBoxIntersect(e,f)) -return d?0:[];for(var g=i.apply(0,a),h=i.apply(0,c),j=N(~~(g/5),1),l=N(~~(h/5),1),m=[],n=[],o={},p=d?0:[],q=0;j+1>q;q++){var r=b.findDotsAtSegment.apply(b,a.concat(q/j));m.push({x:r.x,y:r.y,t:q/j})} -for(q=0;l+1>q;q++) -r=b.findDotsAtSegment.apply(b,c.concat(q/l)),n.push({x:r.x,y:r.y,t:q/l});for(q=0;j>q;q++) -for(var s=0;l>s;s++){var t=m[q],u=m[q+1],v=n[s],w=n[s+1],x=P(u.x-t.x)<.001?"y":"x",y=P(w.x-v.x)<.001?"y":"x",z=k(t.x,t.y,u.x,u.y,v.x,v.y,w.x,w.y);if(z){if(o[z.x.toFixed(4)]==z.y.toFixed(4)) -continue;o[z.x.toFixed(4)]=z.y.toFixed(4);var A=t.t+P((z[x]-t[x])/(u[x]-t[x]))*(u.t-t.t),B=v.t+P((z[y]-v[y])/(w[y]-v[y]))*(w.t-v.t);A>=0&&1.001>=A&&B>=0&&1.001>=B&&(d?p++:p.push({x:z.x,y:z.y,t1:O(A,1),t2:O(B,1)}))}} -return p} -function m(a,c,d){a=b._path2curve(a),c=b._path2curve(c);for(var e,f,g,h,i,j,k,m,n,o,p=d?0:[],q=0,r=a.length;r>q;q++){var s=a[q];if("M"==s[0]) -e=i=s[1],f=j=s[2];else{"C"==s[0]?(n=[e,f].concat(s.slice(1)),e=n[6],f=n[7]):(n=[e,f,e,f,i,j,i,j],e=i,f=j);for(var t=0,u=c.length;u>t;t++){var v=c[t];if("M"==v[0]) -g=k=v[1],h=m=v[2];else{"C"==v[0]?(o=[g,h].concat(v.slice(1)),g=o[6],h=o[7]):(o=[g,h,g,h,k,m,k,m],g=k,h=m);var w=l(n,o,d);if(d) -p+=w;else{for(var x=0,y=w.length;y>x;x++) -w[x].segment1=q,w[x].segment2=t,w[x].bez1=n,w[x].bez2=o;p=p.concat(w)}}}}} -return p} -function n(a,b,c,d,e,f){null!=a?(this.a=+a,this.b=+b,this.c=+c,this.d=+d,this.e=+e,this.f=+f):(this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0)} -function o(){return this.x+G+this.y+G+this.width+" × "+this.height} -function p(a,b,c,d,e,f){function g(a){return((l*a+k)*a+j)*a} -function h(a,b){var c=i(a,b);return((o*c+n)*c+m)*c} -function i(a,b){var c,d,e,f,h,i;for(e=a,i=0;8>i;i++){if(f=g(e)-a,P(f)e) -return c;if(e>d) -return d;for(;d>c;){if(f=g(e),P(f-a)f?c=e:d=e,e=(d-c)/2+c} -return e} -var j=3*b,k=3*(d-b)-j,l=1-j-k,m=3*c,n=3*(e-c)-m,o=1-m-n;return h(a,1/(200*f))} -function q(a,b){var c=[],d={};if(this.ms=b,this.times=1,a){for(var e in a) -a[y](e)&&(d[$(e)]=a[e],c.push($(e)));c.sort(ka)} -this.anim=d,this.top=c[c.length-1],this.percents=c} -function r(c,d,e,f,g,h){e=$(e);var i,j,k,l,m,o,q=c.ms,r={},s={},t={};if(f) -for(w=0,x=fb.length;x>w;w++){var u=fb[w];if(u.el.id==d.id&&u.anim==c){u.percent!=e?(fb.splice(w,1),k=1):j=u,d.attr(u.totalOrigin);break}} -else -f=+s;for(var w=0,x=c.percents.length;x>w;w++){if(c.percents[w]==e||c.percents[w]>f*c.top){e=c.percents[w],m=c.percents[w-1]||0,q=q/c.top*(e-m),l=c.percents[w+1],i=c.anim[e];break} -f&&d.attr(c.anim[c.percents[w]])} -if(i){if(j) -j.initstatus=f,j.start=new Date-j.ms*f;else{for(var z in i) -if(i[y](z)&&(ca[y](z)||d.paper.customAttributes[y](z))) -switch(r[z]=d.attr(z),null==r[z]&&(r[z]=ba[z]),s[z]=i[z],ca[z]){case S:t[z]=(s[z]-r[z])/q;break;case"colour":r[z]=b.getRGB(r[z]);var A=b.getRGB(s[z]);t[z]={r:(A.r-r[z].r)/q,g:(A.g-r[z].g)/q,b:(A.b-r[z].b)/q};break;case"path":var B=Ia(r[z],s[z]),C=B[1];for(r[z]=B[0],t[z]=[],w=0,x=r[z].length;x>w;w++){t[z][w]=[0];for(var E=1,F=r[z][w].length;F>E;E++) -t[z][w][E]=(C[w][E]-r[z][w][E])/q} -break;case"transform":var G=d._,J=Na(G[z],s[z]);if(J) -for(r[z]=J.from,s[z]=J.to,t[z]=[],t[z].real=!0,w=0,x=r[z].length;x>w;w++) -for(t[z][w]=[r[z][w][0]],E=1,F=r[z][w].length;F>E;E++) -t[z][w][E]=(s[z][w][E]-r[z][w][E])/q;else{var K=d.matrix||new n,L={_:{transform:G.transform},getBBox:function(){return d.getBBox(1)}};r[z]=[K.a,K.b,K.c,K.d,K.e,K.f],La(L,s[z]),s[z]=L._.transform,t[z]=[(L.matrix.a-K.a)/q,(L.matrix.b-K.b)/q,(L.matrix.c-K.c)/q,(L.matrix.d-K.d)/q,(L.matrix.e-K.e)/q,(L.matrix.f-K.f)/q]} -break;case"csv":var M=H(i[z])[I](v),N=H(r[z])[I](v);if("clip-rect"==z) -for(r[z]=N,t[z]=[],w=N.length;w--;) -t[z][w]=(M[w]-r[z][w])/q;s[z]=M;break;default:for(M=[][D](i[z]),N=[][D](r[z]),t[z]=[],w=d.paper.customAttributes[z].length;w--;) -t[z][w]=((M[w]||0)-(N[w]||0))/q} -var O=i.easing,P=b.easing_formulas[O];if(!P) -if(P=H(O).match(Y),P&&5==P.length){var Q=P;P=function(a){return p(a,+Q[1],+Q[2],+Q[3],+Q[4],q)}}else -P=la;if(o=i.start||c.start||+new Date,u={anim:c,percent:e,timestamp:o,start:o+(c.del||0),status:0,initstatus:f||0,stop:!1,ms:q,easing:P,from:r,diff:t,to:s,el:d,callback:i.callback,prev:m,next:l,repeat:h||c.times,origin:d.attr(),totalOrigin:g},fb.push(u),f&&!j&&!k&&(u.stop=!0,u.start=new Date-q*f,1==fb.length)) -return hb();k&&(u.start=new Date-u.ms*f),1==fb.length&&gb(hb)} -a("raphael.anim.start."+d.id,d,c)}} -function s(a){for(var b=0;be;e++) -for(i=a[e],f=1,h=i.length;h>f;f+=2) -c=b.x(i[f],i[f+1]),d=b.y(i[f],i[f+1]),i[f]=c,i[f+1]=d;return a};if(b._g=z,b.type=z.win.SVGAngle||z.doc.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")?"SVG":"VML","VML"==b.type){var qa,ra=z.doc.createElement("div");if(ra.innerHTML='',qa=ra.firstChild,qa.style.behavior="url(#default#VML)",!qa||"object"!=typeof qa.adj) -return b.type=F;ra=null} -b.svg=!(b.vml="VML"==b.type),b._Paper=B,b.fn=u=B.prototype=b.prototype,b._id=0,b._oid=0,b.is=function(a,b){return b=L.call(b),"finite"==b?!X[y](+a):"array"==b?a instanceof Array:"null"==b&&null===a||b==typeof a&&null!==a||"object"==b&&a===Object(a)||"array"==b&&Array.isArray&&Array.isArray(a)||V.call(a).slice(8,-1).toLowerCase()==b},b.angle=function(a,c,d,e,f,g){if(null==f){var h=a-d,i=c-e;return h||i?(180+180*M.atan2(-i,-h)/R+360)%360:0} -return b.angle(a,c,f,g)-b.angle(d,e,f,g)},b.rad=function(a){return a%360*R/180},b.deg=function(a){return Math.round(180*a/R%360*1e3)/1e3},b.snapTo=function(a,c,d){if(d=b.is(d,"finite")?d:10,b.is(a,U)){for(var e=a.length;e--;) -if(P(a[e]-c)<=d) -return a[e]}else{a=+a;var f=c%a;if(d>f) -return c-f;if(f>a-d) -return c-f+a} -return c};b.createUUID=function(a,b){return function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(a,b).toUpperCase()}} -(/[xy]/g,function(a){var b=16*M.random()|0,c="x"==a?b:3&b|8;return c.toString(16)});b.setWindow=function(c){a("raphael.setWindow",b,z.win,c),z.win=c,z.doc=z.win.document,b._engine.initWin&&b._engine.initWin(z.win)};var sa=function(a){if(b.vml){var c,d=/^\s+|\s+$/g;try{var f=new ActiveXObject("htmlfile");f.write(""),f.close(),c=f.body}catch(g){c=createPopup().document.body} -var h=c.createTextRange();sa=e(function(a){try{c.style.color=H(a).replace(d,F);var b=h.queryCommandValue("ForeColor");return b=(255&b)<<16|65280&b|(16711680&b)>>>16,"#"+("000000"+b.toString(16)).slice(-6)}catch(e){return"none"}})}else{var i=z.doc.createElement("i");i.title="Raphaël Colour Picker",i.style.display="none",z.doc.body.appendChild(i),sa=e(function(a){return i.style.color=a,z.doc.defaultView.getComputedStyle(i,F).getPropertyValue("color")})} -return sa(a)},ta=function(){return"hsb("+[this.h,this.s,this.b]+")"},ua=function(){return"hsl("+[this.h,this.s,this.l]+")"},va=function(){return this.hex},wa=function(a,c,d){if(null==c&&b.is(a,"object")&&"r"in a&&"g"in a&&"b"in a&&(d=a.b,c=a.g,a=a.r),null==c&&b.is(a,T)){var e=b.getRGB(a);a=e.r,c=e.g,d=e.b} -return(a>1||c>1||d>1)&&(a/=255,c/=255,d/=255),[a,c,d]},xa=function(a,c,d,e){a*=255,c*=255,d*=255;var f={r:a,g:c,b:d,hex:b.rgb(a,c,d),toString:va};return b.is(e,"finite")&&(f.opacity=e),f};b.color=function(a){var c;return b.is(a,"object")&&"h"in a&&"s"in a&&"b"in a?(c=b.hsb2rgb(a),a.r=c.r,a.g=c.g,a.b=c.b,a.hex=c.hex):b.is(a,"object")&&"h"in a&&"s"in a&&"l"in a?(c=b.hsl2rgb(a),a.r=c.r,a.g=c.g,a.b=c.b,a.hex=c.hex):(b.is(a,"string")&&(a=b.getRGB(a)),b.is(a,"object")&&"r"in a&&"g"in a&&"b"in a?(c=b.rgb2hsl(a),a.h=c.h,a.s=c.s,a.l=c.l,c=b.rgb2hsb(a),a.v=c.b):(a={hex:"none"},a.r=a.g=a.b=a.h=a.s=a.v=a.l=-1)),a.toString=va,a},b.hsb2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"b"in a&&(c=a.b,b=a.s,d=a.o,a=a.h),a*=360;var e,f,g,h,i;return a=a%360/60,i=c*b,h=i*(1-P(a%2-1)),e=f=g=c-i,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a],xa(e,f,g,d)},b.hsl2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"l"in a&&(c=a.l,b=a.s,a=a.h),(a>1||b>1||c>1)&&(a/=360,b/=100,c/=100),a*=360;var e,f,g,h,i;return a=a%360/60,i=2*b*(.5>c?c:1-c),h=i*(1-P(a%2-1)),e=f=g=c-i/2,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a],xa(e,f,g,d)},b.rgb2hsb=function(a,b,c){c=wa(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g;return f=N(a,b,c),g=f-O(a,b,c),d=0==g?null:f==a?(b-c)/g:f==b?(c-a)/g+2:(a-b)/g+4,d=(d+360)%6*60/360,e=0==g?0:g/f,{h:d,s:e,b:f,toString:ta}},b.rgb2hsl=function(a,b,c){c=wa(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g,h,i;return g=N(a,b,c),h=O(a,b,c),i=g-h,d=0==i?null:g==a?(b-c)/i:g==b?(c-a)/i+2:(a-b)/i+4,d=(d+360)%6*60/360,f=(g+h)/2,e=0==i?0:.5>f?i/(2*f):i/(2-2*f),{h:d,s:e,l:f,toString:ua}},b._path2string=function(){return this.join(",").replace(fa,"$1")};b._preload=function(a,b){var c=z.doc.createElement("img");c.style.cssText="position:absolute;left:-9999em;top:-9999em",c.onload=function(){b.call(this),this.onload=null,z.doc.body.removeChild(this)},c.onerror=function(){z.doc.body.removeChild(this)},z.doc.body.appendChild(c),c.src=a};b.getRGB=e(function(a){if(!a||(a=H(a)).indexOf("-")+1) -return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:f};if("none"==a) -return{r:-1,g:-1,b:-1,hex:"none",toString:f};!(ea[y](a.toLowerCase().substring(0,2))||"#"==a.charAt())&&(a=sa(a));var c,d,e,g,h,i,j=a.match(W);return j?(j[2]&&(e=_(j[2].substring(5),16),d=_(j[2].substring(3,5),16),c=_(j[2].substring(1,3),16)),j[3]&&(e=_((h=j[3].charAt(3))+h,16),d=_((h=j[3].charAt(2))+h,16),c=_((h=j[3].charAt(1))+h,16)),j[4]&&(i=j[4][I](da),c=$(i[0]),"%"==i[0].slice(-1)&&(c*=2.55),d=$(i[1]),"%"==i[1].slice(-1)&&(d*=2.55),e=$(i[2]),"%"==i[2].slice(-1)&&(e*=2.55),"rgba"==j[1].toLowerCase().slice(0,4)&&(g=$(i[3])),i[3]&&"%"==i[3].slice(-1)&&(g/=100)),j[5]?(i=j[5][I](da),c=$(i[0]),"%"==i[0].slice(-1)&&(c*=2.55),d=$(i[1]),"%"==i[1].slice(-1)&&(d*=2.55),e=$(i[2]),"%"==i[2].slice(-1)&&(e*=2.55),("deg"==i[0].slice(-3)||"°"==i[0].slice(-1))&&(c/=360),"hsba"==j[1].toLowerCase().slice(0,4)&&(g=$(i[3])),i[3]&&"%"==i[3].slice(-1)&&(g/=100),b.hsb2rgb(c,d,e,g)):j[6]?(i=j[6][I](da),c=$(i[0]),"%"==i[0].slice(-1)&&(c*=2.55),d=$(i[1]),"%"==i[1].slice(-1)&&(d*=2.55),e=$(i[2]),"%"==i[2].slice(-1)&&(e*=2.55),("deg"==i[0].slice(-3)||"°"==i[0].slice(-1))&&(c/=360),"hsla"==j[1].toLowerCase().slice(0,4)&&(g=$(i[3])),i[3]&&"%"==i[3].slice(-1)&&(g/=100),b.hsl2rgb(c,d,e,g)):(j={r:c,g:d,b:e,toString:f},j.hex="#"+(16777216|e|d<<8|c<<16).toString(16).slice(1),b.is(g,"finite")&&(j.opacity=g),j)):{r:-1,g:-1,b:-1,hex:"none",error:1,toString:f}},b),b.hsb=e(function(a,c,d){return b.hsb2rgb(a,c,d).hex}),b.hsl=e(function(a,c,d){return b.hsl2rgb(a,c,d).hex}),b.rgb=e(function(a,b,c){function d(a){return a+.5|0} -return"#"+(16777216|d(c)|d(b)<<8|d(a)<<16).toString(16).slice(1)}),b.getColor=function(a){var b=this.getColor.start=this.getColor.start||{h:0,s:1,b:a||.75},c=this.hsb2rgb(b.h,b.s,b.b);return b.h+=.075,b.h>1&&(b.h=0,b.s-=.2,b.s<=0&&(this.getColor.start={h:0,s:1,b:b.b})),c.hex},b.getColor.reset=function(){delete this.start},b.parsePathString=function(a){if(!a) -return null;var c=ya(a);if(c.arr) -return Aa(c.arr);var d={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},e=[];return b.is(a,U)&&b.is(a[0],U)&&(e=Aa(a)),e.length||H(a).replace(ga,function(a,b,c){var f=[],g=b.toLowerCase();if(c.replace(ia,function(a,b){b&&f.push(+b)}),"m"==g&&f.length>2&&(e.push([b][D](f.splice(0,2))),g="l",b="m"==b?"l":"L"),"r"==g) -e.push([b][D](f));else -for(;f.length>=d[g]&&(e.push([b][D](f.splice(0,d[g]))),d[g]););}),e.toString=b._path2string,c.arr=Aa(e),e},b.parseTransformString=e(function(a){if(!a) -return null;var c=[];return b.is(a,U)&&b.is(a[0],U)&&(c=Aa(a)),c.length||H(a).replace(ha,function(a,b,d){{var e=[];L.call(b)} -d.replace(ia,function(a,b){b&&e.push(+b)}),c.push([b][D](e))}),c.toString=b._path2string,c});var ya=function(a){var b=ya.ps=ya.ps||{};return b[a]?b[a].sleep=100:b[a]={sleep:100},setTimeout(function(){for(var c in b) -b[y](c)&&c!=a&&(b[c].sleep--,!b[c].sleep&&delete b[c])}),b[a]};b.findDotsAtSegment=function(a,b,c,d,e,f,g,h,i){var j=1-i,k=Q(j,3),l=Q(j,2),m=i*i,n=m*i,o=k*a+3*l*i*c+3*j*i*i*e+n*g,p=k*b+3*l*i*d+3*j*i*i*f+n*h,q=a+2*i*(c-a)+m*(e-2*c+a),r=b+2*i*(d-b)+m*(f-2*d+b),s=c+2*i*(e-c)+m*(g-2*e+c),t=d+2*i*(f-d)+m*(h-2*f+d),u=j*a+i*c,v=j*b+i*d,w=j*e+i*g,x=j*f+i*h,y=90-180*M.atan2(q-s,r-t)/R;return(q>s||t>r)&&(y+=180),{x:o,y:p,m:{x:q,y:r},n:{x:s,y:t},start:{x:u,y:v},end:{x:w,y:x},alpha:y}},b.bezierBBox=function(a,c,d,e,f,g,h,i){b.is(a,"array")||(a=[a,c,d,e,f,g,h,i]);var j=Ha.apply(null,a);return{x:j.min.x,y:j.min.y,x2:j.max.x,y2:j.max.y,width:j.max.x-j.min.x,height:j.max.y-j.min.y}},b.isPointInsideBBox=function(a,b,c){return b>=a.x&&b<=a.x2&&c>=a.y&&c<=a.y2},b.isBBoxIntersect=function(a,c){var d=b.isPointInsideBBox;return d(c,a.x,a.y)||d(c,a.x2,a.y)||d(c,a.x,a.y2)||d(c,a.x2,a.y2)||d(a,c.x,c.y)||d(a,c.x2,c.y)||d(a,c.x,c.y2)||d(a,c.x2,c.y2)||(a.xc.x||c.xa.x)&&(a.yc.y||c.ya.y)},b.pathIntersection=function(a,b){return m(a,b)},b.pathIntersectionNumber=function(a,b){return m(a,b,1)},b.isPointInsidePath=function(a,c,d){var e=b.pathBBox(a);return b.isPointInsideBBox(e,c,d)&&m(a,[["M",c,d],["H",e.x2+10]],1)%2==1},b._removedFactory=function(b){return function(){a("raphael.log",null,"Raphaël: you are calling to method “"+b+"” of removed object",b)}};var za=b.pathBBox=function(a){var b=ya(a);if(b.bbox) -return c(b.bbox);if(!a) -return{x:0,y:0,width:0,height:0,x2:0,y2:0};a=Ia(a);for(var d,e=0,f=0,g=[],h=[],i=0,j=a.length;j>i;i++) -if(d=a[i],"M"==d[0]) -e=d[1],f=d[2],g.push(e),h.push(f);else{var k=Ha(e,f,d[1],d[2],d[3],d[4],d[5],d[6]);g=g[D](k.min.x,k.max.x),h=h[D](k.min.y,k.max.y),e=d[5],f=d[6]} -var l=O[C](0,g),m=O[C](0,h),n=N[C](0,g),o=N[C](0,h),p=n-l,q=o-m,r={x:l,y:m,x2:n,y2:o,width:p,height:q,cx:l+p/2,cy:m+q/2};return b.bbox=c(r),r},Aa=function(a){var d=c(a);return d.toString=b._path2string,d},Ba=b._pathToRelative=function(a){var c=ya(a);if(c.rel) -return Aa(c.rel);b.is(a,U)&&b.is(a&&a[0],U)||(a=b.parsePathString(a));var d=[],e=0,f=0,g=0,h=0,i=0;"M"==a[0][0]&&(e=a[0][1],f=a[0][2],g=e,h=f,i++,d.push(["M",e,f]));for(var j=i,k=a.length;k>j;j++){var l=d[j]=[],m=a[j];if(m[0]!=L.call(m[0])) -switch(l[0]=L.call(m[0]),l[0]){case"a":l[1]=m[1],l[2]=m[2],l[3]=m[3],l[4]=m[4],l[5]=m[5],l[6]=+(m[6]-e).toFixed(3),l[7]=+(m[7]-f).toFixed(3);break;case"v":l[1]=+(m[1]-f).toFixed(3);break;case"m":g=m[1],h=m[2];default:for(var n=1,o=m.length;o>n;n++) -l[n]=+(m[n]-(n%2?e:f)).toFixed(3)} -else{l=d[j]=[],"m"==m[0]&&(g=m[1]+e,h=m[2]+f);for(var p=0,q=m.length;q>p;p++) -d[j][p]=m[p]} -var r=d[j].length;switch(d[j][0]){case"z":e=g,f=h;break;case"h":e+=+d[j][r-1];break;case"v":f+=+d[j][r-1];break;default:e+=+d[j][r-2],f+=+d[j][r-1]}} -return d.toString=b._path2string,c.rel=Aa(d),d},Ca=b._pathToAbsolute=function(a){var c=ya(a);if(c.abs) -return Aa(c.abs);if(b.is(a,U)&&b.is(a&&a[0],U)||(a=b.parsePathString(a)),!a||!a.length) -return[["M",0,0]];var d=[],e=0,f=0,h=0,i=0,j=0;"M"==a[0][0]&&(e=+a[0][1],f=+a[0][2],h=e,i=f,j++,d[0]=["M",e,f]);for(var k,l,m=3==a.length&&"M"==a[0][0]&&"R"==a[1][0].toUpperCase()&&"Z"==a[2][0].toUpperCase(),n=j,o=a.length;o>n;n++){if(d.push(k=[]),l=a[n],l[0]!=aa.call(l[0])) -switch(k[0]=aa.call(l[0]),k[0]){case"A":k[1]=l[1],k[2]=l[2],k[3]=l[3],k[4]=l[4],k[5]=l[5],k[6]=+(l[6]+e),k[7]=+(l[7]+f);break;case"V":k[1]=+l[1]+f;break;case"H":k[1]=+l[1]+e;break;case"R":for(var p=[e,f][D](l.slice(1)),q=2,r=p.length;r>q;q++) -p[q]=+p[q]+e,p[++q]=+p[q]+f;d.pop(),d=d[D](g(p,m));break;case"M":h=+l[1]+e,i=+l[2]+f;default:for(q=1,r=l.length;r>q;q++) -k[q]=+l[q]+(q%2?e:f)} -else if("R"==l[0]) -p=[e,f][D](l.slice(1)),d.pop(),d=d[D](g(p,m)),k=["R"][D](l.slice(-2));else -for(var s=0,t=l.length;t>s;s++) -k[s]=l[s];switch(k[0]){case"Z":e=h,f=i;break;case"H":e=k[1];break;case"V":f=k[1];break;case"M":h=k[k.length-2],i=k[k.length-1];default:e=k[k.length-2],f=k[k.length-1]}} -return d.toString=b._path2string,c.abs=Aa(d),d},Da=function(a,b,c,d){return[a,b,c,d,c,d]},Ea=function(a,b,c,d,e,f){var g=1/3,h=2/3;return[g*a+h*c,g*b+h*d,g*e+h*c,g*f+h*d,e,f]},Fa=function(a,b,c,d,f,g,h,i,j,k){var l,m=120*R/180,n=R/180*(+f||0),o=[],p=e(function(a,b,c){var d=a*M.cos(c)-b*M.sin(c),e=a*M.sin(c)+b*M.cos(c);return{x:d,y:e}});if(k) -y=k[0],z=k[1],w=k[2],x=k[3];else{l=p(a,b,-n),a=l.x,b=l.y,l=p(i,j,-n),i=l.x,j=l.y;var q=(M.cos(R/180*f),M.sin(R/180*f),(a-i)/2),r=(b-j)/2,s=q*q/(c*c)+r*r/(d*d);s>1&&(s=M.sqrt(s),c=s*c,d=s*d);var t=c*c,u=d*d,v=(g==h?-1:1)*M.sqrt(P((t*u-t*r*r-u*q*q)/(t*r*r+u*q*q))),w=v*c*r/d+(a+i)/2,x=v* -d*q/c+(b+j)/2,y=M.asin(((b-x)/d).toFixed(9)),z=M.asin(((j-x)/d).toFixed(9));y=w>a?R-y:y,z=w>i?R-z:z,0>y&&(y=2*R+y),0>z&&(z=2*R+z),h&&y>z&&(y-=2*R),!h&&z>y&&(z-=2*R)} -var A=z-y;if(P(A)>m){var B=z,C=i,E=j;z=y+m*(h&&z>y?1:-1),i=w+c*M.cos(z),j=x+d*M.sin(z),o=Fa(i,j,c,d,f,0,h,C,E,[z,B,w,x])} -A=z-y;var F=M.cos(y),G=M.sin(y),H=M.cos(z),J=M.sin(z),K=M.tan(A/4),L=4/3*c*K,N=4/3*d*K,O=[a,b],Q=[a+L*G,b-N*F],S=[i+L*J,j-N*H],T=[i,j];if(Q[0]=2*O[0]-Q[0],Q[1]=2*O[1]-Q[1],k) -return[Q,S,T][D](o);o=[Q,S,T][D](o).join()[I](",");for(var U=[],V=0,W=o.length;W>V;V++) -U[V]=V%2?p(o[V-1],o[V],n).y:p(o[V],o[V+1],n).x;return U},Ga=function(a,b,c,d,e,f,g,h,i){var j=1-i;return{x:Q(j,3)*a+3*Q(j,2)*i*c+3*j*i*i*e+Q(i,3)*g,y:Q(j,3)*b+3*Q(j,2)*i*d+3*j*i*i*f+Q(i,3)*h}},Ha=e(function(a,b,c,d,e,f,g,h){var i,j=e-2*c+a-(g-2*e+c),k=2*(c-a)-2*(e-c),l=a-c,m=(-k+M.sqrt(k*k-4*j*l))/2/j,n=(-k-M.sqrt(k*k-4*j*l))/2/j,o=[b,h],p=[a,g];return P(m)>"1e12"&&(m=.5),P(n)>"1e12"&&(n=.5),m>0&&1>m&&(i=Ga(a,b,c,d,e,f,g,h,m),p.push(i.x),o.push(i.y)),n>0&&1>n&&(i=Ga(a,b,c,d,e,f,g,h,n),p.push(i.x),o.push(i.y)),j=f-2*d+b-(h-2*f+d),k=2*(d-b)-2*(f-d),l=b-d,m=(-k+M.sqrt(k*k-4*j*l))/2/j,n=(-k-M.sqrt(k*k-4*j*l))/2/j,P(m)>"1e12"&&(m=.5),P(n)>"1e12"&&(n=.5),m>0&&1>m&&(i=Ga(a,b,c,d,e,f,g,h,m),p.push(i.x),o.push(i.y)),n>0&&1>n&&(i=Ga(a,b,c,d,e,f,g,h,n),p.push(i.x),o.push(i.y)),{min:{x:O[C](0,p),y:O[C](0,o)},max:{x:N[C](0,p),y:N[C](0,o)}}}),Ia=b._path2curve=e(function(a,b){var c=!b&&ya(a);if(!b&&c.curve) -return Aa(c.curve);for(var d=Ca(a),e=b&&Ca(b),f={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},g={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},h=(function(a,b,c){var d,e,f={T:1,Q:1};if(!a) -return["C",b.x,b.y,b.x,b.y,b.x,b.y];switch(!(a[0]in f)&&(b.qx=b.qy=null),a[0]){case"M":b.X=a[1],b.Y=a[2];break;case"A":a=["C"][D](Fa[C](0,[b.x,b.y][D](a.slice(1))));break;case"S":"C"==c||"S"==c?(d=2*b.x-b.bx,e=2*b.y-b.by):(d=b.x,e=b.y),a=["C",d,e][D](a.slice(1));break;case"T":"Q"==c||"T"==c?(b.qx=2*b.x-b.qx,b.qy=2*b.y-b.qy):(b.qx=b.x,b.qy=b.y),a=["C"][D](Ea(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case"Q":b.qx=a[1],b.qy=a[2],a=["C"][D](Ea(b.x,b.y,a[1],a[2],a[3],a[4]));break;case"L":a=["C"][D](Da(b.x,b.y,a[1],a[2]));break;case"H":a=["C"][D](Da(b.x,b.y,a[1],b.y));break;case"V":a=["C"][D](Da(b.x,b.y,b.x,a[1]));break;case"Z":a=["C"][D](Da(b.x,b.y,b.X,b.Y))} -return a}),i=function(a,b){if(a[b].length>7){a[b].shift();for(var c=a[b];c.length;) -k[b]="A",e&&(l[b]="A"),a.splice(b++,0,["C"][D](c.splice(0,6)));a.splice(b,1),p=N(d.length,e&&e.length||0)}},j=function(a,b,c,f,g){a&&b&&"M"==a[g][0]&&"M"!=b[g][0]&&(b.splice(g,0,["M",f.x,f.y]),c.bx=0,c.by=0,c.x=a[g][1],c.y=a[g][2],p=N(d.length,e&&e.length||0))},k=[],l=[],m="",n="",o=0,p=N(d.length,e&&e.length||0);p>o;o++){d[o]&&(m=d[o][0]),"C"!=m&&(k[o]=m,o&&(n=k[o-1])),d[o]=h(d[o],f,n),"A"!=k[o]&&"C"==m&&(k[o]="C"),i(d,o),e&&(e[o]&&(m=e[o][0]),"C"!=m&&(l[o]=m,o&&(n=l[o-1])),e[o]=h(e[o],g,n),"A"!=l[o]&&"C"==m&&(l[o]="C"),i(e,o)),j(d,e,f,g,o),j(e,d,g,f,o);var q=d[o],r=e&&e[o],s=q.length,t=e&&r.length;f.x=q[s-2],f.y=q[s-1],f.bx=$(q[s-4])||f.x,f.by=$(q[s-3])||f.y,g.bx=e&&($(r[t-4])||g.x),g.by=e&&($(r[t-3])||g.y),g.x=e&&r[t-2],g.y=e&&r[t-1]} -return e||(c.curve=Aa(d)),e?[d,e]:d},null,Aa),Ja=(b._parseDots=e(function(a){for(var c=[],d=0,e=a.length;e>d;d++){var f={},g=a[d].match(/^([^:]*):?([\d\.]*)/);if(f.color=b.getRGB(g[1]),f.color.error) -return null;f.opacity=f.color.opacity,f.color=f.color.hex,g[2]&&(f.offset=g[2]+"%"),c.push(f)} -for(d=1,e=c.length-1;e>d;d++) -if(!c[d].offset){for(var h=$(c[d-1].offset||0),i=0,j=d+1;e>j;j++) -if(c[j].offset){i=c[j].offset;break} -i||(i=100,j=e),i=$(i);for(var k=(i-h)/(j-d+1);j>d;d++) -h+=k,c[d].offset=h+"%"} -return c}),b._tear=function(a,b){a==b.top&&(b.top=a.prev),a==b.bottom&&(b.bottom=a.next),a.next&&(a.next.prev=a.prev),a.prev&&(a.prev.next=a.next)}),Ka=(b._tofront=function(a,b){b.top!==a&&(Ja(a,b),a.next=null,a.prev=b.top,b.top.next=a,b.top=a)},b._toback=function(a,b){b.bottom!==a&&(Ja(a,b),a.next=b.bottom,a.prev=null,b.bottom.prev=a,b.bottom=a)},b._insertafter=function(a,b,c){Ja(a,c),b==c.top&&(c.top=a),b.next&&(b.next.prev=a),a.next=b.next,a.prev=b,b.next=a},b._insertbefore=function(a,b,c){Ja(a,c),b==c.bottom&&(c.bottom=a),b.prev&&(b.prev.next=a),a.prev=b.prev,b.prev=a,a.next=b},b.toMatrix=function(a,b){var c=za(a),d={_:{transform:F},getBBox:function(){return c}};return La(d,b),d.matrix}),La=(b.transformPath=function(a,b){return pa(a,Ka(a,b))},b._extractTransform=function(a,c){if(null==c) -return a._.transform;c=H(c).replace(/\.{3}|\u2026/g,a._.transform||F);var d=b.parseTransformString(c),e=0,f=0,g=0,h=1,i=1,j=a._,k=new n;if(j.transform=d||[],d) -for(var l=0,m=d.length;m>l;l++){var o,p,q,r,s,t=d[l],u=t.length,v=H(t[0]).toLowerCase(),w=t[0]!=v,x=w?k.invert():0;"t"==v&&3==u?w?(o=x.x(0,0),p=x.y(0,0),q=x.x(t[1],t[2]),r=x.y(t[1],t[2]),k.translate(q-o,r-p)):k.translate(t[1],t[2]):"r"==v?2==u?(s=s||a.getBBox(1),k.rotate(t[1],s.x+s.width/2,s.y+s.height/2),e+=t[1]):4==u&&(w?(q=x.x(t[2],t[3]),r=x.y(t[2],t[3]),k.rotate(t[1],q,r)):k.rotate(t[1],t[2],t[3]),e+=t[1]):"s"==v?2==u||3==u?(s=s||a.getBBox(1),k.scale(t[1],t[u-1],s.x+s.width/2,s.y+s.height/2),h*=t[1],i*=t[u-1]):5==u&&(w?(q=x.x(t[3],t[4]),r=x.y(t[3],t[4]),k.scale(t[1],t[2],q,r)):k.scale(t[1],t[2],t[3],t[4]),h*=t[1],i*=t[2]):"m"==v&&7==u&&k.add(t[1],t[2],t[3],t[4],t[5],t[6]),j.dirtyT=1,a.matrix=k} -a.matrix=k,j.sx=h,j.sy=i,j.deg=e,j.dx=f=k.e,j.dy=g=k.f,1==h&&1==i&&!e&&j.bbox?(j.bbox.x+=+f,j.bbox.y+=+g):j.dirtyT=1}),Ma=function(a){var b=a[0];switch(b.toLowerCase()){case"t":return[b,0,0];case"m":return[b,1,0,0,1,0,0];case"r":return 4==a.length?[b,0,a[2],a[3]]:[b,0];case"s":return 5==a.length?[b,1,1,a[3],a[4]]:3==a.length?[b,1,1]:[b,1]}},Na=b._equaliseTransform=function(a,c){c=H(c).replace(/\.{3}|\u2026/g,a),a=b.parseTransformString(a)||[],c=b.parseTransformString(c)||[];for(var d,e,f,g,h=N(a.length,c.length),i=[],j=[],k=0;h>k;k++){if(f=a[k]||Ma(c[k]),g=c[k]||Ma(f),f[0]!=g[0]||"r"==f[0].toLowerCase()&&(f[2]!=g[2]||f[3]!=g[3])||"s"==f[0].toLowerCase()&&(f[3]!=g[3]||f[4]!=g[4])) -return;for(i[k]=[],j[k]=[],d=0,e=N(f.length,g.length);e>d;d++) -d in f&&(i[k][d]=f[d]),d in g&&(j[k][d]=g[d])} -return{from:i,to:j}};b._getContainer=function(a,c,d,e){var f;return f=null!=e||b.is(a,"object")?a:z.doc.getElementById(a),null!=f?f.tagName?null==c?{container:f,width:f.style.pixelWidth||f.offsetWidth,height:f.style.pixelHeight||f.offsetHeight}:{container:f,width:c,height:d}:{container:1,x:a,y:c,width:d,height:e}:void 0},b.pathToRelative=Ba,b._engine={},b.path2curve=Ia,b.matrix=function(a,b,c,d,e,f){return new n(a,b,c,d,e,f)},function(a){function c(a){return a[0]*a[0]+a[1]*a[1]} -function d(a){var b=M.sqrt(c(a));a[0]&&(a[0]/=b),a[1]&&(a[1]/=b)} -a.add=function(a,b,c,d,e,f){var g,h,i,j,k=[[],[],[]],l=[[this.a,this.c,this.e],[this.b,this.d,this.f],[0,0,1]],m=[[a,c,e],[b,d,f],[0,0,1]];for(a&&a instanceof n&&(m=[[a.a,a.c,a.e],[a.b,a.d,a.f],[0,0,1]]),g=0;3>g;g++) -for(h=0;3>h;h++){for(j=0,i=0;3>i;i++) -j+=l[g][i]*m[i][h];k[g][h]=j} -this.a=k[0][0],this.b=k[1][0],this.c=k[0][1],this.d=k[1][1],this.e=k[0][2],this.f=k[1][2]},a.invert=function(){var a=this,b=a.a*a.d-a.b*a.c;return new n(a.d/b,-a.b/b,-a.c/b,a.a/b,(a.c*a.f-a.d*a.e)/b,(a.b*a.e-a.a*a.f)/b)},a.clone=function(){return new n(this.a,this.b,this.c,this.d,this.e,this.f)},a.translate=function(a,b){this.add(1,0,0,1,a,b)},a.scale=function(a,b,c,d){null==b&&(b=a),(c||d)&&this.add(1,0,0,1,c,d),this.add(a,0,0,b,0,0),(c||d)&&this.add(1,0,0,1,-c,-d)},a.rotate=function(a,c,d){a=b.rad(a),c=c||0,d=d||0;var e=+M.cos(a).toFixed(9),f=+M.sin(a).toFixed(9);this.add(e,f,-f,e,c,d),this.add(1,0,0,1,-c,-d)},a.x=function(a,b){return a*this.a+b*this.c+this.e},a.y=function(a,b){return a*this.b+b*this.d+this.f},a.get=function(a){return+this[H.fromCharCode(97+a)].toFixed(4)},a.toString=function(){return b.svg?"matrix("+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+")":[this.get(0),this.get(2),this.get(1),this.get(3),0,0].join()},a.toFilter=function(){return"progid:DXImageTransform.Microsoft.Matrix(M11="+this.get(0)+", M12="+this.get(2)+", M21="+this.get(1)+", M22="+this.get(3)+", Dx="+this.get(4)+", Dy="+this.get(5)+", sizingmethod='auto expand')"},a.offset=function(){return[this.e.toFixed(4),this.f.toFixed(4)]},a.split=function(){var a={};a.dx=this.e,a.dy=this.f;var e=[[this.a,this.c],[this.b,this.d]];a.scalex=M.sqrt(c(e[0])),d(e[0]),a.shear=e[0][0]*e[1][0]+e[0][1]*e[1][1],e[1]=[e[1][0]-e[0][0]*a.shear,e[1][1]-e[0][1]*a.shear],a.scaley=M.sqrt(c(e[1])),d(e[1]),a.shear/=a.scaley;var f=-e[0][1],g=e[1][1];return 0>g?(a.rotate=b.deg(M.acos(g)),0>f&&(a.rotate=360-a.rotate)):a.rotate=b.deg(M.asin(f)),a.isSimple=!(+a.shear.toFixed(9)||a.scalex.toFixed(9)!=a.scaley.toFixed(9)&&a.rotate),a.isSuperSimple=!+a.shear.toFixed(9)&&a.scalex.toFixed(9)==a.scaley.toFixed(9)&&!a.rotate,a.noRotation=!+a.shear.toFixed(9)&&!a.rotate,a},a.toTransformString=function(a){var b=a||this[I]();return b.isSimple?(b.scalex=+b.scalex.toFixed(4),b.scaley=+b.scaley.toFixed(4),b.rotate=+b.rotate.toFixed(4),(b.dx||b.dy?"t"+[b.dx,b.dy]:F)+(1!=b.scalex||1!=b.scaley?"s"+[b.scalex,b.scaley,0,0]:F)+(b.rotate?"r"+[b.rotate,0,0]:F)):"m"+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)]}} -(n.prototype);for(var Oa=function(){this.returnValue=!1},Pa=function(){return this.originalEvent.preventDefault()},Qa=function(){this.cancelBubble=!0},Ra=function(){return this.originalEvent.stopPropagation()},Sa=function(a){var b=z.doc.documentElement.scrollTop||z.doc.body.scrollTop,c=z.doc.documentElement.scrollLeft||z.doc.body.scrollLeft;return{x:a.clientX+c,y:a.clientY+b}},Ta=function(){return z.doc.addEventListener?function(a,b,c,d){var e=function(a){var b=Sa(a);return c.call(d,a,b.x,b.y)};if(a.addEventListener(b,e,!1),E&&K[b]){var f=function(b){for(var e=Sa(b),f=b,g=0,h=b.targetTouches&&b.targetTouches.length;h>g;g++) -if(b.targetTouches[g].target==a){b=b.targetTouches[g],b.originalEvent=f,b.preventDefault=Pa,b.stopPropagation=Ra;break} -return c.call(d,b,e.x,e.y)};a.addEventListener(K[b],f,!1)} -return function(){return a.removeEventListener(b,e,!1),E&&K[b]&&a.removeEventListener(K[b],f,!1),!0}}:z.doc.attachEvent?function(a,b,c,d){var e=function(a){a=a||z.win.event;var b=z.doc.documentElement.scrollTop||z.doc.body.scrollTop,e=z.doc.documentElement.scrollLeft||z.doc.body.scrollLeft,f=a.clientX+e,g=a.clientY+b;return a.preventDefault=a.preventDefault||Oa,a.stopPropagation=a.stopPropagation||Qa,c.call(d,a,f,g)};a.attachEvent("on"+b,e);var f=function(){return a.detachEvent("on"+b,e),!0};return f}:void 0} -(),Ua=[],Va=function(b){for(var c,d=b.clientX,e=b.clientY,f=z.doc.documentElement.scrollTop||z.doc.body.scrollTop,g=z.doc.documentElement.scrollLeft||z.doc.body.scrollLeft,h=Ua.length;h--;){if(c=Ua[h],E&&b.touches){for(var i,j=b.touches.length;j--;) -if(i=b.touches[j],i.identifier==c.el._drag.id){d=i.clientX,e=i.clientY,(b.originalEvent?b.originalEvent:b).preventDefault();break}}else -b.preventDefault();var k,l=c.el.node,m=l.nextSibling,n=l.parentNode,o=l.style.display;z.win.opera&&n.removeChild(l),l.style.display="none",k=c.el.paper.getElementByPoint(d,e),l.style.display=o,z.win.opera&&(m?n.insertBefore(l,m):n.appendChild(l)),k&&a("raphael.drag.over."+c.el.id,c.el,k),d+=g,e+=f,a("raphael.drag.move."+c.el.id,c.move_scope||c.el,d-c.el._drag.x,e-c.el._drag.y,d,e,b)}},Wa=function(c){b.unmousemove(Va).unmouseup(Wa);for(var d,e=Ua.length;e--;) -d=Ua[e],d.el._drag={},a("raphael.drag.end."+d.el.id,d.end_scope||d.start_scope||d.move_scope||d.el,c);Ua=[]},Xa=b.el={},Ya=J.length;Ya--;) -!function(a){b[a]=Xa[a]=function(c,d){return b.is(c,"function")&&(this.events=this.events||[],this.events.push({name:a,f:c,unbind:Ta(this.shape||this.node||z.doc,a,c,d||this)})),this},b["un"+a]=Xa["un"+a]=function(c){for(var d=this.events||[],e=d.length;e--;) -d[e].name!=a||!b.is(c,"undefined")&&d[e].f!=c||(d[e].unbind(),d.splice(e,1),!d.length&&delete this.events);return this}} -(J[Ya]);Xa.data=function(c,d){var e=ja[this.id]=ja[this.id]||{};if(0==arguments.length) -return e;if(1==arguments.length){if(b.is(c,"object")){for(var f in c) -c[y](f)&&this.data(f,c[f]);return this} -return a("raphael.data.get."+this.id,this,e[c],c),e[c]} -return e[c]=d,a("raphael.data.set."+this.id,this,d,c),this},Xa.removeData=function(a){return null==a?ja[this.id]={}:ja[this.id]&&delete ja[this.id][a],this},Xa.getData=function(){return c(ja[this.id]||{})},Xa.hover=function(a,b,c,d){return this.mouseover(a,c).mouseout(b,d||c)},Xa.unhover=function(a,b){return this.unmouseover(a).unmouseout(b)};var Za=[];Xa.drag=function(c,d,e,f,g,h){function i(i){(i.originalEvent||i).preventDefault();var j=i.clientX,k=i.clientY,l=z.doc.documentElement.scrollTop||z.doc.body.scrollTop,m=z.doc.documentElement.scrollLeft||z.doc.body.scrollLeft;if(this._drag.id=i.identifier,E&&i.touches) -for(var n,o=i.touches.length;o--;) -if(n=i.touches[o],this._drag.id=n.identifier,n.identifier==this._drag.id){j=n.clientX,k=n.clientY;break} -this._drag.x=j+m,this._drag.y=k+l,!Ua.length&&b.mousemove(Va).mouseup(Wa),Ua.push({el:this,move_scope:f,start_scope:g,end_scope:h}),d&&a.on("raphael.drag.start."+this.id,d),c&&a.on("raphael.drag.move."+this.id,c),e&&a.on("raphael.drag.end."+this.id,e),a("raphael.drag.start."+this.id,g||f||this,i.clientX+m,i.clientY+l,i)} -return this._drag={},Za.push({el:this,start:i}),this.mousedown(i),this},Xa.onDragOver=function(b){b?a.on("raphael.drag.over."+this.id,b):a.unbind("raphael.drag.over."+this.id)},Xa.undrag=function(){for(var c=Za.length;c--;) -Za[c].el==this&&(this.unmousedown(Za[c].start),Za.splice(c,1),a.unbind("raphael.drag.*."+this.id));!Za.length&&b.unmousemove(Va).unmouseup(Wa),Ua=[]},u.circle=function(a,c,d){var e=b._engine.circle(this,a||0,c||0,d||0);return this.__set__&&this.__set__.push(e),e},u.rect=function(a,c,d,e,f){var g=b._engine.rect(this,a||0,c||0,d||0,e||0,f||0);return this.__set__&&this.__set__.push(g),g},u.ellipse=function(a,c,d,e){var f=b._engine.ellipse(this,a||0,c||0,d||0,e||0);return this.__set__&&this.__set__.push(f),f},u.path=function(a){a&&!b.is(a,T)&&!b.is(a[0],U)&&(a+=F);var c=b._engine.path(b.format[C](b,arguments),this);return this.__set__&&this.__set__.push(c),c},u.image=function(a,c,d,e,f){var g=b._engine.image(this,a||"about:blank",c||0,d||0,e||0,f||0);return this.__set__&&this.__set__.push(g),g},u.text=function(a,c,d){var e=b._engine.text(this,a||0,c||0,H(d));return this.__set__&&this.__set__.push(e),e},u.set=function(a){!b.is(a,"array")&&(a=Array.prototype.splice.call(arguments,0,arguments.length));var c=new jb(a);return this.__set__&&this.__set__.push(c),c.paper=this,c.type="set",c},u.setStart=function(a){this.__set__=a||this.set()},u.setFinish=function(a){var b=this.__set__;return delete this.__set__,b},u.getSize=function(){var a=this.canvas.parentNode;return{width:a.offsetWidth,height:a.offsetHeight}},u.setSize=function(a,c){return b._engine.setSize.call(this,a,c)},u.setViewBox=function(a,c,d,e,f){return b._engine.setViewBox.call(this,a,c,d,e,f)},u.top=u.bottom=null,u.raphael=b;var $a=function(a){var b=a.getBoundingClientRect(),c=a.ownerDocument,d=c.body,e=c.documentElement,f=e.clientTop||d.clientTop||0,g=e.clientLeft||d.clientLeft||0,h=b.top+(z.win.pageYOffset||e.scrollTop||d.scrollTop)-f,i=b.left+(z.win.pageXOffset||e.scrollLeft||d.scrollLeft)-g;return{y:h,x:i}};u.getElementByPoint=function(a,b){var c=this,d=c.canvas,e=z.doc.elementFromPoint(a,b);if(z.win.opera&&"svg"==e.tagName){var f=$a(d),g=d.createSVGRect();g.x=a-f.x,g.y=b-f.y,g.width=g.height=1;var h=d.getIntersectionList(g,null);h.length&&(e=h[h.length-1])} -if(!e) -return null;for(;e.parentNode&&e!=d.parentNode&&!e.raphael;) -e=e.parentNode;return e==c.canvas.parentNode&&(e=d),e=e&&e.raphael?c.getById(e.raphaelid):null},u.getElementsByBBox=function(a){var c=this.set();return this.forEach(function(d){b.isBBoxIntersect(d.getBBox(),a)&&c.push(d)}),c},u.getById=function(a){for(var b=this.bottom;b;){if(b.id==a) -return b;b=b.next} -return null},u.forEach=function(a,b){for(var c=this.bottom;c;){if(a.call(b,c)===!1) -return this;c=c.next} -return this},u.getElementsByPoint=function(a,b){var c=this.set();return this.forEach(function(d){d.isPointInside(a,b)&&c.push(d)}),c},Xa.isPointInside=function(a,c){var d=this.realPath=oa[this.type](this);return this.attr("transform")&&this.attr("transform").length&&(d=b.transformPath(d,this.attr("transform"))),b.isPointInsidePath(d,a,c)},Xa.getBBox=function(a){if(this.removed) -return{};var b=this._;return a?((b.dirty||!b.bboxwt)&&(this.realPath=oa[this.type](this),b.bboxwt=za(this.realPath),b.bboxwt.toString=o,b.dirty=0),b.bboxwt):((b.dirty||b.dirtyT||!b.bbox)&&((b.dirty||!this.realPath)&&(b.bboxwt=0,this.realPath=oa[this.type](this)),b.bbox=za(pa(this.realPath,this.matrix)),b.bbox.toString=o,b.dirty=b.dirtyT=0),b.bbox)},Xa.clone=function(){if(this.removed) -return null;var a=this.paper[this.type]().attr(this.attr());return this.__set__&&this.__set__.push(a),a},Xa.glow=function(a){if("text"==this.type) -return null;a=a||{};var b={width:(a.width||10)+(+this.attr("stroke-width")||1),fill:a.fill||!1,opacity:null==a.opacity?.5:a.opacity,offsetx:a.offsetx||0,offsety:a.offsety||0,color:a.color||"#000"},c=b.width/2,d=this.paper,e=d.set(),f=this.realPath||oa[this.type](this);f=this.matrix?pa(f,this.matrix):f;for(var g=1;c+1>g;g++) -e.push(d.path(f).attr({stroke:b.color,fill:b.fill?b.color:"none","stroke-linejoin":"round","stroke-linecap":"round","stroke-width":+(b.width/c*g).toFixed(3),opacity:+(b.opacity/c).toFixed(3)}));return e.insertBefore(this).translate(b.offsetx,b.offsety)};var _a=function(a,c,d,e,f,g,h,k,l){return null==l?i(a,c,d,e,f,g,h,k):b.findDotsAtSegment(a,c,d,e,f,g,h,k,j(a,c,d,e,f,g,h,k,l))},ab=function(a,c){return function(d,e,f){d=Ia(d);for(var g,h,i,j,k,l="",m={},n=0,o=0,p=d.length;p>o;o++){if(i=d[o],"M"==i[0]) -g=+i[1],h=+i[2];else{if(j=_a(g,h,i[1],i[2],i[3],i[4],i[5],i[6]),n+j>e){if(c&&!m.start){if(k=_a(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n),l+=["C"+k.start.x,k.start.y,k.m.x,k.m.y,k.x,k.y],f) -return l;m.start=l,l=["M"+k.x,k.y+"C"+k.n.x,k.n.y,k.end.x,k.end.y,i[5],i[6]].join(),n+=j,g=+i[5],h=+i[6];continue} -if(!a&&!c) -return k=_a(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n),{x:k.x,y:k.y,alpha:k.alpha}} -n+=j,g=+i[5],h=+i[6]} -l+=i.shift()+i} -return m.end=l,k=a?n:c?m:b.findDotsAtSegment(g,h,i[0],i[1],i[2],i[3],i[4],i[5],1),k.alpha&&(k={x:k.x,y:k.y,alpha:k.alpha}),k}},bb=ab(1),cb=ab(),db=ab(0,1);b.getTotalLength=bb,b.getPointAtLength=cb,b.getSubpath=function(a,b,c){if(this.getTotalLength(a)-c<1e-6) -return db(a,b).end;var d=db(a,c,1);return b?db(d,b).end:d},Xa.getTotalLength=function(){var a=this.getPath();if(a) -return this.node.getTotalLength?this.node.getTotalLength():bb(a)},Xa.getPointAtLength=function(a){var b=this.getPath();if(b) -return cb(b,a)},Xa.getPath=function(){var a,c=b._getPath[this.type];if("text"!=this.type&&"set"!=this.type) -return c&&(a=c(this)),a},Xa.getSubpath=function(a,c){var d=this.getPath();if(d) -return b.getSubpath(d,a,c)};var eb=b.easing_formulas={linear:function(a){return a},"<":function(a){return Q(a,1.7)},">":function(a){return Q(a,.48)},"<>":function(a){var b=.48-a/1.04,c=M.sqrt(.1734+b*b),d=c-b,e=Q(P(d),1/3)*(0>d?-1:1),f=-c-b,g=Q(P(f),1/3)*(0>f?-1:1),h=e+g+.5;return 3*(1-h)*h*h+h*h*h},backIn:function(a){var b=1.70158;return a*a*((b+1)*a-b)},backOut:function(a){a-=1;var b=1.70158;return a*a*((b+1)*a+b)+1},elastic:function(a){return a==!!a?a:Q(2,-10*a)*M.sin(2*(a-.075)*R/.3)+1},bounce:function(a){var b,c=7.5625,d=2.75;return 1/d>a?b=c*a*a:2/d>a?(a-=1.5/d,b=c*a*a+.75):2.5/d>a?(a-=2.25/d,b=c*a*a+.9375):(a-=2.625/d,b=c*a*a+.984375),b}};eb.easeIn=eb["ease-in"]=eb["<"],eb.easeOut=eb["ease-out"]=eb[">"],eb.easeInOut=eb["ease-in-out"]=eb["<>"],eb["back-in"]=eb.backIn,eb["back-out"]=eb.backOut;var fb=[],gb=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){setTimeout(a,16)},hb=function(){for(var c=+new Date,d=0;dh)) -if(i>h){var q=j(h/i);for(var s in k) -if(k[y](s)){switch(ca[s]){case S:f=+k[s]+q*i*l[s];break;case"colour":f="rgb("+[ib(Z(k[s].r+q*i*l[s].r)),ib(Z(k[s].g+q*i*l[s].g)),ib(Z(k[s].b+q*i*l[s].b))].join(",")+")";break;case"path":f=[];for(var t=0,u=k[s].length;u>t;t++){f[t]=[k[s][t][0]];for(var v=1,w=k[s][t].length;w>v;v++) -f[t][v]=+k[s][t][v]+q*i*l[s][t][v];f[t]=f[t].join(G)} -f=f.join(G);break;case"transform":if(l[s].real) -for(f=[],t=0,u=k[s].length;u>t;t++) -for(f[t]=[k[s][t][0]],v=1,w=k[s][t].length;w>v;v++) -f[t][v]=k[s][t][v]+q*i*l[s][t][v];else{var x=function(a){return+k[s][a]+q*i*l[s][a]};f=[["m",x(0),x(1),x(2),x(3),x(4),x(5)]]} -break;case"csv":if("clip-rect"==s) -for(f=[],t=4;t--;) -f[t]=+k[s][t]+q*i*l[s][t];break;default:var z=[][D](k[s]);for(f=[],t=n.paper.customAttributes[s].length;t--;) -f[t]=+z[t]+q*i*l[s][t]} -o[s]=f} -n.attr(o),function(b,c,d){setTimeout(function(){a("raphael.anim.frame."+b,c,d)})} -(n.id,n,e.anim)}else{if(function(c,d,e){setTimeout(function(){a("raphael.anim.frame."+d.id,d,e),a("raphael.anim.finish."+d.id,d,e),b.is(c,"function")&&c.call(d)})} -(e.callback,n,e.anim),n.attr(m),fb.splice(d--,1),e.repeat>1&&!e.next){for(g in m) -m[y](g)&&(p[g]=e.totalOrigin[g]);e.el.attr(p),r(e.anim,e.el,e.anim.percents[0],null,e.totalOrigin,e.repeat-1)} -e.next&&!e.stop&&r(e.anim,e.el,e.next,null,e.totalOrigin,e.repeat)}}} -fb.length&&gb(hb)},ib=function(a){return a>255?255:0>a?0:a};Xa.animateWith=function(a,c,d,e,f,g){var h=this;if(h.removed) -return g&&g.call(h),h;var i=d instanceof q?d:b.animation(d,e,f,g);r(i,h,i.percents[0],null,h.attr());for(var j=0,k=fb.length;k>j;j++) -if(fb[j].anim==c&&fb[j].el==a){fb[k-1].start=fb[j].start;break} -return h},Xa.onAnimation=function(b){return b?a.on("raphael.anim.frame."+this.id,b):a.unbind("raphael.anim.frame."+this.id),this},q.prototype.delay=function(a){var b=new q(this.anim,this.ms);return b.times=this.times,b.del=+a||0,b},q.prototype.repeat=function(a){var b=new q(this.anim,this.ms);return b.del=this.del,b.times=M.floor(N(a,0))||1,b},b.animation=function(a,c,d,e){if(a instanceof q) -return a;(b.is(d,"function")||!d)&&(e=e||d||null,d=null),a=Object(a),c=+c||0;var f,g,h={};for(g in a) -a[y](g)&&$(g)!=g&&$(g)+"%"!=g&&(f=!0,h[g]=a[g]);if(f) -return d&&(h.easing=d),e&&(h.callback=e),new q({100:h},c);if(e){var i=0;for(var j in a){var k=_(j);a[y](j)&&k>i&&(i=k)} -i+="%",!a[i].callback&&(a[i].callback=e)} -return new q(a,c)},Xa.animate=function(a,c,d,e){var f=this;if(f.removed) -return e&&e.call(f),f;var g=a instanceof q?a:b.animation(a,c,d,e);return r(g,f,g.percents[0],null,f.attr()),f},Xa.setTime=function(a,b){return a&&null!=b&&this.status(a,O(b,a.ms)/a.ms),this},Xa.status=function(a,b){var c,d,e=[],f=0;if(null!=b) -return r(a,this,-1,O(b,1)),this;for(c=fb.length;c>f;f++) -if(d=fb[f],d.el.id==this.id&&(!a||d.anim==a)){if(a) -return d.status;e.push({anim:d.anim,status:d.status})} -return a?0:e},Xa.pause=function(b){for(var c=0;cb;b++) -!a[b]||a[b].constructor!=Xa.constructor&&a[b].constructor!=jb||(this[this.items.length]=this.items[this.items.length]=a[b],this.length++)},kb=jb.prototype;kb.push=function(){for(var a,b,c=0,d=arguments.length;d>c;c++) -a=arguments[c],!a||a.constructor!=Xa.constructor&&a.constructor!=jb||(b=this.items.length,this[b]=this.items[b]=a,this.length++);return this},kb.pop=function(){return this.length&&delete this[this.length--],this.items.pop()},kb.forEach=function(a,b){for(var c=0,d=this.items.length;d>c;c++) -if(a.call(b,this.items[c],c)===!1) -return this;return this};for(var lb in Xa) -Xa[y](lb)&&(kb[lb]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a][C](c,b)})}} -(lb));return kb.attr=function(a,c){if(a&&b.is(a,U)&&b.is(a[0],"object")) -for(var d=0,e=a.length;e>d;d++) -this.items[d].attr(a[d]);else -for(var f=0,g=this.items.length;g>f;f++) -this.items[f].attr(a,c);return this},kb.clear=function(){for(;this.length;) -this.pop()},kb.splice=function(a,b,c){a=0>a?N(this.length+a,0):a,b=N(0,O(this.length-a,b));var d,e=[],f=[],g=[];for(d=2;dd;d++) -f.push(this[a+d]);for(;dd?g[d]:e[d-h];for(d=this.items.length=this.length-=b-h;this[d];) -delete this[d++];return new jb(f)},kb.exclude=function(a){for(var b=0,c=this.length;c>b;b++) -if(this[b]==a) -return this.splice(b,1),!0},kb.animate=function(a,c,d,e){(b.is(d,"function")||!d)&&(e=d||null);var f,g,h=this.items.length,i=h,j=this;if(!h) -return this;e&&(g=function(){!--h&&e.call(j)}),d=b.is(d,T)?d:g;var k=b.animation(a,c,d,g);for(f=this.items[--i].animate(k);i--;) -this.items[i]&&!this.items[i].removed&&this.items[i].animateWith(f,k,k),this.items[i]&&!this.items[i].removed||h--;return this},kb.insertAfter=function(a){for(var b=this.items.length;b--;) -this.items[b].insertAfter(a);return this},kb.getBBox=function(){for(var a=[],b=[],c=[],d=[],e=this.items.length;e--;) -if(!this.items[e].removed){var f=this.items[e].getBBox();a.push(f.x),b.push(f.y),c.push(f.x+f.width),d.push(f.y+f.height)} -return a=O[C](0,a),b=O[C](0,b),c=N[C](0,c),d=N[C](0,d),{x:a,y:b,x2:c,y2:d,width:c-a,height:d-b}},kb.clone=function(a){a=this.paper.set();for(var b=0,c=this.items.length;c>b;b++) -a.push(this.items[b].clone());return a},kb.toString=function(){return"Raphaël‘s set"},kb.glow=function(a){var b=this.paper.set();return this.forEach(function(c,d){var e=c.glow(a);null!=e&&e.forEach(function(a,c){b.push(a)})}),b},kb.isPointInside=function(a,b){var c=!1;return this.forEach(function(d){return d.isPointInside(a,b)?(c=!0,!1):void 0}),c},b.registerFont=function(a){if(!a.face) -return a;this.fonts=this.fonts||{};var b={w:a.w,face:{},glyphs:{}},c=a.face["font-family"];for(var d in a.face) -a.face[y](d)&&(b.face[d]=a.face[d]);if(this.fonts[c]?this.fonts[c].push(b):this.fonts[c]=[b],!a.svg){b.face["units-per-em"]=_(a.face["units-per-em"],10);for(var e in a.glyphs) -if(a.glyphs[y](e)){var f=a.glyphs[e];if(b.glyphs[e]={w:f.w,k:{},d:f.d&&"M"+f.d.replace(/[mlcxtrv]/g,function(a){return{l:"L",c:"C",x:"z",t:"m",r:"l",v:"c"} -[a]||"M"})+"z"},f.k) -for(var g in f.k) -f[y](g)&&(b.glyphs[e].k[g]=f.k[g])}} -return a},u.getFont=function(a,c,d,e){if(e=e||"normal",d=d||"normal",c=+c||{normal:400,bold:700,lighter:300,bolder:800} -[c]||400,b.fonts){var f=b.fonts[a];if(!f){var g=new RegExp("(^|\\s)"+a.replace(/[^\w\d\s+!~.:_-]/g,F)+"(\\s|$)","i");for(var h in b.fonts) -if(b.fonts[y](h)&&g.test(h)){f=b.fonts[h];break}} -var i;if(f) -for(var j=0,k=f.length;k>j&&(i=f[j],i.face["font-weight"]!=c||i.face["font-style"]!=d&&i.face["font-style"]||i.face["font-stretch"]!=e);j++);return i}},u.print=function(a,c,d,e,f,g,h,i){g=g||"middle",h=N(O(h||0,1),-1),i=N(O(i||1,3),1);var j,k=H(d)[I](F),l=0,m=0,n=F;if(b.is(e,"string")&&(e=this.getFont(e)),e){j=(f||16)/e.face["units-per-em"];for(var o=e.face.bbox[I](v),p=+o[0],q=o[3]-o[1],r=0,s=+o[1]+("baseline"==g?q+ +e.face.descent:q/2),t=0,u=k.length;u>t;t++){if("\n"==k[t]) -l=0,x=0,m=0,r+=q*i;else{var w=m&&e.glyphs[k[t-1]]||{},x=e.glyphs[k[t]];l+=m?(w.w||e.w)+(w.k&&w.k[k[t]]||0)+e.w*h:0,m=1} -x&&x.d&&(n+=b.transformPath(x.d,["t",l*j,r*j,"s",j,j,p,s,"t",(a-p)/j,(c-s)/j]))}} -return this.path(n).attr({fill:"#000",stroke:"none"})},u.add=function(a){if(b.is(a,"array")) -for(var c,d=this.set(),e=0,f=a.length;f>e;e++) -c=a[e]||{},w[y](c.type)&&d.push(this[c.type]().attr(c));return d},b.format=function(a,c){var d=b.is(c,U)?[0][D](c):arguments;return a&&b.is(a,T)&&d.length-1&&(a=a.replace(x,function(a,b){return null==d[++b]?F:d[b]})),a||F},b.fullfill=function(){var a=/\{([^\}]+)\}/g,b=/(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g,c=function(a,c,d){var e=d;return c.replace(b,function(a,b,c,d,f){b=b||d,e&&(b in e&&(e=e[b]),"function"==typeof e&&f&&(e=e()))}),e=(null==e||e==d?a:e)+""};return function(b,d){return String(b).replace(a,function(a,b){return c(a,b,d)})}} -(),b.ninja=function(){return A.was?z.win.Raphael=A.is:delete Raphael,b},b.st=kb,a.on("raphael.DOMload",function(){t=!0}),function(a,c,d){function e(){/in/.test(a.readyState)?setTimeout(e,9):b.eve("raphael.DOMload")} -null==a.readyState&&a.addEventListener&&(a.addEventListener(c,d=function(){a.removeEventListener(c,d,!1),a.readyState="complete"},!1),a.readyState="loading"),e()} -(document,"DOMContentLoaded"),b}),function(a,b){"function"==typeof define&&define.amd?define("raphael.svg",["raphael.core"],function(a){return b(a)}):b("object"==typeof exports?require("./raphael.core"):a.Raphael)} -(this,function(a){if(!a||a.svg){var b="hasOwnProperty",c=String,d=parseFloat,e=parseInt,f=Math,g=f.max,h=f.abs,i=f.pow,j=/[, ]+/,k=a.eve,l="",m=" ",n="http://www.w3.org/1999/xlink",o={block:"M5,0 0,2.5 5,5z",classic:"M5,0 0,2.5 5,5 3.5,3 3.5,2z",diamond:"M2.5,0 5,2.5 2.5,5 0,2.5z",open:"M6,1 1,3.5 6,6",oval:"M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z"},p={};a.toString=function(){return"Your browser supports SVG.\nYou are running Raphaël "+this.version};var q=function(d,e){if(e){"string"==typeof d&&(d=q(d));for(var f in e) -e[b](f)&&("xlink:"==f.substring(0,6)?d.setAttributeNS(n,f.substring(6),c(e[f])):d.setAttribute(f,c(e[f])))}else -d=a._g.doc.createElementNS("http://www.w3.org/2000/svg",d),d.style&&(d.style.webkitTapHighlightColor="rgba(0,0,0,0)");return d},r=function(b,e){var j="linear",k=b.id+e,m=.5,n=.5,o=b.node,p=b.paper,r=o.style,s=a._g.doc.getElementById(k);if(!s){if(e=c(e).replace(a._radial_gradient,function(a,b,c){if(j="radial",b&&c){m=d(b),n=d(c);var e=2*(n>.5)-1;i(m-.5,2)+i(n-.5,2)>.25&&(n=f.sqrt(.25-i(m-.5,2))*e+.5)&&.5!=n&&(n=n.toFixed(5)-1e-5*e)} -return l}),e=e.split(/\s*\-\s*/),"linear"==j){var t=e.shift();if(t=-d(t),isNaN(t)) -return null;var u=[0,0,f.cos(a.rad(t)),f.sin(a.rad(t))],v=1/(g(h(u[2]),h(u[3]))||1);u[2]*=v,u[3]*=v,u[2]<0&&(u[0]=-u[2],u[2]=0),u[3]<0&&(u[1]=-u[3],u[3]=0)} -var w=a._parseDots(e);if(!w) -return null;if(k=k.replace(/[\(\)\s,\xb0#]/g,"_"),b.gradient&&k!=b.gradient.id&&(p.defs.removeChild(b.gradient),delete b.gradient),!b.gradient){s=q(j+"Gradient",{id:k}),b.gradient=s,q(s,"radial"==j?{fx:m,fy:n}:{x1:u[0],y1:u[1],x2:u[2],y2:u[3],gradientTransform:b.matrix.invert()}),p.defs.appendChild(s);for(var x=0,y=w.length;y>x;x++) -s.appendChild(q("stop",{offset:w[x].offset?w[x].offset:x?"100%":"0%","stop-color":w[x].color||"#fff","stop-opacity":isFinite(w[x].opacity)?w[x].opacity:1}))}} -return q(o,{fill:"url('"+document.location.origin+document.location.pathname+"#"+k+"')",opacity:1,"fill-opacity":1}),r.fill=l,r.opacity=1,r.fillOpacity=1,1},s=function(a){var b=a.getBBox(1);q(a.pattern,{patternTransform:a.matrix.invert()+" translate("+b.x+","+b.y+")"})},t=function(d,e,f){if("path"==d.type){for(var g,h,i,j,k,m=c(e).toLowerCase().split("-"),n=d.paper,r=f?"end":"start",s=d.node,t=d.attrs,u=t["stroke-width"],v=m.length,w="classic",x=3,y=3,z=5;v--;) -switch(m[v]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":w=m[v];break;case"wide":y=5;break;case"narrow":y=2;break;case"long":x=5;break;case"short":x=2} -if("open"==w?(x+=2,y+=2,z+=2,i=1,j=f?4:1,k={fill:"none",stroke:t.stroke}):(j=i=x/2,k={fill:t.stroke,stroke:"none"}),d._.arrows?f?(d._.arrows.endPath&&p[d._.arrows.endPath]--,d._.arrows.endMarker&&p[d._.arrows.endMarker]--):(d._.arrows.startPath&&p[d._.arrows.startPath]--,d._.arrows.startMarker&&p[d._.arrows.startMarker]--):d._.arrows={},"none"!=w){var A="raphael-marker-"+w,B="raphael-marker-"+r+w+x+y+"-obj"+d.id;a._g.doc.getElementById(A)?p[A]++:(n.defs.appendChild(q(q("path"),{"stroke-linecap":"round",d:o[w],id:A})),p[A]=1);var C,D=a._g.doc.getElementById(B);D?(p[B]++,C=D.getElementsByTagName("use")[0]):(D=q(q("marker"),{id:B,markerHeight:y,markerWidth:x,orient:"auto",refX:j,refY:y/2}),C=q(q("use"),{"xlink:href":"#"+A,transform:(f?"rotate(180 "+x/2+" "+y/2+") ":l)+"scale("+x/z+","+y/z+")","stroke-width":(1/((x/z+y/z)/2)).toFixed(4)}),D.appendChild(C),n.defs.appendChild(D),p[B]=1),q(C,k);var E=i*("diamond"!=w&&"oval"!=w);f?(g=d._.arrows.startdx*u||0,h=a.getTotalLength(t.path)-E*u):(g=E*u,h=a.getTotalLength(t.path)-(d._.arrows.enddx*u||0)),k={},k["marker-"+r]="url(#"+B+")",(h||g)&&(k.d=a.getSubpath(t.path,g,h)),q(s,k),d._.arrows[r+"Path"]=A,d._.arrows[r+"Marker"]=B,d._.arrows[r+"dx"]=E,d._.arrows[r+"Type"]=w,d._.arrows[r+"String"]=e}else -f?(g=d._.arrows.startdx*u||0,h=a.getTotalLength(t.path)-g):(g=0,h=a.getTotalLength(t.path)-(d._.arrows.enddx*u||0)),d._.arrows[r+"Path"]&&q(s,{d:a.getSubpath(t.path,g,h)}),delete d._.arrows[r+"Path"],delete d._.arrows[r+"Marker"],delete d._.arrows[r+"dx"],delete d._.arrows[r+"Type"],delete d._.arrows[r+"String"];for(k in p) -if(p[b](k)&&!p[k]){var F=a._g.doc.getElementById(k);F&&F.parentNode.removeChild(F)}}},u={"-":[3,1],".":[1,1],"-.":[3,1,1,1],"-..":[3,1,1,1,1,1],". ":[1,3],"- ":[4,3],"--":[8,3],"- .":[4,3,1,3],"--.":[8,3,1,3],"--..":[8,3,1,3,1,3]},v=function(a,b,d){if(b=u[c(b).toLowerCase()]){for(var e=a.attrs["stroke-width"]||"1",f={round:e,square:e,butt:0} -[a.attrs["stroke-linecap"]||d["stroke-linecap"]]||0,g=[],h=b.length;h--;) -g[h]=b[h]*e+(h%2?1:-1)*f;q(a.node,{"stroke-dasharray":g.join(",")})}else -q(a.node,{"stroke-dasharray":"none"})},w=function(d,f){var i=d.node,k=d.attrs,m=i.style.visibility;i.style.visibility="hidden";for(var o in f) -if(f[b](o)){if(!a._availableAttrs[b](o)) -continue;var p=f[o];switch(k[o]=p,o){case"blur":d.blur(p);break;case"title":var u=i.getElementsByTagName("title");if(u.length&&(u=u[0])) -u.firstChild.nodeValue=p;else{u=q("title");var w=a._g.doc.createTextNode(p);u.appendChild(w),i.appendChild(u)} -break;case"href":case"target":var x=i.parentNode;if("a"!=x.tagName.toLowerCase()){var z=q("a");x.insertBefore(z,i),z.appendChild(i),x=z}"target"==o?x.setAttributeNS(n,"show","blank"==p?"new":p):x.setAttributeNS(n,o,p);break;case"cursor":i.style.cursor=p;break;case"transform":d.transform(p);break;case"arrow-start":t(d,p);break;case"arrow-end":t(d,p,1);break;case"clip-rect":var A=c(p).split(j);if(4==A.length){d.clip&&d.clip.parentNode.parentNode.removeChild(d.clip.parentNode);var B=q("clipPath"),C=q("rect");B.id=a.createUUID(),q(C,{x:A[0],y:A[1],width:A[2],height:A[3]}),B.appendChild(C),d.paper.defs.appendChild(B),q(i,{"clip-path":"url(#"+B.id+")"}),d.clip=C} -if(!p){var D=i.getAttribute("clip-path");if(D){var E=a._g.doc.getElementById(D.replace(/(^url\(#|\)$)/g,l));E&&E.parentNode.removeChild(E),q(i,{"clip-path":l}),delete d.clip}} -break;case"path":"path"==d.type&&(q(i,{d:p?k.path=a._pathToAbsolute(p):"M0,0"}),d._.dirty=1,d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1)));break;case"width":if(i.setAttribute(o,p),d._.dirty=1,!k.fx) -break;o="x",p=k.x;case"x":k.fx&&(p=-k.x-(k.width||0));case"rx":if("rx"==o&&"rect"==d.type) -break;case"cx":i.setAttribute(o,p),d.pattern&&s(d),d._.dirty=1;break;case"height":if(i.setAttribute(o,p),d._.dirty=1,!k.fy) -break;o="y",p=k.y;case"y":k.fy&&(p=-k.y-(k.height||0));case"ry":if("ry"==o&&"rect"==d.type) -break;case"cy":i.setAttribute(o,p),d.pattern&&s(d),d._.dirty=1;break;case"r":"rect"==d.type?q(i,{rx:p,ry:p}):i.setAttribute(o,p),d._.dirty=1;break;case"src":"image"==d.type&&i.setAttributeNS(n,"href",p);break;case"stroke-width":(1!=d._.sx||1!=d._.sy)&&(p/=g(h(d._.sx),h(d._.sy))||1),i.setAttribute(o,p),k["stroke-dasharray"]&&v(d,k["stroke-dasharray"],f),d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1));break;case"stroke-dasharray":v(d,p,f);break;case"fill":var F=c(p).match(a._ISURL);if(F){B=q("pattern");var G=q("image");B.id=a.createUUID(),q(B,{x:0,y:0,patternUnits:"userSpaceOnUse",height:1,width:1}),q(G,{x:0,y:0,"xlink:href":F[1]}),B.appendChild(G),function(b){a._preload(F[1],function(){var a=this.offsetWidth,c=this.offsetHeight;q(b,{width:a,height:c}),q(G,{width:a,height:c})})} -(B),d.paper.defs.appendChild(B),q(i,{fill:"url(#"+B.id+")"}),d.pattern=B,d.pattern&&s(d);break} -var H=a.getRGB(p);if(H.error){if(("circle"==d.type||"ellipse"==d.type||"r"!=c(p).charAt())&&r(d,p)){if("opacity"in k||"fill-opacity"in k){var I=a._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g,l));if(I){var J=I.getElementsByTagName("stop");q(J[J.length-1],{"stop-opacity":("opacity"in k?k.opacity:1)*("fill-opacity"in k?k["fill-opacity"]:1)})}} -k.gradient=p,k.fill="none";break}}else -delete f.gradient,delete k.gradient,!a.is(k.opacity,"undefined")&&a.is(f.opacity,"undefined")&&q(i,{opacity:k.opacity}),!a.is(k["fill-opacity"],"undefined")&&a.is(f["fill-opacity"],"undefined")&&q(i,{"fill-opacity":k["fill-opacity"]});H[b]("opacity")&&q(i,{"fill-opacity":H.opacity>1?H.opacity/100:H.opacity});case"stroke":H=a.getRGB(p),i.setAttribute(o,H.hex),"stroke"==o&&H[b]("opacity")&&q(i,{"stroke-opacity":H.opacity>1?H.opacity/100:H.opacity}),"stroke"==o&&d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1));break;case"gradient":("circle"==d.type||"ellipse"==d.type||"r"!=c(p).charAt())&&r(d,p);break;case"opacity":k.gradient&&!k[b]("stroke-opacity")&&q(i,{"stroke-opacity":p>1?p/100:p});case"fill-opacity":if(k.gradient){I=a._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g,l)),I&&(J=I.getElementsByTagName("stop"),q(J[J.length-1],{"stop-opacity":p}));break} -default:"font-size"==o&&(p=e(p,10)+"px");var K=o.replace(/(\-.)/g,function(a){return a.substring(1).toUpperCase()});i.style[K]=p,d._.dirty=1,i.setAttribute(o,p)}} -y(d,f),i.style.visibility=m},x=1.2,y=function(d,f){if("text"==d.type&&(f[b]("text")||f[b]("font")||f[b]("font-size")||f[b]("x")||f[b]("y"))){var g=d.attrs,h=d.node,i=h.firstChild?e(a._g.doc.defaultView.getComputedStyle(h.firstChild,l).getPropertyValue("font-size"),10):10;if(f[b]("text")){for(g.text=f.text;h.firstChild;) -h.removeChild(h.firstChild);for(var j,k=c(f.text).split("\n"),m=[],n=0,o=k.length;o>n;n++) -j=q("tspan"),n&&q(j,{dy:i*x,x:g.x}),j.appendChild(a._g.doc.createTextNode(k[n])),h.appendChild(j),m[n]=j}else -for(m=h.getElementsByTagName("tspan"),n=0,o=m.length;o>n;n++) -n?q(m[n],{dy:i*x,x:g.x}):q(m[0],{dy:0});q(h,{x:g.x,y:g.y}),d._.dirty=1;var p=d._getBBox(),r=g.y-(p.y+p.height/2);r&&a.is(r,"finite")&&q(m[0],{dy:r})}},z=function(a){return a.parentNode&&"a"===a.parentNode.tagName.toLowerCase()?a.parentNode:a},A=function(b,c){this[0]=this.node=b,b.raphael=!0,this.id=a._oid++,b.raphaelid=this.id,this.matrix=a.matrix(),this.realPath=null,this.paper=c,this.attrs=this.attrs||{},this._={transform:[],sx:1,sy:1,deg:0,dx:0,dy:0,dirty:1},!c.bottom&&(c.bottom=this),this.prev=c.top,c.top&&(c.top.next=this),c.top=this,this.next=null},B=a.el;A.prototype=B,B.constructor=A,a._engine.path=function(a,b){var c=q("path");b.canvas&&b.canvas.appendChild(c);var d=new A(c,b);return d.type="path",w(d,{fill:"none",stroke:"#000",path:a}),d},B.rotate=function(a,b,e){if(this.removed) -return this;if(a=c(a).split(j),a.length-1&&(b=d(a[1]),e=d(a[2])),a=d(a[0]),null==e&&(b=e),null==b||null==e){var f=this.getBBox(1);b=f.x+f.width/2,e=f.y+f.height/2} -return this.transform(this._.transform.concat([["r",a,b,e]])),this},B.scale=function(a,b,e,f){if(this.removed) -return this;if(a=c(a).split(j),a.length-1&&(b=d(a[1]),e=d(a[2]),f=d(a[3])),a=d(a[0]),null==b&&(b=a),null==f&&(e=f),null==e||null==f) -var g=this.getBBox(1);return e=null==e?g.x+g.width/2:e,f=null==f?g.y+g.height/2:f,this.transform(this._.transform.concat([["s",a,b,e,f]])),this},B.translate=function(a,b){return this.removed?this:(a=c(a).split(j),a.length-1&&(b=d(a[1])),a=d(a[0])||0,b=+b||0,this.transform(this._.transform.concat([["t",a,b]])),this)},B.transform=function(c){var d=this._;if(null==c) -return d.transform;if(a._extractTransform(this,c),this.clip&&q(this.clip,{transform:this.matrix.invert()}),this.pattern&&s(this),this.node&&q(this.node,{transform:this.matrix}),1!=d.sx||1!=d.sy){var e=this.attrs[b]("stroke-width")?this.attrs["stroke-width"]:1;this.attr({"stroke-width":e})} -return this},B.hide=function(){return this.removed||(this.node.style.display="none"),this},B.show=function(){return this.removed||(this.node.style.display=""),this},B.remove=function(){var b=z(this.node);if(!this.removed&&b.parentNode){var c=this.paper;c.__set__&&c.__set__.exclude(this),k.unbind("raphael.*.*."+this.id),this.gradient&&c.defs.removeChild(this.gradient),a._tear(this,c),b.parentNode.removeChild(b),this.removeData();for(var d in this) -this[d]="function"==typeof this[d]?a._removedFactory(d):null;this.removed=!0}},B._getBBox=function(){if("none"==this.node.style.display){this.show();var a=!0} -var b,c=!1;this.paper.canvas.parentElement?b=this.paper.canvas.parentElement.style:this.paper.canvas.parentNode&&(b=this.paper.canvas.parentNode.style),b&&"none"==b.display&&(c=!0,b.display="");var d={};try{d=this.node.getBBox()}catch(e){d={x:this.node.clientLeft,y:this.node.clientTop,width:this.node.clientWidth,height:this.node.clientHeight}} -finally{d=d||{},c&&(b.display="none")} -return a&&this.hide(),d},B.attr=function(c,d){if(this.removed) -return this;if(null==c){var e={};for(var f in this.attrs) -this.attrs[b](f)&&(e[f]=this.attrs[f]);return e.gradient&&"none"==e.fill&&(e.fill=e.gradient)&&delete e.gradient,e.transform=this._.transform,e} -if(null==d&&a.is(c,"string")){if("fill"==c&&"none"==this.attrs.fill&&this.attrs.gradient) -return this.attrs.gradient;if("transform"==c) -return this._.transform;for(var g=c.split(j),h={},i=0,l=g.length;l>i;i++) -c=g[i],c in this.attrs?h[c]=this.attrs[c]:a.is(this.paper.customAttributes[c],"function")?h[c]=this.paper.customAttributes[c].def:h[c]=a._availableAttrs[c];return l-1?h:h[g[0]]} -if(null==d&&a.is(c,"array")){for(h={},i=0,l=c.length;l>i;i++) -h[c[i]]=this.attr(c[i]);return h} -if(null!=d){var m={};m[c]=d}else -null!=c&&a.is(c,"object")&&(m=c);for(var n in m) -k("raphael.attr."+n+"."+this.id,this,m[n]);for(n in this.paper.customAttributes) -if(this.paper.customAttributes[b](n)&&m[b](n)&&a.is(this.paper.customAttributes[n],"function")){var o=this.paper.customAttributes[n].apply(this,[].concat(m[n]));this.attrs[n]=m[n];for(var p in o) -o[b](p)&&(m[p]=o[p])} -return w(this,m),this},B.toFront=function(){if(this.removed) -return this;var b=z(this.node);b.parentNode.appendChild(b);var c=this.paper;return c.top!=this&&a._tofront(this,c),this},B.toBack=function(){if(this.removed) -return this;var b=z(this.node),c=b.parentNode;c.insertBefore(b,c.firstChild),a._toback(this,this.paper);this.paper;return this},B.insertAfter=function(b){if(this.removed||!b) -return this;var c=z(this.node),d=z(b.node||b[b.length-1].node);return d.nextSibling?d.parentNode.insertBefore(c,d.nextSibling):d.parentNode.appendChild(c),a._insertafter(this,b,this.paper),this},B.insertBefore=function(b){if(this.removed||!b) -return this;var c=z(this.node),d=z(b.node||b[0].node);return d.parentNode.insertBefore(c,d),a._insertbefore(this,b,this.paper),this},B.blur=function(b){var c=this;if(0!==+b){var d=q("filter"),e=q("feGaussianBlur");c.attrs.blur=b,d.id=a.createUUID(),q(e,{stdDeviation:+b||1.5}),d.appendChild(e),c.paper.defs.appendChild(d),c._blur=d,q(c.node,{filter:"url(#"+d.id+")"})}else -c._blur&&(c._blur.parentNode.removeChild(c._blur),delete c._blur,delete c.attrs.blur),c.node.removeAttribute("filter");return c},a._engine.circle=function(a,b,c,d){var e=q("circle");a.canvas&&a.canvas.appendChild(e);var f=new A(e,a);return f.attrs={cx:b,cy:c,r:d,fill:"none",stroke:"#000"},f.type="circle",q(e,f.attrs),f},a._engine.rect=function(a,b,c,d,e,f){var g=q("rect");a.canvas&&a.canvas.appendChild(g);var h=new A(g,a);return h.attrs={x:b,y:c,width:d,height:e,rx:f||0,ry:f||0,fill:"none",stroke:"#000"},h.type="rect",q(g,h.attrs),h},a._engine.ellipse=function(a,b,c,d,e){var f=q("ellipse");a.canvas&&a.canvas.appendChild(f);var g=new A(f,a);return g.attrs={cx:b,cy:c,rx:d,ry:e,fill:"none",stroke:"#000"},g.type="ellipse",q(f,g.attrs),g},a._engine.image=function(a,b,c,d,e,f){var g=q("image");q(g,{x:c,y:d,width:e,height:f,preserveAspectRatio:"none"}),g.setAttributeNS(n,"href",b),a.canvas&&a.canvas.appendChild(g);var h=new A(g,a);return h.attrs={x:c,y:d,width:e,height:f,src:b},h.type="image",h},a._engine.text=function(b,c,d,e){var f=q("text");b.canvas&&b.canvas.appendChild(f);var g=new A(f,b);return g.attrs={x:c,y:d,"text-anchor":"middle",text:e,"font-family":a._availableAttrs["font-family"],"font-size":a._availableAttrs["font-size"],stroke:"none",fill:"#000"},g.type="text",w(g,g.attrs),g},a._engine.setSize=function(a,b){return this.width=a||this.width,this.height=b||this.height,this.canvas.setAttribute("width",this.width),this.canvas.setAttribute("height",this.height),this._viewBox&&this.setViewBox.apply(this,this._viewBox),this},a._engine.create=function(){var b=a._getContainer.apply(0,arguments),c=b&&b.container,d=b.x,e=b.y,f=b.width,g=b.height;if(!c) -throw new Error("SVG container not found.");var h,i=q("svg"),j="overflow:hidden;";return d=d||0,e=e||0,f=f||512,g=g||342,q(i,{height:g,version:1.1,width:f,xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}),1==c?(i.style.cssText=j+"position:absolute;left:"+d+"px;top:"+e+"px",a._g.doc.body.appendChild(i),h=1):(i.style.cssText=j+"position:relative",c.firstChild?c.insertBefore(i,c.firstChild):c.appendChild(i)),c=new a._Paper,c.width=f,c.height=g,c.canvas=i,c.clear(),c._left=c._top=0,h&&(c.renderfix=function(){}),c.renderfix(),c},a._engine.setViewBox=function(a,b,c,d,e){k("raphael.setViewBox",this,this._viewBox,[a,b,c,d,e]);var f,h,i=this.getSize(),j=g(c/i.width,d/i.height),l=this.top,n=e?"xMidYMid meet":"xMinYMin";for(null==a?(this._vbSize&&(j=1),delete this._vbSize,f="0 0 "+this.width+m+this.height):(this._vbSize=j,f=a+m+b+m+c+m+d),q(this.canvas,{viewBox:f,preserveAspectRatio:n});j&&l;) -h="stroke-width"in l.attrs?l.attrs["stroke-width"]:1,l.attr({"stroke-width":h}),l._.dirty=1,l._.dirtyT=1,l=l.prev;return this._viewBox=[a,b,c,d,!!e],this},a.prototype.renderfix=function(){var a,b=this.canvas,c=b.style;try{a=b.getScreenCTM()||b.createSVGMatrix()}catch(d){a=b.createSVGMatrix()} -var e=-a.e%1,f=-a.f%1;(e||f)&&(e&&(this._left=(this._left+e)%1,c.left=this._left+"px"),f&&(this._top=(this._top+f)%1,c.top=this._top+"px"))},a.prototype.clear=function(){a.eve("raphael.clear",this);for(var b=this.canvas;b.firstChild;) -b.removeChild(b.firstChild);this.bottom=this.top=null,(this.desc=q("desc")).appendChild(a._g.doc.createTextNode("Created with Raphaël "+a.version)),b.appendChild(this.desc),b.appendChild(this.defs=q("defs"))},a.prototype.remove=function(){k("raphael.remove",this),this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);for(var b in this) -this[b]="function"==typeof this[b]?a._removedFactory(b):null};var C=a.st;for(var D in B) -B[b](D)&&!C[b](D)&&(C[D]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}} -(D))}}),function(a,b){"function"==typeof define&&define.amd?define("raphael.vml",["raphael.core"],function(a){return b(a)}):b("object"==typeof exports?require("./raphael.core"):a.Raphael)} -(this,function(a){if(!a||a.vml){var b="hasOwnProperty",c=String,d=parseFloat,e=Math,f=e.round,g=e.max,h=e.min,i=e.abs,j="fill",k=/[, ]+/,l=a.eve,m=" progid:DXImageTransform.Microsoft",n=" ",o="",p={M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},q=/([clmz]),?([^clmz]*)/gi,r=/ progid:\S+Blur\([^\)]+\)/g,s=/-?[^,\s-]+/g,t="position:absolute;left:0;top:0;width:1px;height:1px;behavior:url(#default#VML)",u=21600,v={path:1,rect:1,image:1},w={circle:1,ellipse:1},x=function(b){var d=/[ahqstv]/gi,e=a._pathToAbsolute;if(c(b).match(d)&&(e=a._path2curve),d=/[clmz]/g,e==a._pathToAbsolute&&!c(b).match(d)){var g=c(b).replace(q,function(a,b,c){var d=[],e="m"==b.toLowerCase(),g=p[b];return c.replace(s,function(a){e&&2==d.length&&(g+=d+p["m"==b?"l":"L"],d=[]),d.push(f(a*u))}),g+d});return g} -var h,i,j=e(b);g=[];for(var k=0,l=j.length;l>k;k++){h=j[k],i=j[k][0].toLowerCase(),"z"==i&&(i="x");for(var m=1,r=h.length;r>m;m++) -i+=f(h[m]*u)+(m!=r-1?",":o);g.push(i)} -return g.join(n)},y=function(b,c,d){var e=a.matrix();return e.rotate(-b,.5,.5),{dx:e.x(c,d),dy:e.y(c,d)}},z=function(a,b,c,d,e,f){var g=a._,h=a.matrix,k=g.fillpos,l=a.node,m=l.style,o=1,p="",q=u/b,r=u/c;if(m.visibility="hidden",b&&c){if(l.coordsize=i(q)+n+i(r),m.rotation=f*(0>b*c?-1:1),f){var s=y(f,d,e);d=s.dx,e=s.dy} -if(0>b&&(p+="x"),0>c&&(p+=" y")&&(o=-1),m.flip=p,l.coordorigin=d* -q+n+e* -r,k||g.fillsize){var t=l.getElementsByTagName(j);t=t&&t[0],l.removeChild(t),k&&(s=y(f,h.x(k[0],k[1]),h.y(k[0],k[1])),t.position=s.dx*o+n+s.dy*o),g.fillsize&&(t.size=g.fillsize[0]*i(b)+n+g.fillsize[1]*i(c)),l.appendChild(t)} -m.visibility="visible"}};a.toString=function(){return"Your browser doesn’t support SVG. Falling down to VML.\nYou are running Raphaël "+this.version};var A=function(a,b,d){for(var e=c(b).toLowerCase().split("-"),f=d?"end":"start",g=e.length,h="classic",i="medium",j="medium";g--;) -switch(e[g]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":h=e[g];break;case"wide":case"narrow":j=e[g];break;case"long":case"short":i=e[g]} -var k=a.node.getElementsByTagName("stroke")[0];k[f+"arrow"]=h,k[f+"arrowlength"]=i,k[f+"arrowwidth"]=j},B=function(e,i){e.attrs=e.attrs||{};var l=e.node,m=e.attrs,p=l.style,q=v[e.type]&&(i.x!=m.x||i.y!=m.y||i.width!=m.width||i.height!=m.height||i.cx!=m.cx||i.cy!=m.cy||i.rx!=m.rx||i.ry!=m.ry||i.r!=m.r),r=w[e.type]&&(m.cx!=i.cx||m.cy!=i.cy||m.r!=i.r||m.rx!=i.rx||m.ry!=i.ry),s=e;for(var t in i) -i[b](t)&&(m[t]=i[t]);if(q&&(m.path=a._getPath[e.type](e),e._.dirty=1),i.href&&(l.href=i.href),i.title&&(l.title=i.title),i.target&&(l.target=i.target),i.cursor&&(p.cursor=i.cursor),"blur"in i&&e.blur(i.blur),(i.path&&"path"==e.type||q)&&(l.path=x(~c(m.path).toLowerCase().indexOf("r")?a._pathToAbsolute(m.path):m.path),e._.dirty=1,"image"==e.type&&(e._.fillpos=[m.x,m.y],e._.fillsize=[m.width,m.height],z(e,1,1,0,0,0))),"transform"in i&&e.transform(i.transform),r){var y=+m.cx,B=+m.cy,D=+m.rx||+m.r||0,E=+m.ry||+m.r||0;l.path=a.format("ar{0},{1},{2},{3},{4},{1},{4},{1}x",f((y-D)*u),f((B-E)*u),f((y+D)*u),f((B+E)*u),f(y*u)),e._.dirty=1} -if("clip-rect"in i){var G=c(i["clip-rect"]).split(k);if(4==G.length){G[2]=+G[2]+ +G[0],G[3]=+G[3]+ +G[1];var H=l.clipRect||a._g.doc.createElement("div"),I=H.style;I.clip=a.format("rect({1}px {2}px {3}px {0}px)",G),l.clipRect||(I.position="absolute",I.top=0,I.left=0,I.width=e.paper.width+"px",I.height=e.paper.height+"px",l.parentNode.insertBefore(H,l),H.appendChild(l),l.clipRect=H)} -i["clip-rect"]||l.clipRect&&(l.clipRect.style.clip="auto")} -if(e.textpath){var J=e.textpath.style;i.font&&(J.font=i.font),i["font-family"]&&(J.fontFamily='"'+i["font-family"].split(",")[0].replace(/^['"]+|['"]+$/g,o)+'"'),i["font-size"]&&(J.fontSize=i["font-size"]),i["font-weight"]&&(J.fontWeight=i["font-weight"]),i["font-style"]&&(J.fontStyle=i["font-style"])} -if("arrow-start"in i&&A(s,i["arrow-start"]),"arrow-end"in i&&A(s,i["arrow-end"],1),null!=i.opacity||null!=i["stroke-width"]||null!=i.fill||null!=i.src||null!=i.stroke||null!=i["stroke-width"]||null!=i["stroke-opacity"]||null!=i["fill-opacity"]||null!=i["stroke-dasharray"]||null!=i["stroke-miterlimit"]||null!=i["stroke-linejoin"]||null!=i["stroke-linecap"]){var K=l.getElementsByTagName(j),L=!1;if(K=K&&K[0],!K&&(L=K=F(j)),"image"==e.type&&i.src&&(K.src=i.src),i.fill&&(K.on=!0),(null==K.on||"none"==i.fill||null===i.fill)&&(K.on=!1),K.on&&i.fill){var M=c(i.fill).match(a._ISURL);if(M){K.parentNode==l&&l.removeChild(K),K.rotate=!0,K.src=M[1],K.type="tile";var N=e.getBBox(1);K.position=N.x+n+N.y,e._.fillpos=[N.x,N.y],a._preload(M[1],function(){e._.fillsize=[this.offsetWidth,this.offsetHeight]})}else -K.color=a.getRGB(i.fill).hex,K.src=o,K.type="solid",a.getRGB(i.fill).error&&(s.type in{circle:1,ellipse:1}||"r"!=c(i.fill).charAt())&&C(s,i.fill,K)&&(m.fill="none",m.gradient=i.fill,K.rotate=!1)} -if("fill-opacity"in i||"opacity"in i){var O=((+m["fill-opacity"]+1||2)-1)*((+m.opacity+1||2)-1)*((+a.getRGB(i.fill).o+1||2)-1);O=h(g(O,0),1),K.opacity=O,K.src&&(K.color="none")} -l.appendChild(K);var P=l.getElementsByTagName("stroke")&&l.getElementsByTagName("stroke")[0],Q=!1;!P&&(Q=P=F("stroke")),(i.stroke&&"none"!=i.stroke||i["stroke-width"]||null!=i["stroke-opacity"]||i["stroke-dasharray"]||i["stroke-miterlimit"]||i["stroke-linejoin"]||i["stroke-linecap"])&&(P.on=!0),("none"==i.stroke||null===i.stroke||null==P.on||0==i.stroke||0==i["stroke-width"])&&(P.on=!1);var R=a.getRGB(i.stroke);P.on&&i.stroke&&(P.color=R.hex),O=((+m["stroke-opacity"]+1||2)-1)*((+m.opacity+1||2)-1)*((+R.o+1||2)-1);var S=.75*(d(i["stroke-width"])||1);if(O=h(g(O,0),1),null==i["stroke-width"]&&(S=m["stroke-width"]),i["stroke-width"]&&(P.weight=S),S&&1>S&&(O*=S)&&(P.weight=1),P.opacity=O,i["stroke-linejoin"]&&(P.joinstyle=i["stroke-linejoin"]||"miter"),P.miterlimit=i["stroke-miterlimit"]||8,i["stroke-linecap"]&&(P.endcap="butt"==i["stroke-linecap"]?"flat":"square"==i["stroke-linecap"]?"square":"round"),"stroke-dasharray"in i){var T={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};P.dashstyle=T[b](i["stroke-dasharray"])?T[i["stroke-dasharray"]]:o} -Q&&l.appendChild(P)} -if("text"==s.type){s.paper.canvas.style.display=o;var U=s.paper.span,V=100,W=m.font&&m.font.match(/\d+(?:\.\d*)?(?=px)/);p=U.style,m.font&&(p.font=m.font),m["font-family"]&&(p.fontFamily=m["font-family"]),m["font-weight"]&&(p.fontWeight=m["font-weight"]),m["font-style"]&&(p.fontStyle=m["font-style"]),W=d(m["font-size"]||W&&W[0])||10,p.fontSize=W*V+"px",s.textpath.string&&(U.innerHTML=c(s.textpath.string).replace(/"));var X=U.getBoundingClientRect();s.W=m.w=(X.right-X.left)/V,s.H=m.h=(X.bottom-X.top)/V,s.X=m.x,s.Y=m.y+s.H/2,("x"in i||"y"in i)&&(s.path.v=a.format("m{0},{1}l{2},{1}",f(m.x*u),f(m.y*u),f(m.x*u)+1));for(var Y=["x","y","text","font","font-family","font-weight","font-style","font-size"],Z=0,$=Y.length;$>Z;Z++) -if(Y[Z]in i){s._.dirty=1;break} -switch(m["text-anchor"]){case"start":s.textpath.style["v-text-align"]="left",s.bbx=s.W/2;break;case"end":s.textpath.style["v-text-align"]="right",s.bbx=-s.W/2;break;default:s.textpath.style["v-text-align"]="center",s.bbx=0} -s.textpath.style["v-text-kern"]=!0}},C=function(b,f,g){b.attrs=b.attrs||{};var h=(b.attrs,Math.pow),i="linear",j=".5 .5";if(b.attrs.gradient=f,f=c(f).replace(a._radial_gradient,function(a,b,c){return i="radial",b&&c&&(b=d(b),c=d(c),h(b-.5,2)+h(c-.5,2)>.25&&(c=e.sqrt(.25-h(b-.5,2))*(2*(c>.5)-1)+.5),j=b+n+c),o}),f=f.split(/\s*\-\s*/),"linear"==i){var k=f.shift();if(k=-d(k),isNaN(k)) -return null} -var l=a._parseDots(f);if(!l) -return null;if(b=b.shape||b.node,l.length){b.removeChild(g),g.on=!0,g.method="none",g.color=l[0].color,g.color2=l[l.length-1].color;for(var m=[],p=0,q=l.length;q>p;p++) -l[p].offset&&m.push(l[p].offset+n+l[p].color);g.colors=m.length?m.join():"0% "+g.color,"radial"==i?(g.type="gradientTitle",g.focus="100%",g.focussize="0 0",g.focusposition=j,g.angle=0):(g.type="gradient",g.angle=(270-k)%360),b.appendChild(g)} -return 1},D=function(b,c){this[0]=this.node=b,b.raphael=!0,this.id=a._oid++,b.raphaelid=this.id,this.X=0,this.Y=0,this.attrs={},this.paper=c,this.matrix=a.matrix(),this._={transform:[],sx:1,sy:1,dx:0,dy:0,deg:0,dirty:1,dirtyT:1},!c.bottom&&(c.bottom=this),this.prev=c.top,c.top&&(c.top.next=this),c.top=this,this.next=null},E=a.el;D.prototype=E,E.constructor=D,E.transform=function(b){if(null==b) -return this._.transform;var d,e=this.paper._viewBoxShift,f=e?"s"+[e.scale,e.scale]+"-1-1t"+[e.dx,e.dy]:o;e&&(d=b=c(b).replace(/\.{3}|\u2026/g,this._.transform||o)),a._extractTransform(this,f+b);var g,h=this.matrix.clone(),i=this.skew,j=this.node,k=~c(this.attrs.fill).indexOf("-"),l=!c(this.attrs.fill).indexOf("url(");if(h.translate(1,1),l||k||"image"==this.type) -if(i.matrix="1 0 0 1",i.offset="0 0",g=h.split(),k&&g.noRotation||!g.isSimple){j.style.filter=h.toFilter();var m=this.getBBox(),p=this.getBBox(1),q=m.x-p.x,r=m.y-p.y;j.coordorigin=q* -u+n+r* -u,z(this,1,1,q,r,0)}else -j.style.filter=o,z(this,g.scalex,g.scaley,g.dx,g.dy,g.rotate);else -j.style.filter=o,i.matrix=c(h),i.offset=h.offset();return null!==d&&(this._.transform=d,a._extractTransform(this,d)),this},E.rotate=function(a,b,e){if(this.removed) -return this;if(null!=a){if(a=c(a).split(k),a.length-1&&(b=d(a[1]),e=d(a[2])),a=d(a[0]),null==e&&(b=e),null==b||null==e){var f=this.getBBox(1);b=f.x+f.width/2,e=f.y+f.height/2} -return this._.dirtyT=1,this.transform(this._.transform.concat([["r",a,b,e]])),this}},E.translate=function(a,b){return this.removed?this:(a=c(a).split(k),a.length-1&&(b=d(a[1])),a=d(a[0])||0,b=+b||0,this._.bbox&&(this._.bbox.x+=a,this._.bbox.y+=b),this.transform(this._.transform.concat([["t",a,b]])),this)},E.scale=function(a,b,e,f){if(this.removed) -return this;if(a=c(a).split(k),a.length-1&&(b=d(a[1]),e=d(a[2]),f=d(a[3]),isNaN(e)&&(e=null),isNaN(f)&&(f=null)),a=d(a[0]),null==b&&(b=a),null==f&&(e=f),null==e||null==f) -var g=this.getBBox(1);return e=null==e?g.x+g.width/2:e,f=null==f?g.y+g.height/2:f,this.transform(this._.transform.concat([["s",a,b,e,f]])),this._.dirtyT=1,this},E.hide=function(){return!this.removed&&(this.node.style.display="none"),this},E.show=function(){return!this.removed&&(this.node.style.display=o),this},E.auxGetBBox=a.el.getBBox,E.getBBox=function(){var a=this.auxGetBBox();if(this.paper&&this.paper._viewBoxShift){var b={},c=1/this.paper._viewBoxShift.scale;return b.x=a.x-this.paper._viewBoxShift.dx,b.x*=c,b.y=a.y-this.paper._viewBoxShift.dy,b.y*=c,b.width=a.width*c,b.height=a.height*c,b.x2=b.x+b.width,b.y2=b.y+b.height,b} -return a},E._getBBox=function(){return this.removed?{}:{x:this.X+(this.bbx||0)-this.W/2,y:this.Y-this.H,width:this.W,height:this.H}},E.remove=function(){if(!this.removed&&this.node.parentNode){this.paper.__set__&&this.paper.__set__.exclude(this),a.eve.unbind("raphael.*.*."+this.id),a._tear(this,this.paper),this.node.parentNode.removeChild(this.node),this.shape&&this.shape.parentNode.removeChild(this.shape);for(var b in this) -this[b]="function"==typeof this[b]?a._removedFactory(b):null;this.removed=!0}},E.attr=function(c,d){if(this.removed) -return this;if(null==c){var e={};for(var f in this.attrs) -this.attrs[b](f)&&(e[f]=this.attrs[f]);return e.gradient&&"none"==e.fill&&(e.fill=e.gradient)&&delete e.gradient,e.transform=this._.transform,e} -if(null==d&&a.is(c,"string")){if(c==j&&"none"==this.attrs.fill&&this.attrs.gradient) -return this.attrs.gradient;for(var g=c.split(k),h={},i=0,m=g.length;m>i;i++) -c=g[i],c in this.attrs?h[c]=this.attrs[c]:a.is(this.paper.customAttributes[c],"function")?h[c]=this.paper.customAttributes[c].def:h[c]=a._availableAttrs[c];return m-1?h:h[g[0]]} -if(this.attrs&&null==d&&a.is(c,"array")){for(h={},i=0,m=c.length;m>i;i++) -h[c[i]]=this.attr(c[i]);return h} -var n;null!=d&&(n={},n[c]=d),null==d&&a.is(c,"object")&&(n=c);for(var o in n) -l("raphael.attr."+o+"."+this.id,this,n[o]);if(n){for(o in this.paper.customAttributes) -if(this.paper.customAttributes[b](o)&&n[b](o)&&a.is(this.paper.customAttributes[o],"function")){var p=this.paper.customAttributes[o].apply(this,[].concat(n[o]));this.attrs[o]=n[o];for(var q in p) -p[b](q)&&(n[q]=p[q])} -n.text&&"text"==this.type&&(this.textpath.string=n.text),B(this,n)} -return this},E.toFront=function(){return!this.removed&&this.node.parentNode.appendChild(this.node),this.paper&&this.paper.top!=this&&a._tofront(this,this.paper),this},E.toBack=function(){return this.removed?this:(this.node.parentNode.firstChild!=this.node&&(this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild),a._toback(this,this.paper)),this)},E.insertAfter=function(b){return this.removed?this:(b.constructor==a.st.constructor&&(b=b[b.length-1]),b.node.nextSibling?b.node.parentNode.insertBefore(this.node,b.node.nextSibling):b.node.parentNode.appendChild(this.node),a._insertafter(this,b,this.paper),this)},E.insertBefore=function(b){return this.removed?this:(b.constructor==a.st.constructor&&(b=b[0]),b.node.parentNode.insertBefore(this.node,b.node),a._insertbefore(this,b,this.paper),this)},E.blur=function(b){var c=this.node.runtimeStyle,d=c.filter;return d=d.replace(r,o),0!==+b?(this.attrs.blur=b,c.filter=d+n+m+".Blur(pixelradius="+(+b||1.5)+")",c.margin=a.format("-{0}px 0 0 -{0}px",f(+b||1.5))):(c.filter=d,c.margin=0,delete this.attrs.blur),this},a._engine.path=function(a,b){var c=F("shape");c.style.cssText=t,c.coordsize=u+n+u,c.coordorigin=b.coordorigin;var d=new D(c,b),e={fill:"none",stroke:"#000"};a&&(e.path=a),d.type="path",d.path=[],d.Path=o,B(d,e),b.canvas.appendChild(c);var f=F("skew");return f.on=!0,c.appendChild(f),d.skew=f,d.transform(o),d},a._engine.rect=function(b,c,d,e,f,g){var h=a._rectPath(c,d,e,f,g),i=b.path(h),j=i.attrs;return i.X=j.x=c,i.Y=j.y=d,i.W=j.width=e,i.H=j.height=f,j.r=g,j.path=h,i.type="rect",i},a._engine.ellipse=function(a,b,c,d,e){{var f=a.path();f.attrs} -return f.X=b-d,f.Y=c-e,f.W=2*d,f.H=2*e,f.type="ellipse",B(f,{cx:b,cy:c,rx:d,ry:e}),f},a._engine.circle=function(a,b,c,d){{var e=a.path();e.attrs} -return e.X=b-d,e.Y=c-d,e.W=e.H=2*d,e.type="circle",B(e,{cx:b,cy:c,r:d}),e},a._engine.image=function(b,c,d,e,f,g){var h=a._rectPath(d,e,f,g),i=b.path(h).attr({stroke:"none"}),k=i.attrs,l=i.node,m=l.getElementsByTagName(j)[0];return k.src=c,i.X=k.x=d,i.Y=k.y=e,i.W=k.width=f,i.H=k.height=g,k.path=h,i.type="image",m.parentNode==l&&l.removeChild(m),m.rotate=!0,m.src=c,m.type="tile",i._.fillpos=[d,e],i._.fillsize=[f,g],l.appendChild(m),z(i,1,1,0,0,0),i},a._engine.text=function(b,d,e,g){var h=F("shape"),i=F("path"),j=F("textpath");d=d||0,e=e||0,g=g||"",i.v=a.format("m{0},{1}l{2},{1}",f(d*u),f(e*u),f(d*u)+1),i.textpathok=!0,j.string=c(g),j.on=!0,h.style.cssText=t,h.coordsize=u+n+u,h.coordorigin="0 0";var k=new D(h,b),l={fill:"#000",stroke:"none",font:a._availableAttrs.font,text:g};k.shape=h,k.path=i,k.textpath=j,k.type="text",k.attrs.text=c(g),k.attrs.x=d,k.attrs.y=e,k.attrs.w=1,k.attrs.h=1,B(k,l),h.appendChild(j),h.appendChild(i),b.canvas.appendChild(h);var m=F("skew");return m.on=!0,h.appendChild(m),k.skew=m,k.transform(o),k},a._engine.setSize=function(b,c){var d=this.canvas.style;return this.width=b,this.height=c,b==+b&&(b+="px"),c==+c&&(c+="px"),d.width=b,d.height=c,d.clip="rect(0 "+b+" "+c+" 0)",this._viewBox&&a._engine.setViewBox.apply(this,this._viewBox),this},a._engine.setViewBox=function(b,c,d,e,f){a.eve("raphael.setViewBox",this,this._viewBox,[b,c,d,e,f]);var g,h,i=this.getSize(),j=i.width,k=i.height;return f&&(g=k/e,h=j/d,j>d*g&&(b-=(j-d*g)/2/g),k>e*h&&(c-=(k-e*h)/2/h)),this._viewBox=[b,c,d,e,!!f],this._viewBoxShift={dx:-b,dy:-c,scale:i},this.forEach(function(a){a.transform("...")}),this};var F;a._engine.initWin=function(a){var b=a.document;b.styleSheets.length<31?b.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)"):b.styleSheets[0].addRule(".rvml","behavior:url(#default#VML)");try{!b.namespaces.rvml&&b.namespaces.add("rvml","urn:schemas-microsoft-com:vml"),F=function(a){return b.createElement("')}}catch(c){F=function(a){return b.createElement("<"+a+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}},a._engine.initWin(a._g.win),a._engine.create=function(){var b=a._getContainer.apply(0,arguments),c=b.container,d=b.height,e=b.width,f=b.x,g=b.y;if(!c) -throw new Error("VML container not found.");var h=new a._Paper,i=h.canvas=a._g.doc.createElement("div"),j=i.style;return f=f||0,g=g||0,e=e||512,d=d||342,h.width=e,h.height=d,e==+e&&(e+="px"),d==+d&&(d+="px"),h.coordsize=1e3*u+n+1e3*u,h.coordorigin="0 0",h.span=a._g.doc.createElement("span"),h.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;",i.appendChild(h.span),j.cssText=a.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",e,d),1==c?(a._g.doc.body.appendChild(i),j.left=f+"px",j.top=g+"px",j.position="absolute"):c.firstChild?c.insertBefore(i,c.firstChild):c.appendChild(i),h.renderfix=function(){},h},a.prototype.clear=function(){a.eve("raphael.clear",this),this.canvas.innerHTML=o,this.span=a._g.doc.createElement("span"),this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;",this.canvas.appendChild(this.span),this.bottom=this.top=null},a.prototype.remove=function(){a.eve("raphael.remove",this),this.canvas.parentNode.removeChild(this.canvas);for(var b in this) -this[b]="function"==typeof this[b]?a._removedFactory(b):null;return!0};var G=a.st;for(var H in E) -E[b](H)&&!G[b](H)&&(G[H]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}} -(H))}});JustGage=function(config){var obj=this;if(config===null||config===undefined){console.log('* justgage: Make sure to pass options to the constructor!');return false;} -var node;if(config.id!==null&&config.id!==undefined){node=document.getElementById(config.id);if(!node){console.log('* justgage: No element with id : %s found',config.id);return false;}}else if(config.parentNode!==null&&config.parentNode!==undefined){node=config.parentNode;}else{console.log('* justgage: Make sure to pass the existing element id or parentNode to the constructor.');return false;} -var dataset=node.dataset?node.dataset:{};var defaults=(config.defaults!==null&&config.defaults!==undefined)?config.defaults:false;if(defaults!==false){config=extend({},config,defaults);delete config.defaults;} -obj.config={id:config.id,value:kvLookup('value',config,dataset,0,'float'),defaults:kvLookup('defaults',config,dataset,0,false),parentNode:kvLookup('parentNode',config,dataset,null),width:kvLookup('width',config,dataset,null),height:kvLookup('height',config,dataset,null),title:kvLookup('title',config,dataset,""),titleFontColor:kvLookup('titleFontColor',config,dataset,"#999999"),titleFontFamily:kvLookup('titleFontFamily',config,dataset,"sans-serif"),titlePosition:kvLookup('titlePosition',config,dataset,"above"),valueFontColor:kvLookup('valueFontColor',config,dataset,"#010101"),valueFontFamily:kvLookup('valueFontFamily',config,dataset,"Arial"),symbol:kvLookup('symbol',config,dataset,''),min:kvLookup('min',config,dataset,0,'float'),max:kvLookup('max',config,dataset,100,'float'),reverse:kvLookup('reverse',config,dataset,false),humanFriendlyDecimal:kvLookup('humanFriendlyDecimal',config,dataset,0),textRenderer:kvLookup('textRenderer',config,dataset,null),gaugeWidthScale:kvLookup('gaugeWidthScale',config,dataset,1.0),gaugeColor:kvLookup('gaugeColor',config,dataset,"#edebeb"),label:kvLookup('label',config,dataset,''),labelFontColor:kvLookup('labelFontColor',config,dataset,"#b3b3b3"),shadowOpacity:kvLookup('shadowOpacity',config,dataset,0.2),shadowSize:kvLookup('shadowSize',config,dataset,5),shadowVerticalOffset:kvLookup('shadowVerticalOffset',config,dataset,3),levelColors:kvLookup('levelColors',config,dataset,["#a9d70b","#f9c802","#ff0000"],'array',','),startAnimationTime:kvLookup('startAnimationTime',config,dataset,700),startAnimationType:kvLookup('startAnimationType',config,dataset,'>'),refreshAnimationTime:kvLookup('refreshAnimationTime',config,dataset,700),refreshAnimationType:kvLookup('refreshAnimationType',config,dataset,'>'),donutStartAngle:kvLookup('donutStartAngle',config,dataset,90),valueMinFontSize:kvLookup('valueMinFontSize',config,dataset,16),titleMinFontSize:kvLookup('titleMinFontSize',config,dataset,10),labelMinFontSize:kvLookup('labelMinFontSize',config,dataset,10),minLabelMinFontSize:kvLookup('minLabelMinFontSize',config,dataset,10),maxLabelMinFontSize:kvLookup('maxLabelMinFontSize',config,dataset,10),hideValue:kvLookup('hideValue',config,dataset,false),hideMinMax:kvLookup('hideMinMax',config,dataset,false),hideInnerShadow:kvLookup('hideInnerShadow',config,dataset,false),humanFriendly:kvLookup('humanFriendly',config,dataset,false),noGradient:kvLookup('noGradient',config,dataset,false),donut:kvLookup('donut',config,dataset,false),relativeGaugeSize:kvLookup('relativeGaugeSize',config,dataset,false),counter:kvLookup('counter',config,dataset,false),decimals:kvLookup('decimals',config,dataset,0),customSectors:kvLookup('customSectors',config,dataset,[]),formatNumber:kvLookup('formatNumber',config,dataset,false),pointer:kvLookup('pointer',config,dataset,false),pointerOptions:kvLookup('pointerOptions',config,dataset,[])};var -canvasW,canvasH,widgetW,widgetH,aspect,dx,dy,titleFontSize,titleX,titleY,valueFontSize,valueX,valueY,labelFontSize,labelX,labelY,minFontSize,minX,minY,maxFontSize,maxX,maxY;if(obj.config.value>obj.config.max) -obj.config.value=obj.config.max;if(obj.config.valuecanvasH){widgetH=canvasH;widgetW=widgetH;}else if(canvasWcanvasH){aspect=widgetH/canvasH;widgetH=widgetH/aspect;widgetW=widgetH/aspect;}}else{widgetW=canvasW;widgetH=widgetW;} -dx=(canvasW-widgetW)/2;dy=(canvasH-widgetH)/2;titleFontSize=((widgetH/8)>10)?(widgetH/10):10;titleX=dx+widgetW/2;titleY=dy+widgetH/11;valueFontSize=((widgetH/6.4)>16)?(widgetH/5.4):18;valueX=dx+widgetW/2;if(obj.config.label!==''){valueY=dy+widgetH/1.85;}else{valueY=dy+widgetH/1.7;} -labelFontSize=((widgetH/16)>10)?(widgetH/16):10;labelX=dx+widgetW/2;labelY=valueY+labelFontSize;minFontSize=((widgetH/16)>10)?(widgetH/16):10;minX=dx+(widgetW/10)+(widgetW/6.666666666666667*obj.config.gaugeWidthScale)/2;minY=labelY;maxFontSize=((widgetH/16)>10)?(widgetH/16):10;maxX=dx+widgetW-(widgetW/10)-(widgetW/6.666666666666667*obj.config.gaugeWidthScale)/2;maxY=labelY;}else{if(canvasW>canvasH){widgetH=canvasH;widgetW=widgetH*1.25;if(widgetW>canvasW){aspect=widgetW/canvasW;widgetW=widgetW/aspect;widgetH=widgetH/aspect;}}else if(canvasWcanvasH){aspect=widgetH/canvasH;widgetH=widgetH/aspect;widgetW=widgetH/aspect;}}else{widgetW=canvasW;widgetH=widgetW*0.75;} -dx=(canvasW-widgetW)/2;dy=(canvasH-widgetH)/2;if(obj.config.titlePosition==='below'){dy-=(widgetH/6.4);} -titleFontSize=((widgetH/8)>obj.config.titleMinFontSize)?(widgetH/10):obj.config.titleMinFontSize;titleX=dx+widgetW/2;titleY=dy+(obj.config.titlePosition==='below'?(widgetH*1.07):(widgetH/6.4));valueFontSize=((widgetH/6.5)>obj.config.valueMinFontSize)?(widgetH/6.5):obj.config.valueMinFontSize;valueX=dx+widgetW/2;valueY=dy+widgetH/1.275;labelFontSize=((widgetH/16)>obj.config.labelMinFontSize)?(widgetH/16):obj.config.labelMinFontSize;labelX=dx+widgetW/2;labelY=valueY+valueFontSize/2+5;minFontSize=((widgetH/16)>obj.config.minLabelMinFontSize)?(widgetH/16):obj.config.minLabelMinFontSize;minX=dx+(widgetW/10)+(widgetW/6.666666666666667*obj.config.gaugeWidthScale)/2;minY=labelY;maxFontSize=((widgetH/16)>obj.config.maxLabelMinFontSize)?(widgetH/16):obj.config.maxLabelMinFontSize;maxX=dx+widgetW-(widgetW/10)-(widgetW/6.666666666666667*obj.config.gaugeWidthScale)/2;maxY=labelY;} -obj.params={canvasW:canvasW,canvasH:canvasH,widgetW:widgetW,widgetH:widgetH,dx:dx,dy:dy,titleFontSize:titleFontSize,titleX:titleX,titleY:titleY,valueFontSize:valueFontSize,valueX:valueX,valueY:valueY,labelFontSize:labelFontSize,labelX:labelX,labelY:labelY,minFontSize:minFontSize,minX:minX,minY:minY,maxFontSize:maxFontSize,maxX:maxX,maxY:maxY};canvasW,canvasH,widgetW,widgetH,aspect,dx,dy,titleFontSize,titleX,titleY,valueFontSize,valueX,valueY,labelFontSize,labelX,labelY,minFontSize,minX,minY,maxFontSize,maxX,maxY=null;obj.canvas.customAttributes.pki=function(value,min,max,w,h,dx,dy,gws,donut,reverse){var alpha,Ro,Ri,Cx,Cy,Xo,Yo,Xi,Yi,path;if(donut){alpha=(1-2*(value-min)/(max-min))*Math.PI;Ro=w/2-w/7;Ri=Ro-w/6.666666666666667*gws;Cx=w/2+dx;Cy=h/1.95+dy;Xo=w/2+dx+Ro*Math.cos(alpha);Yo=h-(h-Cy)-Ro*Math.sin(alpha);Xi=w/2+dx+Ri*Math.cos(alpha);Yi=h-(h-Cy)-Ri*Math.sin(alpha);path="M"+(Cx-Ri)+","+Cy+" ";path+="L"+(Cx-Ro)+","+Cy+" ";if(value>((max-min)/2)){path+="A"+Ro+","+Ro+" 0 0 1 "+(Cx+Ro)+","+Cy+" ";} -path+="A"+Ro+","+Ro+" 0 0 1 "+Xo+","+Yo+" ";path+="L"+Xi+","+Yi+" ";if(value>((max-min)/2)){path+="A"+Ri+","+Ri+" 0 0 0 "+(Cx+Ri)+","+Cy+" ";} -path+="A"+Ri+","+Ri+" 0 0 0 "+(Cx-Ri)+","+Cy+" ";path+="Z ";return{path:path};}else{alpha=(1-(value-min)/(max-min))*Math.PI;Ro=w/2-w/10;Ri=Ro-w/6.666666666666667*gws;Cx=w/2+dx;Cy=h/1.25+dy;Xo=w/2+dx+Ro*Math.cos(alpha);Yo=h-(h-Cy)-Ro*Math.sin(alpha);Xi=w/2+dx+Ri*Math.cos(alpha);Yi=h-(h-Cy)-Ri*Math.sin(alpha);path="M"+(Cx-Ri)+","+Cy+" ";path+="L"+(Cx-Ro)+","+Cy+" ";path+="A"+Ro+","+Ro+" 0 0 1 "+Xo+","+Yo+" ";path+="L"+Xi+","+Yi+" ";path+="A"+Ri+","+Ri+" 0 0 0 "+(Cx-Ri)+","+Cy+" ";path+="Z ";return{path:path};} -alpha,Ro,Ri,Cx,Cy,Xo,Yo,Xi,Yi,path=null;};obj.canvas.customAttributes.ndl=function(value,min,max,w,h,dx,dy,gws,donut){var dlt=w*3.5/100;var dlb=w/15;var dw=w/100;if(obj.config.pointerOptions.toplength!=null&&obj.config.pointerOptions.toplength!=undefined) -dlt=obj.config.pointerOptions.toplength;if(obj.config.pointerOptions.bottomlength!=null&&obj.config.pointerOptions.bottomlength!=undefined) -dlb=obj.config.pointerOptions.bottomlength;if(obj.config.pointerOptions.bottomwidth!=null&&obj.config.pointerOptions.bottomwidth!=undefined) -dw=obj.config.pointerOptions.bottomwidth;var alpha,Ro,Ri,Cx,Cy,Xo,Yo,Xi,Yi,Xc,Yc,Xz,Yz,Xa,Ya,Xb,Yb,path;if(donut){alpha=(1-2*(value-min)/(max-min))*Math.PI;Ro=w/2-w/7;Ri=Ro-w/6.666666666666667*gws;Cx=w/2+dx;Cy=h/1.95+dy;Xo=w/2+dx+Ro*Math.cos(alpha);Yo=h-(h-Cy)-Ro*Math.sin(alpha);Xi=w/2+dx+Ri*Math.cos(alpha);Yi=h-(h-Cy)-Ri*Math.sin(alpha);Xc=Xo+dlt*Math.cos(alpha);Yc=Yo-dlt*Math.sin(alpha);Xz=Xi-dlb*Math.cos(alpha);Yz=Yi+dlb*Math.sin(alpha);Xa=Xz+dw*Math.sin(alpha);Ya=Yz+dw*Math.cos(alpha);Xb=Xz-dw*Math.sin(alpha);Yb=Yz-dw*Math.cos(alpha);path='M'+Xa+','+Ya+' ';path+='L'+Xb+','+Yb+' ';path+='L'+Xc+','+Yc+' ';path+='Z ';return{path:path};}else{alpha=(1-(value-min)/(max-min))*Math.PI;Ro=w/2-w/10;Ri=Ro-w/6.666666666666667*gws;Cx=w/2+dx;Cy=h/1.25+dy;Xo=w/2+dx+Ro*Math.cos(alpha);Yo=h-(h-Cy)-Ro*Math.sin(alpha);Xi=w/2+dx+Ri*Math.cos(alpha);Yi=h-(h-Cy)-Ri*Math.sin(alpha);Xc=Xo+dlt*Math.cos(alpha);Yc=Yo-dlt*Math.sin(alpha);Xz=Xi-dlb*Math.cos(alpha);Yz=Yi+dlb*Math.sin(alpha);Xa=Xz+dw*Math.sin(alpha);Ya=Yz+dw*Math.cos(alpha);Xb=Xz-dw*Math.sin(alpha);Yb=Yz-dw*Math.cos(alpha);path='M'+Xa+','+Ya+' ';path+='L'+Xb+','+Yb+' ';path+='L'+Xc+','+Yc+' ';path+='Z ';return{path:path};} -alpha,Ro,Ri,Cx,Cy,Xo,Yo,Xi,Yi,Xc,Yc,Xz,Yz,Xa,Ya,Xb,Yb,path=null;};obj.gauge=obj.canvas.path().attr({"stroke":"none","fill":obj.config.gaugeColor,pki:[obj.config.max,obj.config.min,obj.config.max,obj.params.widgetW,obj.params.widgetH,obj.params.dx,obj.params.dy,obj.config.gaugeWidthScale,obj.config.donut,obj.config.reverse]});obj.level=obj.canvas.path().attr({"stroke":"none","fill":getColor(obj.config.value,(obj.config.value-obj.config.min)/(obj.config.max-obj.config.min),obj.config.levelColors,obj.config.noGradient,obj.config.customSectors),pki:[obj.config.min,obj.config.min,obj.config.max,obj.params.widgetW,obj.params.widgetH,obj.params.dx,obj.params.dy,obj.config.gaugeWidthScale,obj.config.donut,obj.config.reverse]});if(obj.config.donut){obj.level.transform("r"+obj.config.donutStartAngle+", "+(obj.params.widgetW/2+obj.params.dx)+", "+(obj.params.widgetH/1.95+obj.params.dy));} -if(obj.config.pointer){obj.needle=obj.canvas.path().attr({"stroke":(obj.config.pointerOptions.stroke!==null&&obj.config.pointerOptions.stroke!==undefined)?obj.config.pointerOptions.stroke:"none","stroke-width":(obj.config.pointerOptions.stroke_width!==null&&obj.config.pointerOptions.stroke_width!==undefined)?obj.config.pointerOptions.stroke_width:0,"stroke-linecap":(obj.config.pointerOptions.stroke_linecap!==null&&obj.config.pointerOptions.stroke_linecap!==undefined)?obj.config.pointerOptions.stroke_linecap:"square","fill":(obj.config.pointerOptions.color!==null&&obj.config.pointerOptions.color!==undefined)?obj.config.pointerOptions.color:"#000000",ndl:[obj.config.min,obj.config.min,obj.config.max,obj.params.widgetW,obj.params.widgetH,obj.params.dx,obj.params.dy,obj.config.gaugeWidthScale,obj.config.donut]});if(obj.config.donut){obj.needle.transform("r"+obj.config.donutStartAngle+", "+(obj.params.widgetW/2+obj.params.dx)+", "+(obj.params.widgetH/1.95+obj.params.dy));}} -obj.txtTitle=obj.canvas.text(obj.params.titleX,obj.params.titleY,obj.config.title);obj.txtTitle.attr({"font-size":obj.params.titleFontSize,"font-weight":"bold","font-family":obj.config.titleFontFamily,"fill":obj.config.titleFontColor,"fill-opacity":"1"});setDy(obj.txtTitle,obj.params.titleFontSize,obj.params.titleY);obj.txtValue=obj.canvas.text(obj.params.valueX,obj.params.valueY,0);obj.txtValue.attr({"font-size":obj.params.valueFontSize,"font-weight":"bold","font-family":obj.config.valueFontFamily,"fill":obj.config.valueFontColor,"fill-opacity":"0"});setDy(obj.txtValue,obj.params.valueFontSize,obj.params.valueY);obj.txtLabel=obj.canvas.text(obj.params.labelX,obj.params.labelY,obj.config.label);obj.txtLabel.attr({"font-size":obj.params.labelFontSize,"font-weight":"normal","font-family":"Arial","fill":obj.config.labelFontColor,"fill-opacity":"0"});setDy(obj.txtLabel,obj.params.labelFontSize,obj.params.labelY);var min=obj.config.min;if(obj.config.reverse){min=obj.config.max;} -obj.txtMinimum=min;if(obj.config.humanFriendly){obj.txtMinimum=humanFriendlyNumber(min,obj.config.humanFriendlyDecimal);}else if(obj.config.formatNumber){obj.txtMinimum=formatNumber(min);} -obj.txtMin=obj.canvas.text(obj.params.minX,obj.params.minY,obj.txtMinimum);obj.txtMin.attr({"font-size":obj.params.minFontSize,"font-weight":"normal","font-family":"Arial","fill":obj.config.labelFontColor,"fill-opacity":(obj.config.hideMinMax||obj.config.donut)?"0":"1"});setDy(obj.txtMin,obj.params.minFontSize,obj.params.minY);var max=obj.config.max;if(obj.config.reverse){max=obj.config.min;} -obj.txtMaximum=max;if(obj.config.humanFriendly){obj.txtMaximum=humanFriendlyNumber(max,obj.config.humanFriendlyDecimal);}else if(obj.config.formatNumber){obj.txtMaximum=formatNumber(max);} -obj.txtMax=obj.canvas.text(obj.params.maxX,obj.params.maxY,obj.txtMaximum);obj.txtMax.attr({"font-size":obj.params.maxFontSize,"font-weight":"normal","font-family":"Arial","fill":obj.config.labelFontColor,"fill-opacity":(obj.config.hideMinMax||obj.config.donut)?"0":"1"});setDy(obj.txtMax,obj.params.maxFontSize,obj.params.maxY);var defs=obj.canvas.canvas.childNodes[1];var svg="http://www.w3.org/2000/svg";if(ie!=='undefined'&&ie<9){} -else if(ie!=='undefined'){onCreateElementNsReady(function(){obj.generateShadow(svg,defs);});}else{obj.generateShadow(svg,defs);} -defs,svg=null;if(obj.config.textRenderer){obj.originalValue=obj.config.textRenderer(obj.originalValue);}else if(obj.config.humanFriendly){obj.originalValue=humanFriendlyNumber(obj.originalValue,obj.config.humanFriendlyDecimal)+obj.config.symbol;}else if(obj.config.formatNumber){obj.originalValue=formatNumber(obj.originalValue)+obj.config.symbol;}else{obj.originalValue=(obj.originalValue*1).toFixed(obj.config.decimals)+obj.config.symbol;} -if(obj.config.counter===true){eve.on("raphael.anim.frame."+(obj.level.id),function(){var currentValue=obj.level.attr("pki")[0];if(obj.config.reverse){currentValue=(obj.config.max*1)+(obj.config.min*1)-(obj.level.attr("pki")[0]*1);} -if(obj.config.textRenderer){obj.txtValue.attr("text",obj.config.textRenderer(Math.floor(currentValue)));}else if(obj.config.humanFriendly){obj.txtValue.attr("text",humanFriendlyNumber(Math.floor(currentValue),obj.config.humanFriendlyDecimal)+obj.config.symbol);}else if(obj.config.formatNumber){obj.txtValue.attr("text",formatNumber(Math.floor(currentValue))+obj.config.symbol);}else{obj.txtValue.attr("text",(currentValue*1).toFixed(obj.config.decimals)+obj.config.symbol);} -setDy(obj.txtValue,obj.params.valueFontSize,obj.params.valueY);currentValue=null;});eve.on("raphael.anim.finish."+(obj.level.id),function(){obj.txtValue.attr({"text":obj.originalValue});setDy(obj.txtValue,obj.params.valueFontSize,obj.params.valueY);});}else{eve.on("raphael.anim.start."+(obj.level.id),function(){obj.txtValue.attr({"text":obj.originalValue});setDy(obj.txtValue,obj.params.valueFontSize,obj.params.valueY);});} -var rvl=obj.config.value;if(obj.config.reverse){rvl=(obj.config.max*1)+(obj.config.min*1)-(obj.config.value*1);} -obj.level.animate({pki:[rvl,obj.config.min,obj.config.max,obj.params.widgetW,obj.params.widgetH,obj.params.dx,obj.params.dy,obj.config.gaugeWidthScale,obj.config.donut,obj.config.reverse]},obj.config.startAnimationTime,obj.config.startAnimationType);if(obj.config.pointer){obj.needle.animate({ndl:[rvl,obj.config.min,obj.config.max,obj.params.widgetW,obj.params.widgetH,obj.params.dx,obj.params.dy,obj.config.gaugeWidthScale,obj.config.donut]},obj.config.startAnimationTime,obj.config.startAnimationType);} -obj.txtValue.animate({"fill-opacity":(obj.config.hideValue)?"0":"1"},obj.config.startAnimationTime,obj.config.startAnimationType);obj.txtLabel.animate({"fill-opacity":"1"},obj.config.startAnimationTime,obj.config.startAnimationType);};JustGage.prototype.refresh=function(val,max){var obj=this;var displayVal,color,max=max||null;if(max!==null){obj.config.max=max;obj.txtMaximum=obj.config.max;if(obj.config.humanFriendly){obj.txtMaximum=humanFriendlyNumber(obj.config.max,obj.config.humanFriendlyDecimal);}else if(obj.config.formatNumber){obj.txtMaximum=formatNumber(obj.config.max);} -if(!obj.config.reverse){obj.txtMax.attr({"text":obj.txtMaximum});setDy(obj.txtMax,obj.params.maxFontSize,obj.params.maxY);}else{obj.txtMin.attr({"text":obj.txtMaximum});setDy(obj.txtMin,obj.params.minFontSize,obj.params.minY);}} -displayVal=val;if((val*1)>(obj.config.max*1)){val=(obj.config.max*1);} -if((val*1)<(obj.config.min*1)){val=(obj.config.min*1);} -color=getColor(val,(val-obj.config.min)/(obj.config.max-obj.config.min),obj.config.levelColors,obj.config.noGradient,obj.config.customSectors);if(obj.config.textRenderer){displayVal=obj.config.textRenderer(displayVal);}else if(obj.config.humanFriendly){displayVal=humanFriendlyNumber(displayVal,obj.config.humanFriendlyDecimal)+obj.config.symbol;}else if(obj.config.formatNumber){displayVal=formatNumber((displayVal*1).toFixed(obj.config.decimals))+obj.config.symbol;}else{displayVal=(displayVal*1).toFixed(obj.config.decimals)+obj.config.symbol;} -obj.originalValue=displayVal;obj.config.value=val*1;if(!obj.config.counter){obj.txtValue.attr({"text":displayVal});setDy(obj.txtValue,obj.params.valueFontSize,obj.params.valueY);} -var rvl=obj.config.value;if(obj.config.reverse){rvl=(obj.config.max*1)+(obj.config.min*1)-(obj.config.value*1);} -obj.level.animate({pki:[rvl,obj.config.min,obj.config.max,obj.params.widgetW,obj.params.widgetH,obj.params.dx,obj.params.dy,obj.config.gaugeWidthScale,obj.config.donut,obj.config.reverse],"fill":color},obj.config.refreshAnimationTime,obj.config.refreshAnimationType);if(obj.config.pointer){obj.needle.animate({ndl:[rvl,obj.config.min,obj.config.max,obj.params.widgetW,obj.params.widgetH,obj.params.dx,obj.params.dy,obj.config.gaugeWidthScale,obj.config.donut]},obj.config.refreshAnimationTime,obj.config.refreshAnimationType);} -obj,displayVal,color,max=null;};JustGage.prototype.generateShadow=function(svg,defs){var obj=this;var sid="inner-shadow-"+obj.config.id;var gaussFilter,feOffset,feGaussianBlur,feComposite1,feFlood,feComposite2,feComposite3;gaussFilter=document.createElementNS(svg,"filter");gaussFilter.setAttribute("id",sid);defs.appendChild(gaussFilter);feOffset=document.createElementNS(svg,"feOffset");feOffset.setAttribute("dx",0);feOffset.setAttribute("dy",obj.config.shadowVerticalOffset);gaussFilter.appendChild(feOffset);feGaussianBlur=document.createElementNS(svg,"feGaussianBlur");feGaussianBlur.setAttribute("result","offset-blur");feGaussianBlur.setAttribute("stdDeviation",obj.config.shadowSize);gaussFilter.appendChild(feGaussianBlur);feComposite1=document.createElementNS(svg,"feComposite");feComposite1.setAttribute("operator","out");feComposite1.setAttribute("in","SourceGraphic");feComposite1.setAttribute("in2","offset-blur");feComposite1.setAttribute("result","inverse");gaussFilter.appendChild(feComposite1);feFlood=document.createElementNS(svg,"feFlood");feFlood.setAttribute("flood-color","black");feFlood.setAttribute("flood-opacity",obj.config.shadowOpacity);feFlood.setAttribute("result","color");gaussFilter.appendChild(feFlood);feComposite2=document.createElementNS(svg,"feComposite");feComposite2.setAttribute("operator","in");feComposite2.setAttribute("in","color");feComposite2.setAttribute("in2","inverse");feComposite2.setAttribute("result","shadow");gaussFilter.appendChild(feComposite2);feComposite3=document.createElementNS(svg,"feComposite");feComposite3.setAttribute("operator","over");feComposite3.setAttribute("in","shadow");feComposite3.setAttribute("in2","SourceGraphic");gaussFilter.appendChild(feComposite3);if(!obj.config.hideInnerShadow){obj.canvas.canvas.childNodes[2].setAttribute("filter","url(#"+sid+")");obj.canvas.canvas.childNodes[3].setAttribute("filter","url(#"+sid+")");} -gaussFilter,feOffset,feGaussianBlur,feComposite1,feFlood,feComposite2,feComposite3=null;};function kvLookup(key,tablea,tableb,defval,datatype,delimiter){var val=defval;var canConvert=false;if(!(key===null||key===undefined)){if(tableb!==null&&tableb!==undefined&&typeof tableb==="object"&&key in tableb){val=tableb[key];canConvert=true;}else if(tablea!==null&&tablea!==undefined&&typeof tablea==="object"&&key in tablea){val=tablea[key];canConvert=true;}else{val=defval;} -if(canConvert===true){if(datatype!==null&&datatype!==undefined){switch(datatype){case'int':val=parseInt(val,10);break;case'float':val=parseFloat(val);break;default:break;}}}} -return val;};function getColor(val,pct,col,noGradient,custSec){var no,inc,colors,percentage,rval,gval,bval,lower,upper,range,rangePct,pctLower,pctUpper,color;var noGradient=noGradient||custSec.length>0;if(custSec.length>0){for(var i=0;icustSec[i].lo&&val<=custSec[i].hi){return custSec[i].color;}}} -no=col.length;if(no===1) -return col[0];inc=(noGradient)?(1/no):(1/(no-1));colors=[];for(i=0;i9)&&elem.node.firstChild.attributes.dy){elem.node.firstChild.attributes.dy.value=0;}} -function getRandomInt(min,max){return Math.floor(Math.random()*(max-min+1))+min;} -function cutHex(str){return(str.charAt(0)=="#")?str.substring(1,7):str;} -function humanFriendlyNumber(n,d){var p,d2,i,s;p=Math.pow;d2=p(10,d);i=7;while(i){s=p(10,i-- *3);if(s<=n){n=Math.round(n*d2/s)/d2+"KMGTPE"[i];}} -return n;} -function formatNumber(x){var parts=x.toString().split(".");parts[0]=parts[0].replace(/\B(?=(\d{3})+(?!\d))/g,",");return parts.join(".");} -function getStyle(oElm,strCssRule){var strValue="";if(document.defaultView&&document.defaultView.getComputedStyle){strValue=document.defaultView.getComputedStyle(oElm,"").getPropertyValue(strCssRule);}else if(oElm.currentStyle){strCssRule=strCssRule.replace(/\-(\w)/g,function(strMatch,p1){return p1.toUpperCase();});strValue=oElm.currentStyle[strCssRule];} -return strValue;} -function onCreateElementNsReady(func){if(document.createElementNS!==undefined){func();}else{setTimeout(function(){onCreateElementNsReady(func);},100);}} -var ie=(function(){var undef,v=3,div=document.createElement('div'),all=div.getElementsByTagName('i');while(div.innerHTML='',all[0]);return v>4?v:undef;} -());function extend(out){out=out||{};for(var i=1;iW1H(KP1_lEI2tPxOf#H}a1A_(w1A_oa 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 diff --git a/examples/SmartSwitch/data_src/index.htm b/examples/SmartSwitch/data_src/index.htm deleted file mode 100644 index 6f2c731..0000000 --- a/examples/SmartSwitch/data_src/index.htm +++ /dev/null @@ -1,599 +0,0 @@ - - - - - - Smart Switch - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-
- - - - -
-
- - - - - - - - -
- - - - - -
-
- -
-
-
- -
-
-
- -
-
-
-
-
- -
-
- -

-
-
-
- -
-
- - - - - - - - \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/js_css_src/.exclude.files b/examples/SmartSwitch/data_src/js_css_src/.exclude.files deleted file mode 100644 index 955397f..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/.exclude.files +++ /dev/null @@ -1,2 +0,0 @@ -/*.js.gz -/.exclude.files diff --git a/examples/SmartSwitch/data_src/js_css_src/ace-drafts/ace.js b/examples/SmartSwitch/data_src/js_css_src/ace-drafts/ace.js deleted file mode 100644 index f54ebb2..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/ace-drafts/ace.js +++ /dev/null @@ -1,14 +0,0 @@ -(function(){function o(n){var i=e;n&&(e[n]||(e[n]={}),i=e[n]);if(!i.define||!i.define.packaged)t.original=i.define,i.define=t,i.define.packaged=!0;if(!i.require||!i.require.packaged)r.original=i.require,i.require=r,i.require.packaged=!0}var ACE_NAMESPACE="",e=function(){return this}();!e&&typeof window!="undefined"&&(e=window);if(!ACE_NAMESPACE&&typeof requirejs!="undefined")return;var t=function(e,n,r){if(typeof e!="string"){t.original?t.original.apply(this,arguments):(console.error("dropping module because define wasn't a string."),console.trace());return}arguments.length==2&&(r=n),t.modules[e]||(t.payloads[e]=r,t.modules[e]=null)};t.modules={},t.payloads={};var n=function(e,t,n){if(typeof t=="string"){var i=s(e,t);if(i!=undefined)return n&&n(),i}else if(Object.prototype.toString.call(t)==="[object Array]"){var o=[];for(var u=0,a=t.length;u1&&u(t,"")>-1&&(a=RegExp(this.source,r.replace.call(o(this),"g","")),r.replace.call(e.slice(t.index),a,function(){for(var e=1;et.index&&this.lastIndex--}return t},s||(RegExp.prototype.test=function(e){var t=r.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t})}),define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+ta)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n=0?parseFloat((i.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((i.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=(window.Controllers||window.controllers)&&window.navigator.product==="Gecko",t.isOldGecko=t.isGecko&&parseInt((i.match(/rv:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&Object.prototype.toString.call(window.opera)=="[object Opera]",t.isWebKit=parseFloat(i.split("WebKit/")[1])||undefined,t.isChrome=parseFloat(i.split(" Chrome/")[1])||undefined,t.isAIR=i.indexOf("AdobeAIR")>=0,t.isIPad=i.indexOf("iPad")>=0,t.isTouchPad=i.indexOf("TouchPad")>=0,t.isChromeOS=i.indexOf(" CrOS ")>=0}),define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function a(e,t,n){var a=u(t);if(!i.isMac&&s){t.getModifierState&&(t.getModifierState("OS")||t.getModifierState("Win"))&&(a|=8);if(s.altGr){if((3&a)==3)return;s.altGr=0}if(n===18||n===17){var f="location"in t?t.location:t.keyLocation;if(n===17&&f===1)s[n]==1&&(o=t.timeStamp);else if(n===18&&a===3&&f===2){var l=t.timeStamp-o;l<50&&(s.altGr=!0)}}}n in r.MODIFIER_KEYS&&(n=-1),a&8&&n>=91&&n<=93&&(n=-1);if(!a&&n===13){var f="location"in t?t.location:t.keyLocation;if(f===3){e(t,a,-n);if(t.defaultPrevented)return}}if(i.isChromeOS&&a&8){e(t,a,n);if(t.defaultPrevented)return;a&=-9}return!!a||n in r.FUNCTION_KEYS||n in r.PRINTABLE_KEYS?e(t,a,n):!1}function f(){s=Object.create(null)}var r=e("./keys"),i=e("./useragent"),s=null,o=0;t.addListener=function(e,t,n){if(e.addEventListener)return e.addEventListener(t,n,!1);if(e.attachEvent){var r=function(){n.call(e,window.event)};n._wrapper=r,e.attachEvent("on"+t,r)}},t.removeListener=function(e,t,n){if(e.removeEventListener)return e.removeEventListener(t,n,!1);e.detachEvent&&e.detachEvent("on"+t,n._wrapper||n)},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return e.type=="dblclick"?0:e.type=="contextmenu"||i.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,n,r){function i(e){n&&n(e),r&&r(e),t.removeListener(document,"mousemove",n,!0),t.removeListener(document,"mouseup",i,!0),t.removeListener(document,"dragstart",i,!0)}return t.addListener(document,"mousemove",n,!0),t.addListener(document,"mouseup",i,!0),t.addListener(document,"dragstart",i,!0),i},t.addTouchMoveListener=function(e,n){if("ontouchmove"in e){var r,i;t.addListener(e,"touchstart",function(e){var t=e.changedTouches[0];r=t.clientX,i=t.clientY}),t.addListener(e,"touchmove",function(e){var t=1,s=e.changedTouches[0];e.wheelX=-(s.clientX-r)/t,e.wheelY=-(s.clientY-i)/t,r=s.clientX,i=s.clientY,n(e)})}},t.addMouseWheelListener=function(e,n){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){var t=8;e.wheelDeltaX!==undefined?(e.wheelX=-e.wheelDeltaX/t,e.wheelY=-e.wheelDeltaY/t):(e.wheelX=0,e.wheelY=-e.wheelDelta/t),n(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){var t=.35;switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=e.deltaX*t||0,e.wheelY=e.deltaY*t||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=(e.deltaX||0)*5,e.wheelY=(e.deltaY||0)*5}n(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=(e.detail||0)*5,e.wheelY=0):(e.wheelX=0,e.wheelY=(e.detail||0)*5),n(e)})},t.addMultiMouseDownListener=function(e,n,r,s){function c(e){t.getButton(e)!==0?o=0:e.detail>1?(o++,o>4&&(o=1)):o=1;if(i.isIE){var c=Math.abs(e.clientX-u)>5||Math.abs(e.clientY-a)>5;if(!f||c)o=1;f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),o==1&&(u=e.clientX,a=e.clientY)}e._clicks=o,r[s]("mousedown",e);if(o>4)o=0;else if(o>1)return r[s](l[o],e)}function h(e){o=2,f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),r[s]("mousedown",e),r[s](l[o],e)}var o=0,u,a,f,l={2:"dblclick",3:"tripleclick",4:"quadclick"};Array.isArray(e)||(e=[e]),e.forEach(function(e){t.addListener(e,"mousedown",c),i.isOldIE&&t.addListener(e,"dblclick",h)})};var u=!i.isMac||!i.isOpera||"KeyboardEvent"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};t.getModifierString=function(e){return r.KEY_MODS[u(e)]},t.addCommandKeyListener=function(e,n){var r=t.addListener;if(i.isOldGecko||i.isOpera&&!("KeyboardEvent"in window)){var o=null;r(e,"keydown",function(e){o=e.keyCode}),r(e,"keypress",function(e){return a(n,e,o)})}else{var u=null;r(e,"keydown",function(e){s[e.keyCode]=(s[e.keyCode]||0)+1;var t=a(n,e,e.keyCode);return u=e.defaultPrevented,t}),r(e,"keypress",function(e){u&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),u=null)}),r(e,"keyup",function(e){s[e.keyCode]=null}),s||(f(),r(window,"focus",f))}};if(typeof window=="object"&&window.postMessage&&!i.isOldIE){var l=1;t.nextTick=function(e,n){n=n||window;var r="zero-timeout-message-"+l;t.addListener(n,"message",function i(s){s.data==r&&(t.stopPropagation(s),t.removeListener(n,"message",i),e())}),n.postMessage(r,"*")}}t.nextFrame=typeof window=="object"&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n=53&&O()},I=o.delayedCall(j,50);r.addListener(n,"compositionstart",B),i.isGecko?r.addListener(n,"text",function(){I.schedule()}):(r.addListener(n,"keyup",function(){I.schedule()}),r.addListener(n,"keydown",function(){I.schedule()})),r.addListener(n,"compositionend",F),this.getElement=function(){return n},this.setReadOnly=function(e){n.readOnly=e},this.onContextMenu=function(e){L=!0,b(t.selection.isEmpty()),t._emit("nativecontextmenu",{target:t,domEvent:e}),this.moveToMouse(e,!0)},this.moveToMouse=function(e,o){if(!o&&i.isOldIE)return;p||(p=n.style.cssText),n.style.cssText=(o?"z-index:100000;":"")+"height:"+n.style.height+";"+(i.isIE?"opacity:0.1;":"");var u=t.container.getBoundingClientRect(),a=s.computedStyle(t.container),f=u.top+(parseInt(a.borderTopWidth)||0),l=u.left+(parseInt(u.borderLeftWidth)||0),c=u.bottom-f-n.clientHeight-2,h=function(e){n.style.left=e.clientX-l-2+"px",n.style.top=Math.min(e.clientY-f-2,c)+"px"};h(e);if(e.type!="mousedown")return;t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),clearTimeout(q),i.isWin&&!i.isOldIE&&r.capture(t.container,h,R)},this.onContextMenuClose=R;var q,U=function(e){t.textInput.onContextMenu(e),R()};r.addListener(n,"mouseup",U),r.addListener(n,"mousedown",function(e){e.preventDefault(),R()}),r.addListener(t.renderer.scroller,"contextmenu",U),r.addListener(n,"contextmenu",U)};t.TextInput=f}),define("ace/mouse/default_handlers",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";function u(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler("mousedown",this.onMouseDown.bind(e)),t.setDefaultHandler("dblclick",this.onDoubleClick.bind(e)),t.setDefaultHandler("tripleclick",this.onTripleClick.bind(e)),t.setDefaultHandler("quadclick",this.onQuadClick.bind(e)),t.setDefaultHandler("mousewheel",this.onMouseWheel.bind(e)),t.setDefaultHandler("touchmove",this.onTouchMove.bind(e));var n=["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"];n.forEach(function(t){e[t]=this[t]},this),e.selectByLines=this.extendSelectionBy.bind(e,"getLineRange"),e.selectByWords=this.extendSelectionBy.bind(e,"getWordRange")}function a(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}function f(e,t){if(e.start.row==e.end.row)var n=2*t.column-e.start.column-e.end.column;else if(e.start.row==e.end.row-1&&!e.start.column&&!e.end.column)var n=t.column-4;else var n=2*t.row-e.start.row-e.end.row;return n<0?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}var r=e("../lib/dom"),i=e("../lib/event"),s=e("../lib/useragent"),o=0;(function(){this.onMouseDown=function(e){var t=e.inSelection(),n=e.getDocumentPosition();this.mousedownEvent=e;var r=this.editor,i=e.getButton();if(i!==0){var s=r.getSelectionRange(),o=s.isEmpty();r.$blockScrolling++,(o||i==1)&&r.selection.moveToPosition(n),r.$blockScrolling--,i==2&&r.textInput.onContextMenu(e.domEvent);return}this.mousedownEvent.time=Date.now();if(t&&!r.isFocused()){r.focus();if(this.$focusTimout&&!this.$clickSelection&&!r.inMultiSelectMode){this.setState("focusWait"),this.captureMouse(e);return}}return this.captureMouse(e),this.startSelect(n,e.domEvent._clicks>1),e.preventDefault()},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var n=this.editor;n.$blockScrolling++,this.mousedownEvent.getShiftKey()?n.selection.selectToPosition(e):t||n.selection.moveToPosition(e),t||this.select(),n.renderer.scroller.setCapture&&n.renderer.scroller.setCapture(),n.setStyle("ace_selecting"),this.setState("select"),n.$blockScrolling--},this.select=function(){var e,t=this.editor,n=t.renderer.screenToTextCoordinates(this.x,this.y);t.$blockScrolling++;if(this.$clickSelection){var r=this.$clickSelection.comparePoint(n);if(r==-1)e=this.$clickSelection.end;else if(r==1)e=this.$clickSelection.start;else{var i=f(this.$clickSelection,n);n=i.cursor,e=i.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(n),t.$blockScrolling--,t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,n=this.editor,r=n.renderer.screenToTextCoordinates(this.x,this.y),i=n.selection[e](r.row,r.column);n.$blockScrolling++;if(this.$clickSelection){var s=this.$clickSelection.comparePoint(i.start),o=this.$clickSelection.comparePoint(i.end);if(s==-1&&o<=0){t=this.$clickSelection.end;if(i.end.row!=r.row||i.end.column!=r.column)r=i.start}else if(o==1&&s>=0){t=this.$clickSelection.start;if(i.start.row!=r.row||i.start.column!=r.column)r=i.end}else if(s==-1&&o==1)r=i.end,t=i.start;else{var u=f(this.$clickSelection,r);r=u.cursor,t=u.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(r),n.$blockScrolling--,n.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=a(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>o||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,r=n.session,i=r.getBracketRange(t);i?(i.isEmpty()&&(i.start.column--,i.end.column++),this.setState("select")):(i=n.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=i,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines");var r=n.getSelectionRange();r.isMultiLine()&&r.contains(t.row,t.column)?(this.$clickSelection=n.selection.getLineRange(r.start.row),this.$clickSelection.end=n.selection.getLineRange(r.end.row).end):this.$clickSelection=n.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(e.getAccelKey())return;e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=e.domEvent.timeStamp,n=t-(this.$lastScrollTime||0),r=this.editor,i=r.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);if(i||n<200)return this.$lastScrollTime=t,r.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()},this.onTouchMove=function(e){var t=e.domEvent.timeStamp,n=t-(this.$lastScrollTime||0),r=this.editor,i=r.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);if(i||n<200)return this.$lastScrollTime=t,r.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()}}).call(u.prototype),t.DefaultHandlers=u}),define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t,n){"use strict";function s(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}var r=e("./lib/oop"),i=e("./lib/dom");(function(){this.$init=function(){return this.$element=i.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){i.setInnerText(this.getElement(),e)},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},this.setClassName=function(e){i.addCssClass(this.getElement(),e)},this.show=function(e,t,n){e!=null&&this.setText(e),t!=null&&n!=null&&this.setPosition(t,n),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth}}).call(s.prototype),t.Tooltip=s}),define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t,n){"use strict";function u(e){function l(){var r=u.getDocumentPosition().row,s=n.$annotations[r];if(!s)return c();var o=t.session.getLength();if(r==o){var a=t.renderer.pixelToScreenCoordinates(0,u.y).row,l=u.$pos;if(a>t.session.documentToScreenRow(l.row,l.column))return c()}if(f==s)return;f=s.text.join("
"),i.setHtml(f),i.show(),t._signal("showGutterTooltip",i),t.on("mousewheel",c);if(e.$tooltipFollowsMouse)h(u);else{var p=u.domEvent.target,d=p.getBoundingClientRect(),v=i.getElement().style;v.left=d.right+"px",v.top=d.bottom+"px"}}function c(){o&&(o=clearTimeout(o)),f&&(i.hide(),f=null,t._signal("hideGutterTooltip",i),t.removeEventListener("mousewheel",c))}function h(e){i.setPosition(e.x,e.y)}var t=e.editor,n=t.renderer.$gutterLayer,i=new a(t.container);e.editor.setDefaultHandler("guttermousedown",function(r){if(!t.isFocused()||r.getButton()!=0)return;var i=n.getRegion(r);if(i=="foldWidgets")return;var s=r.getDocumentPosition().row,o=t.session.selection;if(r.getShiftKey())o.selectTo(s,0);else{if(r.domEvent.detail==2)return t.selectAll(),r.preventDefault();e.$clickSelection=t.selection.getLineRange(s)}return e.setState("selectByLines"),e.captureMouse(r),r.preventDefault()});var o,u,f;e.editor.setDefaultHandler("guttermousemove",function(t){var n=t.domEvent.target||t.domEvent.srcElement;if(r.hasCssClass(n,"ace_fold-widget"))return c();f&&e.$tooltipFollowsMouse&&h(t),u=t;if(o)return;o=setTimeout(function(){o=null,u&&!e.isMousePressed?l():c()},50)}),s.addListener(t.renderer.$gutter,"mouseout",function(e){u=null;if(!f||o)return;o=setTimeout(function(){o=null,c()},50)}),t.on("changeSession",c)}function a(e){o.call(this,e)}var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/event"),o=e("../tooltip").Tooltip;i.inherits(a,o),function(){this.setPosition=function(e,t){var n=window.innerWidth||document.documentElement.clientWidth,r=window.innerHeight||document.documentElement.clientHeight,i=this.getWidth(),s=this.getHeight();e+=15,t+=15,e+i>n&&(e-=e+i-n),t+s>r&&(t-=20+s),o.prototype.setPosition.call(this,e,t)}}.call(a.prototype),t.GutterHandler=u}),define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){r.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){r.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(this.$inSelection!==null)return this.$inSelection;var e=this.editor,t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var n=this.getDocumentPosition();this.$inSelection=t.contains(n.row,n.column)}return this.$inSelection},this.getButton=function(){return r.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=i.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(s.prototype)}),define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";function f(e){function T(e,n){var r=Date.now(),i=!n||e.row!=n.row,s=!n||e.column!=n.column;if(!S||i||s)t.$blockScrolling+=1,t.moveCursorToPosition(e),t.$blockScrolling-=1,S=r,x={x:p,y:d};else{var o=l(x.x,x.y,p,d);o>a?S=null:r-S>=u&&(t.renderer.scrollCursorIntoView(),S=null)}}function N(e,n){var r=Date.now(),i=t.renderer.layerConfig.lineHeight,s=t.renderer.layerConfig.characterWidth,u=t.renderer.scroller.getBoundingClientRect(),a={x:{left:p-u.left,right:u.right-p},y:{top:d-u.top,bottom:u.bottom-d}},f=Math.min(a.x.left,a.x.right),l=Math.min(a.y.top,a.y.bottom),c={row:e.row,column:e.column};f/s<=2&&(c.column+=a.x.left=o&&t.renderer.scrollCursorIntoView(c):E=r:E=null}function C(){var e=g;g=t.renderer.screenToTextCoordinates(p,d),T(g,e),N(g,e)}function k(){m=t.selection.toOrientedRange(),h=t.session.addMarker(m,"ace_selection",t.getSelectionStyle()),t.clearSelection(),t.isFocused()&&t.renderer.$cursorLayer.setBlinking(!1),clearInterval(v),C(),v=setInterval(C,20),y=0,i.addListener(document,"mousemove",O)}function L(){clearInterval(v),t.session.removeMarker(h),h=null,t.$blockScrolling+=1,t.selection.fromOrientedRange(m),t.$blockScrolling-=1,t.isFocused()&&!w&&t.renderer.$cursorLayer.setBlinking(!t.getReadOnly()),m=null,g=null,y=0,E=null,S=null,i.removeListener(document,"mousemove",O)}function O(){A==null&&(A=setTimeout(function(){A!=null&&h&&L()},20))}function M(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return e=="text/plain"||e=="Text"})}function _(e){var t=["copy","copymove","all","uninitialized"],n=["move","copymove","linkmove","all","uninitialized"],r=s.isMac?e.altKey:e.ctrlKey,i="uninitialized";try{i=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var o="none";return r&&t.indexOf(i)>=0?o="copy":n.indexOf(i)>=0?o="move":t.indexOf(i)>=0&&(o="copy"),o}var t=e.editor,n=r.createElement("img");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",s.isOpera&&(n.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");var f=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];f.forEach(function(t){e[t]=this[t]},this),t.addEventListener("mousedown",this.onMouseDown.bind(e));var c=t.container,h,p,d,v,m,g,y=0,b,w,E,S,x;this.onDragStart=function(e){if(this.cancelDrag||!c.draggable){var r=this;return setTimeout(function(){r.startSelect(),r.captureMouse(e)},0),e.preventDefault()}m=t.getSelectionRange();var i=e.dataTransfer;i.effectAllowed=t.getReadOnly()?"copy":"copyMove",s.isOpera&&(t.container.appendChild(n),n.scrollTop=0),i.setDragImage&&i.setDragImage(n,0,0),s.isOpera&&t.container.removeChild(n),i.clearData(),i.setData("Text",t.session.getTextRange()),w=!0,this.setState("drag")},this.onDragEnd=function(e){c.draggable=!1,w=!1,this.setState(null);if(!t.getReadOnly()){var n=e.dataTransfer.dropEffect;!b&&n=="move"&&t.session.remove(t.getSelectionRange()),t.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||k(),y++,e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragOver=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||(k(),y++),A!==null&&(A=null),e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragLeave=function(e){y--;if(y<=0&&h)return L(),b=null,i.preventDefault(e)},this.onDrop=function(e){if(!g)return;var n=e.dataTransfer;if(w)switch(b){case"move":m.contains(g.row,g.column)?m={start:g,end:g}:m=t.moveText(m,g);break;case"copy":m=t.moveText(m,g,!0)}else{var r=n.getData("Text");m={start:g,end:t.session.insert(g,r)},t.focus(),b=null}return L(),i.preventDefault(e)},i.addListener(c,"dragstart",this.onDragStart.bind(e)),i.addListener(c,"dragend",this.onDragEnd.bind(e)),i.addListener(c,"dragenter",this.onDragEnter.bind(e)),i.addListener(c,"dragover",this.onDragOver.bind(e)),i.addListener(c,"dragleave",this.onDragLeave.bind(e)),i.addListener(c,"drop",this.onDrop.bind(e));var A=null}function l(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}var r=e("../lib/dom"),i=e("../lib/event"),s=e("../lib/useragent"),o=200,u=200,a=5;(function(){this.dragWait=function(){var e=Date.now()-this.mousedownEvent.time;e>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var e=this.editor.container;e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor,t=e.container;t.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var n=s.isWin?"default":"move";e.renderer.setCursorStyle(n),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(s.isIE&&this.state=="dragReady"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>3&&t.dragDrop()}if(this.state==="dragWait"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(!this.$dragEnabled)return;this.mousedownEvent=e;var t=this.editor,n=e.inSelection(),r=e.getButton(),i=e.domEvent.detail||1;if(i===1&&r===0&&n){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var o=e.domEvent.target||e.domEvent.srcElement;"unselectable"in o&&(o.unselectable="on");if(t.getDragDelay()){if(s.isWebKit){this.cancelDrag=!0;var u=t.container;u.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}).call(f.prototype),t.DragdropHandler=f}),define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("./dom");t.get=function(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.onreadystatechange=function(){n.readyState===4&&t(n.responseText)},n.send(null)},t.loadScript=function(e,t){var n=r.getDocumentHead(),i=document.createElement("script");i.src=e,n.appendChild(i),i.onload=i.onreadystatechange=function(e,n){if(n||!i.readyState||i.readyState=="loaded"||i.readyState=="complete")i=i.onload=i.onreadystatechange=null,n||t()}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o1&&(i=n[n.length-2]);var o=a[t+"Path"];return o==null?o=a.basePath:r=="/"&&(t=r=""),o&&o.slice(-1)!="/"&&(o+="/"),o+t+r+i+this.get("suffix")},t.setModuleUrl=function(e,t){return a.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(n,r){var i,o;Array.isArray(n)&&(o=n[0],n=n[1]);try{i=e(n)}catch(u){}if(i&&!t.$loading[n])return r&&r(i);t.$loading[n]||(t.$loading[n]=[]),t.$loading[n].push(r);if(t.$loading[n].length>1)return;var a=function(){e([n],function(e){t._emit("load.module",{name:n,module:e});var r=t.$loading[n];t.$loading[n]=null,r.forEach(function(t){t&&t(e)})})};if(!t.get("packaged"))return a();s.loadScript(t.moduleUrl(n,o),a)},t.init=f}),define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/config"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=e("./default_handlers").DefaultHandlers,o=e("./default_gutter_handler").GutterHandler,u=e("./mouse_event").MouseEvent,a=e("./dragdrop_handler").DragdropHandler,f=e("../config"),l=function(e){var t=this;this.editor=e,new s(this),new o(this),new a(this);var n=function(t){var n=!document.hasFocus||!document.hasFocus()||!e.isFocused()&&document.activeElement==(e.textInput&&e.textInput.getElement());n&&window.focus(),e.focus()},u=e.renderer.getMouseEventTarget();r.addListener(u,"click",this.onMouseEvent.bind(this,"click")),r.addListener(u,"mousemove",this.onMouseMove.bind(this,"mousemove")),r.addMultiMouseDownListener([u,e.renderer.scrollBarV&&e.renderer.scrollBarV.inner,e.renderer.scrollBarH&&e.renderer.scrollBarH.inner,e.textInput&&e.textInput.getElement()].filter(Boolean),[400,300,250],this,"onMouseEvent"),r.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel")),r.addTouchMoveListener(e.container,this.onTouchMove.bind(this,"touchmove"));var f=e.renderer.$gutter;r.addListener(f,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),r.addListener(f,"click",this.onMouseEvent.bind(this,"gutterclick")),r.addListener(f,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),r.addListener(f,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),r.addListener(u,"mousedown",n),r.addListener(f,"mousedown",n),i.isIE&&e.renderer.scrollBarV&&(r.addListener(e.renderer.scrollBarV.element,"mousedown",n),r.addListener(e.renderer.scrollBarH.element,"mousedown",n)),e.on("mousemove",function(n){if(t.state||t.$dragDelay||!t.$dragEnabled)return;var r=e.renderer.screenToTextCoordinates(n.x,n.y),i=e.session.selection.getRange(),s=e.renderer;!i.isEmpty()&&i.insideStart(r.row,r.column)?s.setCursorStyle("default"):s.setCursorStyle("")})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new u(t,this.editor))},this.onMouseMove=function(e,t){var n=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;if(!n||!n.length)return;this.editor._emit(e,new u(t,this.editor))},this.onMouseWheel=function(e,t){var n=new u(t,this.editor);n.speed=this.$scrollSpeed*2,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.onTouchMove=function(e,t){var n=new u(t,this.editor);n.speed=1,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var n=this.editor.renderer;n.$keepTextAreaAtCursor&&(n.$keepTextAreaAtCursor=null);var s=this,o=function(e){if(!e)return;if(i.isWebKit&&!e.which&&s.releaseMouse)return s.releaseMouse();s.x=e.clientX,s.y=e.clientY,t&&t(e),s.mouseEvent=new u(e,s.editor),s.$mouseMoved=!0},a=function(e){clearInterval(l),f(),s[s.state+"End"]&&s[s.state+"End"](e),s.state="",n.$keepTextAreaAtCursor==null&&(n.$keepTextAreaAtCursor=!0,n.$moveTextAreaToCursor()),s.isMousePressed=!1,s.$onCaptureMouseMove=s.releaseMouse=null,e&&s.onMouseEvent("mouseup",e)},f=function(){s[s.state]&&s[s.state](),s.$mouseMoved=!1};if(i.isOldIE&&e.domEvent.type=="dblclick")return setTimeout(function(){a(e)});s.$onCaptureMouseMove=o,s.releaseMouse=r.capture(this.editor.container,o,a);var l=setInterval(f,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){if(t&&t.domEvent&&t.domEvent.type!="contextmenu")return;this.editor.off("nativecontextmenu",e),t&&t.domEvent&&r.stopEvent(t.domEvent)}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(l.prototype),f.defineOptions(l.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:i.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=l}),define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,n){"use strict";function r(e){e.on("click",function(t){var n=t.getDocumentPosition(),r=e.session,i=r.getFoldAt(n.row,n.column,1);i&&(t.getAccelKey()?r.removeFold(i):r.expandFold(i),t.stop())}),e.on("gutterclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session;i.foldWidgets&&i.foldWidgets[r]&&e.session.onFoldWidgetClick(r,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session,s=i.getParentFoldRangeData(r,!0),o=s.range||s.firstRange;if(o){r=o.start.row;var u=i.getFoldAt(r,i.getLine(r).length,1);u?i.removeFold(u):(i.addFold("...",o),e.renderer.scrollCursorIntoView({row:o.start.row,column:0}))}t.stop()}})}t.FoldHandler=r}),define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,n){"use strict";var r=e("../lib/keys"),i=e("../lib/event"),s=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]==e)return;while(t[t.length-1]&&t[t.length-1]!=this.$defaultHandler)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)},this.addKeyboardHandler=function(e,t){if(!e)return;typeof e=="function"&&!e.handleKeyboard&&(e.handleKeyboard=e);var n=this.$handlers.indexOf(e);n!=-1&&this.$handlers.splice(n,1),t==undefined?this.$handlers.push(e):this.$handlers.splice(t,0,e),n==-1&&e.attach&&e.attach(this.$editor)},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return t==-1?!1:(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map(function(n){return n.getStatusText&&n.getStatusText(t,e)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(e,t,n,r){var s,o=!1,u=this.$editor.commands;for(var a=this.$handlers.length;a--;){s=this.$handlers[a].handleKeyboard(this.$data,e,t,n,r);if(!s||!s.command)continue;s.command=="null"?o=!0:o=u.exec(s.command,this.$editor,s.args,r),o&&r&&e!=-1&&s.passEvent!=1&&s.command.passEvent!=1&&i.stopEvent(r);if(o)break}return!o&&e==-1&&(s={command:"insertstring"},o=u.exec("insertstring",this.$editor,t)),o&&this.$editor._signal&&this.$editor._signal("keyboardActivity",s),o},this.onCommandKey=function(e,t,n){var i=r.keyCodeToString(n);this.$callKeyboardHandlers(t,i,n,e)},this.onTextInput=function(e){this.$callKeyboardHandlers(-1,e)}}).call(s.prototype),t.KeyBinding=s}),define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?tthis.end.column?1:0:ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.rowt)var r={row:t+1,column:0};else if(this.start.rowt.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?o.fromPoints(t,t):this.isBackwards()?o.fromPoints(t,e):o.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if(typeof t=="undefined"){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var n=typeof e=="number"?e:this.lead.row,r,i=this.session.getFoldLine(n);return i?(n=i.start.row,r=i.end.row):r=n,t===!0?new o(n,0,r,this.session.getLine(r).length):new o(n,0,r+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,-1))this.moveCursorTo(t.start.row,t.start.column);else if(e.column===0)e.row>0&&this.moveCursorTo(e.row-1,this.doc.getLine(e.row-1).length);else{var n=this.session.getTabSize();this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(e.column-n,e.column).split(" ").length-1==n?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,1))this.moveCursorTo(t.end.row,t.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=r)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i;this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var s=this.session.getFoldAt(e,t,1);if(s){this.moveCursorTo(s.end.row,s.end.column);return}if(i=this.session.nonTokenRe.exec(r))t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,r=n.substring(t);if(t>=n.length){this.moveCursorTo(e,n.length),this.moveCursorRight(),e0&&this.moveCursorWordLeft();return}if(o=this.session.tokenRe.exec(s))t-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0;this.moveCursorTo(e,t)},this.$shortWordEndIndex=function(e){var t,n=0,r,i=/\s/,s=this.session.tokenRe;s.lastIndex=0;if(t=this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{while((r=e[n])&&i.test(r))n++;if(n<1){s.lastIndex=0;while((r=e[n])&&!s.test(r)){s.lastIndex=0,n++;if(i.test(r)){if(n>2){n--;break}while((r=e[n])&&i.test(r))n++;if(n>2)break}}}}return s.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i=this.session.getFoldAt(e,t,1);if(i)return this.moveCursorTo(i.end.row,i.end.column);if(t==n.length){var s=this.doc.getLength();do e++,r=this.doc.getLine(e);while(e0&&/^\s*$/.test(r));t=r.length,/\s+$/.test(r)||(r="")}var s=i.stringReverse(r),o=this.$shortWordEndIndex(s);return this.moveCursorTo(e,t-o)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var n=this.session.documentToScreenPosition(this.lead.row,this.lead.column);t===0&&(this.$desiredColumn?n.column=this.$desiredColumn:this.$desiredColumn=n.column);var r=this.session.screenToDocumentPosition(n.row+e,n.column);e!==0&&t===0&&r.row===this.lead.row&&r.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[r.row]&&(r.row>0||e>0)&&r.row++,this.moveCursorTo(r.row,r.column+t,t===0)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,n){var r=this.session.getFoldAt(e,t,1);r&&(e=r.start.row,t=r.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,n){var r=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(r.row,r.column,n)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e(this);var n=this.getCursor();return o.fromPoints(t,n)}catch(r){return o.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else{var e=this.getRange();e.isBackwards=this.isBackwards()}return e},this.fromJSON=function(e){if(e.start==undefined){if(this.rangeList){this.toSingleRange(e[0]);for(var t=e.length;t--;){var n=o.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(n.cursor=n.start),this.addRange(n,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(u.prototype),t.Selection=u}),define("ace/tokenizer",["require","exports","module","ace/config"],function(e,t,n){"use strict";var r=e("./config"),i=2e3,s=function(e){this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){var n=this.states[t],r=[],i=0,s=this.matchMappings[t]={defaultToken:"text"},o="g",u=[];for(var a=0;a1?f.onMatch=this.$applyToken:f.onMatch=f.token),c>1&&(/\\\d/.test(f.regex)?l=f.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+i+1)}):(c=1,l=this.removeCapturingGroups(f.regex)),!f.splitRegex&&typeof f.token!="string"&&u.push(f)),s[i]=a,i+=c,r.push(l),f.onMatch||(f.onMatch=null)}r.length||(s[0]=0,r.push("$")),u.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,o)},this),this.regExps[t]=new RegExp("("+r.join(")|(")+")|($)",o)}};(function(){this.$setMaxTokenCount=function(e){i=e|0},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),n=this.token.apply(this,t);if(typeof n=="string")return[{type:n,value:e}];var r=[];for(var i=0,s=n.length;il){var g=e.substring(l,m-v.length);h.type==p?h.value+=g:(h.type&&f.push(h),h={type:p,value:g})}for(var y=0;yi){c>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});while(l1&&n[0]!==r&&n.unshift("#tmp",r),{tokens:f,state:n.length?n:r}},this.reportError=r.reportError}).call(s.prototype),t.Tokenizer=s}),define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../lib/lang"),i=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(!t){for(var n in e)this.$rules[n]=e[n];return}for(var n in e){var r=e[n];for(var i=0;i=this.$rowTokens.length){this.$row+=1,e||(e=this.$session.getLength());if(this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(n!==undefined)return n;n=0;while(t>0)t-=1,n+=e[t].value.length;return n},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}}}).call(r.prototype),t.TokenIterator=r}),define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){if(this.lineCommentStart&&this.lineCommentStart.indexOf(i)!=-1)return;c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g,y&&/string\.end/.test(v.type)&&(y=!1);else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),define("ace/unicode",["require","exports","module"],function(e,t,n){"use strict";function r(e){var n=/\w{4}/g;for(var r in e)t.packages[r]=e[r].replace(n,"\\u$&")}t.packages={},r({L:"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",Ll:"0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A",Lu:"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A",Lt:"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC",Lm:"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F",Lo:"01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",M:"0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26",Mn:"0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26",Mc:"0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC",Me:"0488048906DE20DD-20E020E2-20E4A670-A672",N:"0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nd:"0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nl:"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF",No:"00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835",P:"0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65",Pd:"002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D",Ps:"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62",Pe:"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63",Pi:"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20",Pf:"00BB2019201D203A2E032E052E0A2E0D2E1D2E21",Pc:"005F203F20402054FE33FE34FE4D-FE4FFF3F",Po:"0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65",S:"0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD",Sm:"002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC",Sc:"002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6",Sk:"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3",So:"00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD",Z:"002000A01680180E2000-200A20282029202F205F3000",Zs:"002000A01680180E2000-200A202F205F3000",Zl:"2028",Zp:"2029",C:"0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF",Cc:"0000-001F007F-009F",Cf:"00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB",Co:"E000-F8FF",Cs:"D800-DFFF",Cn:"03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF"})}),define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour/cstyle","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(e,t,n){"use strict";var r=e("../tokenizer").Tokenizer,i=e("./text_highlight_rules").TextHighlightRules,s=e("./behaviour/cstyle").CstyleBehaviour,o=e("../unicode"),u=e("../lib/lang"),a=e("../token_iterator").TokenIterator,f=e("../range").Range,l=function(){this.HighlightRules=i};(function(){this.$defaultBehaviour=new s,this.tokenRe=new RegExp("^["+o.packages.L+o.packages.Mn+o.packages.Mc+o.packages.Nd+o.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+o.packages.L+o.packages.Mn+o.packages.Mc+o.packages.Nd+o.packages.Pc+"\\$_]|\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules(this.$highlightRuleConfig),this.$tokenizer=new r(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(e,t,n,r){function w(e){for(var t=n;t<=r;t++)e(i.getLine(t),t)}var i=t.doc,s=!0,o=!0,a=Infinity,f=t.getTabSize(),l=!1;if(!this.lineCommentStart){if(!this.blockComment)return!1;var c=this.blockComment.start,h=this.blockComment.end,p=new RegExp("^(\\s*)(?:"+u.escapeRegExp(c)+")"),d=new RegExp("(?:"+u.escapeRegExp(h)+")\\s*$"),v=function(e,t){if(g(e,t))return;if(!s||/\S/.test(e))i.insertInLine({row:t,column:e.length},h),i.insertInLine({row:t,column:a},c)},m=function(e,t){var n;(n=e.match(d))&&i.removeInLine(t,e.length-n[0].length,e.length),(n=e.match(p))&&i.removeInLine(t,n[1].length,n[0].length)},g=function(e,n){if(p.test(e))return!0;var r=t.getTokens(n);for(var i=0;i2?r%f!=f-1:r%f==0}}var E=Infinity;w(function(e,t){var n=e.search(/\S/);n!==-1?(ne.length&&(E=e.length)}),a==Infinity&&(a=E,s=!1,o=!1),l&&a%f!=0&&(a=Math.floor(a/f)*f),w(o?m:v)},this.toggleBlockComment=function(e,t,n,r){var i=this.blockComment;if(!i)return;!i.start&&i[0]&&(i=i[0]);var s=new a(t,r.row,r.column),o=s.getCurrentToken(),u=t.selection,l=t.selection.toOrientedRange(),c,h;if(o&&/comment/.test(o.type)){var p,d;while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.start);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;p=new f(m,g,m,g+i.start.length);break}o=s.stepBackward()}var s=new a(t,r.row,r.column),o=s.getCurrentToken();while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.end);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;d=new f(m,g,m,g+i.end.length);break}o=s.stepForward()}d&&t.remove(d),p&&(t.remove(p),c=p.start.row,h=-i.start.length)}else h=i.start.length,c=n.start.row,t.insert(n.end,i.end),t.insert(n.start,i.start);l.start.row==c&&(l.start.column+=h),l.end.row==c&&(l.end.column+=h),t.selection.fromOrientedRange(l)},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.autoOutdent=function(e,t,n){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);var n=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(var t=0;t=0&&t.row=0&&t.column<=e[t.row].length}function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.action must be 'insert' or 'remove'"),t.lines instanceof Array||r(t,"delta.lines must be an Array"),(!t.start||!t.end)&&r(t,"delta.start/end must be an present");var n=t.start;i(e,t.start)||r(t,"delta.start must be contained in document");var s=t.end;t.action=="remove"&&!i(e,s)&&r(t,"delta.end must contained in document for 'remove' actions");var o=s.row-n.row,u=s.column-(o==0?n.column:0);(o!=t.lines.length-1||t.lines[o].length!=u)&&r(t,"delta.range must match delta lines")}t.applyDelta=function(e,t,n){var r=t.start.row,i=t.start.column,s=e[r]||"";switch(t.action){case"insert":var o=t.lines;if(o.length===1)e[r]=s.substring(0,i)+t.lines[0]+s.substring(i);else{var u=[r,1].concat(t.lines);e.splice.apply(e,u),e[r]=s.substring(0,i)+e[r],e[r+t.lines.length-1]+=s.substring(i)}break;case"remove":var a=t.end.column,f=t.end.row;r===f?e[r]=s.substring(0,i)+s.substring(a):e.splice(r,f-r+1,s.substring(0,i)+e[f].substring(a))}}}),define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){function e(e,t,n){var r=n?e.column<=t.column:e.columnthis.row)return;var n=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=e("./anchor").Anchor,a=function(e){this.$lines=[""],e.length===0?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){r.implement(this,s),this.setValue=function(e){var t=this.getLength()-1;this.remove(new o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new u(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),r=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:r,action:"insert",lines:[t]},!0),this.clonePos(r)},this.clippedPos=function(e,t){var n=this.getLength();e===undefined?e=n:e<0?e=0:e>=n&&(e=n-1,t=undefined);var r=this.getLine(e);return t==undefined&&(t=r.length),t=Math.min(Math.max(t,0),r.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var n=0;e0,r=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){e instanceof o||(e=o.fromPoints(e.start,e.end));if(t.length===0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var n;return t?n=this.insert(e.start,t):n=e.start,n},this.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var n=e.action=="insert";if(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))return;n&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),i(this.$lines,e,t),this._signal("change",e)},this.$splitAndapplyLargeDelta=function(e,t){var n=e.lines,r=n.length,i=e.start.row,s=e.start.column,o=0,u=0;do{o=u,u+=t-1;var a=n.slice(o,u);if(u>r){e.lines=a,e.start.row=i+o,e.start.column=s;break}a.push(""),this.applyDelta({start:this.pos(i+o,s),end:this.pos(i+u,s=0),action:e.action,lines:a},!0)}while(!0)},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:e.action=="insert"?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i20){n.running=setTimeout(n.$worker,20);break}}n.currentLine=t,s<=r&&n.fireUpdateEvent(s,r)}};(function(){r.implement(this,i),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._signal("update",{data:n})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.start.row,n=e.end.row-t;if(n===0)this.lines[t]=null;else if(e.action=="remove")this.lines.splice(t,n+1,null),this.states.splice(t,n+1,null);else{var r=Array(n+1);r.unshift(t,1),this.lines.splice.apply(this.lines,r),this.states.splice.apply(this.states,r)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1],r=this.tokenizer.getLineTokens(t,n,e);return this.states[e]+""!=r.state+""?(this.states[e]=r.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=r.tokens}}).call(s.prototype),t.BackgroundTokenizer=s}),define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(e,t,n){this.setRegexp(e),this.clazz=t,this.type=n||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){if(this.regExp+""==e+"")return;this.regExp=e,this.cache=[]},this.update=function(e,t,n,i){if(!this.regExp)return;var o=i.firstRow,u=i.lastRow;for(var a=o;a<=u;a++){var f=this.cache[a];f==null&&(f=r.getMatchOffsets(n.getLine(a),this.regExp),f.length>this.MAX_RANGES&&(f=f.slice(0,this.MAX_RANGES)),f=f.map(function(e){return new s(a,e.offset,a,e.offset+e.length)}),this.cache[a]=f.length?f:"");for(var l=f.length;l--;)t.drawSingleLineMarker(e,f[l].toScreenRange(n),this.clazz,i)}}}).call(o.prototype),t.SearchHighlight=o}),define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,n){"use strict";function i(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var n=t[t.length-1];this.range=new r(t[0].start.row,t[0].start.column,n.end.row,n.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var r=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,n){var r=0,i=this.folds,s,o,u,a=!0;t==null&&(t=this.end.row,n=this.end.column);for(var f=0;f0)continue;var a=i(e,o.start);return u===0?t&&a!==0?-s-2:s:a>0||a===0&&!t?s:-s-1}return-s-1},this.add=function(e){var t=!e.isEmpty(),n=this.pointIndex(e.start,t);n<0&&(n=-n-1);var r=this.pointIndex(e.end,t,n);return r<0?r=-r-1:r++,this.ranges.splice(n,r-n,e)},this.addList=function(e){var t=[];for(var n=e.length;n--;)t.push.apply(t,this.add(e[n]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return i(e.start,t.start)});var n=t[0],r;for(var s=1;s=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.rowr)break;l.start.row==r&&l.start.column>=t.column&&(l.start.column!=t.column||!this.$insertRight)&&(l.start.column+=o,l.start.row+=s);if(l.end.row==r&&l.end.column>=t.column){if(l.end.column==t.column&&this.$insertRight)continue;l.end.column==t.column&&o>0&&al.start.column&&l.end.column==u[a+1].start.column&&(l.end.column-=o),l.end.column+=o,l.end.row+=s}}if(s!=0&&a=e)return i;if(i.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,r=0;t&&(r=n.indexOf(t)),r==-1&&(r=0);for(r;r=e)return i}return null},this.getFoldedRowCount=function(e,t){var n=this.$foldData,r=t-e+1;for(var i=0;i=t){u=e?r-=t-u:r=0);break}o>=e&&(u>=e?r-=o-u:r-=o-e+1)}return r},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var n=this.$foldData,r=!1,o;e instanceof s?o=e:(o=new s(t,e),o.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(o.range);var u=o.start.row,a=o.start.column,f=o.end.row,l=o.end.column;if(u0&&(this.removeFolds(p),p.forEach(function(e){o.addSubFold(e)}));for(var d=0;d0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var n,i;e==null?(n=new r(0,0,this.getLength(),0),t=!0):typeof e=="number"?n=new r(e,0,e,this.getLine(e).length):"row"in e?n=r.fromPoints(e,e):n=e,i=this.getFoldsInRangeList(n);if(t)this.removeFolds(i);else{var s=i;while(s.length)this.expandFolds(s),s=this.getFoldsInRangeList(n)}if(i.length)return i},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var n=this.getFoldLine(e,t);return n?n.end.row:e},this.getRowFoldStart=function(e,t){var n=this.getFoldLine(e,t);return n?n.start.row:e},this.getFoldDisplayLine=function(e,t,n,r,i){r==null&&(r=e.start.row),i==null&&(i=0),t==null&&(t=e.end.row),n==null&&(n=this.getLine(t).length);var s=this.doc,o="";return e.walk(function(e,t,n,u){if(t=e){i=s.end.row;try{var o=this.addFold("...",s);o&&(o.collapseChildren=n)}catch(u){}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle==e)return;this.$foldStyle=e,e=="manual"&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)},this.$setFolding=function(e){if(this.$foldMode==e)return;this.$foldMode=e,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("changeAnnotation");if(!e||this.$foldStyle=="manual"){this.foldWidgets=null;return}this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)},this.getParentFoldRangeData=function(e,t){var n=this.foldWidgets;if(!n||t&&n[e])return{};var r=e-1,i;while(r>=0){var s=n[r];s==null&&(s=n[r]=this.getFoldWidget(r));if(s=="start"){var o=this.getFoldWidgetRange(r);i||(i=o);if(o&&o.end.row>=e)break}r--}return{range:r!==-1&&o,firstRange:i}},this.onFoldWidgetClick=function(e,t){t=t.domEvent;var n={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey},r=this.$toggleFoldWidget(e,n);if(!r){var i=t.target||t.srcElement;i&&/ace_fold-widget/.test(i.className)&&(i.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(!this.getFoldWidget)return;var n=this.getFoldWidget(e),r=this.getLine(e),i=n==="end"?-1:1,s=this.getFoldAt(e,i===-1?0:r.length,i);if(s)return t.children||t.all?this.removeFold(s):this.expandFold(s),s;var o=this.getFoldWidgetRange(e,!0);if(o&&!o.isMultiLine()){s=this.getFoldAt(o.start.row,o.start.column,1);if(s&&o.isEqual(s.range))return this.removeFold(s),s}if(t.siblings){var u=this.getParentFoldRangeData(e);if(u.range)var a=u.range.start.row+1,f=u.range.end.row;this.foldAll(a,f,t.all?1e4:0)}else t.children?(f=o?o.end.row:this.getLength(),this.foldAll(e+1,f,t.all?1e4:0)):o&&(t.all&&(o.collapseChildren=1e4),this.addFold("...",o));return o},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var n=this.$toggleFoldWidget(t,{});if(n)return;var r=this.getParentFoldRangeData(t,!0);n=r.range||r.firstRange;if(n){t=n.start.row;var i=this.getFoldAt(t,this.getLine(t).length,1);i?this.removeFold(i):this.addFold("...",n)}},this.updateFoldWidgets=function(e){var t=e.start.row,n=e.end.row-t;if(n===0)this.foldWidgets[t]=null;else if(e.action=="remove")this.foldWidgets.splice(t,n+1,null);else{var r=Array(n+1);r.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,r)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}var r=e("../range").Range,i=e("./fold_line").FoldLine,s=e("./fold").Fold,o=e("../token_iterator").TokenIterator;t.Folding=u}),define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,n){"use strict";function s(){this.findMatchingBracket=function(e,t){if(e.column==0)return null;var n=t||this.getLine(e.row).charAt(e.column-1);if(n=="")return null;var r=n.match(/([\(\[\{])|([\)\]\}])/);return r?r[1]?this.$findClosingBracket(r[1],e):this.$findOpeningBracket(r[2],e):null},this.getBracketRange=function(e){var t=this.getLine(e.row),n=!0,r,s=t.charAt(e.column-1),o=s&&s.match(/([\(\[\{])|([\)\]\}])/);o||(s=t.charAt(e.column),e={row:e.row,column:e.column+1},o=s&&s.match(/([\(\[\{])|([\)\]\}])/),n=!1);if(!o)return null;if(o[1]){var u=this.$findClosingBracket(o[1],e);if(!u)return null;r=i.fromPoints(e,u),n||(r.end.column++,r.start.column--),r.cursor=r.end}else{var u=this.$findOpeningBracket(o[2],e);if(!u)return null;r=i.fromPoints(u,e),n||(r.start.column++,r.end.column--),r.cursor=r.start}return r},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));var a=t.column-o.getCurrentTokenColumn()-2,f=u.value;for(;;){while(a>=0){var l=f.charAt(a);if(l==i){s-=1;if(s==0)return{row:o.getCurrentTokenRow(),column:a+o.getCurrentTokenColumn()}}else l==e&&(s+=1);a-=1}do u=o.stepBackward();while(u&&!n.test(u.type));if(u==null)break;f=u.value,a=f.length-1}return null},this.$findClosingBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));var a=t.column-o.getCurrentTokenColumn();for(;;){var f=u.value,l=f.length;while(a=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510}r.implement(this,o),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e){this.$docRowCache=[],this.$screenRowCache=[];return}var t=this.$docRowCache.length,n=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>n&&(this.$docRowCache.splice(n,t),this.$screenRowCache.splice(n,t))},this.$getRowCacheIndex=function(e,t){var n=0,r=e.length-1;while(n<=r){var i=n+r>>1,s=e[i];if(t>s)n=i+1;else{if(!(t=t)break}return r=n[s],r?(r.index=s,r.start=i-r.value.length,r):null},this.setUndoManager=function(e){this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel();if(e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=i.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?i.stringRepeat(" ",this.getTabSize()):" "},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize===0},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(r=!!n.charAt(t-1).match(this.tokenRe)),r||(r=!!n.charAt(t).match(this.tokenRe));if(r)var i=this.tokenRe;else if(/^\s+$/.test(n.slice(t-1,t+1)))var i=/\s/;else var i=this.nonTokenRe;var s=t;if(s>0){do s--;while(s>=0&&n.charAt(s).match(i));s++}var o=t;while(oe&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){this.$modified=!1;if(this.$useWrapMode)return this.screenWidth=this.$wrapLimit;var t=this.doc.getAllLines(),n=this.$rowLengthCache,r=0,i=0,s=this.$foldData[i],o=s?s.start.row:Infinity,u=t.length;for(var a=0;ao){a=s.end.row+1;if(a>=u)break;s=this.$foldData[i++],o=s?s.start.row:Infinity}n[a]==null&&(n[a]=this.$getStringScreenWidth(t[a])[0]),n[a]>r&&(r=n[a])}this.screenWidth=r}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},this.undoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=e.length-1;r!=-1;r--){var i=e[r];i.group=="doc"?(this.doc.revertDeltas(i.deltas),n=this.$getUndoSelection(i.deltas,!0,n)):i.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,n&&this.$undoSelect&&!t&&this.selection.setSelectionRange(n),n},this.redoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=0;re.end.column&&(s.start.column+=u),s.end.row==e.end.row&&s.end.column>e.end.column&&(s.end.column+=u)),o&&s.start.row>=e.end.row&&(s.start.row+=o,s.end.row+=o)}s.end=this.insert(s.start,r);if(i.length){var a=e.start,l=s.start,o=l.row-a.row,u=l.column-a.column;this.addFolds(i.map(function(e){return e=e.clone(),e.start.row==a.row&&(e.start.column+=u),e.end.row==a.row&&(e.end.column+=u),e.start.row+=o,e.end.row+=o,e}))}return s},this.indentRows=function(e,t,n){n=n.replace(/\t/g,this.getTabString());for(var r=e;r<=t;r++)this.doc.insertInLine({row:r,column:0},n)},this.outdentRows=function(e){var t=e.collapseRows(),n=new f(0,0,0,0),r=this.getTabSize();for(var i=t.start.row;i<=t.end.row;++i){var s=this.getLine(i);n.start.row=i,n.end.row=i;for(var o=0;o0){var r=this.getRowFoldEnd(t+n);if(r>this.doc.getLength()-1)return 0;var i=r-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var i=t-e+1}var s=new f(e,0,t,Number.MAX_VALUE),o=this.getFoldsInRange(s).map(function(e){return e=e.clone(),e.start.row+=i,e.end.row+=i,e}),u=n==0?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+i,u),o.length&&this.addFolds(o),i},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){t=Math.max(0,t);if(e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0);if(e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){if(this.$wrapLimitRange.min!==e||this.$wrapLimitRange.max!==t)this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$useWrapMode&&this._signal("changeWrapMode")},this.adjustWrapLimit=function(e,t){var n=this.$wrapLimitRange;n.max<0&&(n={min:t,max:t});var r=this.$constrainWrapLimit(e,n.min,n.max);return r!=this.$wrapLimit&&r>1?(this.$wrapLimit=r,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1},this.$constrainWrapLimit=function(e,t,n){return t&&(e=Math.max(t,e)),n&&(e=Math.min(n,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n=e.action,r=e.start,i=e.end,s=r.row,o=i.row,u=o-s,a=null;this.$updating=!0;if(u!=0)if(n==="remove"){this[t?"$wrapData":"$rowLengthCache"].splice(s,u);var f=this.$foldData;a=this.getFoldsInRange(e),this.removeFolds(a);var l=this.getFoldLine(i.row),c=0;if(l){l.addRemoveChars(i.row,i.column,r.column-i.column),l.shiftRow(-u);var h=this.getFoldLine(s);h&&h!==l&&(h.merge(l),l=h),c=f.indexOf(l)+1}for(c;c=i.row&&l.shiftRow(-u)}o=s}else{var p=Array(u);p.unshift(s,0);var d=t?this.$wrapData:this.$rowLengthCache;d.splice.apply(d,p);var f=this.$foldData,l=this.getFoldLine(s),c=0;if(l){var v=l.range.compareInside(r.row,r.column);v==0?(l=l.split(r.row,r.column),l&&(l.shiftRow(u),l.addRemoveChars(o,0,i.column-r.column))):v==-1&&(l.addRemoveChars(s,0,i.column-r.column),l.shiftRow(u)),c=f.indexOf(l)+1}for(c;c=s&&l.shiftRow(u)}}else{u=Math.abs(e.start.column-e.end.column),n==="remove"&&(a=this.getFoldsInRange(e),this.removeFolds(a),u=-u);var l=this.getFoldLine(s);l&&l.addRemoveChars(s,r.column,u)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(s,o):this.$updateRowLengthCache(s,o),a},this.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var r=this.doc.getAllLines(),i=this.getTabSize(),s=this.$wrapData,o=this.$wrapLimit,a,f,l=e;t=Math.min(t,r.length-1);while(l<=t)f=this.getFoldLine(l,f),f?(a=[],f.walk(function(e,t,i,s){var o;if(e!=null){o=this.$getDisplayTokens(e,a.length),o[0]=n;for(var f=1;fr-b){var w=a+r-b;if(e[w-1]>=p&&e[w]>=p){y(w);continue}if(e[w]==n||e[w]==u){for(w;w!=a-1;w--)if(e[w]==n)break;if(w>a){y(w);continue}w=a+r;for(w;w>2)),a-1);while(w>E&&e[w]E&&e[w]E&&e[w]==l)w--}else while(w>E&&e[w]E){y(++w);continue}w=a+r,e[w]==t&&w--,y(w-b)}return s},this.$getDisplayTokens=function(n,r){var i=[],s;r=r||0;for(var o=0;o39&&u<48||u>57&&u<64?i.push(l):u>=4352&&m(u)?i.push(e,t):i.push(e)}return i},this.$getStringScreenWidth=function(e,t,n){if(t==0)return[0,0];t==null&&(t=Infinity),n=n||0;var r,i;for(i=0;i=4352&&m(r)?n+=2:n+=1;if(n>t)break}return[n,i]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.getRowLineCount=function(e){return!this.$useWrapMode||!this.$wrapData[e]?1:this.$wrapData[e].length+1},this.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),n=this.$wrapData[t.row];return n.length&&n[0]=0)var o=a[f],r=this.$docRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getLength()-1,p=this.getNextFoldLine(r),d=p?p.start.row:Infinity;while(o<=e){u=this.getRowLength(r);if(o+u>e||r>=h)break;o+=u,r++,r>d&&(r=p.end.row+1,p=this.getNextFoldLine(r,p),d=p?p.start.row:Infinity),c&&(this.$docRowCache.push(r),this.$screenRowCache.push(o))}if(p&&p.start.row<=r)n=this.getFoldDisplayLine(p),r=p.start.row;else{if(o+u<=e||r>h)return{row:h,column:this.getLine(h).length};n=this.getLine(r),p=null}var v=0;if(this.$useWrapMode){var m=this.$wrapData[r];if(m){var g=Math.floor(e-o);s=m[g],g>0&&m.length&&(v=m.indent,i=m[g-1]||m[m.length-1],n=n.substring(i))}}return i+=this.$getStringScreenWidth(n,t-v)[1],this.$useWrapMode&&i>=s&&(i=s-1),p?p.idxToPosition(i):{row:r,column:i}},this.documentToScreenPosition=function(e,t){if(typeof t=="undefined")var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var r=0,i=null,s=null;s=this.getFoldAt(e,t,1),s&&(e=s.start.row,t=s.start.column);var o,u=0,a=this.$docRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var u=a[f],r=this.$screenRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getNextFoldLine(u),p=h?h.start.row:Infinity;while(u=p){o=h.end.row+1;if(o>e)break;h=this.getNextFoldLine(o,h),p=h?h.start.row:Infinity}else o=u+1;r+=this.getRowLength(u),u=o,c&&(this.$docRowCache.push(u),this.$screenRowCache.push(r))}var d="";h&&u>=p?(d=this.getFoldDisplayLine(h,e,t),i=h.start.row):(d=this.getLine(e).substring(0,t),i=e);var v=0;if(this.$useWrapMode){var m=this.$wrapData[i];if(m){var g=0;while(d.length>=m[g])r++,g++;d=d.substring(m[g-1]||0,d.length),v=g>0?m.indent:0}}return{row:r,column:v+this.$getStringScreenWidth(d)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(!this.$useWrapMode){e=this.getLength();var n=this.$foldData;for(var r=0;ro&&(s=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:Infinity)}}return this.lineWidgets&&(e+=this.$getWidgetScreenLength()),e},this.$setFontMetrics=function(e){if(!this.$enableVarChar)return;this.$getStringScreenWidth=function(t,n,r){if(n===0)return[0,0];n||(n=Infinity),r=r||0;var i,s;for(s=0;sn)break}return[r,s]}},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()}}).call(p.prototype),e("./edit_session/folding").Folding.call(p.prototype),e("./edit_session/bracket_match").BracketMatch.call(p.prototype),s.defineOptions(p.prototype,"session",{wrap:{set:function(e){!e||e=="off"?e=!1:e=="free"?e=!0:e=="printMargin"?e=-1:typeof e=="string"&&(e=parseInt(e,10)||!1);if(this.$wrap==e)return;this.$wrap=e;if(!e)this.setUseWrapMode(!1);else{var t=typeof e=="number"?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}},get:function(){return this.getUseWrapMode()?this.$wrap==-1?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){e=e=="auto"?this.$mode.type!="text":e!="text",e!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},indentedSoftWrap:{initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){if(isNaN(e)||this.$tabSize===e)return;this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize")},initialValue:4,handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId}}}),t.EditSession=p}),define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";function u(e,t){function n(e){return/\w/.test(e)||t.regExp?"\\b":""}return n(e[0])+e+n(e[e.length-1])}var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(){this.$options={}};(function(){this.set=function(e){return i.mixin(this.$options,e),this},this.getOptions=function(){return r.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,n=this.$matchIterator(e,t);if(!n)return!1;var r=null;return n.forEach(function(e,n,i){if(!e.start){var o=e.offset+(i||0);r=new s(n,o,n,o+e.length);if(!e.length&&t.start&&t.start.start&&t.skipCurrent!=0&&r.isEqual(t.start))return r=null,!1}else r=e;return!0}),r},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var n=t.range,i=n?e.getLines(n.start.row,n.end.row):e.doc.getAllLines(),o=[],u=t.re;if(t.$isMultiLine){var a=u.length,f=i.length-a,l;e:for(var c=u.offset||0;c<=f;c++){for(var h=0;hv)continue;o.push(l=new s(c,v,c+a-1,m)),a>2&&(c=c+a-2)}}else for(var g=0;gE&&o[h].end.row==n.end.row)h--;o=o.slice(g,h+1);for(g=0,h=o.length;g=0;u--)if(i(o[u],t,s))return!0};else var u=function(e,t,s){var o=r.getMatchOffsets(e,n);for(var u=0;u=o;r--)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=u,o=s.row;r>=o;r--)if(n(e.getLine(r),r))return}:function(n){var r=s.row,i=e.getLine(r).substr(s.column);if(n(i,r,s.column))return;for(r+=1;r<=u;r++)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=o,u=s.row;r<=u;r++)if(n(e.getLine(r),r))return};return{forEach:a}}}).call(o.prototype),t.Search=o}),define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function o(e,t){this.platform=t||(i.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function u(e,t){o.call(this,e,t),this.$singleCommand=!1}var r=e("../lib/keys"),i=e("../lib/useragent"),s=r.KEY_MODS;u.prototype=o.prototype,function(){function e(e){return typeof e=="object"&&e.bindKey&&e.bindKey.position||0}this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var n=e&&(typeof e=="string"?e:e.name);e=this.commands[n],t||delete this.commands[n];var r=this.commandKeyBinding;for(var i in r){var s=r[i];if(s==e)delete r[i];else if(Array.isArray(s)){var o=s.indexOf(e);o!=-1&&(s.splice(o,1),s.length==1&&(r[i]=s[0]))}}},this.bindKey=function(e,t,n){typeof e=="object"&&e&&(n==undefined&&(n=e.position),e=e[this.platform]);if(!e)return;if(typeof t=="function")return this.addCommand({exec:t,bindKey:e,name:t.name||e});e.split("|").forEach(function(e){var r="";if(e.indexOf(" ")!=-1){var i=e.split(/\s+/);e=i.pop(),i.forEach(function(e){var t=this.parseKeys(e),n=s[t.hashId]+t.key;r+=(r?" ":"")+n,this._addCommandToBinding(r,"chainKeys")},this),r+=" "}var o=this.parseKeys(e),u=s[o.hashId]+o.key;this._addCommandToBinding(r+u,t,n)},this)},this._addCommandToBinding=function(t,n,r){var i=this.commandKeyBinding,s;if(!n)delete i[t];else if(!i[t]||this.$singleCommand)i[t]=n;else{Array.isArray(i[t])?(s=i[t].indexOf(n))!=-1&&i[t].splice(s,1):i[t]=[i[t]],typeof r!="number"&&(r||n.isDefault?r=-100:r=e(n));var o=i[t];for(s=0;sr)break}o.splice(s,0,n)}},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var n=e[t];if(!n)return;if(typeof n=="string")return this.bindKey(n,t);typeof n=="function"&&(n={exec:n});if(typeof n!="object")return;n.name||(n.name=t),this.addCommand(n)},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),n=t.pop(),i=r[n];if(r.FUNCTION_KEYS[i])n=r.FUNCTION_KEYS[i].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(t.length==1&&t[0]=="shift")return{key:n.toUpperCase(),hashId:-1}}var s=0;for(var o=t.length;o--;){var u=r.KEY_MODS[t[o]];if(u==null)return typeof console!="undefined"&&console.error("invalid modifier "+t[o]+" in "+e),!1;s|=u}return{key:n,hashId:s}},this.findKeyCommand=function(t,n){var r=s[t]+n;return this.commandKeyBinding[r]},this.handleKeyboard=function(e,t,n,r){if(r<0)return;var i=s[t]+n,o=this.commandKeyBinding[i];e.$keyChain&&(e.$keyChain+=" "+i,o=this.commandKeyBinding[e.$keyChain]||o);if(o)if(o=="chainKeys"||o[o.length-1]=="chainKeys")return e.$keyChain=e.$keyChain||i,{command:"null"};if(e.$keyChain)if(!!t&&t!=4||n.length!=1){if(t==-1||r>0)e.$keyChain=""}else e.$keyChain=e.$keyChain.slice(0,-i.length-1);return{command:o}},this.getStatusText=function(e,t){return t.$keyChain||""}}.call(o.prototype),t.HashHandler=o,t.MultiHashHandler=u}),define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../keyboard/hash_handler").MultiHashHandler,s=e("../lib/event_emitter").EventEmitter,o=function(e,t){i.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};r.inherits(o,i),function(){r.implement(this,s),this.exec=function(e,t,n){if(Array.isArray(e)){for(var r=e.length;r--;)if(this.exec(e[r],t,n))return!0;return!1}typeof e=="string"&&(e=this.commands[e]);if(!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var i={editor:t,command:e,args:n};return i.returnValue=this._emit("exec",i),this._signal("afterExec",i),i.returnValue===!1?!1:!0},this.toggleRecording=function(e){if(this.$inReplay)return;return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(e){if(this.$inReplay||!this.macro)return;if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){typeof t=="string"?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}},this.trimMacro=function(e){return e.map(function(e){return typeof e[0]!="string"&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(o.prototype),t.CommandManager=o}),define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,n){"use strict";function o(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),i=e("../config"),s=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:o("Ctrl-,","Command-,"),exec:function(e){i.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:o("Alt-E","F4"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:o("Alt-Shift-E","Shift-F4"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:o("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:o(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:o("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:o("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:o("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:o("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:o("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:o(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:o("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:o("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:o("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:o("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:o("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:o("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:o("Ctrl-F","Command-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:o("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:o("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:o("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:o("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:o("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:o("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:o("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:o("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:o("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:o("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:o("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:o("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:o("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:o("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:o("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:o("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:o("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:o("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:o("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:o("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:o(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:o("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:o(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:o("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:o("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:o("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:o("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:o("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:o("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:o("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:o(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",exec:function(e){},readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",bindKey:o("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:o("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:o("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:o("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:o("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:o("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:o("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:o("Ctrl-H","Command-Option-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:o("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:o("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:o("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:o("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:o("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:o("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:o("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:o("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:o("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:o("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:o("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:o("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:o("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:o("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:o("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:o("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:o("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:o(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:o("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:o("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:o("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:o("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:o(null,null),exec:function(e){var t=e.selection.isBackwards(),n=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),i=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),o=e.session.doc.getLine(n.row).length,u=e.session.doc.getTextRange(e.selection.getRange()),a=u.replace(/\n\s*/," ").length,f=e.session.doc.getLine(n.row);for(var l=n.row+1;l<=i.row+1;l++){var c=r.stringTrimLeft(r.stringTrimRight(e.session.doc.getLine(l)));c.length!==0&&(c=" "+c),f+=c}i.row+10?(e.selection.moveCursorTo(n.row,n.column),e.selection.selectTo(n.row,n.column+a)):(o=e.session.doc.getLine(n.row).length>o?o+1:o,e.selection.moveCursorTo(n.row,o))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:o(null,null),exec:function(e){var t=e.session.doc.getLength()-1,n=e.session.doc.getLine(t).length,r=e.selection.rangeList.ranges,i=[];r.length<1&&(r=[e.selection.getRange()]);for(var o=0;o0&&this.$blockScrolling--;var n=t&&t.scrollIntoView;if(n){switch(n){case"center-animate":n="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var r=this.selection.getRange(),i=this.renderer.layerConfig;(r.start.row>=i.lastRow||r.end.row<=i.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead);break;default:}n=="animate"&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(!this.$mergeUndoDeltas)return;var t=this.prevOp,n=this.$mergeableCommands,r=t.command&&e.command.name==t.command.name;if(e.command.name=="insertstring"){var i=e.args;this.mergeNextCommand===undefined&&(this.mergeNextCommand=!0),r=r&&this.mergeNextCommand&&(!/\s/.test(i)||/\s/.test(t.args)),this.mergeNextCommand=!0}else r=r&&n.indexOf(e.command.name)!==-1;this.$mergeUndoDeltas!="always"&&Date.now()-this.sequenceStartTime>2e3&&(r=!1),r?this.session.mergeUndoDeltas=!0:n.indexOf(e.command.name)!==-1&&(this.sequenceStartTime=Date.now())},this.setKeyboardHandler=function(e,t){if(e&&typeof e=="string"){this.$keybindingId=e;var n=this;g.loadModule(["keybinding",e],function(r){n.$keybindingId==e&&n.keyBinding.setKeyboardHandler(r&&r.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session==e)return;this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange);var n=this.session.getSelection();n.off("changeCursor",this.$onCursorChange),n.off("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.on("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this})},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?t==1?this.navigateFileEnd():t==-1&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||i.computedStyle(this.container,"fontSize")},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null);if(this.$highlightPending)return;var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(!t||!t.bgTokenizer)return;var n=t.findMatchingBracket(e.getCursorPosition());if(n)var r=new p(n.row,n.column,n.row,n.column+1);else if(t.$mode.getMatching)var r=t.$mode.getMatching(e.session);r&&(t.$bracketHighlight=t.addMarker(r,"ace_bracket","text"))},50)},this.$highlightTags=function(){if(this.$highlightTagPending)return;var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(!t||!t.bgTokenizer)return;var n=e.getCursorPosition(),r=new y(e.session,n.row,n.column),i=r.getCurrentToken();if(!i||!/\b(?:tag-open|tag-name)/.test(i.type)){t.removeMarker(t.$tagHighlight),t.$tagHighlight=null;return}if(i.type.indexOf("tag-open")!=-1){i=r.stepForward();if(!i)return}var s=i.value,o=0,u=r.stepBackward();if(u.value=="<"){do u=i,i=r.stepForward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="=0)}else{do i=u,u=r.stepBackward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="1)&&(t=!1)}if(e.$highlightLineMarker&&!t)e.removeMarker(e.$highlightLineMarker.id),e.$highlightLineMarker=null;else if(!e.$highlightLineMarker&&t){var n=new p(t.row,t.column,t.row,Infinity);n.id=e.addMarker(n,"ace_active-line","screenLine"),e.$highlightLineMarker=n}else t&&(e.$highlightLineMarker.start.row=t.row,e.$highlightLineMarker.end.row=t.row,e.$highlightLineMarker.start.column=t.column,e._signal("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null;if(!this.selection.isEmpty()){var n=this.selection.getRange(),r=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,"ace_selection",r)}else this.$updateHighlightActiveLine();var i=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(i),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(t.isEmpty()||t.isMultiLine())return;var n=t.start.column-1,r=t.end.column+1,i=e.getLine(t.start.row),s=i.length,o=i.substring(Math.max(n,0),Math.min(r,s));if(n>=0&&/^[\w\d]/.test(o)||r<=s&&/[\w\d]$/.test(o))return;o=i.substring(t.start.column,t.end.column);if(!/^[\w\d]+$/.test(o))return;var u=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:o});return u},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText();return this._signal("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e,t){var n={text:e,event:t};this.commands.exec("paste",this,n)},this.$handlePaste=function(e){typeof e=="string"&&(e={text:e}),this._signal("paste",e);var t=e.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(t);else{var n=t.split(/\r\n|\r|\n/),r=this.selection.rangeList.ranges;if(n.length>r.length||n.length<2||!n[1])return this.commands.exec("insertstring",this,t);for(var i=r.length;i--;){var s=r[i];s.isEmpty()||this.session.remove(s),this.session.insert(s.start,n[i])}}},this.execCommand=function(e,t){return this.commands.exec(e,this,t)},this.insert=function(e,t){var n=this.session,r=n.getMode(),i=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var s=r.transformAction(n.getState(i.row),"insertion",this,n,e);s&&(e!==s.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=s.text)}e==" "&&(e=this.session.getTabString());if(!this.selection.isEmpty()){var o=this.getSelectionRange();i=this.session.remove(o),this.clearSelection()}else if(this.session.getOverwrite()){var o=new p.fromPoints(i,i);o.end.column+=e.length,this.session.remove(o)}if(e=="\n"||e=="\r\n"){var u=n.getLine(i.row);if(i.column>u.search(/\S|$/)){var a=u.substr(i.column).search(/\S|$/);n.doc.removeInLine(i.row,i.column,i.column+a)}}this.clearSelection();var f=i.column,l=n.getState(i.row),u=n.getLine(i.row),c=r.checkOutdent(l,u,e),h=n.insert(i,e);s&&s.selection&&(s.selection.length==2?this.selection.setSelectionRange(new p(i.row,f+s.selection[0],i.row,f+s.selection[1])):this.selection.setSelectionRange(new p(i.row+s.selection[0],s.selection[1],i.row+s.selection[2],s.selection[3])));if(n.getDocument().isNewLine(e)){var d=r.getNextLineIndent(l,u.slice(0,i.column),n.getTabString());n.insert({row:i.row+1,column:0},d)}c&&r.autoOutdent(l,n,i.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,n){this.keyBinding.onCommandKey(e,t,n)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&(e=="left"?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,r=n.getState(t.start.row),i=n.getMode().transformAction(r,"deletion",this,n,t);if(t.end.column===0){var s=n.getTextRange(t);if(s[s.length-1]=="\n"){var o=n.getLine(t.end.row);/^\s+$/.test(o)&&(t.end.column=o.length)}}i&&(t=i)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(!this.selection.isEmpty())return;var e=this.getCursorPosition(),t=e.column;if(t===0)return;var n=this.session.getLine(e.row),r,i;tt.toLowerCase()?1:0});var r=new p(0,0,0,0);for(var i=e.first;i<=e.last;i++){var s=t.getLine(i);r.start.row=i,r.end.row=i,r.end.column=s.length,t.replace(r,n[i-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),n=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,n,e)},this.getNumberAt=function(e,t){var n=/[\-]?[0-9]+(?:\.[0-9]+)?/g;n.lastIndex=0;var r=this.session.getLine(e);while(n.lastIndex=t){var s={value:i[0],start:i.index,end:i.index+i[0].length};return s}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,r=new p(t,n-1,t,n),i=this.session.getTextRange(r);if(!isNaN(parseFloat(i))&&isFinite(i)){var s=this.getNumberAt(t,n);if(s){var o=s.value.indexOf(".")>=0?s.start+s.value.indexOf(".")+1:s.end,u=s.start+s.value.length-o,a=parseFloat(s.value);a*=Math.pow(10,u),o!==s.end&&np+1)break;p=d.last}l--,u=this.session.$moveLines(h,p,t?0:e),t&&e==-1&&(c=l+1);while(c<=l)o[c].moveBy(u,0),c++;t||(u=0),a+=u}i.fromOrientedRange(i.ranges[0]),i.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var n=this.renderer,r=this.renderer.layerConfig,i=e*Math.floor(r.height/r.lineHeight);this.$blockScrolling++,t===!0?this.selection.$moveSelection(function(){this.moveCursorBy(i,0)}):t===!1&&(this.selection.moveCursorBy(i,0),this.selection.clearSelection()),this.$blockScrolling--;var s=n.scrollTop;n.scrollBy(0,i*r.lineHeight),t!=null&&n.scrollCursorIntoView(null,.5),n.animateScrolling(s)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,n,r){this.renderer.scrollToLine(e,t,n,r)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var n=this.getCursorPosition(),r=new y(this.session,n.row,n.column),i=r.getCurrentToken(),s=i||r.stepForward();if(!s)return;var o,u=!1,a={},f=n.column-s.start,l,c={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(s.value.match(/[{}()\[\]]/g))for(;f=0;--s)this.$tryReplace(n[s],e)&&r++;return this.selection.setSelectionRange(i),this.$blockScrolling-=1,r},this.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return t=this.$search.replace(n,t),t!==null?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,n){t||(t={}),typeof e=="string"||e instanceof RegExp?t.needle=e:typeof e=="object"&&r.mixin(t,e);var i=this.selection.getRange();t.needle==null&&(e=this.session.getTextRange(i)||this.$search.$options.needle,e||(i=this.session.getWordRange(i.start.row,i.start.column),e=this.session.getTextRange(i)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:i});var s=this.$search.find(this.session);if(t.preventScroll)return s;if(s)return this.revealRange(s,n),s;t.backwards?i.start=i.end:i.end=i.start,this.selection.setRange(i)},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!==!1&&this.renderer.animateScrolling(n)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(!e)return;var t,n=this,r=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var i=this.$scrollAnchor;i.style.cssText="position:absolute",this.container.insertBefore(i,this.container.firstChild);var s=this.on("changeSelection",function(){r=!0}),o=this.renderer.on("beforeRender",function(){r&&(t=n.renderer.container.getBoundingClientRect())}),u=this.renderer.on("afterRender",function(){if(r&&t&&(n.isFocused()||n.searchBox&&n.searchBox.isFocused())){var e=n.renderer,s=e.$cursorLayer.$pixelPos,o=e.layerConfig,u=s.top-o.offset;s.top>=0&&u+t.top<0?r=!0:s.topwindow.innerHeight?r=!1:r=null,r!=null&&(i.style.top=u+"px",i.style.left=s.left+"px",i.style.height=o.lineHeight+"px",i.scrollIntoView(r)),r=t=null}});this.setAutoScrollEditorIntoView=function(e){if(e)return;delete this.setAutoScrollEditorIntoView,this.off("changeSelection",s),this.renderer.off("afterRender",u),this.renderer.off("beforeRender",o)}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;if(!t)return;t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&e!="wide",i.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e))}}).call(b.prototype),g.defineOptions(b.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},keyboardHandler:{set:function(e){this.setKeyboardHandler(e)},get:function(){return this.keybindingId},handlesSet:!0},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"}),t.Editor=b}),define("ace/undomanager",["require","exports","module"],function(e,t,n){"use strict";var r=function(){this.reset()};(function(){function e(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines.length==1?null:e.lines,text:e.lines.length==1?e.lines[0]:null}}function t(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines||[e.text]}}function n(e,t){var n=new Array(e.length);for(var r=0;r0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return this.dirtyCounter===0},this.$serializeDeltas=function(t){return n(t,e)},this.$deserializeDeltas=function(e){return n(e,t)}}).call(r.prototype),t.UndoManager=r}),define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/lang"),o=e("../lib/event_emitter").EventEmitter,u=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){i.implement(this,o),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e&&e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;to&&(v=s.end.row+1,s=t.getNextFoldLine(v,s),o=s?s.start.row:Infinity);if(v>i){while(this.$cells.length>d+1)p=this.$cells.pop(),this.element.removeChild(p.element);break}p=this.$cells[++d],p||(p={element:null,textNode:null,foldWidget:null},p.element=r.createElement("div"),p.textNode=document.createTextNode(""),p.element.appendChild(p.textNode),this.element.appendChild(p.element),this.$cells[d]=p);var m="ace_gutter-cell ";a[v]&&(m+=a[v]),f[v]&&(m+=f[v]),this.$annotations[v]&&(m+=this.$annotations[v].className),p.element.className!=m&&(p.element.className=m);var g=t.getRowLength(v)*e.lineHeight+"px";g!=p.element.style.height&&(p.element.style.height=g);if(u){var y=u[v];y==null&&(y=u[v]=t.getFoldWidget(v))}if(y){p.foldWidget||(p.foldWidget=r.createElement("span"),p.element.appendChild(p.foldWidget));var m="ace_fold-widget ace_"+y;y=="start"&&v==o&&vn.right-t.right)return"foldWidgets"}}).call(u.prototype),t.Gutter=u}),define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../range").Range,i=e("../lib/dom"),s=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){function e(e,t,n,r){return(e?1:0)|(t?2:0)|(n?4:0)|(r?8:0)}this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){var e=e||this.config;if(!e)return;this.config=e;var t=[];for(var n in this.markers){var r=this.markers[n];if(!r.range){r.update(t,this,this.session,e);continue}var i=r.range.clipRows(e.firstRow,e.lastRow);if(i.isEmpty())continue;i=i.toScreenRange(this.session);if(r.renderer){var s=this.$getTop(i.start.row,e),o=this.$padding+i.start.column*e.characterWidth;r.renderer(t,i,o,s,e)}else r.type=="fullLine"?this.drawFullLineMarker(t,i,r.clazz,e):r.type=="screenLine"?this.drawScreenLineMarker(t,i,r.clazz,e):i.isMultiLine()?r.type=="text"?this.drawTextMarker(t,i,r.clazz,e):this.drawMultiLineMarker(t,i,r.clazz,e):this.drawSingleLineMarker(t,i,r.clazz+" ace_start"+" ace_br15",e)}this.element.innerHTML=t.join("")},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(t,n,i,s,o){var u=this.session,a=n.start.row,f=n.end.row,l=a,c=0,h=0,p=u.getScreenLastRowColumn(l),d=new r(l,n.start.column,l,h);for(;l<=f;l++)d.start.row=d.end.row=l,d.start.column=l==a?n.start.column:u.getRowWrapIndent(l),d.end.column=p,c=h,h=p,p=l+1p,l==f),s,l==f?0:1,o)},this.drawMultiLineMarker=function(e,t,n,r,i){var s=this.$padding,o=r.lineHeight,u=this.$getTop(t.start.row,r),a=s+t.start.column*r.characterWidth;i=i||"",e.push("
"),u=this.$getTop(t.end.row,r);var f=t.end.column*r.characterWidth;e.push("
"),o=(t.end.row-t.start.row-1)*r.lineHeight;if(o<=0)return;u=this.$getTop(t.start.row+1,r);var l=(t.start.column?1:0)|(t.end.column?0:8);e.push("
")},this.drawSingleLineMarker=function(e,t,n,r,i,s){var o=r.lineHeight,u=(t.end.column+(i||0)-t.start.column)*r.characterWidth,a=this.$getTop(t.start.row,r),f=this.$padding+t.start.column*r.characterWidth;e.push("
")},this.drawFullLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;t.start.row!=t.end.row&&(o+=this.$getTop(t.end.row,r)-s),e.push("
")},this.drawScreenLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;e.push("
")}}).call(s.prototype),t.Marker=s}),define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/useragent"),u=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){r.implement(this,u),this.EOF_CHAR="\u00b6",this.EOL_CHAR_LF="\u00ac",this.EOL_CHAR_CRLF="\u00a4",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="\u2014",this.SPACE_CHAR="\u00b7",this.$padding=0,this.$updateEolChar=function(){var e=this.session.doc.getNewLineCharacter()=="\n"?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=e)return this.EOL_CHAR=e,!0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;var t=this.$tabStrings=[0];for(var n=1;n"+s.stringRepeat(this.TAB_CHAR,n)+""):t.push(s.stringRepeat(" ",n));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var r="ace_indent-guide",i="",o="";if(this.showInvisibles){r+=" ace_invisible",i=" ace_invisible_space",o=" ace_invisible_tab";var u=s.stringRepeat(this.SPACE_CHAR,this.tabSize),a=s.stringRepeat(this.TAB_CHAR,this.tabSize)}else var u=s.stringRepeat(" ",this.tabSize),a=u;this.$tabStrings[" "]=""+u+"",this.$tabStrings[" "]=""+a+""}},this.updateLines=function(e,t,n){(this.config.lastRow!=e.lastRow||this.config.firstRow!=e.firstRow)&&this.scrollLines(e),this.config=e;var r=Math.max(t,e.firstRow),i=Math.min(n,e.lastRow),s=this.element.childNodes,o=0;for(var u=e.firstRow;uf&&(u=a.end.row+1,a=this.session.getNextFoldLine(u,a),f=a?a.start.row:Infinity);if(u>i)break;var l=s[o++];if(l){var c=[];this.$renderLine(c,u,!this.$useLineGroups(),u==f?a:!1),l.style.height=e.lineHeight*this.session.getRowLength(u)+"px",l.innerHTML=c.join("")}u++}},this.scrollLines=function(e){var t=this.config;this.config=e;if(!t||t.lastRow0;r--)n.removeChild(n.firstChild);if(t.lastRow>e.lastRow)for(var r=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);r>0;r--)n.removeChild(n.lastChild);if(e.firstRowt.lastRow){var i=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);n.appendChild(i)}},this.$renderLinesFragment=function(e,t,n){var r=this.element.ownerDocument.createDocumentFragment(),s=t,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>n)break;var a=i.createElement("div"),f=[];this.$renderLine(f,s,!1,s==u?o:!1),a.innerHTML=f.join("");if(this.$useLineGroups())a.className="ace_line_group",r.appendChild(a),a.style.height=e.lineHeight*this.session.getRowLength(s)+"px";else while(a.firstChild)r.appendChild(a.firstChild);s++}return r},this.update=function(e){this.config=e;var t=[],n=e.firstRow,r=e.lastRow,i=n,s=this.session.getNextFoldLine(i),o=s?s.start.row:Infinity;for(;;){i>o&&(i=s.end.row+1,s=this.session.getNextFoldLine(i,s),o=s?s.start.row:Infinity);if(i>r)break;this.$useLineGroups()&&t.push("
"),this.$renderLine(t,i,!1,i==o?s:!1),this.$useLineGroups()&&t.push("
"),i++}this.element.innerHTML=t.join("")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,r){var i=this,o=/\t|&|<|>|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF\uFFF9-\uFFFC])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]/g,u=function(e,n,r,o,u){if(n)return i.showInvisibles?""+s.stringRepeat(i.SPACE_CHAR,e.length)+"":e;if(e=="&")return"&";if(e=="<")return"<";if(e==">")return">";if(e==" "){var a=i.session.getScreenTabSize(t+o);return t+=a-1,i.$tabStrings[a]}if(e=="\u3000"){var f=i.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",l=i.showInvisibles?i.SPACE_CHAR:"";return t+=1,""+l+""}return r?""+i.SPACE_CHAR+"":(t+=1,""+e+"")},a=r.replace(o,u);if(!this.$textToken[n.type]){var f="ace_"+n.type.replace(/\./g," ace_"),l="";n.type=="fold"&&(l=" style='width:"+n.value.length*this.config.characterWidth+"px;' "),e.push("",a,"")}else e.push(a);return t+r.length},this.renderIndentGuide=function(e,t,n){var r=t.search(this.$indentGuideRe);return r<=0||r>=n?t:t[0]==" "?(r-=r%this.tabSize,e.push(s.stringRepeat(this.$tabStrings[" "],r/this.tabSize)),t.substr(r)):t[0]==" "?(e.push(s.stringRepeat(this.$tabStrings[" "],r)),t.substr(r)):t},this.$renderWrappedLine=function(e,t,n,r){var i=0,o=0,u=n[0],a=0;for(var f=0;f=u)a=this.$renderToken(e,a,l,c.substring(0,u-i)),c=c.substring(u-i),i=u,r||e.push("","
"),e.push(s.stringRepeat("\u00a0",n.indent)),o++,a=0,u=n[o]||Number.MAX_VALUE;c.length!=0&&(i+=c.length,a=this.$renderToken(e,a,l,c))}}},this.$renderSimpleLine=function(e,t){var n=0,r=t[0],i=r.value;this.displayIndentGuides&&(i=this.renderIndentGuide(e,i)),i&&(n=this.$renderToken(e,n,r,i));for(var s=1;s");if(i.length){var s=this.session.getRowSplitData(t);s&&s.length?this.$renderWrappedLine(e,i,s,n):this.$renderSimpleLine(e,i)}this.showInvisibles&&(r&&(t=r.end.row),e.push("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),n||e.push("
")},this.$getFoldLineTokens=function(e,t){function i(e,t,n){var i=0,s=0;while(s+e[i].value.lengthn-t&&(o=o.substring(0,n-t)),r.push({type:e[i].type,value:o}),s=t+o.length,i+=1}while(sn?r.push({type:e[i].type,value:o.substring(0,n-s)}):r.push(e[i]),s+=o.length,i+=1}}var n=this.session,r=[],s=n.getTokens(e);return t.walk(function(e,t,o,u,a){e!=null?r.push({type:"fold",value:e}):(a&&(s=n.getTokens(t)),s.length&&i(s,u,o))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../lib/dom"),i,s=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),i===undefined&&(i=!("opacity"in this.element.style)),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=(i?this.$updateVisibility:this.$updateOpacity).bind(this)};(function(){this.$updateVisibility=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.opacity=e?"":"0"},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e!=this.smoothBlinking&&!i&&(this.smoothBlinking=e,r.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=this.$updateOpacity.bind(this),this.restartTimer())},this.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking"),e(!0);if(!this.isBlinking||!this.blinkInterval||!this.isVisible)return;this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e),r=this.$padding+n.column*this.config.characterWidth,i=(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:r,top:i}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,n=0,r=0;if(t===undefined||t.length===0)t=[{cursor:null}];for(var n=0,i=t.length;ne.height+e.offset||s.top<0)&&n>1)continue;var o=(this.cursors[r++]||this.addCursor()).style;this.drawCursor?this.drawCursor(o,s,e,t[n],this.session):(o.left=s.left+"px",o.top=s.top+"px",o.width=e.characterWidth+"px",o.height=e.lineHeight+"px")}while(this.cursors.length>r)this.removeCursor();var u=this.session.getOverwrite();this.$setOverwrite(u),this.$pixelPos=s,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(s.prototype),t.Cursor=s}),define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/event"),o=e("./lib/event_emitter").EventEmitter,u=32768,a=function(e){this.element=i.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=i.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,s.addListener(this.element,"scroll",this.onScroll.bind(this)),s.addListener(this.element,"mousedown",s.preventDefault)};(function(){r.implement(this,o),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e,this.coeff=1}}).call(a.prototype);var f=function(e,t){a.call(this,e),this.scrollTop=0,this.scrollHeight=0,t.$scrollbarWidth=this.width=i.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};r.inherits(f,a),function(){this.classSuffix="-v",this.onScroll=function(){if(!this.skipEvent){this.scrollTop=this.element.scrollTop;if(this.coeff!=1){var e=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-e)/(this.coeff-e)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=this.setScrollHeight=function(e){this.scrollHeight=e,e>u?(this.coeff=u/e,e=u):this.coeff!=1&&(this.coeff=1),this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=e,this.element.scrollTop=e*this.coeff)}}.call(f.prototype);var l=function(e,t){a.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};r.inherits(l,a),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(l.prototype),t.ScrollBar=f,t.ScrollBarV=f,t.ScrollBarH=l,t.VScrollBar=f,t.HScrollBar=l}),define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,n){"use strict";var r=e("./lib/event"),i=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){this.changes=this.changes|e;if(!this.pending&&this.changes){this.pending=!0;var t=this;r.nextFrame(function(){t.pending=!1;var e;while(e=t.changes)t.changes=0,t.onRender(e)},this.window)}}}).call(i.prototype),t.RenderLoop=i}),define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/useragent"),u=e("../lib/event_emitter").EventEmitter,a=0,f=t.FontMetrics=function(e){this.el=i.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=i.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=i.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),a||this.$testFractionalRect(),this.$measureNode.innerHTML=s.stringRepeat("X",a),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){r.implement(this,u),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=i.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;t>0&&t<1?a=50:a=100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",o.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(){if(a===50){var e=null;try{e=this.$measureNode.getBoundingClientRect()}catch(t){e={width:0,height:0}}var n={height:e.height,width:e.width/a}}else var n={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/a};return n.width===0||n.height===0?null:n},this.$measureCharWidth=function(e){this.$main.innerHTML=s.stringRepeat(e,a);var t=this.$main.getBoundingClientRect();return t.width/a},this.getCharacterWidth=function(e){var t=this.charSizes[e];return t===undefined&&(t=this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(f.prototype)}),define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./config"),o=e("./lib/useragent"),u=e("./layer/gutter").Gutter,a=e("./layer/marker").Marker,f=e("./layer/text").Text,l=e("./layer/cursor").Cursor,c=e("./scrollbar").HScrollBar,h=e("./scrollbar").VScrollBar,p=e("./renderloop").RenderLoop,d=e("./layer/font_metrics").FontMetrics,v=e("./lib/event_emitter").EventEmitter,m='.ace_editor {position: relative;overflow: hidden;font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;direction: ltr;text-align: left;}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;min-width: 100%;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \'\';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;text-indent: -1em;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;white-space: pre!important;}.ace_text-input.ace_composition {background: inherit;color: inherit;z-index: 1000;opacity: 1;text-indent: 0;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;border-left: 2px solid;transform: translatez(0);}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-webkit-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_editor.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_tooltip {background-color: #FFF;background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block; }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");}.ace_dark .ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-webkit-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-webkit-transition: opacity 0.05s ease 0.05s;transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}.ace_br1 {border-top-left-radius : 3px;}.ace_br2 {border-top-right-radius : 3px;}.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}.ace_br4 {border-bottom-right-radius: 3px;}.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}.ace_br8 {border-bottom-left-radius : 3px;}.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}';i.importCssString(m,"ace_editor.css");var g=function(e,t){var n=this;this.container=e||i.createElement("div"),this.$keepTextAreaAtCursor=!o.isOldIE,i.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=i.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=i.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=i.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new u(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new a(this.content);var r=this.$textLayer=new f(this.content);this.canvas=r.element,this.$markerFront=new a(this.content),this.$cursorLayer=new l(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new h(this.container,this),this.scrollBarH=new c(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollTop(e.data-n.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollLeft(e.data-n.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new d(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){n.updateCharacterSize(),n.onResize(!0,n.gutterWidth,n.$size.width,n.$size.height),n._signal("changeCharacterSize",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new p(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),s.resetOptions(this),s._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,r.implement(this,v),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e);if(!e)return;this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null,this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode)},this.updateLines=function(e,t,n){t===undefined&&(t=Infinity),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow)return;this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar()},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,n,r){if(this.resizing>2)return;this.resizing>0?this.resizing++:this.resizing=e?1:0;var i=this.container;r||(r=i.clientHeight||i.scrollHeight),n||(n=i.clientWidth||i.scrollWidth);var s=this.$updateCachedSize(e,t,n,r);if(!this.$size.scrollerHeight||!n&&!r)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(s|this.$changes,!0):this.$loop.schedule(s|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null},this.$updateCachedSize=function(e,t,n,r){r-=this.$extraHeight||0;var i=0,s=this.$size,o={width:s.width,height:s.height,scrollerHeight:s.scrollerHeight,scrollerWidth:s.scrollerWidth};r&&(e||s.height!=r)&&(s.height=r,i|=this.CHANGE_SIZE,s.scrollerHeight=s.height,this.$horizScroll&&(s.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",i|=this.CHANGE_SCROLL);if(n&&(e||s.width!=n)){i|=this.CHANGE_SIZE,s.width=n,t==null&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+"px",s.scrollerWidth=Math.max(0,n-t-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px";if(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)i|=this.CHANGE_FULL}return s.$dirty=!n||!r,i&&this._signal("resize",o),i},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-this.$padding*2,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var n=this.session.selection.getCursor();n.column=0,e=this.$cursorLayer.getPixelPosition(n,!0),t*=this.session.getRowLength(n.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},this.$updatePrintMargin=function(){if(!this.$showPrintMargin&&!this.$printMarginEl)return;if(!this.$printMarginEl){var e=i.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=i.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit()},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(!this.$keepTextAreaAtCursor)return;var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,n=this.$cursorLayer.$pixelPos.left;t-=e.offset;var r=this.textarea.style,i=this.lineHeight;if(t<0||t>e.height-i){r.top=r.left="0";return}var s=this.characterWidth;if(this.$composition){var o=this.textarea.value.replace(/^\x01+/,"");s*=this.session.$getStringScreenWidth(o)[0]+2,i+=2}n-=this.scrollLeft,n>this.$size.scrollerWidth-s&&(n=this.$size.scrollerWidth-s),n+=this.gutterWidth,r.height=i+"px",r.width=s+"px",r.left=Math.min(n,this.$size.scrollerWidth-s)+"px",r.top=Math.min(t,this.$size.height-i)+"px"},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)},this.getLastFullyVisibleRow=function(){var e=this.layerConfig,t=e.lastRow,n=this.session.documentToScreenRow(t,0)*e.lineHeight;return n-this.session.getScrollTop()>e.height-e.lineHeight?t-1:t},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,n,r){var i=this.scrollMargin;i.top=e|0,i.bottom=t|0,i.right=r|0,i.left=n|0,i.v=i.top+i.bottom,i.h=i.left+i.right,i.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-i.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){this.$changes&&(e|=this.$changes,this.$changes=0);if(!this.session||!this.container.offsetWidth||this.$frozen||!e&&!t){this.$changes|=e;return}if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender");var n=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){e|=this.$computeLayerConfig();if(n.firstRow!=this.layerConfig.firstRow&&n.firstRowScreen==this.layerConfig.firstRowScreen){var r=this.scrollTop+(n.firstRow-this.layerConfig.firstRow)*this.lineHeight;r>0&&(this.scrollTop=r,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig())}n=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-n.offset+"px",this.content.style.marginTop=-n.offset+"px",this.content.style.width=n.width+2*this.$padding+"px",this.content.style.height=n.minHeight+"px"}e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left");if(e&this.CHANGE_FULL){this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this._signal("afterRender");return}if(e&this.CHANGE_SCROLL){e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(n):this.$textLayer.scrollLines(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),this._signal("afterRender");return}e&this.CHANGE_TEXT?(this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(n):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(n),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(n),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(n),this._signal("afterRender")},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,n=Math.min(t,Math.max((this.$minLines||1)*this.lineHeight,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(n+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&n>this.$maxPixelHeight&&(n=this.$maxPixelHeight);var r=e>t;if(n!=this.desiredHeight||this.$size.height!=this.desiredHeight||r!=this.$vScroll){r!=this.$vScroll&&(this.$vScroll=r,this.scrollBarV.setVisible(r));var i=this.container.clientWidth;this.container.style.height=n+"px",this.$updateCachedSize(!0,this.$gutterWidth,i,n),this.desiredHeight=n,this._signal("autosize")}},this.$computeLayerConfig=function(){var e=this.session,t=this.$size,n=t.height<=2*this.lineHeight,r=this.session.getScreenLength(),i=r*this.lineHeight,s=this.$getLongestLine(),o=!n&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-s-2*this.$padding<0),u=this.$horizScroll!==o;u&&(this.$horizScroll=o,this.scrollBarH.setVisible(o));var a=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var f=this.scrollTop%this.lineHeight,l=t.scrollerHeight+this.lineHeight,c=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;i+=c;var h=this.scrollMargin;this.session.setScrollTop(Math.max(-h.top,Math.min(this.scrollTop,i-t.scrollerHeight+h.bottom))),this.session.setScrollLeft(Math.max(-h.left,Math.min(this.scrollLeft,s+2*this.$padding-t.scrollerWidth+h.right)));var p=!n&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-i+c<0||this.scrollTop>h.top),d=a!==p;d&&(this.$vScroll=p,this.scrollBarV.setVisible(p));var v=Math.ceil(l/this.lineHeight)-1,m=Math.max(0,Math.round((this.scrollTop-f)/this.lineHeight)),g=m+v,y,b,w=this.lineHeight;m=e.screenToDocumentRow(m,0);var E=e.getFoldLine(m);E&&(m=E.start.row),y=e.documentToScreenRow(m,0),b=e.getRowLength(m)*w,g=Math.min(e.screenToDocumentRow(g,0),e.getLength()-1),l=t.scrollerHeight+e.getRowLength(g)*w+b,f=this.scrollTop-y*w;var S=0;this.layerConfig.width!=s&&(S=this.CHANGE_H_SCROLL);if(u||d)S=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),d&&(s=this.$getLongestLine());return this.layerConfig={width:s,padding:this.$padding,firstRow:m,firstRowScreen:y,lastRow:g,lineHeight:w,characterWidth:this.characterWidth,minHeight:l,maxHeight:i,offset:f,gutterOffset:w?Math.max(0,Math.ceil((f+t.height-t.scrollerHeight)/w)):0,height:this.$size.scrollerHeight},S},this.$updateLines=function(){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(e>n.lastRow+1)return;if(ts?(t&&a+o>s+this.lineHeight&&(s-=t*this.$size.scrollerHeight),s===0&&(s=-this.scrollMargin.top),this.session.setScrollTop(s)):a+this.$size.scrollerHeight-ui?(i=1-this.scrollMargin.top)return!0;if(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom)return!0;if(e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left)return!0;if(e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right)return!0},this.pixelToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=(e+this.scrollLeft-n.left-this.$padding)/this.characterWidth,i=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),s=Math.round(r);return{row:i,column:s,side:r-s>0?1:-1}},this.screenToTextCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=Math.round((e+this.scrollLeft-n.left-this.$padding)/this.characterWidth),i=(t+this.scrollTop-n.top)/this.lineHeight;return this.session.screenToDocumentPosition(i,Math.max(r,0))},this.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=this.session.documentToScreenPosition(e,t),i=this.$padding+Math.round(r.column*this.characterWidth),s=r.row*this.lineHeight;return{pageX:n.left+i-this.scrollLeft,pageY:n.top+s-this.scrollTop}},this.visualizeFocus=function(){i.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){i.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,i.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){if(!this.$composition)return;i.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null},this.setTheme=function(e,t){function o(r){if(n.$themeId!=e)return t&&t();if(!r||!r.cssClass)throw new Error("couldn't load module "+e+" or it didn't call define");i.importCssString(r.cssText,r.cssClass,n.container.ownerDocument),n.theme&&i.removeCssClass(n.container,n.theme.cssClass);var s="padding"in r?r.padding:"padding"in(n.theme||{})?4:n.$padding;n.$padding&&s!=n.$padding&&n.setPadding(s),n.$theme=r.cssClass,n.theme=r,i.addCssClass(n.container,r.cssClass),i.setCssClass(n.container,"ace_dark",r.isDark),n.$size&&(n.$size.width=0,n.$updateSizeAsync()),n._dispatchEvent("themeLoaded",{theme:r}),t&&t()}var n=this;this.$themeId=e,n._dispatchEvent("themeChange",{theme:e});if(!e||typeof e=="string"){var r=e||this.$options.theme.initialValue;s.loadModule(["theme",r],o)}else o(e)},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){i.setCssClass(this.container,e,t!==!1)},this.unsetStyle=function(e){i.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.scroller.style.cursor!=e&&(this.scroller.style.cursor=e)},this.setMouseCursor=function(e){this.scroller.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(g.prototype),s.defineOptions(g.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){typeof e=="number"&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){i.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){if(!this.$gutterLineHighlight){this.$gutterLineHighlight=i.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",this.$gutter.appendChild(this.$gutterLineHighlight);return}this.$gutterLineHighlight.style.display=e?"":"none",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){(!this.$hScrollBarAlwaysVisible||!this.$horizScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){(!this.$vScrollBarAlwaysVisible||!this.$vScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){typeof e=="number"&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.updateFull()}},maxPixelHeight:{set:function(e){this.updateFull()},initialValue:0},scrollPastEnd:{set:function(e){e=+e||0;if(this.$scrollPastEnd==e)return;this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),t.VirtualRenderer=g}),define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/net"),s=e("../lib/event_emitter").EventEmitter,o=e("../config"),u=function(t,n,r,i){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl);if(o.get("packaged")||!e.toUrl)i=i||o.moduleUrl(n,"worker");else{var s=this.$normalizePath;i=i||s(e.toUrl("ace/worker/worker.js",null,"_"));var u={};t.forEach(function(t){u[t]=s(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}try{this.$worker=new Worker(i)}catch(a){if(!(a instanceof window.DOMException))throw a;var f=this.$workerBlob(i),l=window.URL||window.webkitURL,c=l.createObjectURL(f);this.$worker=new Worker(c),l.revokeObjectURL(c)}this.$worker.postMessage({init:!0,tlns:u,module:n,classname:r}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){r.implement(this,s),this.onMessage=function(e){var t=e.data;switch(t.type){case"event":this._signal(t.name,{data:t.data});break;case"call":var n=this.callbacks[t.id];n&&(n(t.data),delete this.callbacks[t.id]);break;case"error":this.reportError(t.data);break;case"log":window.console&&console.log&&console.log.apply(console,t.data)}},this.reportError=function(e){window.console&&console.error&&console.error(e)},this.$normalizePath=function(e){return i.qualifyURL(e)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,n){if(n){var r=this.callbackId++;this.callbacks[r]=n,t.push(r)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(n){console.error(n.stack)}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),e.action=="insert"?this.deltaQueue.push(e.start,e.lines):this.deltaQueue.push(e.start,e.end)},this.$sendDeltaQueue=function(){var e=this.deltaQueue;if(!e)return;this.deltaQueue=null,e.length>50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e})},this.$workerBlob=function(e){var t="importScripts('"+i.qualifyURL(e)+"');";try{return new Blob([t],{type:"application/javascript"})}catch(n){var r=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,s=new r;return s.append(t),s.getBlob("application/javascript")}}}).call(u.prototype);var a=function(e,t,n){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var r=null,i=!1,u=Object.create(s),a=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){a.messageBuffer.push(e),r&&(i?setTimeout(f):f())},this.setEmitSync=function(e){i=e};var f=function(){var e=a.messageBuffer.shift();e.command?r[e.command].apply(r,e.args):e.event&&u._signal(e.event,e.data)};u.postMessage=function(e){a.onMessage({data:e})},u.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},u.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},o.loadModule(["worker",t],function(e){r=new e[n](u);while(a.messageBuffer.length)f()})};a.prototype=u.prototype,t.UIWorkerClient=a,t.WorkerClient=u}),define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,n){"use strict";var r=e("./range").Range,i=e("./lib/event_emitter").EventEmitter,s=e("./lib/oop"),o=function(e,t,n,r,i,s){var o=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=i,this.othersClass=s,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=r,this.$onCursorChange=function(){setTimeout(function(){o.onCursorChange()})},this.$pos=n;var u=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=u.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){s.implement(this,i),this.setup=function(){var e=this,t=this.doc,n=this.session;this.selectionBefore=n.selection.toJSON(),n.selection.inMultiSelectMode&&n.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var i=this.pos;i.$insertRight=!0,i.detach(),i.markerId=n.addMarker(new r(i.row,i.column,i.row,i.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(n){var r=t.createAnchor(n.row,n.column);r.$insertRight=!0,r.detach(),e.others.push(r)}),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(this.othersActive)return;var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(n){n.markerId=e.addMarker(new r(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1)})},this.hideOtherMarkers=function(){if(!this.othersActive)return;this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1,s=t.start.column-this.pos.column;this.updateAnchors(e),i&&(this.length+=n);if(i&&!this.session.$fromUndo)if(e.action==="insert")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};this.doc.insertMergedLines(a,e.lines)}else if(e.action==="remove")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};this.doc.remove(new r(a.row,a.column,a.row,a.column-n))}this.$updating=!1,this.updateMarkers()},this.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},this.updateMarkers=function(){if(this.$updating)return;var e=this,t=this.session,n=function(n,i){t.removeMarker(n.markerId),n.markerId=t.addMarker(new r(n.row,n.column,n.row,n.column+e.length),i,null,!1)};n(this.pos,this.mainClass);for(var i=this.others.length;i--;)n(this.others[i],this.othersClass)},this.onCursorChange=function(e){if(this.$updating||!this.session)return;var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(this.$undoStackDepth===-1)return;var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth;for(var n=0;n1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){this.rangeCount=this.rangeList.ranges.length;if(this.rangeCount==1&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var r=this.ranges.indexOf(e[n]);this.ranges.splice(r,1)}this._signal("removeRange",{ranges:e}),this.rangeCount===0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){if(this.rangeList)return;this.rangeList=new r,this.ranges=[],this.rangeCount=0},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var n=this.getRange(),r=this.isBackwards(),s=n.start.row,o=n.end.row;if(s==o){if(r)var u=n.end,a=n.start;else var u=n.start,a=n.end;this.addRange(i.fromPoints(a,a)),this.addRange(i.fromPoints(u,u));return}var f=[],l=this.getLineRange(s,!0);l.start.column=n.start.column,f.push(l);for(var c=s+1;c1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var r=this.session.documentToScreenPosition(this.selectionLead),s=this.session.documentToScreenPosition(this.selectionAnchor),o=this.rectangularRangeBlock(r,s);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var r=[],s=e.column0)d--;if(d>0){var m=0;while(r[m].isEmpty())m++}for(var g=d;g>=m;g--)r[g].isEmpty()&&r.splice(g,1)}return r}}.call(s.prototype);var d=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(!e.marker)return;this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);t!=-1&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length},this.removeSelectionMarkers=function(e){var t=this.session.$selectionMarkers;for(var n=e.length;n--;){var r=e[n];if(!r.marker)continue;this.session.removeMarker(r.marker);var i=t.indexOf(r);i!=-1&&t.splice(i,1)}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){if(this.inMultiSelectMode)return;this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onSingleSelect=function(e){if(this.session.multiSelect.inVirtualMode)return;this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection")},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(!n.multiSelect)return;if(!t.multiSelectAction){var r=t.exec(n,e.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}else t.multiSelectAction=="forEach"?r=n.forEachSelection(t,e.args):t.multiSelectAction=="forEachLine"?r=n.forEachSelection(t,e.args,!0):t.multiSelectAction=="single"?(n.exitMultiSelectMode(),r=t.exec(n,e.args||{})):r=t.multiSelectAction(n,e.args||{});return r},this.forEachSelection=function(e,t,n){if(this.inVirtualSelectionMode)return;var r=n&&n.keepOrder,i=n==1||n&&n.$byLines,o=this.session,u=this.selection,a=u.rangeList,f=(r?u:a).ranges,l;if(!f.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var c=u._eventRegistry;u._eventRegistry={};var h=new s(o);this.inVirtualSelectionMode=!0;for(var p=f.length;p--;){if(i)while(p>0&&f[p].start.row==f[p-1].end.row)p--;h.fromOrientedRange(f[p]),h.index=p,this.selection=o.selection=h;var d=e.exec?e.exec(this,t||{}):e(this,t||{});!l&&d!==undefined&&(l=d),h.toOrientedRange(f[p])}h.detach(),this.selection=o.selection=u,this.inVirtualSelectionMode=!1,u._eventRegistry=c,u.mergeOverlappingRanges();var v=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),v&&v.from==v.to&&this.renderer.animateScrolling(v.from),l},this.exitMultiSelectMode=function(){if(!this.inMultiSelectMode||this.inVirtualSelectionMode)return;this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var t=this.multiSelect.rangeList.ranges,n=[];for(var r=0;r0);u<0&&(u=0),f>=c&&(f=c-1)}var p=this.session.removeFullLines(u,f);p=this.$reAlignText(p,l),this.session.insert({row:u,column:0},p.join("\n")+"\n"),l||(o.start.column=0,o.end.column=p[p.length-1].length),this.selection.setRange(o)}else{s.forEach(function(e){t.substractPoint(e.cursor)});var d=0,v=Infinity,m=n.map(function(t){var n=t.cursor,r=e.getLine(n.row),i=r.substr(n.column).search(/\S/g);return i==-1&&(i=0),n.column>d&&(d=n.column),io?e.insert(r,a.stringRepeat(" ",s-o)):e.remove(new i(r.row,r.column,r.row,r.column-s+o)),t.start.column=t.end.column=d,t.start.row=t.end.row=r.row,t.cursor=t.end}),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(e,t){function u(e){return a.stringRepeat(" ",e)}function f(e){return e[2]?u(i)+e[2]+u(s-e[2].length+o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function l(e){return e[2]?u(i+s-e[2].length)+e[2]+u(o," ")+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function c(e){return e[2]?u(i)+e[2]+u(o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var n=!0,r=!0,i,s,o;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?i==null?(i=t[1].length,s=t[2].length,o=t[3].length,t):(i+s+o!=t[1].length+t[2].length+t[3].length&&(r=!1),i!=t[1].length&&(n=!1),i>t[1].length&&(i=t[1].length),st[3].length&&(o=t[3].length),t):[e]}).map(t?f:n?r?l:f:c)}}).call(d.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.off("addRange",this.$onAddRange),n.multiSelect.off("removeRange",this.$onRemoveRange),n.multiSelect.off("multiSelect",this.$onMultiSelect),n.multiSelect.off("singleSelect",this.$onSingleSelect),n.multiSelect.lead.off("change",this.$checkMultiselectChange),n.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=m,e("./config").defineOptions(d.prototype,"editor",{enableMultiselect:{set:function(e){m(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",o)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",o))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})}),define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../../range").Range,i=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?"start":t=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(r)?"end":""},this.getFoldWidgetRange=function(e,t,n){return null},this.indentationBlock=function(e,t,n){var i=/\S/,s=e.getLine(t),o=s.search(i);if(o==-1)return;var u=n||s.length,a=e.getLength(),f=t,l=t;while(++tf){var h=e.getLine(l).length;return new r(f,u,l,h)}},this.openingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i+1},u=e.$findClosingBracket(t,o,s);if(!u)return;var a=e.foldWidgets[u.row];return a==null&&(a=e.getFoldWidget(u.row)),a=="start"&&u.row>o.row&&(u.row--,u.column=e.getLine(u.row).length),r.fromPoints(o,u)},this.closingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i},u=e.$findOpeningBracket(t,o);if(!u)return;return u.column++,o.column--,r.fromPoints(u,o)}}).call(i.prototype)}),define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}),define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function o(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeFold",this.updateOnFold),this.session.on("changeEditor",this.$onChangeEditor)}var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./range").Range;(function(){this.getRowLength=function(e){var t;return this.lineWidgets?t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:t=0,!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&!t.hidden&&(e+=t.rowCount)}),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach();if(this.editor==e)return;this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets))},this.detach=function(e){var t=this.editor;if(!t)return;this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var n=this.session.lineWidgets;n&&n.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})},this.updateOnFold=function(e,t){var n=t.lineWidgets;if(!n||!e.action)return;var r=e.data,i=r.start.row,s=r.end.row,o=e.action=="add";for(var u=i+1;u0&&!r[i])i--;this.firstRow=n.firstRow,this.lastRow=n.lastRow,t.$cursorLayer.config=n;for(var o=i;o<=s;o++){var u=r[o];if(!u||!u.el)continue;if(u.hidden){u.el.style.top=-100-(u.pixelHeight||0)+"px";continue}u._inDocument||(u._inDocument=!0,t.container.appendChild(u.el));var a=t.$cursorLayer.getPixelPosition({row:o,column:0},!0).top;u.coverLine||(a+=n.lineHeight*this.session.getRowLineCount(u.row)),u.el.style.top=a-n.offset+"px";var f=u.coverGutter?0:t.gutterWidth;u.fixedWidth||(f-=t.scrollLeft),u.el.style.left=f+"px",u.fullWidth&&u.screenWidth&&(u.el.style.minWidth=n.width+2*n.padding+"px"),u.fixedWidth?u.el.style.right=t.scrollBar.getWidth()+"px":u.el.style.right=""}}}).call(o.prototype),t.LineWidgets=o}),define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function o(e,t,n){var r=0,i=e.length-1;while(r<=i){var s=r+i>>1,o=n(t,e[s]);if(o>0)r=s+1;else{if(!(o<0))return s;i=s-1}}return-(r+1)}function u(e,t,n){var r=e.getAnnotations().sort(s.comparePoints);if(!r.length)return;var i=o(r,{row:t,column:-1},s.comparePoints);i<0&&(i=-i-1),i>=r.length?i=n>0?0:r.length-1:i===0&&n<0&&(i=r.length-1);var u=r[i];if(!u||!n)return;if(u.row===t){do u=r[i+=n];while(u&&u.row===t);if(!u)return r.slice()}var a=[];t=u.row;do a[n<0?"unshift":"push"](u),u=r[i+=n];while(u&&u.row==t);return a.length&&a}var r=e("../line_widgets").LineWidgets,i=e("../lib/dom"),s=e("../range").Range;t.showErrorMarker=function(e,t){var n=e.session;n.widgetManager||(n.widgetManager=new r(n),n.widgetManager.attach(e));var s=e.getCursorPosition(),o=s.row,a=n.widgetManager.getWidgetsAtRow(o).filter(function(e){return e.type=="errorMarker"})[0];a?a.destroy():o-=t;var f=u(n,o,t),l;if(f){var c=f[0];s.column=(c.pos&&typeof c.column!="number"?c.pos.sc:c.column)||0,s.row=c.row,l=e.renderer.$gutterLayer.$annotations[s.row]}else{if(a)return;l={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(s.row),e.selection.moveToPosition(s);var h={row:s.row,fixedWidth:!0,coverGutter:!0,el:i.createElement("div"),type:"errorMarker"},p=h.el.appendChild(i.createElement("div")),d=h.el.appendChild(i.createElement("div"));d.className="error_widget_arrow "+l.className;var v=e.renderer.$cursorLayer.getPixelPosition(s).left;d.style.left=v+e.renderer.gutterWidth-5+"px",h.el.className="error_widget_wrapper",p.className="error_widget "+l.className,p.innerHTML=l.text.join("
"),p.appendChild(i.createElement("div"));var m=function(e,t,n){if(t===0&&(n==="esc"||n==="return"))return h.destroy(),{command:"null"}};h.destroy=function(){if(e.$mouseHandler.isMousePressed)return;e.keyBinding.removeKeyboardHandler(m),n.widgetManager.removeLineWidget(h),e.off("changeSelection",h.destroy),e.off("changeSession",h.destroy),e.off("mouseup",h.destroy),e.off("change",h.destroy)},e.keyBinding.addKeyboardHandler(m),e.on("changeSelection",h.destroy),e.on("changeSession",h.destroy),e.on("mouseup",h.destroy),e.on("change",h.destroy),e.session.widgetManager.addLineWidget(h),h.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:h.el.offsetHeight})},i.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; }","")}),define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,n){"use strict";e("./lib/fixoldbrowsers");var r=e("./lib/dom"),i=e("./lib/event"),s=e("./editor").Editor,o=e("./edit_session").EditSession,u=e("./undomanager").UndoManager,a=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.require=e,typeof define=="function"&&(t.define=define),t.edit=function(e){if(typeof e=="string"){var n=e;e=document.getElementById(n);if(!e)throw new Error("ace.edit can't find div #"+n)}if(e&&e.env&&e.env.editor instanceof s)return e.env.editor;var o="";if(e&&/input|textarea/i.test(e.tagName)){var u=e;o=u.value,e=r.createElement("pre"),u.parentNode.replaceChild(e,u)}else e&&(o=r.getInnerText(e),e.innerHTML="");var f=t.createEditSession(o),l=new s(new a(e));l.setSession(f);var c={document:f,editor:l,onResize:l.resize.bind(l,null)};return u&&(c.textarea=u),i.addListener(window,"resize",c.onResize),l.on("destroy",function(){i.removeListener(window,"resize",c.onResize),c.editor.container.env=null}),l.container.env=l.env=c,l},t.createEditSession=function(e,t){var n=new o(e,t);return n.setUndoManager(new u),n},t.EditSession=o,t.UndoManager=u,t.version="1.2.6"}); - (function() { - window.require(["ace/ace"], function(a) { - if (a) { - a.config.init(true); - a.define = window.define; - } - if (!window.ace) - window.ace = a; - for (var key in a) if (a.hasOwnProperty(key)) - window.ace[key] = a[key]; - }); - })(); - \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/js_css_src/ace-drafts/ext-searchbox.js b/examples/SmartSwitch/data_src/js_css_src/ace-drafts/ext-searchbox.js deleted file mode 100644 index b38b622..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/ace-drafts/ext-searchbox.js +++ /dev/null @@ -1,5 +0,0 @@ -define("ace/ext/searchbox",["require","exports","module","ace/lib/dom","ace/lib/lang","ace/lib/event","ace/keyboard/hash_handler","ace/lib/keys"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=e("../lib/lang"),s=e("../lib/event"),o=".ace_search {background-color: #ddd;border: 1px solid #cbcbcb;border-top: 0 none;max-width: 325px;overflow: hidden;margin: 0;padding: 4px;padding-right: 6px;padding-bottom: 0;position: absolute;top: 0px;z-index: 99;white-space: normal;}.ace_search.left {border-left: 0 none;border-radius: 0px 0px 5px 0px;left: 0;}.ace_search.right {border-radius: 0px 0px 0px 5px;border-right: 0 none;right: 0;}.ace_search_form, .ace_replace_form {border-radius: 3px;border: 1px solid #cbcbcb;float: left;margin-bottom: 4px;overflow: hidden;}.ace_search_form.ace_nomatch {outline: 1px solid red;}.ace_search_field {background-color: white;color: black;border-right: 1px solid #cbcbcb;border: 0 none;-webkit-box-sizing: border-box;-moz-box-sizing: border-box;box-sizing: border-box;float: left;height: 22px;outline: 0;padding: 0 7px;width: 214px;margin: 0;}.ace_searchbtn,.ace_replacebtn {background: #fff;border: 0 none;border-left: 1px solid #dcdcdc;cursor: pointer;float: left;height: 22px;margin: 0;position: relative;}.ace_searchbtn:last-child,.ace_replacebtn:last-child {border-top-right-radius: 3px;border-bottom-right-radius: 3px;}.ace_searchbtn:disabled {background: none;cursor: default;}.ace_searchbtn {background-position: 50% 50%;background-repeat: no-repeat;width: 27px;}.ace_searchbtn.prev {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADFJREFUeNpiSU1NZUAC/6E0I0yACYskCpsJiySKIiY0SUZk40FyTEgCjGgKwTRAgAEAQJUIPCE+qfkAAAAASUVORK5CYII=); }.ace_searchbtn.next {background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAgAAAAFCAYAAAB4ka1VAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAADRJREFUeNpiTE1NZQCC/0DMyIAKwGJMUAYDEo3M/s+EpvM/mkKwCQxYjIeLMaELoLMBAgwAU7UJObTKsvAAAAAASUVORK5CYII=); }.ace_searchbtn_close {background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAA4AAAAcCAYAAABRVo5BAAAAZ0lEQVR42u2SUQrAMAhDvazn8OjZBilCkYVVxiis8H4CT0VrAJb4WHT3C5xU2a2IQZXJjiQIRMdkEoJ5Q2yMqpfDIo+XY4k6h+YXOyKqTIj5REaxloNAd0xiKmAtsTHqW8sR2W5f7gCu5nWFUpVjZwAAAABJRU5ErkJggg==) no-repeat 50% 0;border-radius: 50%;border: 0 none;color: #656565;cursor: pointer;float: right;font: 16px/16px Arial;height: 14px;margin: 5px 1px 9px 5px;padding: 0;text-align: center;width: 14px;}.ace_searchbtn_close:hover {background-color: #656565;background-position: 50% 100%;color: white;}.ace_replacebtn.prev {width: 54px}.ace_replacebtn.next {width: 27px}.ace_button {margin-left: 2px;cursor: pointer;-webkit-user-select: none;-moz-user-select: none;-o-user-select: none;-ms-user-select: none;user-select: none;overflow: hidden;opacity: 0.7;border: 1px solid rgba(100,100,100,0.23);padding: 1px;-moz-box-sizing: border-box;box-sizing: border-box;color: black;}.ace_button:hover {background-color: #eee;opacity:1;}.ace_button:active {background-color: #ddd;}.ace_button.checked {border-color: #3399ff;opacity:1;}.ace_search_options{margin-bottom: 3px;text-align: right;-webkit-user-select: none;-moz-user-select: none;-o-user-select: none;-ms-user-select: none;user-select: none;}",u=e("../keyboard/hash_handler").HashHandler,a=e("../lib/keys");r.importCssString(o,"ace_searchbox");var f=''.replace(/>\s+/g,">"),l=function(e,t,n){var i=r.createElement("div");i.innerHTML=f,this.element=i.firstChild,this.$init(),this.setEditor(e)};(function(){this.setEditor=function(e){e.searchBox=this,e.container.appendChild(this.element),this.editor=e},this.$initElements=function(e){this.searchBox=e.querySelector(".ace_search_form"),this.replaceBox=e.querySelector(".ace_replace_form"),this.searchOptions=e.querySelector(".ace_search_options"),this.regExpOption=e.querySelector("[action=toggleRegexpMode]"),this.caseSensitiveOption=e.querySelector("[action=toggleCaseSensitive]"),this.wholeWordOption=e.querySelector("[action=toggleWholeWords]"),this.searchInput=this.searchBox.querySelector(".ace_search_field"),this.replaceInput=this.replaceBox.querySelector(".ace_search_field")},this.$init=function(){var e=this.element;this.$initElements(e);var t=this;s.addListener(e,"mousedown",function(e){setTimeout(function(){t.activeInput.focus()},0),s.stopPropagation(e)}),s.addListener(e,"click",function(e){var n=e.target||e.srcElement,r=n.getAttribute("action");r&&t[r]?t[r]():t.$searchBarKb.commands[r]&&t.$searchBarKb.commands[r].exec(t),s.stopPropagation(e)}),s.addCommandKeyListener(e,function(e,n,r){var i=a.keyCodeToString(r),o=t.$searchBarKb.findKeyCommand(n,i);o&&o.exec&&(o.exec(t),s.stopEvent(e))}),this.$onChange=i.delayedCall(function(){t.find(!1,!1)}),s.addListener(this.searchInput,"input",function(){t.$onChange.schedule(20)}),s.addListener(this.searchInput,"focus",function(){t.activeInput=t.searchInput,t.searchInput.value&&t.highlight()}),s.addListener(this.replaceInput,"focus",function(){t.activeInput=t.replaceInput,t.searchInput.value&&t.highlight()})},this.$closeSearchBarKb=new u([{bindKey:"Esc",name:"closeSearchBar",exec:function(e){e.searchBox.hide()}}]),this.$searchBarKb=new u,this.$searchBarKb.bindKeys({"Ctrl-f|Command-f":function(e){var t=e.isReplace=!e.isReplace;e.replaceBox.style.display=t?"":"none",e.searchInput.focus()},"Ctrl-H|Command-Option-F":function(e){e.replaceBox.style.display="",e.replaceInput.focus()},"Ctrl-G|Command-G":function(e){e.findNext()},"Ctrl-Shift-G|Command-Shift-G":function(e){e.findPrev()},esc:function(e){setTimeout(function(){e.hide()})},Return:function(e){e.activeInput==e.replaceInput&&e.replace(),e.findNext()},"Shift-Return":function(e){e.activeInput==e.replaceInput&&e.replace(),e.findPrev()},"Alt-Return":function(e){e.activeInput==e.replaceInput&&e.replaceAll(),e.findAll()},Tab:function(e){(e.activeInput==e.replaceInput?e.searchInput:e.replaceInput).focus()}}),this.$searchBarKb.addCommands([{name:"toggleRegexpMode",bindKey:{win:"Alt-R|Alt-/",mac:"Ctrl-Alt-R|Ctrl-Alt-/"},exec:function(e){e.regExpOption.checked=!e.regExpOption.checked,e.$syncOptions()}},{name:"toggleCaseSensitive",bindKey:{win:"Alt-C|Alt-I",mac:"Ctrl-Alt-R|Ctrl-Alt-I"},exec:function(e){e.caseSensitiveOption.checked=!e.caseSensitiveOption.checked,e.$syncOptions()}},{name:"toggleWholeWords",bindKey:{win:"Alt-B|Alt-W",mac:"Ctrl-Alt-B|Ctrl-Alt-W"},exec:function(e){e.wholeWordOption.checked=!e.wholeWordOption.checked,e.$syncOptions()}}]),this.$syncOptions=function(){r.setCssClass(this.regExpOption,"checked",this.regExpOption.checked),r.setCssClass(this.wholeWordOption,"checked",this.wholeWordOption.checked),r.setCssClass(this.caseSensitiveOption,"checked",this.caseSensitiveOption.checked),this.find(!1,!1)},this.highlight=function(e){this.editor.session.highlight(e||this.editor.$search.$options.re),this.editor.renderer.updateBackMarkers()},this.find=function(e,t,n){var i=this.editor.find(this.searchInput.value,{skipCurrent:e,backwards:t,wrap:!0,regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked,preventScroll:n}),s=!i&&this.searchInput.value;r.setCssClass(this.searchBox,"ace_nomatch",s),this.editor._emit("findSearchBox",{match:!s}),this.highlight()},this.findNext=function(){this.find(!0,!1)},this.findPrev=function(){this.find(!0,!0)},this.findAll=function(){var e=this.editor.findAll(this.searchInput.value,{regExp:this.regExpOption.checked,caseSensitive:this.caseSensitiveOption.checked,wholeWord:this.wholeWordOption.checked}),t=!e&&this.searchInput.value;r.setCssClass(this.searchBox,"ace_nomatch",t),this.editor._emit("findSearchBox",{match:!t}),this.highlight(),this.hide()},this.replace=function(){this.editor.getReadOnly()||this.editor.replace(this.replaceInput.value)},this.replaceAndFindNext=function(){this.editor.getReadOnly()||(this.editor.replace(this.replaceInput.value),this.findNext())},this.replaceAll=function(){this.editor.getReadOnly()||this.editor.replaceAll(this.replaceInput.value)},this.hide=function(){this.element.style.display="none",this.editor.keyBinding.removeKeyboardHandler(this.$closeSearchBarKb),this.editor.focus()},this.show=function(e,t){this.element.style.display="",this.replaceBox.style.display=t?"":"none",this.isReplace=t,e&&(this.searchInput.value=e),this.find(!1,!1,!0),this.searchInput.focus(),this.searchInput.select(),this.editor.keyBinding.addKeyboardHandler(this.$closeSearchBarKb)},this.isFocused=function(){var e=document.activeElement;return e==this.searchInput||e==this.replaceInput}}).call(l.prototype),t.SearchBox=l,t.Search=function(e,t){var n=e.searchBox||new l(e);n.show(e.session.getTextRange(),t)}}); - (function() { - window.require(["ace/ext/searchbox"], function() {}); - })(); - \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/js_css_src/ace-drafts/mode-css.js b/examples/SmartSwitch/data_src/js_css_src/ace-drafts/mode-css.js deleted file mode 100644 index b41ecdc..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/ace-drafts/mode-css.js +++ /dev/null @@ -1 +0,0 @@ -define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(e==="ruleset"){var s=t.getLine(n.row).substr(0,n.column);return/:[^;]+$/.test(s)?(/([\w\-]+):[^:]*$/.test(s),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r)}return[]},this.getPropertyCompletions=function(e,t,n,i){var s=Object.keys(r);return s.map(function(e){return{caption:e,snippet:e+": $0",meta:"property",score:Number.MAX_VALUE}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:Number.MAX_VALUE}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(c.prototype),t.Mode=c}) \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/js_css_src/ace-drafts/mode-html.js b/examples/SmartSwitch/data_src/js_css_src/ace-drafts/mode-html.js deleted file mode 100644 index faee447..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/ace-drafts/mode-html.js +++ /dev/null @@ -1 +0,0 @@ -define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(l.prototype),t.Mode=l}),define("ace/mode/css_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text_highlight_rules").TextHighlightRules,o=t.supportType="align-content|align-items|align-self|all|animation|animation-delay|animation-direction|animation-duration|animation-fill-mode|animation-iteration-count|animation-name|animation-play-state|animation-timing-function|backface-visibility|background|background-attachment|background-blend-mode|background-clip|background-color|background-image|background-origin|background-position|background-repeat|background-size|border|border-bottom|border-bottom-color|border-bottom-left-radius|border-bottom-right-radius|border-bottom-style|border-bottom-width|border-collapse|border-color|border-image|border-image-outset|border-image-repeat|border-image-slice|border-image-source|border-image-width|border-left|border-left-color|border-left-style|border-left-width|border-radius|border-right|border-right-color|border-right-style|border-right-width|border-spacing|border-style|border-top|border-top-color|border-top-left-radius|border-top-right-radius|border-top-style|border-top-width|border-width|bottom|box-shadow|box-sizing|caption-side|clear|clip|color|column-count|column-fill|column-gap|column-rule|column-rule-color|column-rule-style|column-rule-width|column-span|column-width|columns|content|counter-increment|counter-reset|cursor|direction|display|empty-cells|filter|flex|flex-basis|flex-direction|flex-flow|flex-grow|flex-shrink|flex-wrap|float|font|font-family|font-size|font-size-adjust|font-stretch|font-style|font-variant|font-weight|hanging-punctuation|height|justify-content|left|letter-spacing|line-height|list-style|list-style-image|list-style-position|list-style-type|margin|margin-bottom|margin-left|margin-right|margin-top|max-height|max-width|min-height|min-width|nav-down|nav-index|nav-left|nav-right|nav-up|opacity|order|outline|outline-color|outline-offset|outline-style|outline-width|overflow|overflow-x|overflow-y|padding|padding-bottom|padding-left|padding-right|padding-top|page-break-after|page-break-before|page-break-inside|perspective|perspective-origin|position|quotes|resize|right|tab-size|table-layout|text-align|text-align-last|text-decoration|text-decoration-color|text-decoration-line|text-decoration-style|text-indent|text-justify|text-overflow|text-shadow|text-transform|top|transform|transform-origin|transform-style|transition|transition-delay|transition-duration|transition-property|transition-timing-function|unicode-bidi|vertical-align|visibility|white-space|width|word-break|word-spacing|word-wrap|z-index",u=t.supportFunction="rgb|rgba|url|attr|counter|counters",a=t.supportConstant="absolute|after-edge|after|all-scroll|all|alphabetic|always|antialiased|armenian|auto|avoid-column|avoid-page|avoid|balance|baseline|before-edge|before|below|bidi-override|block-line-height|block|bold|bolder|border-box|both|bottom|box|break-all|break-word|capitalize|caps-height|caption|center|central|char|circle|cjk-ideographic|clone|close-quote|col-resize|collapse|column|consider-shifts|contain|content-box|cover|crosshair|cubic-bezier|dashed|decimal-leading-zero|decimal|default|disabled|disc|disregard-shifts|distribute-all-lines|distribute-letter|distribute-space|distribute|dotted|double|e-resize|ease-in|ease-in-out|ease-out|ease|ellipsis|end|exclude-ruby|fill|fixed|georgian|glyphs|grid-height|groove|hand|hanging|hebrew|help|hidden|hiragana-iroha|hiragana|horizontal|icon|ideograph-alpha|ideograph-numeric|ideograph-parenthesis|ideograph-space|ideographic|inactive|include-ruby|inherit|initial|inline-block|inline-box|inline-line-height|inline-table|inline|inset|inside|inter-ideograph|inter-word|invert|italic|justify|katakana-iroha|katakana|keep-all|last|left|lighter|line-edge|line-through|line|linear|list-item|local|loose|lower-alpha|lower-greek|lower-latin|lower-roman|lowercase|lr-tb|ltr|mathematical|max-height|max-size|medium|menu|message-box|middle|move|n-resize|ne-resize|newspaper|no-change|no-close-quote|no-drop|no-open-quote|no-repeat|none|normal|not-allowed|nowrap|nw-resize|oblique|open-quote|outset|outside|overline|padding-box|page|pointer|pre-line|pre-wrap|pre|preserve-3d|progress|relative|repeat-x|repeat-y|repeat|replaced|reset-size|ridge|right|round|row-resize|rtl|s-resize|scroll|se-resize|separate|slice|small-caps|small-caption|solid|space|square|start|static|status-bar|step-end|step-start|steps|stretch|strict|sub|super|sw-resize|table-caption|table-cell|table-column-group|table-column|table-footer-group|table-header-group|table-row-group|table-row|table|tb-rl|text-after-edge|text-before-edge|text-bottom|text-size|text-top|text|thick|thin|transparent|underline|upper-alpha|upper-latin|upper-roman|uppercase|use-script|vertical-ideographic|vertical-text|visible|w-resize|wait|whitespace|z-index|zero",f=t.supportConstantColor="aqua|black|blue|fuchsia|gray|green|lime|maroon|navy|olive|orange|purple|red|silver|teal|white|yellow",l=t.supportConstantFonts="arial|century|comic|courier|cursive|fantasy|garamond|georgia|helvetica|impact|lucida|symbol|system|tahoma|times|trebuchet|utopia|verdana|webdings|sans-serif|serif|monospace",c=t.numRe="\\-?(?:(?:[0-9]+)|(?:[0-9]*\\.[0-9]+))",h=t.pseudoElements="(\\:+)\\b(after|before|first-letter|first-line|moz-selection|selection)\\b",p=t.pseudoClasses="(:)\\b(active|checked|disabled|empty|enabled|first-child|first-of-type|focus|hover|indeterminate|invalid|last-child|last-of-type|link|not|nth-child|nth-last-child|nth-last-of-type|nth-of-type|only-child|only-of-type|required|root|target|valid|visited)\\b",d=function(){var e=this.createKeywordMapper({"support.function":u,"support.constant":a,"support.type":o,"support.constant.color":f,"support.constant.fonts":l},"text",!0);this.$rules={start:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"@.*?{",push:"media"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],media:[{token:"comment",regex:"\\/\\*",push:"comment"},{token:"paren.lparen",regex:"\\{",push:"ruleset"},{token:"string",regex:"\\}",next:"pop"},{token:"keyword",regex:"#[a-z0-9-_]+"},{token:"variable",regex:"\\.[a-z0-9-_]+"},{token:"string",regex:":[a-z0-9-_]+"},{token:"constant",regex:"[a-z0-9-_]+"},{caseInsensitive:!0}],comment:[{token:"comment",regex:"\\*\\/",next:"pop"},{defaultToken:"comment"}],ruleset:[{token:"paren.rparen",regex:"\\}",next:"pop"},{token:"comment",regex:"\\/\\*",push:"comment"},{token:"string",regex:'["](?:(?:\\\\.)|(?:[^"\\\\]))*?["]'},{token:"string",regex:"['](?:(?:\\\\.)|(?:[^'\\\\]))*?[']"},{token:["constant.numeric","keyword"],regex:"("+c+")(ch|cm|deg|em|ex|fr|gd|grad|Hz|in|kHz|mm|ms|pc|pt|px|rad|rem|s|turn|vh|vm|vw|%)"},{token:"constant.numeric",regex:c},{token:"constant.numeric",regex:"#[a-f0-9]{6}"},{token:"constant.numeric",regex:"#[a-f0-9]{3}"},{token:["punctuation","entity.other.attribute-name.pseudo-element.css"],regex:h},{token:["punctuation","entity.other.attribute-name.pseudo-class.css"],regex:p},{token:["support.function","string","support.function"],regex:"(url\\()(.*)(\\))"},{token:e,regex:"\\-?[a-zA-Z_][a-zA-Z0-9_\\-]*"},{caseInsensitive:!0}]},this.normalizeRules()};r.inherits(d,s),t.CssHighlightRules=d}),define("ace/mode/css_completions",["require","exports","module"],function(e,t,n){"use strict";var r={background:{"#$0":1},"background-color":{"#$0":1,transparent:1,fixed:1},"background-image":{"url('/$0')":1},"background-repeat":{repeat:1,"repeat-x":1,"repeat-y":1,"no-repeat":1,inherit:1},"background-position":{bottom:2,center:2,left:2,right:2,top:2,inherit:2},"background-attachment":{scroll:1,fixed:1},"background-size":{cover:1,contain:1},"background-clip":{"border-box":1,"padding-box":1,"content-box":1},"background-origin":{"border-box":1,"padding-box":1,"content-box":1},border:{"solid $0":1,"dashed $0":1,"dotted $0":1,"#$0":1},"border-color":{"#$0":1},"border-style":{solid:2,dashed:2,dotted:2,"double":2,groove:2,hidden:2,inherit:2,inset:2,none:2,outset:2,ridged:2},"border-collapse":{collapse:1,separate:1},bottom:{px:1,em:1,"%":1},clear:{left:1,right:1,both:1,none:1},color:{"#$0":1,"rgb(#$00,0,0)":1},cursor:{"default":1,pointer:1,move:1,text:1,wait:1,help:1,progress:1,"n-resize":1,"ne-resize":1,"e-resize":1,"se-resize":1,"s-resize":1,"sw-resize":1,"w-resize":1,"nw-resize":1},display:{none:1,block:1,inline:1,"inline-block":1,"table-cell":1},"empty-cells":{show:1,hide:1},"float":{left:1,right:1,none:1},"font-family":{Arial:2,"Comic Sans MS":2,Consolas:2,"Courier New":2,Courier:2,Georgia:2,Monospace:2,"Sans-Serif":2,"Segoe UI":2,Tahoma:2,"Times New Roman":2,"Trebuchet MS":2,Verdana:1},"font-size":{px:1,em:1,"%":1},"font-weight":{bold:1,normal:1},"font-style":{italic:1,normal:1},"font-variant":{normal:1,"small-caps":1},height:{px:1,em:1,"%":1},left:{px:1,em:1,"%":1},"letter-spacing":{normal:1},"line-height":{normal:1},"list-style-type":{none:1,disc:1,circle:1,square:1,decimal:1,"decimal-leading-zero":1,"lower-roman":1,"upper-roman":1,"lower-greek":1,"lower-latin":1,"upper-latin":1,georgian:1,"lower-alpha":1,"upper-alpha":1},margin:{px:1,em:1,"%":1},"margin-right":{px:1,em:1,"%":1},"margin-left":{px:1,em:1,"%":1},"margin-top":{px:1,em:1,"%":1},"margin-bottom":{px:1,em:1,"%":1},"max-height":{px:1,em:1,"%":1},"max-width":{px:1,em:1,"%":1},"min-height":{px:1,em:1,"%":1},"min-width":{px:1,em:1,"%":1},overflow:{hidden:1,visible:1,auto:1,scroll:1},"overflow-x":{hidden:1,visible:1,auto:1,scroll:1},"overflow-y":{hidden:1,visible:1,auto:1,scroll:1},padding:{px:1,em:1,"%":1},"padding-top":{px:1,em:1,"%":1},"padding-right":{px:1,em:1,"%":1},"padding-bottom":{px:1,em:1,"%":1},"padding-left":{px:1,em:1,"%":1},"page-break-after":{auto:1,always:1,avoid:1,left:1,right:1},"page-break-before":{auto:1,always:1,avoid:1,left:1,right:1},position:{absolute:1,relative:1,fixed:1,"static":1},right:{px:1,em:1,"%":1},"table-layout":{fixed:1,auto:1},"text-decoration":{none:1,underline:1,"line-through":1,blink:1},"text-align":{left:1,right:1,center:1,justify:1},"text-transform":{capitalize:1,uppercase:1,lowercase:1,none:1},top:{px:1,em:1,"%":1},"vertical-align":{top:1,bottom:1},visibility:{hidden:1,visible:1},"white-space":{nowrap:1,normal:1,pre:1,"pre-line":1,"pre-wrap":1},width:{px:1,em:1,"%":1},"word-spacing":{normal:1},filter:{"alpha(opacity=$0100)":1},"text-shadow":{"$02px 2px 2px #777":1},"text-overflow":{"ellipsis-word":1,clip:1,ellipsis:1},"-moz-border-radius":1,"-moz-border-radius-topright":1,"-moz-border-radius-bottomright":1,"-moz-border-radius-topleft":1,"-moz-border-radius-bottomleft":1,"-webkit-border-radius":1,"-webkit-border-top-right-radius":1,"-webkit-border-top-left-radius":1,"-webkit-border-bottom-right-radius":1,"-webkit-border-bottom-left-radius":1,"-moz-box-shadow":1,"-webkit-box-shadow":1,transform:{"rotate($00deg)":1,"skew($00deg)":1},"-moz-transform":{"rotate($00deg)":1,"skew($00deg)":1},"-webkit-transform":{"rotate($00deg)":1,"skew($00deg)":1}},i=function(){};(function(){this.completionsDefined=!1,this.defineCompletions=function(){if(document){var e=document.createElement("c").style;for(var t in e){if(typeof e[t]!="string")continue;var n=t.replace(/[A-Z]/g,function(e){return"-"+e.toLowerCase()});r.hasOwnProperty(n)||(r[n]=1)}}this.completionsDefined=!0},this.getCompletions=function(e,t,n,r){this.completionsDefined||this.defineCompletions();var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(e==="ruleset"){var s=t.getLine(n.row).substr(0,n.column);return/:[^;]+$/.test(s)?(/([\w\-]+):[^:]*$/.test(s),this.getPropertyValueCompletions(e,t,n,r)):this.getPropertyCompletions(e,t,n,r)}return[]},this.getPropertyCompletions=function(e,t,n,i){var s=Object.keys(r);return s.map(function(e){return{caption:e,snippet:e+": $0",meta:"property",score:Number.MAX_VALUE}})},this.getPropertyValueCompletions=function(e,t,n,i){var s=t.getLine(n.row).substr(0,n.column),o=(/([\w\-]+):[^:]*$/.exec(s)||{})[1];if(!o)return[];var u=[];return o in r&&typeof r[o]=="object"&&(u=Object.keys(r[o])),u.map(function(e){return{caption:e,snippet:e,meta:"property value",score:Number.MAX_VALUE}})}}).call(i.prototype),t.CssCompletions=i}),define("ace/mode/behaviour/css",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/mode/behaviour/cstyle","ace/token_iterator"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("./cstyle").CstyleBehaviour,o=e("../../token_iterator").TokenIterator,u=function(){this.inherit(s),this.add("colon","insertion",function(e,t,n,r,i){if(i===":"){var s=n.getCursorPosition(),u=new o(r,s.row,s.column),a=u.getCurrentToken();a&&a.value.match(/\s+/)&&(a=u.stepBackward());if(a&&a.type==="support.type"){var f=r.doc.getLine(s.row),l=f.substring(s.column,s.column+1);if(l===":")return{text:"",selection:[1,1]};if(!f.substring(s.column).match(/^\s*;/))return{text:":;",selection:[1,1]}}}}),this.add("colon","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s===":"){var u=n.getCursorPosition(),a=new o(r,u.row,u.column),f=a.getCurrentToken();f&&f.value.match(/\s+/)&&(f=a.stepBackward());if(f&&f.type==="support.type"){var l=r.doc.getLine(i.start.row),c=l.substring(i.end.column,i.end.column+1);if(c===";")return i.end.column++,i}}}),this.add("semicolon","insertion",function(e,t,n,r,i){if(i===";"){var s=n.getCursorPosition(),o=r.doc.getLine(s.row),u=o.substring(s.column,s.column+1);if(u===";")return{text:"",selection:[1,1]}}})};r.inherits(u,s),t.CssBehaviour=u}),define("ace/mode/css",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/css_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/css_completions","ace/mode/behaviour/css","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./css_highlight_rules").CssHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./css_completions").CssCompletions,f=e("./behaviour/css").CssBehaviour,l=e("./folding/cstyle").FoldMode,c=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new f,this.$completer=new a,this.foldingRules=new l};r.inherits(c,i),function(){this.foldingRules="cStyle",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e).tokens;if(i.length&&i[i.length-1].type=="comment")return r;var s=t.match(/^.*\{\s*$/);return s&&(r+=n),r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/css_worker","Worker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/css"}.call(c.prototype),t.Mode=c}),define("ace/mode/xml_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(e){var t="[_:a-zA-Z\u00c0-\uffff][-_:.a-zA-Z0-9\u00c0-\uffff]*";this.$rules={start:[{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\[",next:"cdata"},{token:["punctuation.xml-decl.xml","keyword.xml-decl.xml"],regex:"(<\\?)(xml)(?=[\\s])",next:"xml_decl",caseInsensitive:!0},{token:["punctuation.instruction.xml","keyword.instruction.xml"],regex:"(<\\?)("+t+")",next:"processing_instruction"},{token:"comment.xml",regex:"<\\!--",next:"comment"},{token:["xml-pe.doctype.xml","xml-pe.doctype.xml"],regex:"(<\\!)(DOCTYPE)(?=[\\s])",next:"doctype",caseInsensitive:!0},{include:"tag"},{token:"text.end-tag-open.xml",regex:"",next:"start"}],processing_instruction:[{token:"punctuation.instruction.xml",regex:"\\?>",next:"start"},{defaultToken:"instruction.xml"}],doctype:[{include:"whitespace"},{include:"string"},{token:"xml-pe.doctype.xml",regex:">",next:"start"},{token:"xml-pe.xml",regex:"[-_a-zA-Z0-9:]+"},{token:"punctuation.int-subset",regex:"\\[",push:"int_subset"}],int_subset:[{token:"text.xml",regex:"\\s+"},{token:"punctuation.int-subset.xml",regex:"]",next:"pop"},{token:["punctuation.markup-decl.xml","keyword.markup-decl.xml"],regex:"(<\\!)("+t+")",push:[{token:"text",regex:"\\s+"},{token:"punctuation.markup-decl.xml",regex:">",next:"pop"},{include:"string"}]}],cdata:[{token:"string.cdata.xml",regex:"\\]\\]>",next:"start"},{token:"text.xml",regex:"\\s+"},{token:"text.xml",regex:"(?:[^\\]]|\\](?!\\]>))+"}],comment:[{token:"comment.xml",regex:"-->",next:"start"},{defaultToken:"comment.xml"}],reference:[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],attr_reference:[{token:"constant.language.escape.reference.attribute-value.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}],tag:[{token:["meta.tag.punctuation.tag-open.xml","meta.tag.punctuation.end-tag-open.xml","meta.tag.tag-name.xml"],regex:"(?:(<)|(",next:"start"}]}],tag_whitespace:[{token:"text.tag-whitespace.xml",regex:"\\s+"}],whitespace:[{token:"text.whitespace.xml",regex:"\\s+"}],string:[{token:"string.xml",regex:"'",push:[{token:"string.xml",regex:"'",next:"pop"},{defaultToken:"string.xml"}]},{token:"string.xml",regex:'"',push:[{token:"string.xml",regex:'"',next:"pop"},{defaultToken:"string.xml"}]}],attributes:[{token:"entity.other.attribute-name.xml",regex:"(?:"+t+":)?"+t+""},{token:"keyword.operator.attribute-equals.xml",regex:"="},{include:"tag_whitespace"},{include:"attribute_value"}],attribute_value:[{token:"string.attribute-value.xml",regex:"'",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"attr_reference"},{defaultToken:"string.attribute-value.xml"}]}]},this.constructor===s&&this.normalizeRules()};(function(){this.embedTagRules=function(e,t,n){this.$rules.tag.unshift({token:["meta.tag.punctuation.tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(<)("+n+"(?=\\s|>|$))",next:[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:t+"start"}]}),this.$rules[n+"-end"]=[{include:"attributes"},{token:"meta.tag.punctuation.tag-close.xml",regex:"/?>",next:"start",onMatch:function(e,t,n){return n.splice(0),this.token}}],this.embedRules(e,t,[{token:["meta.tag.punctuation.end-tag-open.xml","meta.tag."+n+".tag-name.xml"],regex:"(|$))",next:n+"-end"},{token:"string.cdata.xml",regex:"<\\!\\[CDATA\\["},{token:"string.cdata.xml",regex:"\\]\\]>"}])}}).call(i.prototype),r.inherits(s,i),t.XmlHighlightRules=s}),define("ace/mode/html_highlight_rules",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/css_highlight_rules","ace/mode/javascript_highlight_rules","ace/mode/xml_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./css_highlight_rules").CssHighlightRules,o=e("./javascript_highlight_rules").JavaScriptHighlightRules,u=e("./xml_highlight_rules").XmlHighlightRules,a=i.createMap({a:"anchor",button:"form",form:"form",img:"image",input:"form",label:"form",option:"form",script:"script",select:"form",textarea:"form",style:"style",table:"table",tbody:"table",td:"table",tfoot:"table",th:"table",tr:"table"}),f=function(){u.call(this),this.addRules({attributes:[{include:"tag_whitespace"},{token:"entity.other.attribute-name.xml",regex:"[-_a-zA-Z0-9:.]+"},{token:"keyword.operator.attribute-equals.xml",regex:"=",push:[{include:"tag_whitespace"},{token:"string.unquoted.attribute-value.html",regex:"[^<>='\"`\\s]+",next:"pop"},{token:"empty",regex:"",next:"pop"}]},{include:"attribute_value"}],tag:[{token:function(e,t){var n=a[t];return["meta.tag.punctuation."+(e=="<"?"":"end-")+"tag-open.xml","meta.tag"+(n?"."+n:"")+".tag-name.xml"]},regex:"(",next:"start"}]}),this.embedTagRules(s,"css-","style"),this.embedTagRules((new o({jsx:!1})).getRules(),"js-","script"),this.constructor===f&&this.normalizeRules()};r.inherits(f,u),t.HtmlHighlightRules=f}),define("ace/mode/behaviour/xml",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";function u(e,t){return e.type.lastIndexOf(t+".xml")>-1}var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),a=function(){this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){var o=i,a=r.doc.getTextRange(n.getSelectionRange());if(a!==""&&a!=="'"&&a!='"'&&n.getWrapBehavioursEnabled())return{text:o+a+o,selection:!1};var f=n.getCursorPosition(),l=r.doc.getLine(f.row),c=l.substring(f.column,f.column+1),h=new s(r,f.row,f.column),p=h.getCurrentToken();if(c==o&&(u(p,"attribute-value")||u(p,"string")))return{text:"",selection:[1,1]};p||(p=h.stepBackward());if(!p)return;while(u(p,"tag-whitespace")||u(p,"whitespace"))p=h.stepBackward();var d=!c||c.match(/\s/);if(u(p,"attribute-equals")&&(d||c==">")||u(p,"decl-attribute-equals")&&(d||c=="?"))return{text:o+o,selection:[1,1]}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}}),this.add("autoclosing","insertion",function(e,t,n,r,i){if(i==">"){var o=n.getSelectionRange().start,a=new s(r,o.row,o.column),f=a.getCurrentToken()||a.stepBackward();if(!f||!(u(f,"tag-name")||u(f,"tag-whitespace")||u(f,"attribute-name")||u(f,"attribute-equals")||u(f,"attribute-value")))return;if(u(f,"reference.attribute-value"))return;if(u(f,"attribute-value")){var l=f.value.charAt(0);if(l=='"'||l=="'"){var c=f.value.charAt(f.value.length-1),h=a.getCurrentTokenColumn()+f.value.length;if(h>o.column||h==o.column&&l!=c)return}}while(!u(f,"tag-name")){f=a.stepBackward();if(f.value=="<"){f=a.stepForward();break}}var p=a.getCurrentTokenRow(),d=a.getCurrentTokenColumn();if(u(a.stepBackward(),"end-tag-open"))return;var v=f.value;p==o.row&&(v=v.substring(0,o.column-d));if(this.voidElements.hasOwnProperty(v.toLowerCase()))return;return{text:">",selection:[1,1]}}}),this.add("autoindent","insertion",function(e,t,n,r,i){if(i=="\n"){var o=n.getCursorPosition(),u=r.getLine(o.row),a=new s(r,o.row,o.column),f=a.getCurrentToken();if(f&&f.type.indexOf("tag-close")!==-1){if(f.value=="/>")return;while(f&&f.type.indexOf("tag-name")===-1)f=a.stepBackward();if(!f)return;var l=f.value,c=a.getCurrentTokenRow();f=a.stepBackward();if(!f||f.type.indexOf("end-tag")!==-1)return;if(this.voidElements&&!this.voidElements[l]){var h=r.getTokenAt(o.row,o.column+1),u=r.getLine(c),p=this.$getIndent(u),d=p+r.getTabString();return h&&h.value==="-1}var r=e("../../lib/oop"),i=e("../../lib/lang"),s=e("../../range").Range,o=e("./fold_mode").FoldMode,u=e("../../token_iterator").TokenIterator,a=t.FoldMode=function(e,t){o.call(this),this.voidElements=e||{},this.optionalEndTags=r.mixin({},this.voidElements),t&&r.mixin(this.optionalEndTags,t)};r.inherits(a,o);var f=function(){this.tagName="",this.closing=!1,this.selfClosing=!1,this.start={row:0,column:0},this.end={row:0,column:0}};(function(){this.getFoldWidget=function(e,t,n){var r=this._getFirstTagInLine(e,n);return r?r.closing||!r.tagName&&r.selfClosing?t=="markbeginend"?"end":"":!r.tagName||r.selfClosing||this.voidElements.hasOwnProperty(r.tagName.toLowerCase())?"":this._findEndTagInLine(e,n,r.tagName,r.end.column)?"":"start":""},this._getFirstTagInLine=function(e,t){var n=e.getTokens(t),r=new f;for(var i=0;i";break}}return r}if(l(s,"tag-close"))return r.selfClosing=s.value=="/>",r;r.start.column+=s.value.length}return null},this._findEndTagInLine=function(e,t,n,r){var i=e.getTokens(t),s=0;for(var o=0;o",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length,e.stepForward(),n;while(t=e.stepForward());return null},this._readTagBackward=function(e){var t=e.getCurrentToken();if(!t)return null;var n=new f;do{if(l(t,"tag-open"))return n.closing=l(t,"end-tag-open"),n.start.row=e.getCurrentTokenRow(),n.start.column=e.getCurrentTokenColumn(),e.stepBackward(),n;l(t,"tag-name")?n.tagName=t.value:l(t,"tag-close")&&(n.selfClosing=t.value=="/>",n.end.row=e.getCurrentTokenRow(),n.end.column=e.getCurrentTokenColumn()+t.value.length)}while(t=e.stepBackward());return null},this._pop=function(e,t){while(e.length){var n=e[e.length-1];if(!t||n.tagName==t.tagName)return e.pop();if(this.optionalEndTags.hasOwnProperty(n.tagName)){e.pop();continue}return null}},this.getFoldWidgetRange=function(e,t,n){var r=this._getFirstTagInLine(e,n);if(!r)return null;var i=r.closing||r.selfClosing,o=[],a;if(!i){var f=new u(e,n,r.start.column),l={row:n,column:r.start.column+r.tagName.length+2};r.start.row==r.end.row&&(l.column=r.end.column);while(a=this._readTagForward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(a.closing){this._pop(o,a);if(o.length==0)return s.fromPoints(l,a.start)}else o.push(a)}}else{var f=new u(e,n,r.end.column),c={row:n,column:r.start.column};while(a=this._readTagBackward(f)){if(a.selfClosing){if(!o.length)return a.start.column+=a.tagName.length+2,a.end.column-=2,s.fromPoints(a.start,a.end);continue}if(!a.closing){this._pop(o,a);if(o.length==0)return a.start.column+=a.tagName.length+2,a.start.row==a.end.row&&a.start.column-1}function l(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"tag-name"))i=n.stepBackward();if(i)return i.value}function c(e,t){var n=new r(e,t.row,t.column),i=n.getCurrentToken();while(i&&!f(i,"attribute-name"))i=n.stepBackward();if(i)return i.value}var r=e("../token_iterator").TokenIterator,i=["accesskey","class","contenteditable","contextmenu","dir","draggable","dropzone","hidden","id","inert","itemid","itemprop","itemref","itemscope","itemtype","lang","spellcheck","style","tabindex","title","translate"],s=["onabort","onblur","oncancel","oncanplay","oncanplaythrough","onchange","onclick","onclose","oncontextmenu","oncuechange","ondblclick","ondrag","ondragend","ondragenter","ondragleave","ondragover","ondragstart","ondrop","ondurationchange","onemptied","onended","onerror","onfocus","oninput","oninvalid","onkeydown","onkeypress","onkeyup","onload","onloadeddata","onloadedmetadata","onloadstart","onmousedown","onmousemove","onmouseout","onmouseover","onmouseup","onmousewheel","onpause","onplay","onplaying","onprogress","onratechange","onreset","onscroll","onseeked","onseeking","onselect","onshow","onstalled","onsubmit","onsuspend","ontimeupdate","onvolumechange","onwaiting"],o=i.concat(s),u={html:{manifest:1},head:{},title:{},base:{href:1,target:1},link:{href:1,hreflang:1,rel:{stylesheet:1,icon:1},media:{all:1,screen:1,print:1},type:{"text/css":1,"image/png":1,"image/jpeg":1,"image/gif":1},sizes:1},meta:{"http-equiv":{"content-type":1},name:{description:1,keywords:1},content:{"text/html; charset=UTF-8":1},charset:1},style:{type:1,media:{all:1,screen:1,print:1},scoped:1},script:{charset:1,type:{"text/javascript":1},src:1,defer:1,async:1},noscript:{href:1},body:{onafterprint:1,onbeforeprint:1,onbeforeunload:1,onhashchange:1,onmessage:1,onoffline:1,onpopstate:1,onredo:1,onresize:1,onstorage:1,onundo:1,onunload:1},section:{},nav:{},article:{pubdate:1},aside:{},h1:{},h2:{},h3:{},h4:{},h5:{},h6:{},header:{},footer:{},address:{},main:{},p:{},hr:{},pre:{},blockquote:{cite:1},ol:{start:1,reversed:1},ul:{},li:{value:1},dl:{},dt:{},dd:{},figure:{},figcaption:{},div:{},a:{href:1,target:{_blank:1,top:1},ping:1,rel:{nofollow:1,alternate:1,author:1,bookmark:1,help:1,license:1,next:1,noreferrer:1,prefetch:1,prev:1,search:1,tag:1},media:1,hreflang:1,type:1},em:{},strong:{},small:{},s:{},cite:{},q:{cite:1},dfn:{},abbr:{},data:{},time:{datetime:1},code:{},"var":{},samp:{},kbd:{},sub:{},sup:{},i:{},b:{},u:{},mark:{},ruby:{},rt:{},rp:{},bdi:{},bdo:{},span:{},br:{},wbr:{},ins:{cite:1,datetime:1},del:{cite:1,datetime:1},img:{alt:1,src:1,height:1,width:1,usemap:1,ismap:1},iframe:{name:1,src:1,height:1,width:1,sandbox:{"allow-same-origin":1,"allow-top-navigation":1,"allow-forms":1,"allow-scripts":1},seamless:{seamless:1}},embed:{src:1,height:1,width:1,type:1},object:{param:1,data:1,type:1,height:1,width:1,usemap:1,name:1,form:1,classid:1},param:{name:1,value:1},video:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},width:1,height:1,poster:1,muted:{muted:1},preload:{auto:1,metadata:1,none:1}},audio:{src:1,autobuffer:1,autoplay:{autoplay:1},loop:{loop:1},controls:{controls:1},muted:{muted:1},preload:{auto:1,metadata:1,none:1}},source:{src:1,type:1,media:1},track:{kind:1,src:1,srclang:1,label:1,"default":1},canvas:{width:1,height:1},map:{name:1},area:{shape:1,coords:1,href:1,hreflang:1,alt:1,target:1,media:1,rel:1,ping:1,type:1},svg:{},math:{},table:{summary:1},caption:{},colgroup:{span:1},col:{span:1},tbody:{},thead:{},tfoot:{},tr:{},td:{headers:1,rowspan:1,colspan:1},th:{headers:1,rowspan:1,colspan:1,scope:1},form:{"accept-charset":1,action:1,autocomplete:1,enctype:{"multipart/form-data":1,"application/x-www-form-urlencoded":1},method:{get:1,post:1},name:1,novalidate:1,target:{_blank:1,top:1}},fieldset:{disabled:1,form:1,name:1},legend:{},label:{form:1,"for":1},input:{type:{text:1,password:1,hidden:1,checkbox:1,submit:1,radio:1,file:1,button:1,reset:1,image:31,color:1,date:1,datetime:1,"datetime-local":1,email:1,month:1,number:1,range:1,search:1,tel:1,time:1,url:1,week:1},accept:1,alt:1,autocomplete:{on:1,off:1},autofocus:{autofocus:1},checked:{checked:1},disabled:{disabled:1},form:1,formaction:1,formenctype:{"application/x-www-form-urlencoded":1,"multipart/form-data":1,"text/plain":1},formmethod:{get:1,post:1},formnovalidate:{formnovalidate:1},formtarget:{_blank:1,_self:1,_parent:1,_top:1},height:1,list:1,max:1,maxlength:1,min:1,multiple:{multiple:1},name:1,pattern:1,placeholder:1,readonly:{readonly:1},required:{required:1},size:1,src:1,step:1,width:1,files:1,value:1},button:{autofocus:1,disabled:{disabled:1},form:1,formaction:1,formenctype:1,formmethod:1,formnovalidate:1,formtarget:1,name:1,value:1,type:{button:1,submit:1}},select:{autofocus:1,disabled:1,form:1,multiple:{multiple:1},name:1,size:1,readonly:{readonly:1}},datalist:{},optgroup:{disabled:1,label:1},option:{disabled:1,selected:1,label:1,value:1},textarea:{autofocus:{autofocus:1},disabled:{disabled:1},form:1,maxlength:1,name:1,placeholder:1,readonly:{readonly:1},required:{required:1},rows:1,cols:1,wrap:{on:1,off:1,hard:1,soft:1}},keygen:{autofocus:1,challenge:{challenge:1},disabled:{disabled:1},form:1,keytype:{rsa:1,dsa:1,ec:1},name:1},output:{"for":1,form:1,name:1},progress:{value:1,max:1},meter:{value:1,min:1,max:1,low:1,high:1,optimum:1},details:{open:1},summary:{},command:{type:1,label:1,icon:1,disabled:1,checked:1,radiogroup:1,command:1},menu:{type:1,label:1},dialog:{open:1}},a=Object.keys(u),h=function(){};(function(){this.getCompletions=function(e,t,n,r){var i=t.getTokenAt(n.row,n.column);if(!i)return[];if(f(i,"tag-name")||f(i,"tag-open")||f(i,"end-tag-open"))return this.getTagCompletions(e,t,n,r);if(f(i,"tag-whitespace")||f(i,"attribute-name"))return this.getAttributeCompletions(e,t,n,r);if(f(i,"attribute-value"))return this.getAttributeValueCompletions(e,t,n,r);var s=t.getLine(n.row).substr(0,n.column);return/&[a-z]*$/i.test(s)?this.getHTMLEntityCompletions(e,t,n,r):[]},this.getTagCompletions=function(e,t,n,r){return a.map(function(e){return{value:e,meta:"tag",score:Number.MAX_VALUE}})},this.getAttributeCompletions=function(e,t,n,r){var i=l(t,n);if(!i)return[];var s=o;return i in u&&(s=s.concat(Object.keys(u[i]))),s.map(function(e){return{caption:e,snippet:e+'="$0"',meta:"attribute",score:Number.MAX_VALUE}})},this.getAttributeValueCompletions=function(e,t,n,r){var i=l(t,n),s=c(t,n);if(!i)return[];var o=[];return i in u&&s in u[i]&&typeof u[i][s]=="object"&&(o=Object.keys(u[i][s])),o.map(function(e){return{caption:e,snippet:e,meta:"attribute value",score:Number.MAX_VALUE}})},this.getHTMLEntityCompletions=function(e,t,n,r){var i=["Aacute;","aacute;","Acirc;","acirc;","acute;","AElig;","aelig;","Agrave;","agrave;","alefsym;","Alpha;","alpha;","amp;","and;","ang;","Aring;","aring;","asymp;","Atilde;","atilde;","Auml;","auml;","bdquo;","Beta;","beta;","brvbar;","bull;","cap;","Ccedil;","ccedil;","cedil;","cent;","Chi;","chi;","circ;","clubs;","cong;","copy;","crarr;","cup;","curren;","Dagger;","dagger;","dArr;","darr;","deg;","Delta;","delta;","diams;","divide;","Eacute;","eacute;","Ecirc;","ecirc;","Egrave;","egrave;","empty;","emsp;","ensp;","Epsilon;","epsilon;","equiv;","Eta;","eta;","ETH;","eth;","Euml;","euml;","euro;","exist;","fnof;","forall;","frac12;","frac14;","frac34;","frasl;","Gamma;","gamma;","ge;","gt;","hArr;","harr;","hearts;","hellip;","Iacute;","iacute;","Icirc;","icirc;","iexcl;","Igrave;","igrave;","image;","infin;","int;","Iota;","iota;","iquest;","isin;","Iuml;","iuml;","Kappa;","kappa;","Lambda;","lambda;","lang;","laquo;","lArr;","larr;","lceil;","ldquo;","le;","lfloor;","lowast;","loz;","lrm;","lsaquo;","lsquo;","lt;","macr;","mdash;","micro;","middot;","minus;","Mu;","mu;","nabla;","nbsp;","ndash;","ne;","ni;","not;","notin;","nsub;","Ntilde;","ntilde;","Nu;","nu;","Oacute;","oacute;","Ocirc;","ocirc;","OElig;","oelig;","Ograve;","ograve;","oline;","Omega;","omega;","Omicron;","omicron;","oplus;","or;","ordf;","ordm;","Oslash;","oslash;","Otilde;","otilde;","otimes;","Ouml;","ouml;","para;","part;","permil;","perp;","Phi;","phi;","Pi;","pi;","piv;","plusmn;","pound;","Prime;","prime;","prod;","prop;","Psi;","psi;","quot;","radic;","rang;","raquo;","rArr;","rarr;","rceil;","rdquo;","real;","reg;","rfloor;","Rho;","rho;","rlm;","rsaquo;","rsquo;","sbquo;","Scaron;","scaron;","sdot;","sect;","shy;","Sigma;","sigma;","sigmaf;","sim;","spades;","sub;","sube;","sum;","sup;","sup1;","sup2;","sup3;","supe;","szlig;","Tau;","tau;","there4;","Theta;","theta;","thetasym;","thinsp;","THORN;","thorn;","tilde;","times;","trade;","Uacute;","uacute;","uArr;","uarr;","Ucirc;","ucirc;","Ugrave;","ugrave;","uml;","upsih;","Upsilon;","upsilon;","Uuml;","uuml;","weierp;","Xi;","xi;","Yacute;","yacute;","yen;","Yuml;","yuml;","Zeta;","zeta;","zwj;","zwnj;"];return i.map(function(e){return{caption:e,snippet:e,meta:"html entity",score:Number.MAX_VALUE}})}}).call(h.prototype),t.HtmlCompletions=h}),define("ace/mode/html",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/mode/text","ace/mode/javascript","ace/mode/css","ace/mode/html_highlight_rules","ace/mode/behaviour/xml","ace/mode/folding/html","ace/mode/html_completions","ace/worker/worker_client"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("./text").Mode,o=e("./javascript").Mode,u=e("./css").Mode,a=e("./html_highlight_rules").HtmlHighlightRules,f=e("./behaviour/xml").XmlBehaviour,l=e("./folding/html").FoldMode,c=e("./html_completions").HtmlCompletions,h=e("../worker/worker_client").WorkerClient,p=["area","base","br","col","embed","hr","img","input","keygen","link","meta","menuitem","param","source","track","wbr"],d=["li","dt","dd","p","rt","rp","optgroup","option","colgroup","td","th"],v=function(e){this.fragmentContext=e&&e.fragmentContext,this.HighlightRules=a,this.$behaviour=new f,this.$completer=new c,this.createModeDelegates({"js-":o,"css-":u}),this.foldingRules=new l(this.voidElements,i.arrayToMap(d))};r.inherits(v,s),function(){this.blockComment={start:""},this.voidElements=i.arrayToMap(p),this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.getCompletions=function(e,t,n,r){return this.$completer.getCompletions(e,t,n,r)},this.createWorker=function(e){if(this.constructor!=v)return;var t=new h(["ace"],"ace/mode/html_worker","Worker");return t.attachToDocument(e.getDocument()),this.fragmentContext&&t.call("setOptions",[{context:this.fragmentContext}]),t.on("error",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/html"}.call(v.prototype),t.Mode=v}) \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/js_css_src/ace-drafts/mode-javascript.js b/examples/SmartSwitch/data_src/js_css_src/ace-drafts/mode-javascript.js deleted file mode 100644 index 6bad9f6..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/ace-drafts/mode-javascript.js +++ /dev/null @@ -1 +0,0 @@ -ace.define("ace/mode/doc_comment_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text_highlight_rules").TextHighlightRules,s=function(){this.$rules={start:[{token:"comment.doc.tag",regex:"@[\\w\\d_]+"},s.getTagRule(),{defaultToken:"comment.doc",caseInsensitive:!0}]}};r.inherits(s,i),s.getTagRule=function(e){return{token:"comment.doc.tag.storage.type",regex:"\\b(?:TODO|FIXME|XXX|HACK)\\b"}},s.getStartRule=function(e){return{token:"comment.doc",regex:"\\/\\*(?=\\*)",next:e}},s.getEndRule=function(e){return{token:"comment.doc",regex:"\\*\\/",next:e}},t.DocCommentHighlightRules=s}),ace.define("ace/mode/javascript_highlight_rules",["require","exports","module","ace/lib/oop","ace/mode/doc_comment_highlight_rules","ace/mode/text_highlight_rules"],function(e,t,n){"use strict";function a(){var e=o.replace("\\d","\\d\\-"),t={onMatch:function(e,t,n){var r=e.charAt(1)=="/"?2:1;if(r==1)t!=this.nextState?n.unshift(this.next,this.nextState,0):n.unshift(this.next),n[2]++;else if(r==2&&t==this.nextState){n[1]--;if(!n[1]||n[1]<0)n.shift(),n.shift()}return[{type:"meta.tag.punctuation."+(r==1?"":"end-")+"tag-open.xml",value:e.slice(0,r)},{type:"meta.tag.tag-name.xml",value:e.substr(r)}]},regex:"",onMatch:function(e,t,n){return t==n[0]&&n.shift(),e.length==2&&(n[0]==this.nextState&&n[1]--,(!n[1]||n[1]<0)&&n.splice(0,2)),this.next=n[0]||"start",[{type:this.token,value:e}]},nextState:"jsx"},n,f("jsxAttributes"),{token:"entity.other.attribute-name.xml",regex:e},{token:"keyword.operator.attribute-equals.xml",regex:"="},{token:"text.tag-whitespace.xml",regex:"\\s+"},{token:"string.attribute-value.xml",regex:"'",stateName:"jsx_attr_q",push:[{token:"string.attribute-value.xml",regex:"'",next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},{token:"string.attribute-value.xml",regex:'"',stateName:"jsx_attr_qq",push:[{token:"string.attribute-value.xml",regex:'"',next:"pop"},{include:"reference"},{defaultToken:"string.attribute-value.xml"}]},t],this.$rules.reference=[{token:"constant.language.escape.reference.xml",regex:"(?:&#[0-9]+;)|(?:&#x[0-9a-fA-F]+;)|(?:&[a-zA-Z0-9_:\\.-]+;)"}]}function f(e){return[{token:"comment",regex:/\/\*/,next:[i.getTagRule(),{token:"comment",regex:"\\*\\/",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]},{token:"comment",regex:"\\/\\/",next:[i.getTagRule(),{token:"comment",regex:"$|^",next:e||"pop"},{defaultToken:"comment",caseInsensitive:!0}]}]}var r=e("../lib/oop"),i=e("./doc_comment_highlight_rules").DocCommentHighlightRules,s=e("./text_highlight_rules").TextHighlightRules,o="[a-zA-Z\\$_\u00a1-\uffff][a-zA-Z\\d\\$_\u00a1-\uffff]*",u=function(e){var t=this.createKeywordMapper({"variable.language":"Array|Boolean|Date|Function|Iterator|Number|Object|RegExp|String|Proxy|Namespace|QName|XML|XMLList|ArrayBuffer|Float32Array|Float64Array|Int16Array|Int32Array|Int8Array|Uint16Array|Uint32Array|Uint8Array|Uint8ClampedArray|Error|EvalError|InternalError|RangeError|ReferenceError|StopIteration|SyntaxError|TypeError|URIError|decodeURI|decodeURIComponent|encodeURI|encodeURIComponent|eval|isFinite|isNaN|parseFloat|parseInt|JSON|Math|this|arguments|prototype|window|document",keyword:"const|yield|import|get|set|async|await|break|case|catch|continue|default|delete|do|else|finally|for|function|if|in|of|instanceof|new|return|switch|throw|try|typeof|let|var|while|with|debugger|__parent__|__count__|escape|unescape|with|__proto__|class|enum|extends|super|export|implements|private|public|interface|package|protected|static","storage.type":"const|let|var|function","constant.language":"null|Infinity|NaN|undefined","support.function":"alert","constant.language.boolean":"true|false"},"identifier"),n="case|do|else|finally|in|instanceof|return|throw|try|typeof|yield|void",r="\\\\(?:x[0-9a-fA-F]{2}|u[0-9a-fA-F]{4}|u{[0-9a-fA-F]{1,6}}|[0-2][0-7]{0,2}|3[0-7][0-7]?|[4-7][0-7]?|.)";this.$rules={no_regex:[i.getStartRule("doc-start"),f("no_regex"),{token:"string",regex:"'(?=.)",next:"qstring"},{token:"string",regex:'"(?=.)',next:"qqstring"},{token:"constant.numeric",regex:/0(?:[xX][0-9a-fA-F]+|[bB][01]+)\b/},{token:"constant.numeric",regex:/[+-]?\d[\d_]*(?:(?:\.\d*)?(?:[eE][+-]?\d+)?)?\b/},{token:["storage.type","punctuation.operator","support.function","punctuation.operator","entity.name.function","text","keyword.operator"],regex:"("+o+")(\\.)(prototype)(\\.)("+o+")(\\s*)(=)",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","keyword.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(=)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(\\s+)(\\w+)(\\s*)(\\()",next:"function_arguments"},{token:["storage.type","text","entity.name.function","text","paren.lparen"],regex:"(function)(\\s+)("+o+")(\\s*)(\\()",next:"function_arguments"},{token:["entity.name.function","text","punctuation.operator","text","storage.type","text","paren.lparen"],regex:"("+o+")(\\s*)(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:["text","text","storage.type","text","paren.lparen"],regex:"(:)(\\s*)(function)(\\s*)(\\()",next:"function_arguments"},{token:"keyword",regex:"(?:"+n+")\\b",next:"start"},{token:["support.constant"],regex:/that\b/},{token:["storage.type","punctuation.operator","support.function.firebug"],regex:/(console)(\.)(warn|info|log|error|time|trace|timeEnd|assert)\b/},{token:t,regex:o},{token:"punctuation.operator",regex:/[.](?![.])/,next:"property"},{token:"keyword.operator",regex:/--|\+\+|\.{3}|===|==|=|!=|!==|<+=?|>+=?|!|&&|\|\||\?:|[!$%&*+\-~\/^]=?/,next:"start"},{token:"punctuation.operator",regex:/[?:,;.]/,next:"start"},{token:"paren.lparen",regex:/[\[({]/,next:"start"},{token:"paren.rparen",regex:/[\])}]/},{token:"comment",regex:/^#!.*$/}],property:[{token:"text",regex:"\\s+"},{token:["storage.type","punctuation.operator","entity.name.function","text","keyword.operator","text","storage.type","text","entity.name.function","text","paren.lparen"],regex:"("+o+")(\\.)("+o+")(\\s*)(=)(\\s*)(function)(?:(\\s+)(\\w+))?(\\s*)(\\()",next:"function_arguments"},{token:"punctuation.operator",regex:/[.](?![.])/},{token:"support.function",regex:/(s(?:h(?:ift|ow(?:Mod(?:elessDialog|alDialog)|Help))|croll(?:X|By(?:Pages|Lines)?|Y|To)?|t(?:op|rike)|i(?:n|zeToContent|debar|gnText)|ort|u(?:p|b(?:str(?:ing)?)?)|pli(?:ce|t)|e(?:nd|t(?:Re(?:sizable|questHeader)|M(?:i(?:nutes|lliseconds)|onth)|Seconds|Ho(?:tKeys|urs)|Year|Cursor|Time(?:out)?|Interval|ZOptions|Date|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Date|FullYear)|FullYear|Active)|arch)|qrt|lice|avePreferences|mall)|h(?:ome|andleEvent)|navigate|c(?:har(?:CodeAt|At)|o(?:s|n(?:cat|textual|firm)|mpile)|eil|lear(?:Timeout|Interval)?|a(?:ptureEvents|ll)|reate(?:StyleSheet|Popup|EventObject))|t(?:o(?:GMTString|S(?:tring|ource)|U(?:TCString|pperCase)|Lo(?:caleString|werCase))|est|a(?:n|int(?:Enabled)?))|i(?:s(?:NaN|Finite)|ndexOf|talics)|d(?:isableExternalCapture|ump|etachEvent)|u(?:n(?:shift|taint|escape|watch)|pdateCommands)|j(?:oin|avaEnabled)|p(?:o(?:p|w)|ush|lugins.refresh|a(?:ddings|rse(?:Int|Float)?)|r(?:int|ompt|eference))|e(?:scape|nableExternalCapture|val|lementFromPoint|x(?:p|ec(?:Script|Command)?))|valueOf|UTC|queryCommand(?:State|Indeterm|Enabled|Value)|f(?:i(?:nd|le(?:ModifiedDate|Size|CreatedDate|UpdatedDate)|xed)|o(?:nt(?:size|color)|rward)|loor|romCharCode)|watch|l(?:ink|o(?:ad|g)|astIndexOf)|a(?:sin|nchor|cos|t(?:tachEvent|ob|an(?:2)?)|pply|lert|b(?:s|ort))|r(?:ou(?:nd|teEvents)|e(?:size(?:By|To)|calc|turnValue|place|verse|l(?:oad|ease(?:Capture|Events)))|andom)|g(?:o|et(?:ResponseHeader|M(?:i(?:nutes|lliseconds)|onth)|Se(?:conds|lection)|Hours|Year|Time(?:zoneOffset)?|Da(?:y|te)|UTC(?:M(?:i(?:nutes|lliseconds)|onth)|Seconds|Hours|Da(?:y|te)|FullYear)|FullYear|A(?:ttention|llResponseHeaders)))|m(?:in|ove(?:B(?:y|elow)|To(?:Absolute)?|Above)|ergeAttributes|a(?:tch|rgins|x))|b(?:toa|ig|o(?:ld|rderWidths)|link|ack))\b(?=\()/},{token:"support.function.dom",regex:/(s(?:ub(?:stringData|mit)|plitText|e(?:t(?:NamedItem|Attribute(?:Node)?)|lect))|has(?:ChildNodes|Feature)|namedItem|c(?:l(?:ick|o(?:se|neNode))|reate(?:C(?:omment|DATASection|aption)|T(?:Head|extNode|Foot)|DocumentFragment|ProcessingInstruction|E(?:ntityReference|lement)|Attribute))|tabIndex|i(?:nsert(?:Row|Before|Cell|Data)|tem)|open|delete(?:Row|C(?:ell|aption)|T(?:Head|Foot)|Data)|focus|write(?:ln)?|a(?:dd|ppend(?:Child|Data))|re(?:set|place(?:Child|Data)|move(?:NamedItem|Child|Attribute(?:Node)?)?)|get(?:NamedItem|Element(?:sBy(?:Name|TagName|ClassName)|ById)|Attribute(?:Node)?)|blur)\b(?=\()/},{token:"support.constant",regex:/(s(?:ystemLanguage|cr(?:ipts|ollbars|een(?:X|Y|Top|Left))|t(?:yle(?:Sheets)?|atus(?:Text|bar)?)|ibling(?:Below|Above)|ource|uffixes|e(?:curity(?:Policy)?|l(?:ection|f)))|h(?:istory|ost(?:name)?|as(?:h|Focus))|y|X(?:MLDocument|SLDocument)|n(?:ext|ame(?:space(?:s|URI)|Prop))|M(?:IN_VALUE|AX_VALUE)|c(?:haracterSet|o(?:n(?:structor|trollers)|okieEnabled|lorDepth|mp(?:onents|lete))|urrent|puClass|l(?:i(?:p(?:boardData)?|entInformation)|osed|asses)|alle(?:e|r)|rypto)|t(?:o(?:olbar|p)|ext(?:Transform|Indent|Decoration|Align)|ags)|SQRT(?:1_2|2)|i(?:n(?:ner(?:Height|Width)|put)|ds|gnoreCase)|zIndex|o(?:scpu|n(?:readystatechange|Line)|uter(?:Height|Width)|p(?:sProfile|ener)|ffscreenBuffering)|NEGATIVE_INFINITY|d(?:i(?:splay|alog(?:Height|Top|Width|Left|Arguments)|rectories)|e(?:scription|fault(?:Status|Ch(?:ecked|arset)|View)))|u(?:ser(?:Profile|Language|Agent)|n(?:iqueID|defined)|pdateInterval)|_content|p(?:ixelDepth|ort|ersonalbar|kcs11|l(?:ugins|atform)|a(?:thname|dding(?:Right|Bottom|Top|Left)|rent(?:Window|Layer)?|ge(?:X(?:Offset)?|Y(?:Offset)?))|r(?:o(?:to(?:col|type)|duct(?:Sub)?|mpter)|e(?:vious|fix)))|e(?:n(?:coding|abledPlugin)|x(?:ternal|pando)|mbeds)|v(?:isibility|endor(?:Sub)?|Linkcolor)|URLUnencoded|P(?:I|OSITIVE_INFINITY)|f(?:ilename|o(?:nt(?:Size|Family|Weight)|rmName)|rame(?:s|Element)|gColor)|E|whiteSpace|l(?:i(?:stStyleType|n(?:eHeight|kColor))|o(?:ca(?:tion(?:bar)?|lName)|wsrc)|e(?:ngth|ft(?:Context)?)|a(?:st(?:M(?:odified|atch)|Index|Paren)|yer(?:s|X)|nguage))|a(?:pp(?:MinorVersion|Name|Co(?:deName|re)|Version)|vail(?:Height|Top|Width|Left)|ll|r(?:ity|guments)|Linkcolor|bove)|r(?:ight(?:Context)?|e(?:sponse(?:XML|Text)|adyState))|global|x|m(?:imeTypes|ultiline|enubar|argin(?:Right|Bottom|Top|Left))|L(?:N(?:10|2)|OG(?:10E|2E))|b(?:o(?:ttom|rder(?:Width|RightWidth|BottomWidth|Style|Color|TopWidth|LeftWidth))|ufferDepth|elow|ackground(?:Color|Image)))\b/},{token:"identifier",regex:o},{regex:"",token:"empty",next:"no_regex"}],start:[i.getStartRule("doc-start"),f("start"),{token:"string.regexp",regex:"\\/",next:"regex"},{token:"text",regex:"\\s+|^$",next:"start"},{token:"empty",regex:"",next:"no_regex"}],regex:[{token:"regexp.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"string.regexp",regex:"/[sxngimy]*",next:"no_regex"},{token:"invalid",regex:/\{\d+\b,?\d*\}[+*]|[+*$^?][+*]|[$^][?]|\?{3,}/},{token:"constant.language.escape",regex:/\(\?[:=!]|\)|\{\d+\b,?\d*\}|[+*]\?|[()$^+*?.]/},{token:"constant.language.delimiter",regex:/\|/},{token:"constant.language.escape",regex:/\[\^?/,next:"regex_character_class"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp"}],regex_character_class:[{token:"regexp.charclass.keyword.operator",regex:"\\\\(?:u[\\da-fA-F]{4}|x[\\da-fA-F]{2}|.)"},{token:"constant.language.escape",regex:"]",next:"regex"},{token:"constant.language.escape",regex:"-"},{token:"empty",regex:"$",next:"no_regex"},{defaultToken:"string.regexp.charachterclass"}],function_arguments:[{token:"variable.parameter",regex:o},{token:"punctuation.operator",regex:"[, ]+"},{token:"punctuation.operator",regex:"$"},{token:"empty",regex:"",next:"no_regex"}],qqstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qqstring"},{token:"string",regex:'"|$',next:"no_regex"},{defaultToken:"string"}],qstring:[{token:"constant.language.escape",regex:r},{token:"string",regex:"\\\\$",next:"qstring"},{token:"string",regex:"'|$",next:"no_regex"},{defaultToken:"string"}]};if(!e||!e.noES6)this.$rules.no_regex.unshift({regex:"[{}]",onMatch:function(e,t,n){this.next=e=="{"?this.nextState:"";if(e=="{"&&n.length)n.unshift("start",t);else if(e=="}"&&n.length){n.shift(),this.next=n.shift();if(this.next.indexOf("string")!=-1||this.next.indexOf("jsx")!=-1)return"paren.quasi.end"}return e=="{"?"paren.lparen":"paren.rparen"},nextState:"start"},{token:"string.quasi.start",regex:/`/,push:[{token:"constant.language.escape",regex:r},{token:"paren.quasi.start",regex:/\${/,push:"start"},{token:"string.quasi.end",regex:/`/,next:"pop"},{defaultToken:"string.quasi"}]}),(!e||e.jsx!=0)&&a.call(this);this.embedRules(i,"doc-",[i.getEndRule("no_regex")]),this.normalizeRules()};r.inherits(u,s),t.JavaScriptHighlightRules=u}),ace.define("ace/mode/matching_brace_outdent",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../range").Range,i=function(){};(function(){this.checkOutdent=function(e,t){return/^\s+$/.test(e)?/^\s*\}/.test(t):!1},this.autoOutdent=function(e,t){var n=e.getLine(t),i=n.match(/^(\s*\})/);if(!i)return 0;var s=i[1].length,o=e.findMatchingBracket({row:t,column:s});if(!o||o.row==t)return 0;var u=this.$getIndent(e.getLine(o.row));e.replace(new r(t,0,t,s-1),u)},this.$getIndent=function(e){return e.match(/^\s*/)[0]}}).call(i.prototype),t.MatchingBraceOutdent=i}),ace.define("ace/mode/folding/cstyle",["require","exports","module","ace/lib/oop","ace/range","ace/mode/folding/fold_mode"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../../range").Range,s=e("./fold_mode").FoldMode,o=t.FoldMode=function(e){e&&(this.foldingStartMarker=new RegExp(this.foldingStartMarker.source.replace(/\|[^|]*?$/,"|"+e.start)),this.foldingStopMarker=new RegExp(this.foldingStopMarker.source.replace(/\|[^|]*?$/,"|"+e.end)))};r.inherits(o,s),function(){this.foldingStartMarker=/(\{|\[)[^\}\]]*$|^\s*(\/\*)/,this.foldingStopMarker=/^[^\[\{]*(\}|\])|^[\s\*]*(\*\/)/,this.singleLineBlockCommentRe=/^\s*(\/\*).*\*\/\s*$/,this.tripleStarBlockCommentRe=/^\s*(\/\*\*\*).*\*\/\s*$/,this.startRegionRe=/^\s*(\/\*|\/\/)#?region\b/,this._getFoldWidgetBase=this.getFoldWidget,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);if(this.singleLineBlockCommentRe.test(r)&&!this.startRegionRe.test(r)&&!this.tripleStarBlockCommentRe.test(r))return"";var i=this._getFoldWidgetBase(e,t,n);return!i&&this.startRegionRe.test(r)?"start":i},this.getFoldWidgetRange=function(e,t,n,r){var i=e.getLine(n);if(this.startRegionRe.test(i))return this.getCommentRegionBlock(e,i,n);var s=i.match(this.foldingStartMarker);if(s){var o=s.index;if(s[1])return this.openingBracketBlock(e,s[1],n,o);var u=e.getCommentFoldRange(n,o+s[0].length,1);return u&&!u.isMultiLine()&&(r?u=this.getSectionRange(e,n):t!="all"&&(u=null)),u}if(t==="markbegin")return;var s=i.match(this.foldingStopMarker);if(s){var o=s.index+s[0].length;return s[1]?this.closingBracketBlock(e,s[1],n,o):e.getCommentFoldRange(n,o,-1)}},this.getSectionRange=function(e,t){var n=e.getLine(t),r=n.search(/\S/),s=t,o=n.length;t+=1;var u=t,a=e.getLength();while(++tf)break;var l=this.getFoldWidgetRange(e,"all",t);if(l){if(l.start.row<=s)break;if(l.isMultiLine())t=l.end.row;else if(r==f)break}u=t}return new i(s,o,u,e.getLine(u).length)},this.getCommentRegionBlock=function(e,t,n){var r=t.search(/\s*$/),s=e.getLength(),o=n,u=/^\s*(?:\/\*|\/\/|--)#?(end)?region\b/,a=1;while(++no)return new i(o,r,l,t.length)}}.call(o.prototype)}),ace.define("ace/mode/javascript",["require","exports","module","ace/lib/oop","ace/mode/text","ace/mode/javascript_highlight_rules","ace/mode/matching_brace_outdent","ace/worker/worker_client","ace/mode/behaviour/cstyle","ace/mode/folding/cstyle"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("./text").Mode,s=e("./javascript_highlight_rules").JavaScriptHighlightRules,o=e("./matching_brace_outdent").MatchingBraceOutdent,u=e("../worker/worker_client").WorkerClient,a=e("./behaviour/cstyle").CstyleBehaviour,f=e("./folding/cstyle").FoldMode,l=function(){this.HighlightRules=s,this.$outdent=new o,this.$behaviour=new a,this.foldingRules=new f};r.inherits(l,i),function(){this.lineCommentStart="//",this.blockComment={start:"/*",end:"*/"},this.getNextLineIndent=function(e,t,n){var r=this.$getIndent(t),i=this.getTokenizer().getLineTokens(t,e),s=i.tokens,o=i.state;if(s.length&&s[s.length-1].type=="comment")return r;if(e=="start"||e=="no_regex"){var u=t.match(/^.*(?:\bcase\b.*:|[\{\(\[])\s*$/);u&&(r+=n)}else if(e=="doc-start"){if(o=="start"||o=="no_regex")return"";var u=t.match(/^\s*(\/?)\*/);u&&(u[1]&&(r+=" "),r+="* ")}return r},this.checkOutdent=function(e,t,n){return this.$outdent.checkOutdent(t,n)},this.autoOutdent=function(e,t,n){this.$outdent.autoOutdent(t,n)},this.createWorker=function(e){var t=new u(["ace"],"ace/mode/javascript_worker","JavaScriptWorker");return t.attachToDocument(e.getDocument()),t.on("annotate",function(t){e.setAnnotations(t.data)}),t.on("terminate",function(){e.clearAnnotations()}),t},this.$id="ace/mode/javascript"}.call(l.prototype),t.Mode=l}) \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/js_css_src/ace-drafts/worker-html.js b/examples/SmartSwitch/data_src/js_css_src/ace-drafts/worker-html.js deleted file mode 100644 index 58a39b1..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/ace-drafts/worker-html.js +++ /dev/null @@ -1 +0,0 @@ -"no use strict";(function(e){function t(e,t){var n=e,r="";while(n){var i=t[n];if(typeof i=="string")return i+r;if(i)return i.location.replace(/\/*$/,"/")+(r||i.main||i.name);if(i===!1)return"";var s=n.lastIndexOf("/");if(s===-1)break;r=n.substr(s)+r,n=n.slice(0,s)}return e}if(typeof e.window!="undefined"&&e.document)return;if(e.require&&e.define)return;e.console||(e.console=function(){var e=Array.prototype.slice.call(arguments,0);postMessage({type:"log",data:e})},e.console.error=e.console.warn=e.console.log=e.console.trace=e.console),e.window=e,e.ace=e,e.onerror=function(e,t,n,r,i){postMessage({type:"error",data:{message:e,data:i.data,file:t,line:n,col:r,stack:i.stack}})},e.normalizeModule=function(t,n){if(n.indexOf("!")!==-1){var r=n.split("!");return e.normalizeModule(t,r[0])+"!"+e.normalizeModule(t,r[1])}if(n.charAt(0)=="."){var i=t.split("/").slice(0,-1).join("/");n=(i?i+"/":"")+n;while(n.indexOf(".")!==-1&&s!=n){var s=n;n=n.replace(/^\.\//,"").replace(/\/\.\//,"/").replace(/[^\/]+\/\.\.\//,"")}}return n},e.require=function(r,i){i||(i=r,r=null);if(!i.charAt)throw new Error("worker.js require() accepts only (parentId, id) as arguments");i=e.normalizeModule(r,i);var s=e.require.modules[i];if(s)return s.initialized||(s.initialized=!0,s.exports=s.factory().exports),s.exports;if(!e.require.tlns)return console.log("unable to load "+i);var o=t(i,e.require.tlns);return o.slice(-3)!=".js"&&(o+=".js"),e.require.id=i,e.require.modules[i]={},importScripts(o),e.require(r,i)},e.require.modules={},e.require.tlns={},e.define=function(t,n,r){arguments.length==2?(r=n,typeof t!="string"&&(n=t,t=e.require.id)):arguments.length==1&&(r=t,n=[],t=e.require.id);if(typeof r!="function"){e.require.modules[t]={exports:r,initialized:!0};return}n.length||(n=["require","exports","module"]);var i=function(n){return e.require(t,n)};e.require.modules[t]={exports:{},factory:function(){var e=this,t=r.apply(this,n.map(function(t){switch(t){case"require":return i;case"exports":return e.exports;case"module":return e;default:return i(t)}}));return t&&(e.exports=t),e}}},e.define.amd={},require.tlns={},e.initBaseUrls=function(t){for(var n in t)require.tlns[n]=t[n]},e.initSender=function(){var n=e.require("ace/lib/event_emitter").EventEmitter,r=e.require("ace/lib/oop"),i=function(){};return function(){r.implement(this,n),this.callback=function(e,t){postMessage({type:"call",id:t,data:e})},this.emit=function(e,t){postMessage({type:"event",name:e,data:t})}}.call(i.prototype),new i};var n=e.main=null,r=e.sender=null;e.onmessage=function(t){var i=t.data;if(i.event&&r)r._signal(i.event,i.data);else if(i.command)if(n[i.command])n[i.command].apply(n,i.args);else{if(!e[i.command])throw new Error("Unknown command:"+i.command);e[i.command].apply(e,i.args)}else if(i.init){e.initBaseUrls(i.tlns),require("ace/lib/es5-shim"),r=e.sender=e.initSender();var s=require(i.module)[i.classname];n=e.main=new s(r)}}})(this),define("ace/lib/oop",["require","exports","module"],function(e,t,n){"use strict";t.inherits=function(e,t){e.super_=t,e.prototype=Object.create(t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}})},t.mixin=function(e,t){for(var n in t)e[n]=t[n];return e},t.implement=function(e,n){t.mixin(e,n)}}),define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?tthis.end.column?1:0:ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.rowt)var r={row:t+1,column:0};else if(this.start.row=0&&t.row=0&&t.column<=e[t.row].length}function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.action must be 'insert' or 'remove'"),t.lines instanceof Array||r(t,"delta.lines must be an Array"),(!t.start||!t.end)&&r(t,"delta.start/end must be an present");var n=t.start;i(e,t.start)||r(t,"delta.start must be contained in document");var s=t.end;t.action=="remove"&&!i(e,s)&&r(t,"delta.end must contained in document for 'remove' actions");var o=s.row-n.row,u=s.column-(o==0?n.column:0);(o!=t.lines.length-1||t.lines[o].length!=u)&&r(t,"delta.range must match delta lines")}t.applyDelta=function(e,t,n){var r=t.start.row,i=t.start.column,s=e[r]||"";switch(t.action){case"insert":var o=t.lines;if(o.length===1)e[r]=s.substring(0,i)+t.lines[0]+s.substring(i);else{var u=[r,1].concat(t.lines);e.splice.apply(e,u),e[r]=s.substring(0,i)+e[r],e[r+t.lines.length-1]+=s.substring(i)}break;case"remove":var a=t.end.column,f=t.end.row;r===f?e[r]=s.substring(0,i)+s.substring(a):e.splice(r,f-r+1,s.substring(0,i)+e[f].substring(a))}}}),define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;othis.row)return;var n=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=e("./anchor").Anchor,a=function(e){this.$lines=[""],e.length===0?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){r.implement(this,s),this.setValue=function(e){var t=this.getLength()-1;this.remove(new o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new u(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),r=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:r,action:"insert",lines:[t]},!0),this.clonePos(r)},this.clippedPos=function(e,t){var n=this.getLength();e===undefined?e=n:e<0?e=0:e>=n&&(e=n-1,t=undefined);var r=this.getLine(e);return t==undefined&&(t=r.length),t=Math.min(Math.max(t,0),r.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var n=0;e0,r=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){e instanceof o||(e=o.fromPoints(e.start,e.end));if(t.length===0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var n;return t?n=this.insert(e.start,t):n=e.start,n},this.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var n=e.action=="insert";if(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))return;n&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),i(this.$lines,e,t),this._signal("change",e)},this.$splitAndapplyLargeDelta=function(e,t){var n=e.lines,r=n.length,i=e.start.row,s=e.start.column,o=0,u=0;do{o=u,u+=t-1;var a=n.slice(o,u);if(u>r){e.lines=a,e.start.row=i+o,e.start.column=s;break}a.push(""),this.applyDelta({start:this.pos(i+o,s),end:this.pos(i+u,s=0),action:e.action,lines:a},!0)}while(!0)},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:e.action=="insert"?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i=0;n--){var r=this.elements[n];if(r.localName===e)return!0;if(t(r))return!1}},l.prototype.push=function(e){this.elements.push(e)},l.prototype.pushHtmlElement=function(e){this.rootNode=e.node,this.push(e)},l.prototype.pushHeadElement=function(e){this.headElement=e.node,this.push(e)},l.prototype.pushBodyElement=function(e){this.bodyElement=e.node,this.push(e)},l.prototype.pop=function(){return this.elements.pop()},l.prototype.remove=function(e){this.elements.splice(this.elements.indexOf(e),1)},l.prototype.popUntilPopped=function(e){var t;do t=this.pop();while(t.localName!=e)},l.prototype.popUntilTableScopeMarker=function(){while(!s(this.top))this.pop()},l.prototype.popUntilTableBodyScopeMarker=function(){while(!o(this.top))this.pop()},l.prototype.popUntilTableRowScopeMarker=function(){while(!u(this.top))this.pop()},l.prototype.item=function(e){return this.elements[e]},l.prototype.contains=function(e){return this.elements.indexOf(e)!==-1},l.prototype.inScope=function(e){return this._inScope(e,r)},l.prototype.inListItemScope=function(e){return this._inScope(e,i)},l.prototype.inTableScope=function(e){return this._inScope(e,s)},l.prototype.inButtonScope=function(e){return this._inScope(e,a)},l.prototype.inSelectScope=function(e){return this._inScope(e,f)},l.prototype.hasNumberedHeaderElementInScope=function(){for(var e=this.elements.length-1;e>=0;e--){var t=this.elements[e];if(t.isNumberedHeader())return!0;if(r(t))return!1}},l.prototype.furthestBlockForFormattingElement=function(e){var t=null;for(var n=this.elements.length-1;n>=0;n--){var r=this.elements[n];if(r.node===e)break;r.isSpecial()&&(t=r)}return t},l.prototype.findIndex=function(e){for(var t=this.elements.length-1;t>=0;t--)if(this.elements[t].localName==e)return t;return-1},l.prototype.remove_openElements_until=function(e){var t=!1,n;while(!t)n=this.elements.pop(),t=e(n);return n},Object.defineProperty(l.prototype,"top",{get:function(){return this.elements[this.elements.length-1]}}),Object.defineProperty(l.prototype,"length",{get:function(){return this.elements.length}}),n.ElementStack=l},{}],2:[function(e,t,n){function o(e){return e>="0"&&e<="9"||e>="a"&&e<="z"||e>="A"&&e<="Z"}function u(e){return e>="0"&&e<="9"||e>="a"&&e<="f"||e>="A"&&e<="F"}function a(e){return e>="0"&&e<="9"}var r=e("html5-entities"),i=e("./InputStream").InputStream,s={};Object.keys(r).forEach(function(e){for(var t=0;t65535&&d<=1114111){d-=65536;var m=((1047552&d)>>10)+55296,g=(1023&d)+56320;f=String.fromCharCode(m,g)}else f=String.fromCharCode(d);return c!==";"&&(t._parseError("numeric-entity-without-semicolon"),e.unget(c)),f}return e.unget(l),t._parseError("expected-numeric-entity"),!1}if(c>="a"&&c<="z"||c>="A"&&c<="Z"){var y="";while(s[l]){r[l]&&(y=l);if(c==";")break;c=e.char();if(c===i.EOF)break;l+=c}return y?(f=r[y],c===";"||!n||!o(c)&&c!=="="?(l.length>y.length&&e.unget(l.substring(y.length)),c!==";"&&t._parseError("named-entity-without-semicolon"),f):(e.unget(l),!1)):(t._parseError("expected-named-entity"),e.unget(l),!1)}},f.replaceEntityNumbers=function(e){switch(e){case 0:return 65533;case 19:return 16;case 128:return 8364;case 129:return 129;case 130:return 8218;case 131:return 402;case 132:return 8222;case 133:return 8230;case 134:return 8224;case 135:return 8225;case 136:return 710;case 137:return 8240;case 138:return 352;case 139:return 8249;case 140:return 338;case 141:return 141;case 142:return 381;case 143:return 143;case 144:return 144;case 145:return 8216;case 146:return 8217;case 147:return 8220;case 148:return 8221;case 149:return 8226;case 150:return 8211;case 151:return 8212;case 152:return 732;case 153:return 8482;case 154:return 353;case 155:return 8250;case 156:return 339;case 157:return 157;case 158:return 382;case 159:return 376;default:if(e>=55296&&e<=57343||e>1114111)return 65533;if(e>=1&&e<=8||e>=14&&e<=31||e>=127&&e<=159||e>=64976&&e<=65007||e==11||e==65534||e==131070||e==3145726||e==196607||e==262142||e==262143||e==327678||e==327679||e==393214||e==393215||e==458750||e==458751||e==524286||e==524287||e==589822||e==589823||e==655358||e==655359||e==720894||e==720895||e==786430||e==786431||e==851966||e==851967||e==917502||e==917503||e==983038||e==983039||e==1048574||e==1048575||e==1114110||e==1114111)return e}},n.EntityParser=f},{"./InputStream":3,"html5-entities":12}],3:[function(e,t,n){function r(){this.data="",this.start=0,this.committed=0,this.eof=!1,this.lastLocation={line:0,column:0}}r.EOF=-1,r.DRAIN=-2,r.prototype={slice:function(){if(this.start>=this.data.length){if(!this.eof)throw r.DRAIN;return r.EOF}return this.data.slice(this.start,this.data.length)},"char":function(){if(!this.eof&&this.start>=this.data.length-1)throw r.DRAIN;if(this.start>=this.data.length)return r.EOF;var e=this.data[this.start++];return e==="\r"&&(e="\n"),e},advance:function(e){this.start+=e;if(this.start>=this.data.length){if(!this.eof)throw r.DRAIN;return r.EOF}this.committed>this.data.length/2&&(this.lastLocation=this.location(),this.data=this.data.slice(this.committed),this.start=this.start-this.committed,this.committed=0)},matchWhile:function(e){if(this.eof&&this.start>=this.data.length)return"";var t=new RegExp("^"+e+"+"),n=t.exec(this.slice());if(n){if(!this.eof&&n[0].length==this.data.length-this.start)throw r.DRAIN;return this.advance(n[0].length),n[0]}return""},matchUntil:function(e){var t,n;n=this.slice();if(n===r.EOF)return"";if(t=(new RegExp(e+(this.eof?"|$":""))).exec(n)){var i=this.data.slice(this.start,this.start+t.index);return this.advance(t.index),i.replace(/\r/g,"\n").replace(/\n{2,}/g,"\n")}throw r.DRAIN},append:function(e){this.data+=e},shift:function(e){if(!this.eof&&this.start+e>=this.data.length)throw r.DRAIN;if(this.eof&&this.start>=this.data.length)return r.EOF;var t=this.data.slice(this.start,this.start+e).toString();return this.advance(Math.min(e,this.data.length-this.start)),t},peek:function(e){if(!this.eof&&this.start+e>=this.data.length)throw r.DRAIN;return this.eof&&this.start>=this.data.length?r.EOF:this.data.slice(this.start,Math.min(this.start+e,this.data.length)).toString()},length:function(){return this.data.length-this.start-1},unget:function(e){if(e===r.EOF)return;this.start-=e.length},undo:function(){this.start=this.committed},commit:function(){this.committed=this.start},location:function(){var e=this.lastLocation.line,t=this.lastLocation.column,n=this.data.slice(0,this.committed),r=n.match(/\n/g),i=r?e+r.length:e,s=r?n.length-n.lastIndexOf("\n")-1:t+n.length;return{line:i,column:s}}},n.InputStream=r},{}],4:[function(e,t,n){function i(e,t,n,r){this.localName=t,this.namespaceURI=e,this.attributes=n,this.node=r}function s(e,t){for(var n=0;n-1},i.prototype.isFosterParenting=function(){return this.namespaceURI==="http://www.w3.org/1999/xhtml"?this.localName==="table"||this.localName==="tbody"||this.localName==="tfoot"||this.localName==="thead"||this.localName==="tr":!1},i.prototype.isNumberedHeader=function(){return this.namespaceURI==="http://www.w3.org/1999/xhtml"?this.localName==="h1"||this.localName==="h2"||this.localName==="h3"||this.localName==="h4"||this.localName==="h5"||this.localName==="h6":!1},i.prototype.isForeign=function(){return this.namespaceURI!="http://www.w3.org/1999/xhtml"},i.prototype.isHtmlIntegrationPoint=function(){if(this.namespaceURI==="http://www.w3.org/1998/Math/MathML"){if(this.localName!=="annotation-xml")return!1;var e=s(this,"encoding");return e?(e=e.toLowerCase(),e==="text/html"||e==="application/xhtml+xml"):!1}return this.namespaceURI==="http://www.w3.org/2000/svg"?this.localName==="foreignObject"||this.localName==="desc"||this.localName==="title":!1},i.prototype.isMathMLTextIntegrationPoint=function(){return this.namespaceURI==="http://www.w3.org/1998/Math/MathML"?this.localName==="mi"||this.localName==="mo"||this.localName==="mn"||this.localName==="ms"||this.localName==="mtext":!1},n.StackItem=i},{}],5:[function(e,t,n){function s(e){return e===" "||e==="\n"||e===" "||e==="\r"||e==="\f"}function o(e){return e>="A"&&e<="Z"||e>="a"&&e<="z"}function u(e){this._tokenHandler=e,this._state=u.DATA,this._inputStream=new r,this._currentToken=null,this._temporaryBuffer="",this._additionalAllowedCharacter=""}var r=e("./InputStream").InputStream,i=e("./EntityParser").EntityParser;u.prototype._parseError=function(e,t){this._tokenHandler.parseError(e,t)},u.prototype._emitToken=function(e){if(e.type==="StartTag")for(var t=1;t"&&r?(t._currentToken={type:"EndTag",name:this._temporaryBuffer,data:[],selfClosing:!1},t._emitCurrentToken(),t.setState(n)):o(i)?(this._temporaryBuffer+=i,e.commit()):(t._emitToken({type:"Characters",data:""&&r?(t._currentToken={type:"EndTag",name:this._temporaryBuffer,data:[],selfClosing:!1},t._emitCurrentToken(),t.setState(n)):o(i)?(this._temporaryBuffer+=i,e.commit()):(t._emitToken({type:"Characters",data:""&&n?(t._currentToken={type:"EndTag",name:"script",data:[],selfClosing:!1},t._emitCurrentToken()):o(r)?(this._temporaryBuffer+=r,e.commit()):(t._emitToken({type:"Characters",data:""?(t._emitToken({type:"Characters",data:">"}),t.setState(p)):i==="\0"?(t._parseError("invalid-codepoint"),t._emitToken({type:"Characters",data:"\ufffd"}),t.setState(N)):(t._emitToken({type:"Characters",data:i}),t.setState(N)),!0}function L(e){var n=e.char();return n==="/"?(this._temporaryBuffer="",t.setState(A)):o(n)?(t._emitToken({type:"Characters",data:"<"+n}),this._temporaryBuffer=n,t.setState(M)):(t._emitToken({type:"Characters",data:"<"}),e.unget(n),t.setState(N)),!0}function A(e){var n=e.char();return o(n)?(this._temporaryBuffer=n,t.setState(O)):(t._emitToken({type:"Characters",data:""&&r?(t._currentToken={type:"EndTag",name:"script",data:[],selfClosing:!1},t.setState(n),t._emitCurrentToken()):o(i)?(this._temporaryBuffer+=i,e.commit()):(t._emitToken({type:"Characters",data:""?(t._emitToken({type:"Characters",data:n}),this._temporaryBuffer.toLowerCase()==="script"?t.setState(_):t.setState(N)):o(n)?(t._emitToken({type:"Characters",data:n}),this._temporaryBuffer+=n,e.commit()):(e.unget(n),t.setState(N)),!0}function _(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-script"),e.unget(i),t.setState(n)):i==="-"?(t._emitToken({type:"Characters",data:"-"}),t.setState(D)):i==="<"?(t._emitToken({type:"Characters",data:"<"}),t.setState(H)):i==="\0"?(t._parseError("invalid-codepoint"),t._emitToken({type:"Characters",data:"\ufffd"}),e.commit()):(t._emitToken({type:"Characters",data:i}),e.commit()),!0}function D(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-script"),e.unget(i),t.setState(n)):i==="-"?(t._emitToken({type:"Characters",data:"-"}),t.setState(P)):i==="<"?(t._emitToken({type:"Characters",data:"<"}),t.setState(H)):i==="\0"?(t._parseError("invalid-codepoint"),t._emitToken({type:"Characters",data:"\ufffd"}),t.setState(_)):(t._emitToken({type:"Characters",data:i}),t.setState(_)),!0}function P(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-script"),e.unget(i),t.setState(n)):i==="-"?(t._emitToken({type:"Characters",data:"-"}),e.commit()):i==="<"?(t._emitToken({type:"Characters",data:"<"}),t.setState(H)):i===">"?(t._emitToken({type:"Characters",data:">"}),t.setState(p)):i==="\0"?(t._parseError("invalid-codepoint"),t._emitToken({type:"Characters",data:"\ufffd"}),t.setState(_)):(t._emitToken({type:"Characters",data:i}),t.setState(_)),!0}function H(e){var n=e.char();return n==="/"?(t._emitToken({type:"Characters",data:"/"}),this._temporaryBuffer="",t.setState(B)):(e.unget(n),t.setState(_)),!0}function B(e){var n=e.char();return s(n)||n==="/"||n===">"?(t._emitToken({type:"Characters",data:n}),this._temporaryBuffer.toLowerCase()==="script"?t.setState(N):t.setState(_)):o(n)?(t._emitToken({type:"Characters",data:n}),this._temporaryBuffer+=n,e.commit()):(e.unget(n),t.setState(_)),!0}function j(e){var i=e.char();return i===r.EOF?(t._parseError("bare-less-than-sign-at-eof"),t._emitToken({type:"Characters",data:"<"}),e.unget(i),t.setState(n)):o(i)?(t._currentToken={type:"StartTag",name:i.toLowerCase(),data:[]},t.setState(I)):i==="!"?t.setState(G):i==="/"?t.setState(F):i===">"?(t._parseError("expected-tag-name-but-got-right-bracket"),t._emitToken({type:"Characters",data:"<>"}),t.setState(n)):i==="?"?(t._parseError("expected-tag-name-but-got-question-mark"),e.unget(i),t.setState(Q)):(t._parseError("expected-tag-name"),t._emitToken({type:"Characters",data:"<"}),e.unget(i),t.setState(n)),!0}function F(e){var i=e.char();return i===r.EOF?(t._parseError("expected-closing-tag-but-got-eof"),t._emitToken({type:"Characters",data:""?(t._parseError("expected-closing-tag-but-got-right-bracket"),t.setState(n)):(t._parseError("expected-closing-tag-but-got-char",{data:i}),e.unget(i),t.setState(Q)),!0}function I(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-tag-name"),e.unget(i),t.setState(n)):s(i)?t.setState(q):o(i)?t._currentToken.name+=i.toLowerCase():i===">"?t._emitCurrentToken():i==="/"?t.setState(K):i==="\0"?(t._parseError("invalid-codepoint"),t._currentToken.name+="\ufffd"):t._currentToken.name+=i,e.commit(),!0}function q(e){var i=e.char();if(i===r.EOF)t._parseError("expected-attribute-name-but-got-eof"),e.unget(i),t.setState(n);else{if(s(i))return!0;o(i)?(t._currentToken.data.push({nodeName:i.toLowerCase(),nodeValue:""}),t.setState(R)):i===">"?t._emitCurrentToken():i==="/"?t.setState(K):i==="'"||i==='"'||i==="="||i==="<"?(t._parseError("invalid-character-in-attribute-name"),t._currentToken.data.push({nodeName:i,nodeValue:""}),t.setState(R)):i==="\0"?(t._parseError("invalid-codepoint"),t._currentToken.data.push({nodeName:"\ufffd",nodeValue:""})):(t._currentToken.data.push({nodeName:i,nodeValue:""}),t.setState(R))}return!0}function R(e){var i=e.char(),u=!0,a=!1;i===r.EOF?(t._parseError("eof-in-attribute-name"),e.unget(i),t.setState(n),a=!0):i==="="?t.setState(z):o(i)?(t._currentAttribute().nodeName+=i.toLowerCase(),u=!1):i===">"?a=!0:s(i)?t.setState(U):i==="/"?t.setState(K):i==="'"||i==='"'?(t._parseError("invalid-character-in-attribute-name"),t._currentAttribute().nodeName+=i,u=!1):i==="\0"?(t._parseError("invalid-codepoint"),t._currentAttribute().nodeName+="\ufffd"):(t._currentAttribute().nodeName+=i,u=!1);if(u){var f=t._currentToken.data,l=f[f.length-1];for(var c=f.length-2;c>=0;c--)if(l.nodeName===f[c].nodeName){t._parseError("duplicate-attribute",{name:l.nodeName}),l.nodeName=null;break}a&&t._emitCurrentToken()}else e.commit();return!0}function U(e){var i=e.char();if(i===r.EOF)t._parseError("expected-end-of-tag-but-got-eof"),e.unget(i),t.setState(n);else{if(s(i))return!0;i==="="?t.setState(z):i===">"?t._emitCurrentToken():o(i)?(t._currentToken.data.push({nodeName:i,nodeValue:""}),t.setState(R)):i==="/"?t.setState(K):i==="'"||i==='"'||i==="<"?(t._parseError("invalid-character-after-attribute-name"),t._currentToken.data.push({nodeName:i,nodeValue:""}),t.setState(R)):i==="\0"?(t._parseError("invalid-codepoint"),t._currentToken.data.push({nodeName:"\ufffd",nodeValue:""})):(t._currentToken.data.push({nodeName:i,nodeValue:""}),t.setState(R))}return!0}function z(e){var i=e.char();if(i===r.EOF)t._parseError("expected-attribute-value-but-got-eof"),e.unget(i),t.setState(n);else{if(s(i))return!0;i==='"'?t.setState(W):i==="&"?(t.setState(V),e.unget(i)):i==="'"?t.setState(X):i===">"?(t._parseError("expected-attribute-value-but-got-right-bracket"),t._emitCurrentToken()):i==="="||i==="<"||i==="`"?(t._parseError("unexpected-character-in-unquoted-attribute-value"),t._currentAttribute().nodeValue+=i,t.setState(V)):i==="\0"?(t._parseError("invalid-codepoint"),t._currentAttribute().nodeValue+="\ufffd"):(t._currentAttribute().nodeValue+=i,t.setState(V))}return!0}function W(e){var i=e.char();if(i===r.EOF)t._parseError("eof-in-attribute-value-double-quote"),e.unget(i),t.setState(n);else if(i==='"')t.setState(J);else if(i==="&")this._additionalAllowedCharacter='"',t.setState($);else if(i==="\0")t._parseError("invalid-codepoint"),t._currentAttribute().nodeValue+="\ufffd";else{var s=e.matchUntil('[\0"&]');i+=s,t._currentAttribute().nodeValue+=i}return!0}function X(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-attribute-value-single-quote"),e.unget(i),t.setState(n)):i==="'"?t.setState(J):i==="&"?(this._additionalAllowedCharacter="'",t.setState($)):i==="\0"?(t._parseError("invalid-codepoint"),t._currentAttribute().nodeValue+="\ufffd"):t._currentAttribute().nodeValue+=i+e.matchUntil("\0|['&]"),!0}function V(e){var i=e.char();if(i===r.EOF)t._parseError("eof-after-attribute-value"),e.unget(i),t.setState(n);else if(s(i))t.setState(q);else if(i==="&")this._additionalAllowedCharacter=">",t.setState($);else if(i===">")t._emitCurrentToken();else if(i==='"'||i==="'"||i==="="||i==="`"||i==="<")t._parseError("unexpected-character-in-unquoted-attribute-value"),t._currentAttribute().nodeValue+=i,e.commit();else if(i==="\0")t._parseError("invalid-codepoint"),t._currentAttribute().nodeValue+="\ufffd";else{var o=e.matchUntil("\0|[ \n \f \r&<>\"'=`]");o===r.EOF&&(t._parseError("eof-in-attribute-value-no-quotes"),t._emitCurrentToken()),e.commit(),t._currentAttribute().nodeValue+=i+o}return!0}function $(e){var n=i.consumeEntity(e,t,this._additionalAllowedCharacter);return this._currentAttribute().nodeValue+=n||"&",this._additionalAllowedCharacter==='"'?t.setState(W):this._additionalAllowedCharacter==="'"?t.setState(X):this._additionalAllowedCharacter===">"&&t.setState(V),!0}function J(e){var i=e.char();return i===r.EOF?(t._parseError("eof-after-attribute-value"),e.unget(i),t.setState(n)):s(i)?t.setState(q):i===">"?(t.setState(n),t._emitCurrentToken()):i==="/"?t.setState(K):(t._parseError("unexpected-character-after-attribute-value"),e.unget(i),t.setState(q)),!0}function K(e){var i=e.char();return i===r.EOF?(t._parseError("unexpected-eof-after-solidus-in-tag"),e.unget(i),t.setState(n)):i===">"?(t._currentToken.selfClosing=!0,t.setState(n),t._emitCurrentToken()):(t._parseError("unexpected-character-after-solidus-in-tag"),e.unget(i),t.setState(q)),!0}function Q(e){var r=e.matchUntil(">");return r=r.replace(/\u0000/g,"\ufffd"),e.char(),t._emitToken({type:"Comment",data:r}),t.setState(n),!0}function G(e){var n=e.shift(2);if(n==="--")t._currentToken={type:"Comment",data:""},t.setState(Z);else{var i=e.shift(5);if(i===r.EOF||n===r.EOF)return t._parseError("expected-dashes-or-doctype"),t.setState(Q),e.unget(n),!0;n+=i,n.toUpperCase()==="DOCTYPE"?(t._currentToken={type:"Doctype",name:"",publicId:null,systemId:null,forceQuirks:!1},t.setState(st)):t._tokenHandler.isCdataSectionAllowed()&&n==="[CDATA["?t.setState(Y):(t._parseError("expected-dashes-or-doctype"),e.unget(n),t.setState(Q))}return!0}function Y(e){var r=e.matchUntil("]]>");return e.shift(3),r&&t._emitToken({type:"Characters",data:r}),t.setState(n),!0}function Z(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-comment"),t._emitToken(t._currentToken),e.unget(i),t.setState(n)):i==="-"?t.setState(et):i===">"?(t._parseError("incorrect-comment"),t._emitToken(t._currentToken),t.setState(n)):i==="\0"?(t._parseError("invalid-codepoint"),t._currentToken.data+="\ufffd"):(t._currentToken.data+=i,t.setState(tt)),!0}function et(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-comment"),t._emitToken(t._currentToken),e.unget(i),t.setState(n)):i==="-"?t.setState(rt):i===">"?(t._parseError("incorrect-comment"),t._emitToken(t._currentToken),t.setState(n)):i==="\0"?(t._parseError("invalid-codepoint"),t._currentToken.data+="\ufffd"):(t._currentToken.data+="-"+i,t.setState(tt)),!0}function tt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-comment"),t._emitToken(t._currentToken),e.unget(i),t.setState(n)):i==="-"?t.setState(nt):i==="\0"?(t._parseError("invalid-codepoint"),t._currentToken.data+="\ufffd"):(t._currentToken.data+=i,e.commit()),!0}function nt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-comment-end-dash"),t._emitToken(t._currentToken),e.unget(i),t.setState(n)):i==="-"?t.setState(rt):i==="\0"?(t._parseError("invalid-codepoint"),t._currentToken.data+="-\ufffd",t.setState(tt)):(t._currentToken.data+="-"+i+e.matchUntil("\0|-"),e.char()),!0}function rt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-comment-double-dash"),t._emitToken(t._currentToken),e.unget(i),t.setState(n)):i===">"?(t._emitToken(t._currentToken),t.setState(n)):i==="!"?(t._parseError("unexpected-bang-after-double-dash-in-comment"),t.setState(it)):i==="-"?(t._parseError("unexpected-dash-after-double-dash-in-comment"),t._currentToken.data+=i):i==="\0"?(t._parseError("invalid-codepoint"),t._currentToken.data+="--\ufffd",t.setState(tt)):(t._parseError("unexpected-char-in-comment"),t._currentToken.data+="--"+i,t.setState(tt)),!0}function it(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-comment-end-bang-state"),t._emitToken(t._currentToken),e.unget(i),t.setState(n)):i===">"?(t._emitToken(t._currentToken),t.setState(n)):i==="-"?(t._currentToken.data+="--!",t.setState(nt)):(t._currentToken.data+="--!"+i,t.setState(tt)),!0}function st(e){var i=e.char();return i===r.EOF?(t._parseError("expected-doctype-name-but-got-eof"),t._currentToken.forceQuirks=!0,e.unget(i),t.setState(n),t._emitCurrentToken()):s(i)?t.setState(ot):(t._parseError("need-space-after-doctype"),e.unget(i),t.setState(ot)),!0}function ot(e){var i=e.char();return i===r.EOF?(t._parseError("expected-doctype-name-but-got-eof"),t._currentToken.forceQuirks=!0,e.unget(i),t.setState(n),t._emitCurrentToken()):s(i)||(i===">"?(t._parseError("expected-doctype-name-but-got-right-bracket"),t._currentToken.forceQuirks=!0,t.setState(n),t._emitCurrentToken()):(o(i)&&(i=i.toLowerCase()),t._currentToken.name=i,t.setState(ut))),!0}function ut(e){var i=e.char();return i===r.EOF?(t._currentToken.forceQuirks=!0,e.unget(i),t._parseError("eof-in-doctype-name"),t.setState(n),t._emitCurrentToken()):s(i)?t.setState(at):i===">"?(t.setState(n),t._emitCurrentToken()):(o(i)&&(i=i.toLowerCase()),t._currentToken.name+=i,e.commit()),!0}function at(e){var i=e.char();if(i===r.EOF)t._currentToken.forceQuirks=!0,e.unget(i),t._parseError("eof-in-doctype"),t.setState(n),t._emitCurrentToken();else if(!s(i))if(i===">")t.setState(n),t._emitCurrentToken();else{if(["p","P"].indexOf(i)>-1){var o=[["u","U"],["b","B"],["l","L"],["i","I"],["c","C"]],u=o.every(function(t){return i=e.char(),t.indexOf(i)>-1});if(u)return t.setState(ft),!0}else if(["s","S"].indexOf(i)>-1){var o=[["y","Y"],["s","S"],["t","T"],["e","E"],["m","M"]],u=o.every(function(t){return i=e.char(),t.indexOf(i)>-1});if(u)return t.setState(vt),!0}e.unget(i),t._currentToken.forceQuirks=!0,i===r.EOF?(t._parseError("eof-in-doctype"),e.unget(i),t.setState(n),t._emitCurrentToken()):(t._parseError("expected-space-or-right-bracket-in-doctype",{data:i}),t.setState(wt))}return!0}function ft(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,e.unget(i),t.setState(n),t._emitCurrentToken()):s(i)?t.setState(lt):i==="'"||i==='"'?(t._parseError("unexpected-char-in-doctype"),e.unget(i),t.setState(lt)):(e.unget(i),t.setState(lt)),!0}function lt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,e.unget(i),t.setState(n),t._emitCurrentToken()):s(i)||(i==='"'?(t._currentToken.publicId="",t.setState(ct)):i==="'"?(t._currentToken.publicId="",t.setState(ht)):i===">"?(t._parseError("unexpected-end-of-doctype"),t._currentToken.forceQuirks=!0,t.setState(n),t._emitCurrentToken()):(t._parseError("unexpected-char-in-doctype"),t._currentToken.forceQuirks=!0,t.setState(wt))),!0}function ct(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,e.unget(i),t.setState(n),t._emitCurrentToken()):i==='"'?t.setState(pt):i===">"?(t._parseError("unexpected-end-of-doctype"),t._currentToken.forceQuirks=!0,t.setState(n),t._emitCurrentToken()):t._currentToken.publicId+=i,!0}function ht(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,e.unget(i),t.setState(n),t._emitCurrentToken()):i==="'"?t.setState(pt):i===">"?(t._parseError("unexpected-end-of-doctype"),t._currentToken.forceQuirks=!0,t.setState(n),t._emitCurrentToken()):t._currentToken.publicId+=i,!0}function pt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),e.unget(i),t.setState(n)):s(i)?t.setState(dt):i===">"?(t.setState(n),t._emitCurrentToken()):i==='"'?(t._parseError("unexpected-char-in-doctype"),t._currentToken.systemId="",t.setState(gt)):i==="'"?(t._parseError("unexpected-char-in-doctype"),t._currentToken.systemId="",t.setState(yt)):(t._parseError("unexpected-char-in-doctype"),t._currentToken.forceQuirks=!0,t.setState(wt)),!0}function dt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),e.unget(i),t.setState(n)):s(i)||(i===">"?(t._emitCurrentToken(),t.setState(n)):i==='"'?(t._currentToken.systemId="",t.setState(gt)):i==="'"?(t._currentToken.systemId="",t.setState(yt)):(t._parseError("unexpected-char-in-doctype"),t._currentToken.forceQuirks=!0,t.setState(wt))),!0}function vt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),e.unget(i),t.setState(n)):s(i)?t.setState(mt):i==="'"||i==='"'?(t._parseError("unexpected-char-in-doctype"),e.unget(i),t.setState(mt)):(e.unget(i),t.setState(mt)),!0}function mt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),e.unget(i),t.setState(n)):s(i)||(i==='"'?(t._currentToken.systemId="",t.setState(gt)):i==="'"?(t._currentToken.systemId="",t.setState(yt)):i===">"?(t._parseError("unexpected-end-of-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),t.setState(n)):(t._parseError("unexpected-char-in-doctype"),t._currentToken.forceQuirks=!0,t.setState(wt))),!0}function gt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),e.unget(i),t.setState(n)):i==='"'?t.setState(bt):i===">"?(t._parseError("unexpected-end-of-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),t.setState(n)):t._currentToken.systemId+=i,!0}function yt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),e.unget(i),t.setState(n)):i==="'"?t.setState(bt):i===">"?(t._parseError("unexpected-end-of-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),t.setState(n)):t._currentToken.systemId+=i,!0}function bt(e){var i=e.char();return i===r.EOF?(t._parseError("eof-in-doctype"),t._currentToken.forceQuirks=!0,t._emitCurrentToken(),e.unget(i),t.setState(n)):s(i)||(i===">"?(t._emitCurrentToken(),t.setState(n)):(t._parseError("unexpected-char-in-doctype"),t.setState(wt))),!0}function wt(e){var i=e.char();return i===r.EOF?(e.unget(i),t._emitCurrentToken(),t.setState(n)):i===">"&&(t._emitCurrentToken(),t.setState(n)),!0}u.DATA=n,u.RCDATA=f,u.RAWTEXT=c,u.SCRIPT_DATA=p,u.PLAINTEXT=h,this._state=u.DATA,this._inputStream.append(e),this._tokenHandler.startTokenization(this),this._inputStream.eof=!0;var t=this;while(this._state.call(this,this._inputStream));},Object.defineProperty(u.prototype,"lineNumber",{get:function(){return this._inputStream.location().line}}),Object.defineProperty(u.prototype,"columnNumber",{get:function(){return this._inputStream.location().column}}),n.Tokenizer=u},{"./EntityParser":2,"./InputStream":3}],6:[function(e,t,n){function c(e){return e===" "||e==="\n"||e===" "||e==="\r"||e==="\f"}function h(e){return c(e)||e==="\ufffd"}function p(e){for(var t=0;t2?e.parseError("expected-closing-tag-but-got-eof"):e.openElements.length==2&&e.openElements.item(1).localName!="body"?e.parseError("expected-closing-tag-but-got-eof"):e.context&&e.openElements.length>1},processComment:function(t){e.insertComment(t,e.currentStackItem().node)},processDoctype:function(t,n,r,i){e.parseError("unexpected-doctype")},processStartTag:function(e,t,n){if(this[this.start_tag_handlers[e]])this[this.start_tag_handlers[e]](e,t,n);else{if(!this[this.start_tag_handlers["-default"]])throw new Error("No handler found for "+e);this[this.start_tag_handlers["-default"]](e,t,n)}},processEndTag:function(e){if(this[this.end_tag_handlers[e]])this[this.end_tag_handlers[e]](e);else{if(!this[this.end_tag_handlers["-default"]])throw new Error("No handler found for "+e);this[this.end_tag_handlers["-default"]](e)}},startTagHtml:function(e,n){t.inBody.startTagHtml(e,n)}},t.initial=Object.create(t.base),t.initial.processEOF=function(){e.parseError("expected-doctype-but-got-eof"),this.anythingElse(),e.insertionMode.processEOF()},t.initial.processComment=function(t){e.insertComment(t,e.document)},t.initial.processDoctype=function(t,n,r,i){function s(e){return n.toLowerCase().indexOf(e)===0}e.insertDoctype(t||"",n||"",r||""),i||t!="html"||n!=null&&(["+//silmaril//dtd html pro v0r11 19970101//","-//advasoft ltd//dtd html 3.0 aswedit + extensions//","-//as//dtd html 3.0 aswedit + extensions//","-//ietf//dtd html 2.0 level 1//","-//ietf//dtd html 2.0 level 2//","-//ietf//dtd html 2.0 strict level 1//","-//ietf//dtd html 2.0 strict level 2//","-//ietf//dtd html 2.0 strict//","-//ietf//dtd html 2.0//","-//ietf//dtd html 2.1e//","-//ietf//dtd html 3.0//","-//ietf//dtd html 3.0//","-//ietf//dtd html 3.2 final//","-//ietf//dtd html 3.2//","-//ietf//dtd html 3//","-//ietf//dtd html level 0//","-//ietf//dtd html level 0//","-//ietf//dtd html level 1//","-//ietf//dtd html level 1//","-//ietf//dtd html level 2//","-//ietf//dtd html level 2//","-//ietf//dtd html level 3//","-//ietf//dtd html level 3//","-//ietf//dtd html strict level 0//","-//ietf//dtd html strict level 0//","-//ietf//dtd html strict level 1//","-//ietf//dtd html strict level 1//","-//ietf//dtd html strict level 2//","-//ietf//dtd html strict level 2//","-//ietf//dtd html strict level 3//","-//ietf//dtd html strict level 3//","-//ietf//dtd html strict//","-//ietf//dtd html strict//","-//ietf//dtd html strict//","-//ietf//dtd html//","-//ietf//dtd html//","-//ietf//dtd html//","-//metrius//dtd metrius presentational//","-//microsoft//dtd internet explorer 2.0 html strict//","-//microsoft//dtd internet explorer 2.0 html//","-//microsoft//dtd internet explorer 2.0 tables//","-//microsoft//dtd internet explorer 3.0 html strict//","-//microsoft//dtd internet explorer 3.0 html//","-//microsoft//dtd internet explorer 3.0 tables//","-//netscape comm. corp.//dtd html//","-//netscape comm. corp.//dtd strict html//","-//o'reilly and associates//dtd html 2.0//","-//o'reilly and associates//dtd html extended 1.0//","-//spyglass//dtd html 2.0 extended//","-//sq//dtd html 2.0 hotmetal + extensions//","-//sun microsystems corp.//dtd hotjava html//","-//sun microsystems corp.//dtd hotjava strict html//","-//w3c//dtd html 3 1995-03-24//","-//w3c//dtd html 3.2 draft//","-//w3c//dtd html 3.2 final//","-//w3c//dtd html 3.2//","-//w3c//dtd html 3.2s draft//","-//w3c//dtd html 4.0 frameset//","-//w3c//dtd html 4.0 transitional//","-//w3c//dtd html experimental 19960712//","-//w3c//dtd html experimental 970421//","-//w3c//dtd w3 html//","-//w3o//dtd w3 html 3.0//","-//webtechs//dtd mozilla html 2.0//","-//webtechs//dtd mozilla html//","html"].some(s)||["-//w3o//dtd w3 html strict 3.0//en//","-/w3c/dtd html 4.0 transitional/en","html"].indexOf(n.toLowerCase())>-1||r==null&&["-//w3c//dtd html 4.01 transitional//","-//w3c//dtd html 4.01 frameset//"].some(s))||r!=null&&r.toLowerCase()=="http://www.ibm.com/data/dtd/v11/ibmxhtml1-transitional.dtd"?(e.compatMode="quirks",e.parseError("quirky-doctype")):n!=null&&(["-//w3c//dtd xhtml 1.0 transitional//","-//w3c//dtd xhtml 1.0 frameset//"].some(s)||r!=null&&["-//w3c//dtd html 4.01 transitional//","-//w3c//dtd html 4.01 frameset//"].indexOf(n.toLowerCase())>-1)?(e.compatMode="limited quirks",e.parseError("almost-standards-doctype")):n=="-//W3C//DTD HTML 4.0//EN"&&(r==null||r=="http://www.w3.org/TR/REC-html40/strict.dtd")||n=="-//W3C//DTD HTML 4.01//EN"&&(r==null||r=="http://www.w3.org/TR/html4/strict.dtd")||n=="-//W3C//DTD XHTML 1.0 Strict//EN"&&r=="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"||n=="-//W3C//DTD XHTML 1.1//EN"&&r=="http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"||(r!=null&&r!="about:legacy-compat"||n!=null)&&e.parseError("unknown-doctype"),e.setInsertionMode("beforeHTML")},t.initial.processCharacters=function(t){t.skipLeadingWhitespace();if(!t.length)return;e.parseError("expected-doctype-but-got-chars"),this.anythingElse(),e.insertionMode.processCharacters(t)},t.initial.processStartTag=function(t,n,r){e.parseError("expected-doctype-but-got-start-tag",{name:t}),this.anythingElse(),e.insertionMode.processStartTag(t,n,r)},t.initial.processEndTag=function(t){e.parseError("expected-doctype-but-got-end-tag",{name:t}),this.anythingElse(),e.insertionMode.processEndTag(t)},t.initial.anythingElse=function(){e.compatMode="quirks",e.setInsertionMode("beforeHTML")},t.beforeHTML=Object.create(t.base),t.beforeHTML.start_tag_handlers={html:"startTagHtml","-default":"startTagOther"},t.beforeHTML.processEOF=function(){this.anythingElse(),e.insertionMode.processEOF()},t.beforeHTML.processComment=function(t){e.insertComment(t,e.document)},t.beforeHTML.processCharacters=function(t){t.skipLeadingWhitespace();if(!t.length)return;this.anythingElse(),e.insertionMode.processCharacters(t)},t.beforeHTML.startTagHtml=function(t,n,r){e.insertHtmlElement(n),e.setInsertionMode("beforeHead")},t.beforeHTML.startTagOther=function(t,n,r){this.anythingElse(),e.insertionMode.processStartTag(t,n,r)},t.beforeHTML.processEndTag=function(t){this.anythingElse(),e.insertionMode.processEndTag(t)},t.beforeHTML.anythingElse=function(){e.insertHtmlElement(),e.setInsertionMode("beforeHead")},t.afterAfterBody=Object.create(t.base),t.afterAfterBody.start_tag_handlers={html:"startTagHtml","-default":"startTagOther"},t.afterAfterBody.processComment=function(t){e.insertComment(t,e.document)},t.afterAfterBody.processDoctype=function(e){t.inBody.processDoctype(e)},t.afterAfterBody.startTagHtml=function(e,n){t.inBody.startTagHtml(e,n)},t.afterAfterBody.startTagOther=function(t,n,r){e.parseError("unexpected-start-tag",{name:t}),e.setInsertionMode("inBody"),e.insertionMode.processStartTag(t,n,r)},t.afterAfterBody.endTagOther=function(t){e.parseError("unexpected-end-tag",{name:t}),e.setInsertionMode("inBody"),e.insertionMode.processEndTag(t)},t.afterAfterBody.processCharacters=function(n){if(!p(n.characters))return e.parseError("unexpected-char-after-body"),e.setInsertionMode("inBody"),e.insertionMode.processCharacters(n);t.inBody.processCharacters(n)},t.afterBody=Object.create(t.base),t.afterBody.end_tag_handlers={html:"endTagHtml","-default":"endTagOther"},t.afterBody.processComment=function(t){e.insertComment(t,e.openElements.rootNode)},t.afterBody.processCharacters=function(n){if(!p(n.characters))return e.parseError("unexpected-char-after-body"),e.setInsertionMode("inBody"),e.insertionMode.processCharacters(n);t.inBody.processCharacters(n)},t.afterBody.processStartTag=function(t,n,r){e.parseError("unexpected-start-tag-after-body",{name:t}),e.setInsertionMode("inBody"),e.insertionMode.processStartTag(t,n,r)},t.afterBody.endTagHtml=function(t){e.context?e.parseError("end-html-in-innerhtml"):e.setInsertionMode("afterAfterBody")},t.afterBody.endTagOther=function(t){e.parseError("unexpected-end-tag-after-body",{name:t}),e.setInsertionMode("inBody"),e.insertionMode.processEndTag(t)},t.afterFrameset=Object.create(t.base),t.afterFrameset.start_tag_handlers={html:"startTagHtml",noframes:"startTagNoframes","-default":"startTagOther"},t.afterFrameset.end_tag_handlers={html:"endTagHtml","-default":"endTagOther"},t.afterFrameset.processCharacters=function(t){var n=t.takeRemaining(),r="";for(var i=0;i1)e.openElements.pop();e.insertElement(t,n),e.setInsertionMode("inFrameset")}},t.inBody.startTagCloseP=function(t,n){e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertElement(t,n)},t.inBody.startTagPreListing=function(t,n){e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertElement(t,n),e.framesetOk=!1,e.shouldSkipLeadingNewline=!0},t.inBody.startTagForm=function(t,n){e.form?e.parseError("unexpected-start-tag",{name:t}):(e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertElement(t,n),e.form=e.currentStackItem())},t.inBody.startTagRpRt=function(t,n){e.openElements.inScope("ruby")&&(e.generateImpliedEndTags(),e.currentStackItem().localName!="ruby"&&e.parseError("unexpected-start-tag",{name:t})),e.insertElement(t,n)},t.inBody.startTagListItem=function(t,n){var r={li:["li"],dd:["dd","dt"],dt:["dd","dt"]},i=r[t],s=e.openElements;for(var o=s.length-1;o>=0;o--){var u=s.item(o);if(i.indexOf(u.localName)!=-1){e.insertionMode.processEndTag(u.localName);break}if(u.isSpecial()&&u.localName!=="p"&&u.localName!=="address"&&u.localName!=="div")break}e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertElement(t,n),e.framesetOk=!1},t.inBody.startTagPlaintext=function(t,n){e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertElement(t,n),e.tokenizer.setState(u.PLAINTEXT)},t.inBody.startTagHeading=function(t,n){e.openElements.inButtonScope("p")&&this.endTagP("p"),e.currentStackItem().isNumberedHeader()&&(e.parseError("unexpected-start-tag",{name:t}),e.popElement()),e.insertElement(t,n)},t.inBody.startTagA=function(t,n){var r=e.elementInActiveFormattingElements("a");r&&(e.parseError("unexpected-start-tag-implies-end-tag",{startName:"a",endName:"a"}),e.adoptionAgencyEndTag("a"),e.openElements.contains(r)&&e.openElements.remove(r),e.removeElementFromActiveFormattingElements(r)),e.reconstructActiveFormattingElements(),e.insertFormattingElement(t,n)},t.inBody.startTagFormatting=function(t,n){e.reconstructActiveFormattingElements(),e.insertFormattingElement(t,n)},t.inBody.startTagNobr=function(t,n){e.reconstructActiveFormattingElements(),e.openElements.inScope("nobr")&&(e.parseError("unexpected-start-tag-implies-end-tag",{startName:"nobr",endName:"nobr"}),this.processEndTag("nobr"),e.reconstructActiveFormattingElements()),e.insertFormattingElement(t,n)},t.inBody.startTagButton=function(t,n){e.openElements.inScope("button")?(e.parseError("unexpected-start-tag-implies-end-tag",{startName:"button",endName:"button"}),this.processEndTag("button"),e.insertionMode.processStartTag(t,n)):(e.framesetOk=!1,e.reconstructActiveFormattingElements(),e.insertElement(t,n))},t.inBody.startTagAppletMarqueeObject=function(t,n){e.reconstructActiveFormattingElements(),e.insertElement(t,n),e.activeFormattingElements.push(l),e.framesetOk=!1},t.inBody.endTagAppletMarqueeObject=function(t){e.openElements.inScope(t)?(e.generateImpliedEndTags(),e.currentStackItem().localName!=t&&e.parseError("end-tag-too-early",{name:t}),e.openElements.popUntilPopped(t),e.clearActiveFormattingElements()):e.parseError("unexpected-end-tag",{name:t})},t.inBody.startTagXmp=function(t,n){e.openElements.inButtonScope("p")&&this.processEndTag("p"),e.reconstructActiveFormattingElements(),e.processGenericRawTextStartTag(t,n),e.framesetOk=!1},t.inBody.startTagTable=function(t,n){e.compatMode!=="quirks"&&e.openElements.inButtonScope("p")&&this.processEndTag("p"),e.insertElement(t,n),e.setInsertionMode("inTable"),e.framesetOk=!1},t.inBody.startTagVoidFormatting=function(t,n){e.reconstructActiveFormattingElements(),e.insertSelfClosingElement(t,n),e.framesetOk=!1},t.inBody.startTagParamSourceTrack=function(t,n){e.insertSelfClosingElement(t,n)},t.inBody.startTagHr=function(t,n){e.openElements.inButtonScope("p")&&this.endTagP("p"),e.insertSelfClosingElement(t,n),e.framesetOk=!1},t.inBody.startTagImage=function(t,n){e.parseError("unexpected-start-tag-treated-as",{originalName:"image",newName:"img"}),this.processStartTag("img",n)},t.inBody.startTagInput=function(t,n){var r=e.framesetOk;this.startTagVoidFormatting(t,n);for(var i in n)if(n[i].nodeName=="type"){n[i].nodeValue.toLowerCase()=="hidden"&&(e.framesetOk=r);break}},t.inBody.startTagIsindex=function(t,n){e.parseError("deprecated-tag",{name:"isindex"}),e.selfClosingFlagAcknowledged=!0;if(e.form)return;var r=[],i=[],s="This is a searchable index. Enter search keywords: ";for(var o in n)switch(n[o].nodeName){case"action":r.push({nodeName:"action",nodeValue:n[o].nodeValue});break;case"prompt":s=n[o].nodeValue;break;case"name":break;default:i.push({nodeName:n[o].nodeName,nodeValue:n[o].nodeValue})}i.push({nodeName:"name",nodeValue:"isindex"}),this.processStartTag("form",r),this.processStartTag("hr"),this.processStartTag("label"),this.processCharacters(new m(s)),this.processStartTag("input",i),this.processEndTag("label"),this.processStartTag("hr"),this.processEndTag("form")},t.inBody.startTagTextarea=function(t,n){e.insertElement(t,n),e.tokenizer.setState(u.RCDATA),e.originalInsertionMode=e.insertionModeName,e.shouldSkipLeadingNewline=!0,e.framesetOk=!1,e.setInsertionMode("text")},t.inBody.startTagIFrame=function(t,n){e.framesetOk=!1,this.startTagRawText(t,n)},t.inBody.startTagRawText=function(t,n){e.processGenericRawTextStartTag(t,n)},t.inBody.startTagSelect=function(t,n){e.reconstructActiveFormattingElements(),e.insertElement(t,n),e.framesetOk=!1;var r=e.insertionModeName;r=="inTable"||r=="inCaption"||r=="inColumnGroup"||r=="inTableBody"||r=="inRow"||r=="inCell"?e.setInsertionMode("inSelectInTable"):e.setInsertionMode("inSelect")},t.inBody.startTagMisplaced=function(t,n){e.parseError("unexpected-start-tag-ignored",{name:t})},t.inBody.endTagMisplaced=function(t){e.parseError("unexpected-end-tag",{name:t})},t.inBody.endTagBr=function(t){e.parseError("unexpected-end-tag-treated-as",{originalName:"br",newName:"br element"}),e.reconstructActiveFormattingElements(),e.insertElement(t,[]),e.popElement()},t.inBody.startTagOptionOptgroup=function(t,n){e.currentStackItem().localName=="option"&&e.popElement(),e.reconstructActiveFormattingElements(),e.insertElement(t,n)},t.inBody.startTagOther=function(t,n){e.reconstructActiveFormattingElements(),e.insertElement(t,n)},t.inBody.endTagOther=function(t){var n;for(var r=e.openElements.length-1;r>0;r--){n=e.openElements.item(r);if(n.localName==t){e.generateImpliedEndTags(t),e.currentStackItem().localName!=t&&e.parseError("unexpected-end-tag",{name:t}),e.openElements.remove_openElements_until(function(e){return e===n});break}if(n.isSpecial()){e.parseError("unexpected-end-tag",{name:t});break}}},t.inBody.startTagMath=function(t,n,r){e.reconstructActiveFormattingElements(),n=e.adjustMathMLAttributes(n),n=e.adjustForeignAttributes(n),e.insertForeignElement(t,n,"http://www.w3.org/1998/Math/MathML",r)},t.inBody.startTagSVG=function(t,n,r){e.reconstructActiveFormattingElements(),n=e.adjustSVGAttributes(n),n=e.adjustForeignAttributes(n),e.insertForeignElement(t,n,"http://www.w3.org/2000/svg",r)},t.inBody.endTagP=function(t){e.openElements.inButtonScope("p")?(e.generateImpliedEndTags("p"),e.currentStackItem().localName!="p"&&e.parseError("unexpected-implied-end-tag",{name:"p"}),e.openElements.popUntilPopped(t)):(e.parseError("unexpected-end-tag",{name:"p"}),this.startTagCloseP("p",[]),this.endTagP("p"))},t.inBody.endTagBody=function(t){if(!e.openElements.inScope("body")){e.parseError("unexpected-end-tag",{name:t});return}e.currentStackItem().localName!="body"&&e.parseError("expected-one-end-tag-but-got-another",{expectedName:e.currentStackItem().localName,gotName:t}),e.setInsertionMode("afterBody")},t.inBody.endTagHtml=function(t){if(!e.openElements.inScope("body")){e.parseError("unexpected-end-tag",{name:t});return}e.currentStackItem().localName!="body"&&e.parseError("expected-one-end-tag-but-got-another",{expectedName:e.currentStackItem().localName,gotName:t}),e.setInsertionMode("afterBody"),e.insertionMode.processEndTag(t)},t.inBody.endTagBlock=function(t){e.openElements.inScope(t)?(e.generateImpliedEndTags(),e.currentStackItem().localName!=t&&e.parseError("end-tag-too-early",{name:t}),e.openElements.popUntilPopped(t)):e.parseError("unexpected-end-tag",{name:t})},t.inBody.endTagForm=function(t){var n=e.form;e.form=null,!n||!e.openElements.inScope(t)?e.parseError("unexpected-end-tag",{name:t}):(e.generateImpliedEndTags(),e.currentStackItem()!=n&&e.parseError("end-tag-too-early-ignored",{name:"form"}),e.openElements.remove(n))},t.inBody.endTagListItem=function(t){e.openElements.inListItemScope(t)?(e.generateImpliedEndTags(t),e.currentStackItem().localName!=t&&e.parseError("end-tag-too-early",{name:t}),e.openElements.popUntilPopped(t)):e.parseError("unexpected-end-tag",{name:t})},t.inBody.endTagHeading=function(t){if(!e.openElements.hasNumberedHeaderElementInScope()){e.parseError("unexpected-end-tag",{name:t});return}e.generateImpliedEndTags(),e.currentStackItem().localName!=t&&e.parseError("end-tag-too-early",{name:t}),e.openElements.remove_openElements_until(function(e){return e.isNumberedHeader()})},t.inBody.endTagFormatting=function(t,n){e.adoptionAgencyEndTag(t)||this.endTagOther(t,n)},t.inCaption=Object.create(t.base),t.inCaption.start_tag_handlers={html:"startTagHtml",caption:"startTagTableElement",col:"startTagTableElement",colgroup:"startTagTableElement",tbody:"startTagTableElement",td:"startTagTableElement",tfoot:"startTagTableElement",thead:"startTagTableElement",tr:"startTagTableElement","-default":"startTagOther"},t.inCaption.end_tag_handlers={caption:"endTagCaption",table:"endTagTable",body:"endTagIgnore",col:"endTagIgnore",colgroup:"endTagIgnore",html:"endTagIgnore",tbody:"endTagIgnore",td:"endTagIgnore",tfood:"endTagIgnore",thead:"endTagIgnore",tr:"endTagIgnore","-default":"endTagOther"},t.inCaption.processCharacters=function(e){t.inBody.processCharacters(e)},t.inCaption.startTagTableElement=function(t,n){e.parseError("unexpected-end-tag",{name:t});var r=!e.openElements.inTableScope("caption");e.insertionMode.processEndTag("caption"),r||e.insertionMode.processStartTag(t,n)},t.inCaption.startTagOther=function(e,n,r){t.inBody.processStartTag(e,n,r)},t.inCaption.endTagCaption=function(t){e.openElements.inTableScope("caption")?(e.generateImpliedEndTags(),e.currentStackItem().localName!="caption"&&e.parseError("expected-one-end-tag-but-got-another",{gotName:"caption",expectedName:e.currentStackItem().localName}),e.openElements.popUntilPopped("caption"),e.clearActiveFormattingElements(),e.setInsertionMode("inTable")):(r.ok(e.context),e.parseError("unexpected-end-tag",{name:t}))},t.inCaption.endTagTable=function(t){e.parseError("unexpected-end-table-in-caption");var n=!e.openElements.inTableScope("caption");e.insertionMode.processEndTag("caption"),n||e.insertionMode.processEndTag(t)},t.inCaption.endTagIgnore=function(t){e.parseError("unexpected-end-tag",{name:t})},t.inCaption.endTagOther=function(e){t.inBody.processEndTag(e)},t.inCell=Object.create(t.base),t.inCell.start_tag_handlers={html:"startTagHtml",caption:"startTagTableOther",col:"startTagTableOther",colgroup:"startTagTableOther",tbody:"startTagTableOther",td:"startTagTableOther",tfoot:"startTagTableOther",th:"startTagTableOther",thead:"startTagTableOther",tr:"startTagTableOther","-default":"startTagOther"},t.inCell.end_tag_handlers={td:"endTagTableCell",th:"endTagTableCell",body:"endTagIgnore",caption:"endTagIgnore",col:"endTagIgnore",colgroup:"endTagIgnore",html:"endTagIgnore",table:"endTagImply",tbody:"endTagImply",tfoot:"endTagImply",thead:"endTagImply",tr:"endTagImply","-default":"endTagOther"},t.inCell.processCharacters=function(e){t.inBody.processCharacters(e)},t.inCell.startTagTableOther=function(t,n,r){e.openElements.inTableScope("td")||e.openElements.inTableScope("th")?(this.closeCell(),e.insertionMode.processStartTag(t,n,r)):e.parseError("unexpected-start-tag",{name:t})},t.inCell.startTagOther=function(e,n,r){t.inBody.processStartTag(e,n,r)},t.inCell.endTagTableCell=function(t){e.openElements.inTableScope(t)?(e.generateImpliedEndTags(t),e.currentStackItem().localName!=t.toLowerCase()?(e.parseError("unexpected-cell-end-tag",{name:t}),e.openElements.popUntilPopped(t)):e.popElement(),e.clearActiveFormattingElements(),e.setInsertionMode("inRow")):e.parseError("unexpected-end-tag",{name:t})},t.inCell.endTagIgnore=function(t){e.parseError("unexpected-end-tag",{name:t})},t.inCell.endTagImply=function(t){e.openElements.inTableScope(t)?(this.closeCell(),e.insertionMode.processEndTag(t)):e.parseError("unexpected-end-tag",{name:t})},t.inCell.endTagOther=function(e){t.inBody.processEndTag(e)},t.inCell.closeCell=function(){e.openElements.inTableScope("td")?this.endTagTableCell("td"):e.openElements.inTableScope("th")&&this.endTagTableCell("th")},t.inColumnGroup=Object.create(t.base),t.inColumnGroup.start_tag_handlers={html:"startTagHtml",col:"startTagCol","-default":"startTagOther"},t.inColumnGroup.end_tag_handlers={colgroup:"endTagColgroup",col:"endTagCol","-default":"endTagOther"},t.inColumnGroup.ignoreEndTagColgroup=function(){return e.currentStackItem().localName=="html"},t.inColumnGroup.processCharacters=function(t){var n=t.takeLeadingWhitespace();n&&e.insertText(n);if(!t.length)return;var r=this.ignoreEndTagColgroup();this.endTagColgroup("colgroup"),r||e.insertionMode.processCharacters(t)},t.inColumnGroup.startTagCol=function(t,n){e.insertSelfClosingElement(t,n)},t.inColumnGroup.startTagOther=function(t,n,r){var i=this.ignoreEndTagColgroup();this.endTagColgroup("colgroup"),i||e.insertionMode.processStartTag(t,n,r)},t.inColumnGroup.endTagColgroup=function(t){this.ignoreEndTagColgroup()?(r.ok(e.context),e.parseError("unexpected-end-tag",{name:t})):(e.popElement(),e.setInsertionMode("inTable"))},t.inColumnGroup.endTagCol=function(t){e.parseError("no-end-tag",{name:"col"})},t.inColumnGroup.endTagOther=function(t){var n=this.ignoreEndTagColgroup();this.endTagColgroup("colgroup"),n||e.insertionMode.processEndTag(t)},t.inForeignContent=Object.create(t.base),t.inForeignContent.processStartTag=function(t,n,r){if(["b","big","blockquote","body","br","center","code","dd","div","dl","dt","em","embed","h1","h2","h3","h4","h5","h6","head","hr","i","img","li","listing","menu","meta","nobr","ol","p","pre","ruby","s","small","span","strong","strike","sub","sup","table","tt","u","ul","var"].indexOf(t)!=-1||t=="font"&&n.some(function(e){return["color","face","size"].indexOf(e.nodeName)>=0})){e.parseError("unexpected-html-element-in-foreign-content",{name:t});while(e.currentStackItem().isForeign()&&!e.currentStackItem().isHtmlIntegrationPoint()&&!e.currentStackItem().isMathMLTextIntegrationPoint())e.openElements.pop();e.insertionMode.processStartTag(t,n,r);return}e.currentStackItem().namespaceURI=="http://www.w3.org/1998/Math/MathML"&&(n=e.adjustMathMLAttributes(n)),e.currentStackItem().namespaceURI=="http://www.w3.org/2000/svg"&&(t=e.adjustSVGTagNameCase(t),n=e.adjustSVGAttributes(n)),n=e.adjustForeignAttributes(n),e.insertForeignElement(t,n,e.currentStackItem().namespaceURI,r)},t.inForeignContent.processEndTag=function(t){var n=e.currentStackItem(),r=e.openElements.length-1;n.localName.toLowerCase()!=t&&e.parseError("unexpected-end-tag",{name:t});for(;;){if(r===0)break;if(n.localName.toLowerCase()==t){while(e.openElements.pop()!=n);break}r-=1,n=e.openElements.item(r);if(n.isForeign())continue;e.insertionMode.processEndTag(t);break}},t.inForeignContent.processCharacters=function(t){var n=t.takeRemaining();n=n.replace(/\u0000/g,function(t,n){return e.parseError("invalid-codepoint"),"\ufffd"}),e.framesetOk&&!d(n)&&(e.framesetOk=!1),e.insertText(n)},t.inHeadNoscript=Object.create(t.base),t.inHeadNoscript.start_tag_handlers={html:"startTagHtml",basefont:"startTagBasefontBgsoundLinkMetaNoframesStyle",bgsound:"startTagBasefontBgsoundLinkMetaNoframesStyle",link:"startTagBasefontBgsoundLinkMetaNoframesStyle",meta:"startTagBasefontBgsoundLinkMetaNoframesStyle",noframes:"startTagBasefontBgsoundLinkMetaNoframesStyle",style:"startTagBasefontBgsoundLinkMetaNoframesStyle",head:"startTagHeadNoscript",noscript:"startTagHeadNoscript","-default":"startTagOther"},t.inHeadNoscript.end_tag_handlers={noscript:"endTagNoscript",br:"endTagBr","-default":"endTagOther"},t.inHeadNoscript.processCharacters=function(t){var n=t.takeLeadingWhitespace();n&&e.insertText(n);if(!t.length)return;e.parseError("unexpected-char-in-frameset"),this.anythingElse(),e.insertionMode.processCharacters(t)},t.inHeadNoscript.processComment=function(e){t.inHead.processComment(e)},t.inHeadNoscript.startTagBasefontBgsoundLinkMetaNoframesStyle=function(e,n){t.inHead.processStartTag(e,n)},t.inHeadNoscript.startTagHeadNoscript=function(t,n){e.parseError("unexpected-start-tag-in-frameset",{name:t})},t.inHeadNoscript.startTagOther=function(t,n){e.parseError("unexpected-start-tag-in-frameset",{name:t}),this.anythingElse(),e.insertionMode.processStartTag(t,n)},t.inHeadNoscript.endTagBr=function(t,n){e.parseError("unexpected-end-tag-in-frameset",{name:t}),this.anythingElse(),e.insertionMode.processEndTag(t,n)},t.inHeadNoscript.endTagNoscript=function(t,n){e.popElement(),e.setInsertionMode("inHead")},t.inHeadNoscript.endTagOther=function(t,n){e.parseError("unexpected-end-tag-in-frameset",{name:t})},t.inHeadNoscript.anythingElse=function(){e.popElement(),e.setInsertionMode("inHead")},t.inFrameset=Object.create(t.base),t.inFrameset.start_tag_handlers={html:"startTagHtml",frameset:"startTagFrameset",frame:"startTagFrame",noframes:"startTagNoframes","-default":"startTagOther"},t.inFrameset.end_tag_handlers={frameset:"endTagFrameset",noframes:"endTagNoframes","-default":"endTagOther"},t.inFrameset.processCharacters=function(t){e.parseError("unexpected-char-in-frameset")},t.inFrameset.startTagFrameset=function(t,n){e.insertElement(t,n)},t.inFrameset.startTagFrame=function(t,n){e.insertSelfClosingElement(t,n)},t.inFrameset.startTagNoframes=function(e,n){t.inBody.processStartTag(e,n)},t.inFrameset.startTagOther=function(t,n){e.parseError("unexpected-start-tag-in-frameset",{name:t})},t.inFrameset.endTagFrameset=function(t,n){e.currentStackItem().localName=="html"?e.parseError("unexpected-frameset-in-frameset-innerhtml"):e.popElement(),!e.context&&e.currentStackItem().localName!="frameset"&&e.setInsertionMode("afterFrameset")},t.inFrameset.endTagNoframes=function(e){t.inBody.processEndTag(e)},t.inFrameset.endTagOther=function(t){e.parseError("unexpected-end-tag-in-frameset",{name:t})},t.inTable=Object.create(t.base),t.inTable.start_tag_handlers={html:"startTagHtml",caption:"startTagCaption",colgroup:"startTagColgroup",col:"startTagCol",table:"startTagTable",tbody:"startTagRowGroup",tfoot:"startTagRowGroup",thead:"startTagRowGroup",td:"startTagImplyTbody",th:"startTagImplyTbody",tr:"startTagImplyTbody",style:"startTagStyleScript",script:"startTagStyleScript",input:"startTagInput",form:"startTagForm","-default":"startTagOther"},t.inTable.end_tag_handlers={table:"endTagTable",body:"endTagIgnore",caption:"endTagIgnore",col:"endTagIgnore",colgroup:"endTagIgnore",html:"endTagIgnore",tbody:"endTagIgnore",td:"endTagIgnore",tfoot:"endTagIgnore",th:"endTagIgnore",thead:"endTagIgnore",tr:"endTagIgnore","-default":"endTagOther"},t.inTable.processCharacters=function(n){if(e.currentStackItem().isFosterParenting()){var r=e.insertionModeName;e.setInsertionMode("inTableText"),e.originalInsertionMode=r,e.insertionMode.processCharacters(n)}else e.redirectAttachToFosterParent=!0,t.inBody.processCharacters(n),e.redirectAttachToFosterParent=!1},t.inTable.startTagCaption=function(t,n){e.openElements.popUntilTableScopeMarker(),e.activeFormattingElements.push(l),e.insertElement(t,n),e.setInsertionMode("inCaption")},t.inTable.startTagColgroup=function(t,n){e.openElements.popUntilTableScopeMarker(),e.insertElement(t,n),e.setInsertionMode("inColumnGroup")},t.inTable.startTagCol=function(t,n){this.startTagColgroup("colgroup",[]),e.insertionMode.processStartTag(t,n)},t.inTable.startTagRowGroup=function(t,n){e.openElements.popUntilTableScopeMarker(),e.insertElement(t,n),e.setInsertionMode("inTableBody")},t.inTable.startTagImplyTbody=function(t,n){this.startTagRowGroup("tbody",[]),e.insertionMode.processStartTag(t,n)},t.inTable.startTagTable=function(t,n){e.parseError("unexpected-start-tag-implies-end-tag",{startName:"table",endName:"table"}),e.insertionMode.processEndTag("table"),e.context||e.insertionMode.processStartTag(t,n)},t.inTable.startTagStyleScript=function(e,n){t.inHead.processStartTag(e,n)},t.inTable.startTagInput=function(t,n){for(var r in n)if(n[r].nodeName.toLowerCase()=="type"){if(n[r].nodeValue.toLowerCase()=="hidden"){e.parseError("unexpected-hidden-input-in-table"),e.insertElement(t,n),e.openElements.pop();return}break}this.startTagOther(t,n)},t.inTable.startTagForm=function(t,n){e.parseError("unexpected-form-in-table"),e.form||(e.insertElement(t,n),e.form=e.currentStackItem(),e.openElements.pop())},t.inTable.startTagOther=function(n,r,i){e.parseError("unexpected-start-tag-implies-table-voodoo",{name:n}),e.redirectAttachToFosterParent=!0,t.inBody.processStartTag(n,r,i),e.redirectAttachToFosterParent=!1},t.inTable.endTagTable=function(t){e.openElements.inTableScope(t)?(e.generateImpliedEndTags(),e.currentStackItem().localName!=t&&e.parseError("end-tag-too-early-named",{gotName:"table",expectedName:e.currentStackItem().localName}),e.openElements.popUntilPopped("table"),e.resetInsertionMode()):(r.ok(e.context),e.parseError("unexpected-end-tag",{name:t}))},t.inTable.endTagIgnore=function(t){e.parseError("unexpected-end-tag",{name:t})},t.inTable.endTagOther=function(n){e.parseError("unexpected-end-tag-implies-table-voodoo",{name:n}),e.redirectAttachToFosterParent=!0,t.inBody.processEndTag(n),e.redirectAttachToFosterParent=!1},t.inTableText=Object.create(t.base),t.inTableText.flushCharacters=function(){var t=e.pendingTableCharacters.join("");p(t)?e.insertText(t):(e.redirectAttachToFosterParent=!0,e.reconstructActiveFormattingElements(),e.insertText(t),e.framesetOk=!1,e.redirectAttachToFosterParent=!1),e.pendingTableCharacters=[]},t.inTableText.processComment=function(t){this.flushCharacters(),e.setInsertionMode(e.originalInsertionMode),e.insertionMode.processComment(t)},t.inTableText.processEOF=function(t){this.flushCharacters(),e.setInsertionMode(e.originalInsertionMode),e.insertionMode.processEOF()},t.inTableText.processCharacters=function(t){var n=t.takeRemaining();n=n.replace(/\u0000/g,function(t,n){return e.parseError("invalid-codepoint"),""});if(!n)return;e.pendingTableCharacters.push(n)},t.inTableText.processStartTag=function(t,n,r){this.flushCharacters(),e.setInsertionMode(e.originalInsertionMode),e.insertionMode.processStartTag(t,n,r)},t.inTableText.processEndTag=function(t,n){this.flushCharacters(),e.setInsertionMode(e.originalInsertionMode),e.insertionMode.processEndTag(t,n)},t.inTableBody=Object.create(t.base),t.inTableBody.start_tag_handlers={html:"startTagHtml",tr:"startTagTr",td:"startTagTableCell",th:"startTagTableCell",caption:"startTagTableOther",col:"startTagTableOther",colgroup:"startTagTableOther",tbody:"startTagTableOther",tfoot:"startTagTableOther",thead:"startTagTableOther","-default":"startTagOther"},t.inTableBody.end_tag_handlers={table:"endTagTable",tbody:"endTagTableRowGroup",tfoot:"endTagTableRowGroup",thead:"endTagTableRowGroup",body:"endTagIgnore",caption:"endTagIgnore",col:"endTagIgnore",colgroup:"endTagIgnore",html:"endTagIgnore",td:"endTagIgnore",th:"endTagIgnore",tr:"endTagIgnore","-default":"endTagOther"},t.inTableBody.processCharacters=function(e){t.inTable.processCharacters(e)},t.inTableBody.startTagTr=function(t,n){e.openElements.popUntilTableBodyScopeMarker(),e.insertElement(t,n),e.setInsertionMode("inRow")},t.inTableBody.startTagTableCell=function(t,n){e.parseError("unexpected-cell-in-table-body",{name:t}),this.startTagTr("tr",[]),e.insertionMode.processStartTag(t,n)},t.inTableBody.startTagTableOther=function(t,n){e.openElements.inTableScope("tbody")||e.openElements.inTableScope("thead")||e.openElements.inTableScope("tfoot")?(e.openElements.popUntilTableBodyScopeMarker(),this.endTagTableRowGroup(e.currentStackItem().localName),e.insertionMode.processStartTag(t,n)):e.parseError("unexpected-start-tag",{name:t})},t.inTableBody.startTagOther=function(e,n){t.inTable.processStartTag(e,n)},t.inTableBody.endTagTableRowGroup=function(t){e.openElements.inTableScope(t)?(e.openElements.popUntilTableBodyScopeMarker(),e.popElement(),e.setInsertionMode("inTable")):e.parseError("unexpected-end-tag-in-table-body",{name:t})},t.inTableBody.endTagTable=function(t){e.openElements.inTableScope("tbody")||e.openElements.inTableScope("thead")||e.openElements.inTableScope("tfoot")?(e.openElements.popUntilTableBodyScopeMarker(),this.endTagTableRowGroup(e.currentStackItem().localName),e.insertionMode.processEndTag(t)):e.parseError("unexpected-end-tag",{name:t})},t.inTableBody.endTagIgnore=function(t){e.parseError("unexpected-end-tag-in-table-body",{name:t})},t.inTableBody.endTagOther=function(e){t.inTable.processEndTag(e)},t.inSelect=Object.create(t.base),t.inSelect.start_tag_handlers={html:"startTagHtml",option:"startTagOption",optgroup:"startTagOptgroup",select:"startTagSelect",input:"startTagInput",keygen:"startTagInput",textarea:"startTagInput",script:"startTagScript","-default":"startTagOther"},t.inSelect.end_tag_handlers={option:"endTagOption",optgroup:"endTagOptgroup",select:"endTagSelect",caption:"endTagTableElements",table:"endTagTableElements",tbody:"endTagTableElements",tfoot:"endTagTableElements",thead:"endTagTableElements",tr:"endTagTableElements",td:"endTagTableElements",th:"endTagTableElements","-default":"endTagOther"},t.inSelect.processCharacters=function(t){var n=t.takeRemaining();n=n.replace(/\u0000/g,function(t,n){return e.parseError("invalid-codepoint"),""});if(!n)return;e.insertText(n)},t.inSelect.startTagOption=function(t,n){e.currentStackItem().localName=="option"&&e.popElement(),e.insertElement(t,n)},t.inSelect.startTagOptgroup=function(t,n){e.currentStackItem().localName=="option"&&e.popElement(),e.currentStackItem().localName=="optgroup"&&e.popElement(),e.insertElement(t,n)},t.inSelect.endTagOption=function(t){if(e.currentStackItem().localName!=="option"){e.parseError("unexpected-end-tag-in-select",{name:t});return}e.popElement()},t.inSelect.endTagOptgroup=function(t){e.currentStackItem().localName=="option"&&e.openElements.item(e.openElements.length-2).localName=="optgroup"&&e.popElement(),e.currentStackItem().localName=="optgroup"?e.popElement():e.parseError("unexpected-end-tag-in-select",{name:"optgroup"})},t.inSelect.startTagSelect=function(t){e.parseError("unexpected-select-in-select"),this.endTagSelect("select")},t.inSelect.endTagSelect=function(t){e.openElements.inTableScope("select")?(e.openElements.popUntilPopped("select"),e.resetInsertionMode()):e.parseError("unexpected-end-tag",{name:t})},t.inSelect.startTagInput=function(t,n){e.parseError("unexpected-input-in-select"),e.openElements.inSelectScope("select")&&(this.endTagSelect("select"),e.insertionMode.processStartTag(t,n))},t.inSelect.startTagScript=function(e,n){t.inHead.processStartTag(e,n)},t.inSelect.endTagTableElements=function(t){e.parseError("unexpected-end-tag-in-select",{name:t}),e.openElements.inTableScope(t)&&(this.endTagSelect("select"),e.insertionMode.processEndTag(t))},t.inSelect.startTagOther=function(t,n){e.parseError("unexpected-start-tag-in-select",{name:t})},t.inSelect.endTagOther=function(t){e.parseError("unexpected-end-tag-in-select",{name:t})},t.inSelectInTable=Object.create(t.base),t.inSelectInTable.start_tag_handlers={caption:"startTagTable",table:"startTagTable",tbody:"startTagTable",tfoot:"startTagTable",thead:"startTagTable",tr:"startTagTable",td:"startTagTable",th:"startTagTable","-default":"startTagOther"},t.inSelectInTable.end_tag_handlers={caption:"endTagTable",table:"endTagTable",tbody:"endTagTable",tfoot:"endTagTable",thead:"endTagTable",tr:"endTagTable",td:"endTagTable",th:"endTagTable","-default":"endTagOther"},t.inSelectInTable.processCharacters=function(e){t.inSelect.processCharacters(e)},t.inSelectInTable.startTagTable=function(t,n){e.parseError("unexpected-table-element-start-tag-in-select-in-table",{name:t}),this.endTagOther("select"),e.insertionMode.processStartTag(t,n)},t.inSelectInTable.startTagOther=function(e,n,r){t.inSelect.processStartTag(e,n,r)},t.inSelectInTable.endTagTable=function(t){e.parseError("unexpected-table-element-end-tag-in-select-in-table",{name:t}),e.openElements.inTableScope(t)&&(this.endTagOther("select"),e.insertionMode.processEndTag(t))},t.inSelectInTable.endTagOther=function(e){t.inSelect.processEndTag(e)},t.inRow=Object.create(t.base),t.inRow.start_tag_handlers={html:"startTagHtml",td:"startTagTableCell",th:"startTagTableCell",caption:"startTagTableOther",col:"startTagTableOther",colgroup:"startTagTableOther",tbody:"startTagTableOther",tfoot:"startTagTableOther",thead:"startTagTableOther",tr:"startTagTableOther","-default":"startTagOther"},t.inRow.end_tag_handlers={tr:"endTagTr",table:"endTagTable",tbody:"endTagTableRowGroup",tfoot:"endTagTableRowGroup",thead:"endTagTableRowGroup",body:"endTagIgnore",caption:"endTagIgnore",col:"endTagIgnore",colgroup:"endTagIgnore",html:"endTagIgnore",td:"endTagIgnore",th:"endTagIgnore","-default":"endTagOther"},t.inRow.processCharacters=function(e){t.inTable.processCharacters(e)},t.inRow.startTagTableCell=function(t,n){e.openElements.popUntilTableRowScopeMarker(),e.insertElement(t,n),e.setInsertionMode("inCell"),e.activeFormattingElements.push(l)},t.inRow.startTagTableOther=function(t,n){var r=this.ignoreEndTagTr();this.endTagTr("tr"),r||e.insertionMode.processStartTag(t,n)},t.inRow.startTagOther=function(e,n,r){t.inTable.processStartTag(e,n,r)},t.inRow.endTagTr=function(t){this.ignoreEndTagTr()?(r.ok(e.context),e.parseError("unexpected-end-tag",{name:t})):(e.openElements.popUntilTableRowScopeMarker(),e.popElement(),e.setInsertionMode("inTableBody"))},t.inRow.endTagTable=function(t){var n=this.ignoreEndTagTr();this.endTagTr("tr"),n||e.insertionMode.processEndTag(t)},t.inRow.endTagTableRowGroup=function(t){e.openElements.inTableScope(t)?(this.endTagTr("tr"),e.insertionMode.processEndTag(t)):e.parseError("unexpected-end-tag",{name:t})},t.inRow.endTagIgnore=function(t){e.parseError("unexpected-end-tag-in-table-row",{name:t})},t.inRow.endTagOther=function(e){t.inTable.processEndTag(e)},t.inRow.ignoreEndTagTr=function(){return!e.openElements.inTableScope("tr")},t.afterAfterFrameset=Object.create(t.base),t.afterAfterFrameset.start_tag_handlers={html:"startTagHtml",noframes:"startTagNoFrames","-default":"startTagOther"},t.afterAfterFrameset.processEOF=function(){},t.afterAfterFrameset.processComment=function(t){e.insertComment(t,e.document)},t.afterAfterFrameset.processCharacters=function(t){var n=t.takeRemaining(),r="";for(var i=0;i0&&this.currentStackItem().isForeign()},g.prototype.isSelfClosingFlagAcknowledged=function(){return this.selfClosingFlagAcknowledged},g.prototype.createElement=function(e,t,n){throw new Error("Not implemented")},g.prototype.attachNode=function(e,t){throw new Error("Not implemented")},g.prototype.attachNodeToFosterParent=function(e,t,n){throw new Error("Not implemented")},g.prototype.detachFromParent=function(e){throw new Error("Not implemented")},g.prototype.addAttributesToElement=function(e,t){throw new Error("Not implemented")},g.prototype.insertHtmlElement=function(e){var t=this.createElement("http://www.w3.org/1999/xhtml","html",e);return this.attachNode(t,this.document),this.openElements.pushHtmlElement(new f("http://www.w3.org/1999/xhtml","html",e,t)),t},g.prototype.insertHeadElement=function(e){var t=this.createElement("http://www.w3.org/1999/xhtml","head",e);return this.head=new f("http://www.w3.org/1999/xhtml","head",e,t),this.attachNode(t,this.openElements.top.node),this.openElements.pushHeadElement(this.head),t},g.prototype.insertBodyElement=function(e){var t=this.createElement("http://www.w3.org/1999/xhtml","body",e);return this.attachNode(t,this.openElements.top.node),this.openElements.pushBodyElement(new f("http://www.w3.org/1999/xhtml","body",e,t)),t},g.prototype.insertIntoFosterParent=function(e){var t=this.openElements.findIndex("table"),n=this.openElements.item(t).node;if(t===0)return this.attachNode(e,n);this.attachNodeToFosterParent(e,n,this.openElements.item(t-1).node)},g.prototype.insertElement=function(e,t,n,r){n||(n="http://www.w3.org/1999/xhtml");var i=this.createElement(n,e,t);this.shouldFosterParent()?this.insertIntoFosterParent(i):this.attachNode(i,this.openElements.top.node),r||this.openElements.push(new f(n,e,t,i))},g.prototype.insertFormattingElement=function(e,t){this.insertElement(e,t,"http://www.w3.org/1999/xhtml"),this.appendElementToActiveFormattingElements(this.currentStackItem())},g.prototype.insertSelfClosingElement=function(e,t){this.selfClosingFlagAcknowledged=!0,this.insertElement(e,t,"http://www.w3.org/1999/xhtml",!0)},g.prototype.insertForeignElement=function(e,t,n,r){r&&(this.selfClosingFlagAcknowledged=!0),this.insertElement(e,t,n,r)},g.prototype.insertComment=function(e,t){throw new Error("Not implemented")},g.prototype.insertDoctype=function(e,t,n){throw new Error("Not implemented")},g.prototype.insertText=function(e){throw new Error("Not implemented")},g.prototype.currentStackItem=function(){return this.openElements.top},g.prototype.popElement=function(){return this.openElements.pop()},g.prototype.shouldFosterParent=function(){return this.redirectAttachToFosterParent&&this.currentStackItem().isFosterParenting()},g.prototype.generateImpliedEndTags=function(e){var t=this.openElements.top.localName;["dd","dt","li","option","optgroup","p","rp","rt"].indexOf(t)!=-1&&t!=e&&(this.popElement(),this.generateImpliedEndTags(e))},g.prototype.reconstructActiveFormattingElements=function(){if(this.activeFormattingElements.length===0)return;var e=this.activeFormattingElements.length-1,t=this.activeFormattingElements[e];if(t==l||this.openElements.contains(t))return;while(t!=l&&!this.openElements.contains(t)){e-=1,t=this.activeFormattingElements[e];if(!t)break}for(;;){e+=1,t=this.activeFormattingElements[e],this.insertElement(t.localName,t.attributes);var n=this.currentStackItem();this.activeFormattingElements[e]=n;if(n==this.activeFormattingElements[this.activeFormattingElements.length-1])break}},g.prototype.ensureNoahsArkCondition=function(e){var t=3;if(this.activeFormattingElements.length=0;i--){var s=this.activeFormattingElements[i];if(s===l)break;if(e.localName!==s.localName||e.namespaceURI!==s.namespaceURI)continue;if(s.attributes.length!=r)continue;n.push(s)}if(n.length=0&&this.activeFormattingElements.splice(t,1)},g.prototype.elementInActiveFormattingElements=function(e){var t=this.activeFormattingElements;for(var n=t.length-1;n>=0;n--){if(t[n]==l)break;if(t[n].localName==e)return t[n]}return!1},g.prototype.clearActiveFormattingElements=function(){while(this.activeFormattingElements.length!==0&&this.activeFormattingElements.pop()!=l);},g.prototype.reparentChildren=function(e,t){throw new Error("Not implemented")},g.prototype.setFragmentContext=function(e){this.context=e},g.prototype.parseError=function(e,t){if(!this.errorHandler)return;var n=y(i[e],t);this.errorHandler.error(n,this.tokenizer._inputStream.location(),e)},g.prototype.resetInsertionMode=function(){var e=!1,t=null;for(var n=this.openElements.length-1;n>=0;n--){t=this.openElements.item(n),n===0&&(r.ok(this.context),e=!0,t=new f("http://www.w3.org/1999/xhtml",this.context,[],null));if(t.namespaceURI==="http://www.w3.org/1999/xhtml"){if(t.localName==="select")return this.setInsertionMode("inSelect");if(t.localName==="td"||t.localName==="th")return this.setInsertionMode("inCell");if(t.localName==="tr")return this.setInsertionMode("inRow");if(t.localName==="tbody"||t.localName==="thead"||t.localName==="tfoot")return this.setInsertionMode("inTableBody");if(t.localName==="caption")return this.setInsertionMode("inCaption");if(t.localName==="colgroup")return this.setInsertionMode("inColumnGroup");if(t.localName==="table")return this.setInsertionMode("inTable");if(t.localName==="head"&&!e)return this.setInsertionMode("inHead");if(t.localName==="body")return this.setInsertionMode("inBody");if(t.localName==="frameset")return this.setInsertionMode("inFrameset");if(t.localName==="html")return this.openElements.headElement?this.setInsertionMode("afterHead"):this.setInsertionMode("beforeHead")}if(e)return this.setInsertionMode("inBody")}},g.prototype.processGenericRCDATAStartTag=function(e,t){this.insertElement(e,t),this.tokenizer.setState(u.RCDATA),this.originalInsertionMode=this.insertionModeName,this.setInsertionMode("text")},g.prototype.processGenericRawTextStartTag=function(e,t){this.insertElement(e,t),this.tokenizer.setState(u.RAWTEXT),this.originalInsertionMode=this.insertionModeName,this.setInsertionMode("text")},g.prototype.adjustMathMLAttributes=function(e){return e.forEach(function(e){e.namespaceURI="http://www.w3.org/1998/Math/MathML",s.MATHMLAttributeMap[e.nodeName]&&(e.nodeName=s.MATHMLAttributeMap[e.nodeName])}),e},g.prototype.adjustSVGTagNameCase=function(e){return s.SVGTagMap[e]||e},g.prototype.adjustSVGAttributes=function(e){return e.forEach(function(e){e.namespaceURI="http://www.w3.org/2000/svg",s.SVGAttributeMap[e.nodeName]&&(e.nodeName=s.SVGAttributeMap[e.nodeName])}),e},g.prototype.adjustForeignAttributes=function(e){for(var t=0;t' instead.","expected-tag-name-but-got-question-mark":"Expected tag name. Got '?' instead. (HTML doesn't support processing instructions.)","expected-tag-name":"Expected tag name. Got something else instead.","expected-closing-tag-but-got-right-bracket":"Expected closing tag. Got '>' instead. Ignoring ''.","expected-closing-tag-but-got-eof":"Expected closing tag. Unexpected end of file.","expected-closing-tag-but-got-char":"Expected closing tag. Unexpected character '{data}' found.","eof-in-tag-name":"Unexpected end of file in the tag name.","expected-attribute-name-but-got-eof":"Unexpected end of file. Expected attribute name instead.","eof-in-attribute-name":"Unexpected end of file in attribute name.","invalid-character-in-attribute-name":"Invalid character in attribute name.","duplicate-attribute":"Dropped duplicate attribute '{name}' on tag.","expected-end-of-tag-but-got-eof":"Unexpected end of file. Expected = or end of tag.","expected-attribute-value-but-got-eof":"Unexpected end of file. Expected attribute value.","expected-attribute-value-but-got-right-bracket":"Expected attribute value. Got '>' instead.","unexpected-character-in-unquoted-attribute-value":"Unexpected character in unquoted attribute","invalid-character-after-attribute-name":"Unexpected character after attribute name.","unexpected-character-after-attribute-value":"Unexpected character after attribute value.","eof-in-attribute-value-double-quote":'Unexpected end of file in attribute value (").',"eof-in-attribute-value-single-quote":"Unexpected end of file in attribute value (').","eof-in-attribute-value-no-quotes":"Unexpected end of file in attribute value.","eof-after-attribute-value":"Unexpected end of file after attribute value.","unexpected-eof-after-solidus-in-tag":"Unexpected end of file in tag. Expected >.","unexpected-character-after-solidus-in-tag":"Unexpected character after / in tag. Expected >.","expected-dashes-or-doctype":"Expected '--' or 'DOCTYPE'. Not found.","unexpected-bang-after-double-dash-in-comment":"Unexpected ! after -- in comment.","incorrect-comment":"Incorrect comment.","eof-in-comment":"Unexpected end of file in comment.","eof-in-comment-end-dash":"Unexpected end of file in comment (-).","unexpected-dash-after-double-dash-in-comment":"Unexpected '-' after '--' found in comment.","eof-in-comment-double-dash":"Unexpected end of file in comment (--).","eof-in-comment-end-bang-state":"Unexpected end of file in comment.","unexpected-char-in-comment":"Unexpected character in comment found.","need-space-after-doctype":"No space after literal string 'DOCTYPE'.","expected-doctype-name-but-got-right-bracket":"Unexpected > character. Expected DOCTYPE name.","expected-doctype-name-but-got-eof":"Unexpected end of file. Expected DOCTYPE name.","eof-in-doctype-name":"Unexpected end of file in DOCTYPE name.","eof-in-doctype":"Unexpected end of file in DOCTYPE.","expected-space-or-right-bracket-in-doctype":"Expected space or '>'. Got '{data}'.","unexpected-end-of-doctype":"Unexpected end of DOCTYPE.","unexpected-char-in-doctype":"Unexpected character in DOCTYPE.","eof-in-bogus-doctype":"Unexpected end of file in bogus doctype.","eof-in-innerhtml":"Unexpected EOF in inner html mode.","unexpected-doctype":"Unexpected DOCTYPE. Ignored.","non-html-root":"html needs to be the first start tag.","expected-doctype-but-got-eof":"Unexpected End of file. Expected DOCTYPE.","unknown-doctype":"Erroneous DOCTYPE. Expected .","quirky-doctype":"Quirky doctype. Expected .","almost-standards-doctype":"Almost standards mode doctype. Expected .","obsolete-doctype":"Obsolete doctype. Expected .","expected-doctype-but-got-chars":"Non-space characters found without seeing a doctype first. Expected e.g. .","expected-doctype-but-got-start-tag":"Start tag seen without seeing a doctype first. Expected e.g. .","expected-doctype-but-got-end-tag":"End tag seen without seeing a doctype first. Expected e.g. .","end-tag-after-implied-root":"Unexpected end tag ({name}) after the (implied) root element.","expected-named-closing-tag-but-got-eof":"Unexpected end of file. Expected end tag ({name}).","two-heads-are-not-better-than-one":"Unexpected start tag head in existing head. Ignored.","unexpected-end-tag":"Unexpected end tag ({name}). Ignored.","unexpected-implied-end-tag":"End tag {name} implied, but there were open elements.","unexpected-start-tag-out-of-my-head":"Unexpected start tag ({name}) that can be in head. Moved.","unexpected-start-tag":"Unexpected start tag ({name}).","missing-end-tag":"Missing end tag ({name}).","missing-end-tags":"Missing end tags ({name}).","unexpected-start-tag-implies-end-tag":"Unexpected start tag ({startName}) implies end tag ({endName}).","unexpected-start-tag-treated-as":"Unexpected start tag ({originalName}). Treated as {newName}.","deprecated-tag":"Unexpected start tag {name}. Don't use it!","unexpected-start-tag-ignored":"Unexpected start tag {name}. Ignored.","expected-one-end-tag-but-got-another":"Unexpected end tag ({gotName}). Missing end tag ({expectedName}).","end-tag-too-early":"End tag ({name}) seen too early. Expected other end tag.","end-tag-too-early-named":"Unexpected end tag ({gotName}). Expected end tag ({expectedName}.","end-tag-too-early-ignored":"End tag ({name}) seen too early. Ignored.","adoption-agency-1.1":"End tag ({name}) violates step 1, paragraph 1 of the adoption agency algorithm.","adoption-agency-1.2":"End tag ({name}) violates step 1, paragraph 2 of the adoption agency algorithm.","adoption-agency-1.3":"End tag ({name}) violates step 1, paragraph 3 of the adoption agency algorithm.","adoption-agency-4.4":"End tag ({name}) violates step 4, paragraph 4 of the adoption agency algorithm.","unexpected-end-tag-treated-as":"Unexpected end tag ({originalName}). Treated as {newName}.","no-end-tag":"This element ({name}) has no end tag.","unexpected-implied-end-tag-in-table":"Unexpected implied end tag ({name}) in the table phase.","unexpected-implied-end-tag-in-table-body":"Unexpected implied end tag ({name}) in the table body phase.","unexpected-char-implies-table-voodoo":"Unexpected non-space characters in table context caused voodoo mode.","unexpected-hidden-input-in-table":"Unexpected input with type hidden in table context.","unexpected-form-in-table":"Unexpected form in table context.","unexpected-start-tag-implies-table-voodoo":"Unexpected start tag ({name}) in table context caused voodoo mode.","unexpected-end-tag-implies-table-voodoo":"Unexpected end tag ({name}) in table context caused voodoo mode.","unexpected-cell-in-table-body":"Unexpected table cell start tag ({name}) in the table body phase.","unexpected-cell-end-tag":"Got table cell end tag ({name}) while required end tags are missing.","unexpected-end-tag-in-table-body":"Unexpected end tag ({name}) in the table body phase. Ignored.","unexpected-implied-end-tag-in-table-row":"Unexpected implied end tag ({name}) in the table row phase.","unexpected-end-tag-in-table-row":"Unexpected end tag ({name}) in the table row phase. Ignored.","unexpected-select-in-select":"Unexpected select start tag in the select phase treated as select end tag.","unexpected-input-in-select":"Unexpected input start tag in the select phase.","unexpected-start-tag-in-select":"Unexpected start tag token ({name}) in the select phase. Ignored.","unexpected-end-tag-in-select":"Unexpected end tag ({name}) in the select phase. Ignored.","unexpected-table-element-start-tag-in-select-in-table":"Unexpected table element start tag ({name}) in the select in table phase.","unexpected-table-element-end-tag-in-select-in-table":"Unexpected table element end tag ({name}) in the select in table phase.","unexpected-char-after-body":"Unexpected non-space characters in the after body phase.","unexpected-start-tag-after-body":"Unexpected start tag token ({name}) in the after body phase.","unexpected-end-tag-after-body":"Unexpected end tag token ({name}) in the after body phase.","unexpected-char-in-frameset":"Unepxected characters in the frameset phase. Characters ignored.","unexpected-start-tag-in-frameset":"Unexpected start tag token ({name}) in the frameset phase. Ignored.","unexpected-frameset-in-frameset-innerhtml":"Unexpected end tag token (frameset in the frameset phase (innerHTML).","unexpected-end-tag-in-frameset":"Unexpected end tag token ({name}) in the frameset phase. Ignored.","unexpected-char-after-frameset":"Unexpected non-space characters in the after frameset phase. Ignored.","unexpected-start-tag-after-frameset":"Unexpected start tag ({name}) in the after frameset phase. Ignored.","unexpected-end-tag-after-frameset":"Unexpected end tag ({name}) in the after frameset phase. Ignored.","expected-eof-but-got-char":"Unexpected non-space characters. Expected end of file.","expected-eof-but-got-start-tag":"Unexpected start tag ({name}). Expected end of file.","expected-eof-but-got-end-tag":"Unexpected end tag ({name}). Expected end of file.","unexpected-end-table-in-caption":"Unexpected end table tag in caption. Generates implied end caption.","end-html-in-innerhtml":"Unexpected html end tag in inner html mode.","eof-in-table":"Unexpected end of file. Expected table content.","eof-in-script":"Unexpected end of file. Expected script content.","non-void-element-with-trailing-solidus":"Trailing solidus not allowed on element {name}.","unexpected-html-element-in-foreign-content":'HTML start tag "{name}" in a foreign namespace context.',"unexpected-start-tag-in-table":"Unexpected {name}. Expected table content."}},{}],9:[function(e,t,n){function o(){this.contentHandler=null,this._errorHandler=null,this._treeBuilder=new r,this._tokenizer=new i(this._treeBuilder),this._scriptingEnabled=!1}var r=e("./SAXTreeBuilder").SAXTreeBuilder,i=e("../Tokenizer").Tokenizer,s=e("./TreeParser").TreeParser;o.prototype.parse=function(e){this._tokenizer.tokenize(e);var t=this._treeBuilder.document;t&&(new s(this.contentHandler)).parse(t)},o.prototype.parseFragment=function(e,t){this._treeBuilder.setFragmentContext(t),this._tokenizer.tokenize(e);var n=this._treeBuilder.getFragment();n&&(new s(this.contentHandler)).parse(n)},Object.defineProperty(o.prototype,"scriptingEnabled",{get:function(){return this._scriptingEnabled},set:function(e){this._scriptingEnabled=e,this._treeBuilder.scriptingEnabled=e}}),Object.defineProperty(o.prototype,"errorHandler",{get:function(){return this._errorHandler},set:function(e){this._errorHandler=e,this._treeBuilder.errorHandler=e}}),n.SAXParser=o},{"../Tokenizer":5,"./SAXTreeBuilder":10,"./TreeParser":11}],10:[function(e,t,n){function s(){i.call(this)}function o(e,t){for(var n=0;n",gt:">","GT;":">",GT:">","Gt;":"\u226b","gtdot;":"\u22d7","gtlPar;":"\u2995","gtquest;":"\u2a7c","gtrapprox;":"\u2a86","gtrarr;":"\u2978","gtrdot;":"\u22d7","gtreqless;":"\u22db","gtreqqless;":"\u2a8c","gtrless;":"\u2277","gtrsim;":"\u2273","gvertneqq;":"\u2269\ufe00","gvnE;":"\u2269\ufe00","Hacek;":"\u02c7","hairsp;":"\u200a","half;":"\u00bd","hamilt;":"\u210b","HARDcy;":"\u042a","hardcy;":"\u044a","harrcir;":"\u2948","harr;":"\u2194","hArr;":"\u21d4","harrw;":"\u21ad","Hat;":"^","hbar;":"\u210f","Hcirc;":"\u0124","hcirc;":"\u0125","hearts;":"\u2665","heartsuit;":"\u2665","hellip;":"\u2026","hercon;":"\u22b9","hfr;":"\ud835\udd25","Hfr;":"\u210c","HilbertSpace;":"\u210b","hksearow;":"\u2925","hkswarow;":"\u2926","hoarr;":"\u21ff","homtht;":"\u223b","hookleftarrow;":"\u21a9","hookrightarrow;":"\u21aa","hopf;":"\ud835\udd59","Hopf;":"\u210d","horbar;":"\u2015","HorizontalLine;":"\u2500","hscr;":"\ud835\udcbd","Hscr;":"\u210b","hslash;":"\u210f","Hstrok;":"\u0126","hstrok;":"\u0127","HumpDownHump;":"\u224e","HumpEqual;":"\u224f","hybull;":"\u2043","hyphen;":"\u2010","Iacute;":"\u00cd",Iacute:"\u00cd","iacute;":"\u00ed",iacute:"\u00ed","ic;":"\u2063","Icirc;":"\u00ce",Icirc:"\u00ce","icirc;":"\u00ee",icirc:"\u00ee","Icy;":"\u0418","icy;":"\u0438","Idot;":"\u0130","IEcy;":"\u0415","iecy;":"\u0435","iexcl;":"\u00a1",iexcl:"\u00a1","iff;":"\u21d4","ifr;":"\ud835\udd26","Ifr;":"\u2111","Igrave;":"\u00cc",Igrave:"\u00cc","igrave;":"\u00ec",igrave:"\u00ec","ii;":"\u2148","iiiint;":"\u2a0c","iiint;":"\u222d","iinfin;":"\u29dc","iiota;":"\u2129","IJlig;":"\u0132","ijlig;":"\u0133","Imacr;":"\u012a","imacr;":"\u012b","image;":"\u2111","ImaginaryI;":"\u2148","imagline;":"\u2110","imagpart;":"\u2111","imath;":"\u0131","Im;":"\u2111","imof;":"\u22b7","imped;":"\u01b5","Implies;":"\u21d2","incare;":"\u2105","in;":"\u2208","infin;":"\u221e","infintie;":"\u29dd","inodot;":"\u0131","intcal;":"\u22ba","int;":"\u222b","Int;":"\u222c","integers;":"\u2124","Integral;":"\u222b","intercal;":"\u22ba","Intersection;":"\u22c2","intlarhk;":"\u2a17","intprod;":"\u2a3c","InvisibleComma;":"\u2063","InvisibleTimes;":"\u2062","IOcy;":"\u0401","iocy;":"\u0451","Iogon;":"\u012e","iogon;":"\u012f","Iopf;":"\ud835\udd40","iopf;":"\ud835\udd5a","Iota;":"\u0399","iota;":"\u03b9","iprod;":"\u2a3c","iquest;":"\u00bf",iquest:"\u00bf","iscr;":"\ud835\udcbe","Iscr;":"\u2110","isin;":"\u2208","isindot;":"\u22f5","isinE;":"\u22f9","isins;":"\u22f4","isinsv;":"\u22f3","isinv;":"\u2208","it;":"\u2062","Itilde;":"\u0128","itilde;":"\u0129","Iukcy;":"\u0406","iukcy;":"\u0456","Iuml;":"\u00cf",Iuml:"\u00cf","iuml;":"\u00ef",iuml:"\u00ef","Jcirc;":"\u0134","jcirc;":"\u0135","Jcy;":"\u0419","jcy;":"\u0439","Jfr;":"\ud835\udd0d","jfr;":"\ud835\udd27","jmath;":"\u0237","Jopf;":"\ud835\udd41","jopf;":"\ud835\udd5b","Jscr;":"\ud835\udca5","jscr;":"\ud835\udcbf","Jsercy;":"\u0408","jsercy;":"\u0458","Jukcy;":"\u0404","jukcy;":"\u0454","Kappa;":"\u039a","kappa;":"\u03ba","kappav;":"\u03f0","Kcedil;":"\u0136","kcedil;":"\u0137","Kcy;":"\u041a","kcy;":"\u043a","Kfr;":"\ud835\udd0e","kfr;":"\ud835\udd28","kgreen;":"\u0138","KHcy;":"\u0425","khcy;":"\u0445","KJcy;":"\u040c","kjcy;":"\u045c","Kopf;":"\ud835\udd42","kopf;":"\ud835\udd5c","Kscr;":"\ud835\udca6","kscr;":"\ud835\udcc0","lAarr;":"\u21da","Lacute;":"\u0139","lacute;":"\u013a","laemptyv;":"\u29b4","lagran;":"\u2112","Lambda;":"\u039b","lambda;":"\u03bb","lang;":"\u27e8","Lang;":"\u27ea","langd;":"\u2991","langle;":"\u27e8","lap;":"\u2a85","Laplacetrf;":"\u2112","laquo;":"\u00ab",laquo:"\u00ab","larrb;":"\u21e4","larrbfs;":"\u291f","larr;":"\u2190","Larr;":"\u219e","lArr;":"\u21d0","larrfs;":"\u291d","larrhk;":"\u21a9","larrlp;":"\u21ab","larrpl;":"\u2939","larrsim;":"\u2973","larrtl;":"\u21a2","latail;":"\u2919","lAtail;":"\u291b","lat;":"\u2aab","late;":"\u2aad","lates;":"\u2aad\ufe00","lbarr;":"\u290c","lBarr;":"\u290e","lbbrk;":"\u2772","lbrace;":"{","lbrack;":"[","lbrke;":"\u298b","lbrksld;":"\u298f","lbrkslu;":"\u298d","Lcaron;":"\u013d","lcaron;":"\u013e","Lcedil;":"\u013b","lcedil;":"\u013c","lceil;":"\u2308","lcub;":"{","Lcy;":"\u041b","lcy;":"\u043b","ldca;":"\u2936","ldquo;":"\u201c","ldquor;":"\u201e","ldrdhar;":"\u2967","ldrushar;":"\u294b","ldsh;":"\u21b2","le;":"\u2264","lE;":"\u2266","LeftAngleBracket;":"\u27e8","LeftArrowBar;":"\u21e4","leftarrow;":"\u2190","LeftArrow;":"\u2190","Leftarrow;":"\u21d0","LeftArrowRightArrow;":"\u21c6","leftarrowtail;":"\u21a2","LeftCeiling;":"\u2308","LeftDoubleBracket;":"\u27e6","LeftDownTeeVector;":"\u2961","LeftDownVectorBar;":"\u2959","LeftDownVector;":"\u21c3","LeftFloor;":"\u230a","leftharpoondown;":"\u21bd","leftharpoonup;":"\u21bc","leftleftarrows;":"\u21c7","leftrightarrow;":"\u2194","LeftRightArrow;":"\u2194","Leftrightarrow;":"\u21d4","leftrightarrows;":"\u21c6","leftrightharpoons;":"\u21cb","leftrightsquigarrow;":"\u21ad","LeftRightVector;":"\u294e","LeftTeeArrow;":"\u21a4","LeftTee;":"\u22a3","LeftTeeVector;":"\u295a","leftthreetimes;":"\u22cb","LeftTriangleBar;":"\u29cf","LeftTriangle;":"\u22b2","LeftTriangleEqual;":"\u22b4","LeftUpDownVector;":"\u2951","LeftUpTeeVector;":"\u2960","LeftUpVectorBar;":"\u2958","LeftUpVector;":"\u21bf","LeftVectorBar;":"\u2952","LeftVector;":"\u21bc","lEg;":"\u2a8b","leg;":"\u22da","leq;":"\u2264","leqq;":"\u2266","leqslant;":"\u2a7d","lescc;":"\u2aa8","les;":"\u2a7d","lesdot;":"\u2a7f","lesdoto;":"\u2a81","lesdotor;":"\u2a83","lesg;":"\u22da\ufe00","lesges;":"\u2a93","lessapprox;":"\u2a85","lessdot;":"\u22d6","lesseqgtr;":"\u22da","lesseqqgtr;":"\u2a8b","LessEqualGreater;":"\u22da","LessFullEqual;":"\u2266","LessGreater;":"\u2276","lessgtr;":"\u2276","LessLess;":"\u2aa1","lesssim;":"\u2272","LessSlantEqual;":"\u2a7d","LessTilde;":"\u2272","lfisht;":"\u297c","lfloor;":"\u230a","Lfr;":"\ud835\udd0f","lfr;":"\ud835\udd29","lg;":"\u2276","lgE;":"\u2a91","lHar;":"\u2962","lhard;":"\u21bd","lharu;":"\u21bc","lharul;":"\u296a","lhblk;":"\u2584","LJcy;":"\u0409","ljcy;":"\u0459","llarr;":"\u21c7","ll;":"\u226a","Ll;":"\u22d8","llcorner;":"\u231e","Lleftarrow;":"\u21da","llhard;":"\u296b","lltri;":"\u25fa","Lmidot;":"\u013f","lmidot;":"\u0140","lmoustache;":"\u23b0","lmoust;":"\u23b0","lnap;":"\u2a89","lnapprox;":"\u2a89","lne;":"\u2a87","lnE;":"\u2268","lneq;":"\u2a87","lneqq;":"\u2268","lnsim;":"\u22e6","loang;":"\u27ec","loarr;":"\u21fd","lobrk;":"\u27e6","longleftarrow;":"\u27f5","LongLeftArrow;":"\u27f5","Longleftarrow;":"\u27f8","longleftrightarrow;":"\u27f7","LongLeftRightArrow;":"\u27f7","Longleftrightarrow;":"\u27fa","longmapsto;":"\u27fc","longrightarrow;":"\u27f6","LongRightArrow;":"\u27f6","Longrightarrow;":"\u27f9","looparrowleft;":"\u21ab","looparrowright;":"\u21ac","lopar;":"\u2985","Lopf;":"\ud835\udd43","lopf;":"\ud835\udd5d","loplus;":"\u2a2d","lotimes;":"\u2a34","lowast;":"\u2217","lowbar;":"_","LowerLeftArrow;":"\u2199","LowerRightArrow;":"\u2198","loz;":"\u25ca","lozenge;":"\u25ca","lozf;":"\u29eb","lpar;":"(","lparlt;":"\u2993","lrarr;":"\u21c6","lrcorner;":"\u231f","lrhar;":"\u21cb","lrhard;":"\u296d","lrm;":"\u200e","lrtri;":"\u22bf","lsaquo;":"\u2039","lscr;":"\ud835\udcc1","Lscr;":"\u2112","lsh;":"\u21b0","Lsh;":"\u21b0","lsim;":"\u2272","lsime;":"\u2a8d","lsimg;":"\u2a8f","lsqb;":"[","lsquo;":"\u2018","lsquor;":"\u201a","Lstrok;":"\u0141","lstrok;":"\u0142","ltcc;":"\u2aa6","ltcir;":"\u2a79","lt;":"<",lt:"<","LT;":"<",LT:"<","Lt;":"\u226a","ltdot;":"\u22d6","lthree;":"\u22cb","ltimes;":"\u22c9","ltlarr;":"\u2976","ltquest;":"\u2a7b","ltri;":"\u25c3","ltrie;":"\u22b4","ltrif;":"\u25c2","ltrPar;":"\u2996","lurdshar;":"\u294a","luruhar;":"\u2966","lvertneqq;":"\u2268\ufe00","lvnE;":"\u2268\ufe00","macr;":"\u00af",macr:"\u00af","male;":"\u2642","malt;":"\u2720","maltese;":"\u2720","Map;":"\u2905","map;":"\u21a6","mapsto;":"\u21a6","mapstodown;":"\u21a7","mapstoleft;":"\u21a4","mapstoup;":"\u21a5","marker;":"\u25ae","mcomma;":"\u2a29","Mcy;":"\u041c","mcy;":"\u043c","mdash;":"\u2014","mDDot;":"\u223a","measuredangle;":"\u2221","MediumSpace;":"\u205f","Mellintrf;":"\u2133","Mfr;":"\ud835\udd10","mfr;":"\ud835\udd2a","mho;":"\u2127","micro;":"\u00b5",micro:"\u00b5","midast;":"*","midcir;":"\u2af0","mid;":"\u2223","middot;":"\u00b7",middot:"\u00b7","minusb;":"\u229f","minus;":"\u2212","minusd;":"\u2238","minusdu;":"\u2a2a","MinusPlus;":"\u2213","mlcp;":"\u2adb","mldr;":"\u2026","mnplus;":"\u2213","models;":"\u22a7","Mopf;":"\ud835\udd44","mopf;":"\ud835\udd5e","mp;":"\u2213","mscr;":"\ud835\udcc2","Mscr;":"\u2133","mstpos;":"\u223e","Mu;":"\u039c","mu;":"\u03bc","multimap;":"\u22b8","mumap;":"\u22b8","nabla;":"\u2207","Nacute;":"\u0143","nacute;":"\u0144","nang;":"\u2220\u20d2","nap;":"\u2249","napE;":"\u2a70\u0338","napid;":"\u224b\u0338","napos;":"\u0149","napprox;":"\u2249","natural;":"\u266e","naturals;":"\u2115","natur;":"\u266e","nbsp;":"\u00a0",nbsp:"\u00a0","nbump;":"\u224e\u0338","nbumpe;":"\u224f\u0338","ncap;":"\u2a43","Ncaron;":"\u0147","ncaron;":"\u0148","Ncedil;":"\u0145","ncedil;":"\u0146","ncong;":"\u2247","ncongdot;":"\u2a6d\u0338","ncup;":"\u2a42","Ncy;":"\u041d","ncy;":"\u043d","ndash;":"\u2013","nearhk;":"\u2924","nearr;":"\u2197","neArr;":"\u21d7","nearrow;":"\u2197","ne;":"\u2260","nedot;":"\u2250\u0338","NegativeMediumSpace;":"\u200b","NegativeThickSpace;":"\u200b","NegativeThinSpace;":"\u200b","NegativeVeryThinSpace;":"\u200b","nequiv;":"\u2262","nesear;":"\u2928","nesim;":"\u2242\u0338","NestedGreaterGreater;":"\u226b","NestedLessLess;":"\u226a","NewLine;":"\n","nexist;":"\u2204","nexists;":"\u2204","Nfr;":"\ud835\udd11","nfr;":"\ud835\udd2b","ngE;":"\u2267\u0338","nge;":"\u2271","ngeq;":"\u2271","ngeqq;":"\u2267\u0338","ngeqslant;":"\u2a7e\u0338","nges;":"\u2a7e\u0338","nGg;":"\u22d9\u0338","ngsim;":"\u2275","nGt;":"\u226b\u20d2","ngt;":"\u226f","ngtr;":"\u226f","nGtv;":"\u226b\u0338","nharr;":"\u21ae","nhArr;":"\u21ce","nhpar;":"\u2af2","ni;":"\u220b","nis;":"\u22fc","nisd;":"\u22fa","niv;":"\u220b","NJcy;":"\u040a","njcy;":"\u045a","nlarr;":"\u219a","nlArr;":"\u21cd","nldr;":"\u2025","nlE;":"\u2266\u0338","nle;":"\u2270","nleftarrow;":"\u219a","nLeftarrow;":"\u21cd","nleftrightarrow;":"\u21ae","nLeftrightarrow;":"\u21ce","nleq;":"\u2270","nleqq;":"\u2266\u0338","nleqslant;":"\u2a7d\u0338","nles;":"\u2a7d\u0338","nless;":"\u226e","nLl;":"\u22d8\u0338","nlsim;":"\u2274","nLt;":"\u226a\u20d2","nlt;":"\u226e","nltri;":"\u22ea","nltrie;":"\u22ec","nLtv;":"\u226a\u0338","nmid;":"\u2224","NoBreak;":"\u2060","NonBreakingSpace;":"\u00a0","nopf;":"\ud835\udd5f","Nopf;":"\u2115","Not;":"\u2aec","not;":"\u00ac",not:"\u00ac","NotCongruent;":"\u2262","NotCupCap;":"\u226d","NotDoubleVerticalBar;":"\u2226","NotElement;":"\u2209","NotEqual;":"\u2260","NotEqualTilde;":"\u2242\u0338","NotExists;":"\u2204","NotGreater;":"\u226f","NotGreaterEqual;":"\u2271","NotGreaterFullEqual;":"\u2267\u0338","NotGreaterGreater;":"\u226b\u0338","NotGreaterLess;":"\u2279","NotGreaterSlantEqual;":"\u2a7e\u0338","NotGreaterTilde;":"\u2275","NotHumpDownHump;":"\u224e\u0338","NotHumpEqual;":"\u224f\u0338","notin;":"\u2209","notindot;":"\u22f5\u0338","notinE;":"\u22f9\u0338","notinva;":"\u2209","notinvb;":"\u22f7","notinvc;":"\u22f6","NotLeftTriangleBar;":"\u29cf\u0338","NotLeftTriangle;":"\u22ea","NotLeftTriangleEqual;":"\u22ec","NotLess;":"\u226e","NotLessEqual;":"\u2270","NotLessGreater;":"\u2278","NotLessLess;":"\u226a\u0338","NotLessSlantEqual;":"\u2a7d\u0338","NotLessTilde;":"\u2274","NotNestedGreaterGreater;":"\u2aa2\u0338","NotNestedLessLess;":"\u2aa1\u0338","notni;":"\u220c","notniva;":"\u220c","notnivb;":"\u22fe","notnivc;":"\u22fd","NotPrecedes;":"\u2280","NotPrecedesEqual;":"\u2aaf\u0338","NotPrecedesSlantEqual;":"\u22e0","NotReverseElement;":"\u220c","NotRightTriangleBar;":"\u29d0\u0338","NotRightTriangle;":"\u22eb","NotRightTriangleEqual;":"\u22ed","NotSquareSubset;":"\u228f\u0338","NotSquareSubsetEqual;":"\u22e2","NotSquareSuperset;":"\u2290\u0338","NotSquareSupersetEqual;":"\u22e3","NotSubset;":"\u2282\u20d2","NotSubsetEqual;":"\u2288","NotSucceeds;":"\u2281","NotSucceedsEqual;":"\u2ab0\u0338","NotSucceedsSlantEqual;":"\u22e1","NotSucceedsTilde;":"\u227f\u0338","NotSuperset;":"\u2283\u20d2","NotSupersetEqual;":"\u2289","NotTilde;":"\u2241","NotTildeEqual;":"\u2244","NotTildeFullEqual;":"\u2247","NotTildeTilde;":"\u2249","NotVerticalBar;":"\u2224","nparallel;":"\u2226","npar;":"\u2226","nparsl;":"\u2afd\u20e5","npart;":"\u2202\u0338","npolint;":"\u2a14","npr;":"\u2280","nprcue;":"\u22e0","nprec;":"\u2280","npreceq;":"\u2aaf\u0338","npre;":"\u2aaf\u0338","nrarrc;":"\u2933\u0338","nrarr;":"\u219b","nrArr;":"\u21cf","nrarrw;":"\u219d\u0338","nrightarrow;":"\u219b","nRightarrow;":"\u21cf","nrtri;":"\u22eb","nrtrie;":"\u22ed","nsc;":"\u2281","nsccue;":"\u22e1","nsce;":"\u2ab0\u0338","Nscr;":"\ud835\udca9","nscr;":"\ud835\udcc3","nshortmid;":"\u2224","nshortparallel;":"\u2226","nsim;":"\u2241","nsime;":"\u2244","nsimeq;":"\u2244","nsmid;":"\u2224","nspar;":"\u2226","nsqsube;":"\u22e2","nsqsupe;":"\u22e3","nsub;":"\u2284","nsubE;":"\u2ac5\u0338","nsube;":"\u2288","nsubset;":"\u2282\u20d2","nsubseteq;":"\u2288","nsubseteqq;":"\u2ac5\u0338","nsucc;":"\u2281","nsucceq;":"\u2ab0\u0338","nsup;":"\u2285","nsupE;":"\u2ac6\u0338","nsupe;":"\u2289","nsupset;":"\u2283\u20d2","nsupseteq;":"\u2289","nsupseteqq;":"\u2ac6\u0338","ntgl;":"\u2279","Ntilde;":"\u00d1",Ntilde:"\u00d1","ntilde;":"\u00f1",ntilde:"\u00f1","ntlg;":"\u2278","ntriangleleft;":"\u22ea","ntrianglelefteq;":"\u22ec","ntriangleright;":"\u22eb","ntrianglerighteq;":"\u22ed","Nu;":"\u039d","nu;":"\u03bd","num;":"#","numero;":"\u2116","numsp;":"\u2007","nvap;":"\u224d\u20d2","nvdash;":"\u22ac","nvDash;":"\u22ad","nVdash;":"\u22ae","nVDash;":"\u22af","nvge;":"\u2265\u20d2","nvgt;":">\u20d2","nvHarr;":"\u2904","nvinfin;":"\u29de","nvlArr;":"\u2902","nvle;":"\u2264\u20d2","nvlt;":"<\u20d2","nvltrie;":"\u22b4\u20d2","nvrArr;":"\u2903","nvrtrie;":"\u22b5\u20d2","nvsim;":"\u223c\u20d2","nwarhk;":"\u2923","nwarr;":"\u2196","nwArr;":"\u21d6","nwarrow;":"\u2196","nwnear;":"\u2927","Oacute;":"\u00d3",Oacute:"\u00d3","oacute;":"\u00f3",oacute:"\u00f3","oast;":"\u229b","Ocirc;":"\u00d4",Ocirc:"\u00d4","ocirc;":"\u00f4",ocirc:"\u00f4","ocir;":"\u229a","Ocy;":"\u041e","ocy;":"\u043e","odash;":"\u229d","Odblac;":"\u0150","odblac;":"\u0151","odiv;":"\u2a38","odot;":"\u2299","odsold;":"\u29bc","OElig;":"\u0152","oelig;":"\u0153","ofcir;":"\u29bf","Ofr;":"\ud835\udd12","ofr;":"\ud835\udd2c","ogon;":"\u02db","Ograve;":"\u00d2",Ograve:"\u00d2","ograve;":"\u00f2",ograve:"\u00f2","ogt;":"\u29c1","ohbar;":"\u29b5","ohm;":"\u03a9","oint;":"\u222e","olarr;":"\u21ba","olcir;":"\u29be","olcross;":"\u29bb","oline;":"\u203e","olt;":"\u29c0","Omacr;":"\u014c","omacr;":"\u014d","Omega;":"\u03a9","omega;":"\u03c9","Omicron;":"\u039f","omicron;":"\u03bf","omid;":"\u29b6","ominus;":"\u2296","Oopf;":"\ud835\udd46","oopf;":"\ud835\udd60","opar;":"\u29b7","OpenCurlyDoubleQuote;":"\u201c","OpenCurlyQuote;":"\u2018","operp;":"\u29b9","oplus;":"\u2295","orarr;":"\u21bb","Or;":"\u2a54","or;":"\u2228","ord;":"\u2a5d","order;":"\u2134","orderof;":"\u2134","ordf;":"\u00aa",ordf:"\u00aa","ordm;":"\u00ba",ordm:"\u00ba","origof;":"\u22b6","oror;":"\u2a56","orslope;":"\u2a57","orv;":"\u2a5b","oS;":"\u24c8","Oscr;":"\ud835\udcaa","oscr;":"\u2134","Oslash;":"\u00d8",Oslash:"\u00d8","oslash;":"\u00f8",oslash:"\u00f8","osol;":"\u2298","Otilde;":"\u00d5",Otilde:"\u00d5","otilde;":"\u00f5",otilde:"\u00f5","otimesas;":"\u2a36","Otimes;":"\u2a37","otimes;":"\u2297","Ouml;":"\u00d6",Ouml:"\u00d6","ouml;":"\u00f6",ouml:"\u00f6","ovbar;":"\u233d","OverBar;":"\u203e","OverBrace;":"\u23de","OverBracket;":"\u23b4","OverParenthesis;":"\u23dc","para;":"\u00b6",para:"\u00b6","parallel;":"\u2225","par;":"\u2225","parsim;":"\u2af3","parsl;":"\u2afd","part;":"\u2202","PartialD;":"\u2202","Pcy;":"\u041f","pcy;":"\u043f","percnt;":"%","period;":".","permil;":"\u2030","perp;":"\u22a5","pertenk;":"\u2031","Pfr;":"\ud835\udd13","pfr;":"\ud835\udd2d","Phi;":"\u03a6","phi;":"\u03c6","phiv;":"\u03d5","phmmat;":"\u2133","phone;":"\u260e","Pi;":"\u03a0","pi;":"\u03c0","pitchfork;":"\u22d4","piv;":"\u03d6","planck;":"\u210f","planckh;":"\u210e","plankv;":"\u210f","plusacir;":"\u2a23","plusb;":"\u229e","pluscir;":"\u2a22","plus;":"+","plusdo;":"\u2214","plusdu;":"\u2a25","pluse;":"\u2a72","PlusMinus;":"\u00b1","plusmn;":"\u00b1",plusmn:"\u00b1","plussim;":"\u2a26","plustwo;":"\u2a27","pm;":"\u00b1","Poincareplane;":"\u210c","pointint;":"\u2a15","popf;":"\ud835\udd61","Popf;":"\u2119","pound;":"\u00a3",pound:"\u00a3","prap;":"\u2ab7","Pr;":"\u2abb","pr;":"\u227a","prcue;":"\u227c","precapprox;":"\u2ab7","prec;":"\u227a","preccurlyeq;":"\u227c","Precedes;":"\u227a","PrecedesEqual;":"\u2aaf","PrecedesSlantEqual;":"\u227c","PrecedesTilde;":"\u227e","preceq;":"\u2aaf","precnapprox;":"\u2ab9","precneqq;":"\u2ab5","precnsim;":"\u22e8","pre;":"\u2aaf","prE;":"\u2ab3","precsim;":"\u227e","prime;":"\u2032","Prime;":"\u2033","primes;":"\u2119","prnap;":"\u2ab9","prnE;":"\u2ab5","prnsim;":"\u22e8","prod;":"\u220f","Product;":"\u220f","profalar;":"\u232e","profline;":"\u2312","profsurf;":"\u2313","prop;":"\u221d","Proportional;":"\u221d","Proportion;":"\u2237","propto;":"\u221d","prsim;":"\u227e","prurel;":"\u22b0","Pscr;":"\ud835\udcab","pscr;":"\ud835\udcc5","Psi;":"\u03a8","psi;":"\u03c8","puncsp;":"\u2008","Qfr;":"\ud835\udd14","qfr;":"\ud835\udd2e","qint;":"\u2a0c","qopf;":"\ud835\udd62","Qopf;":"\u211a","qprime;":"\u2057","Qscr;":"\ud835\udcac","qscr;":"\ud835\udcc6","quaternions;":"\u210d","quatint;":"\u2a16","quest;":"?","questeq;":"\u225f","quot;":'"',quot:'"',"QUOT;":'"',QUOT:'"',"rAarr;":"\u21db","race;":"\u223d\u0331","Racute;":"\u0154","racute;":"\u0155","radic;":"\u221a","raemptyv;":"\u29b3","rang;":"\u27e9","Rang;":"\u27eb","rangd;":"\u2992","range;":"\u29a5","rangle;":"\u27e9","raquo;":"\u00bb",raquo:"\u00bb","rarrap;":"\u2975","rarrb;":"\u21e5","rarrbfs;":"\u2920","rarrc;":"\u2933","rarr;":"\u2192","Rarr;":"\u21a0","rArr;":"\u21d2","rarrfs;":"\u291e","rarrhk;":"\u21aa","rarrlp;":"\u21ac","rarrpl;":"\u2945","rarrsim;":"\u2974","Rarrtl;":"\u2916","rarrtl;":"\u21a3","rarrw;":"\u219d","ratail;":"\u291a","rAtail;":"\u291c","ratio;":"\u2236","rationals;":"\u211a","rbarr;":"\u290d","rBarr;":"\u290f","RBarr;":"\u2910","rbbrk;":"\u2773","rbrace;":"}","rbrack;":"]","rbrke;":"\u298c","rbrksld;":"\u298e","rbrkslu;":"\u2990","Rcaron;":"\u0158","rcaron;":"\u0159","Rcedil;":"\u0156","rcedil;":"\u0157","rceil;":"\u2309","rcub;":"}","Rcy;":"\u0420","rcy;":"\u0440","rdca;":"\u2937","rdldhar;":"\u2969","rdquo;":"\u201d","rdquor;":"\u201d","rdsh;":"\u21b3","real;":"\u211c","realine;":"\u211b","realpart;":"\u211c","reals;":"\u211d","Re;":"\u211c","rect;":"\u25ad","reg;":"\u00ae",reg:"\u00ae","REG;":"\u00ae",REG:"\u00ae","ReverseElement;":"\u220b","ReverseEquilibrium;":"\u21cb","ReverseUpEquilibrium;":"\u296f","rfisht;":"\u297d","rfloor;":"\u230b","rfr;":"\ud835\udd2f","Rfr;":"\u211c","rHar;":"\u2964","rhard;":"\u21c1","rharu;":"\u21c0","rharul;":"\u296c","Rho;":"\u03a1","rho;":"\u03c1","rhov;":"\u03f1","RightAngleBracket;":"\u27e9","RightArrowBar;":"\u21e5","rightarrow;":"\u2192","RightArrow;":"\u2192","Rightarrow;":"\u21d2","RightArrowLeftArrow;":"\u21c4","rightarrowtail;":"\u21a3","RightCeiling;":"\u2309","RightDoubleBracket;":"\u27e7","RightDownTeeVector;":"\u295d","RightDownVectorBar;":"\u2955","RightDownVector;":"\u21c2","RightFloor;":"\u230b","rightharpoondown;":"\u21c1","rightharpoonup;":"\u21c0","rightleftarrows;":"\u21c4","rightleftharpoons;":"\u21cc","rightrightarrows;":"\u21c9","rightsquigarrow;":"\u219d","RightTeeArrow;":"\u21a6","RightTee;":"\u22a2","RightTeeVector;":"\u295b","rightthreetimes;":"\u22cc","RightTriangleBar;":"\u29d0","RightTriangle;":"\u22b3","RightTriangleEqual;":"\u22b5","RightUpDownVector;":"\u294f","RightUpTeeVector;":"\u295c","RightUpVectorBar;":"\u2954","RightUpVector;":"\u21be","RightVectorBar;":"\u2953","RightVector;":"\u21c0","ring;":"\u02da","risingdotseq;":"\u2253","rlarr;":"\u21c4","rlhar;":"\u21cc","rlm;":"\u200f","rmoustache;":"\u23b1","rmoust;":"\u23b1","rnmid;":"\u2aee","roang;":"\u27ed","roarr;":"\u21fe","robrk;":"\u27e7","ropar;":"\u2986","ropf;":"\ud835\udd63","Ropf;":"\u211d","roplus;":"\u2a2e","rotimes;":"\u2a35","RoundImplies;":"\u2970","rpar;":")","rpargt;":"\u2994","rppolint;":"\u2a12","rrarr;":"\u21c9","Rrightarrow;":"\u21db","rsaquo;":"\u203a","rscr;":"\ud835\udcc7","Rscr;":"\u211b","rsh;":"\u21b1","Rsh;":"\u21b1","rsqb;":"]","rsquo;":"\u2019","rsquor;":"\u2019","rthree;":"\u22cc","rtimes;":"\u22ca","rtri;":"\u25b9","rtrie;":"\u22b5","rtrif;":"\u25b8","rtriltri;":"\u29ce","RuleDelayed;":"\u29f4","ruluhar;":"\u2968","rx;":"\u211e","Sacute;":"\u015a","sacute;":"\u015b","sbquo;":"\u201a","scap;":"\u2ab8","Scaron;":"\u0160","scaron;":"\u0161","Sc;":"\u2abc","sc;":"\u227b","sccue;":"\u227d","sce;":"\u2ab0","scE;":"\u2ab4","Scedil;":"\u015e","scedil;":"\u015f","Scirc;":"\u015c","scirc;":"\u015d","scnap;":"\u2aba","scnE;":"\u2ab6","scnsim;":"\u22e9","scpolint;":"\u2a13","scsim;":"\u227f","Scy;":"\u0421","scy;":"\u0441","sdotb;":"\u22a1","sdot;":"\u22c5","sdote;":"\u2a66","searhk;":"\u2925","searr;":"\u2198","seArr;":"\u21d8","searrow;":"\u2198","sect;":"\u00a7",sect:"\u00a7","semi;":";","seswar;":"\u2929","setminus;":"\u2216","setmn;":"\u2216","sext;":"\u2736","Sfr;":"\ud835\udd16","sfr;":"\ud835\udd30","sfrown;":"\u2322","sharp;":"\u266f","SHCHcy;":"\u0429","shchcy;":"\u0449","SHcy;":"\u0428","shcy;":"\u0448","ShortDownArrow;":"\u2193","ShortLeftArrow;":"\u2190","shortmid;":"\u2223","shortparallel;":"\u2225","ShortRightArrow;":"\u2192","ShortUpArrow;":"\u2191","shy;":"\u00ad",shy:"\u00ad","Sigma;":"\u03a3","sigma;":"\u03c3","sigmaf;":"\u03c2","sigmav;":"\u03c2","sim;":"\u223c","simdot;":"\u2a6a","sime;":"\u2243","simeq;":"\u2243","simg;":"\u2a9e","simgE;":"\u2aa0","siml;":"\u2a9d","simlE;":"\u2a9f","simne;":"\u2246","simplus;":"\u2a24","simrarr;":"\u2972","slarr;":"\u2190","SmallCircle;":"\u2218","smallsetminus;":"\u2216","smashp;":"\u2a33","smeparsl;":"\u29e4","smid;":"\u2223","smile;":"\u2323","smt;":"\u2aaa","smte;":"\u2aac","smtes;":"\u2aac\ufe00","SOFTcy;":"\u042c","softcy;":"\u044c","solbar;":"\u233f","solb;":"\u29c4","sol;":"/","Sopf;":"\ud835\udd4a","sopf;":"\ud835\udd64","spades;":"\u2660","spadesuit;":"\u2660","spar;":"\u2225","sqcap;":"\u2293","sqcaps;":"\u2293\ufe00","sqcup;":"\u2294","sqcups;":"\u2294\ufe00","Sqrt;":"\u221a","sqsub;":"\u228f","sqsube;":"\u2291","sqsubset;":"\u228f","sqsubseteq;":"\u2291","sqsup;":"\u2290","sqsupe;":"\u2292","sqsupset;":"\u2290","sqsupseteq;":"\u2292","square;":"\u25a1","Square;":"\u25a1","SquareIntersection;":"\u2293","SquareSubset;":"\u228f","SquareSubsetEqual;":"\u2291","SquareSuperset;":"\u2290","SquareSupersetEqual;":"\u2292","SquareUnion;":"\u2294","squarf;":"\u25aa","squ;":"\u25a1","squf;":"\u25aa","srarr;":"\u2192","Sscr;":"\ud835\udcae","sscr;":"\ud835\udcc8","ssetmn;":"\u2216","ssmile;":"\u2323","sstarf;":"\u22c6","Star;":"\u22c6","star;":"\u2606","starf;":"\u2605","straightepsilon;":"\u03f5","straightphi;":"\u03d5","strns;":"\u00af","sub;":"\u2282","Sub;":"\u22d0","subdot;":"\u2abd","subE;":"\u2ac5","sube;":"\u2286","subedot;":"\u2ac3","submult;":"\u2ac1","subnE;":"\u2acb","subne;":"\u228a","subplus;":"\u2abf","subrarr;":"\u2979","subset;":"\u2282","Subset;":"\u22d0","subseteq;":"\u2286","subseteqq;":"\u2ac5","SubsetEqual;":"\u2286","subsetneq;":"\u228a","subsetneqq;":"\u2acb","subsim;":"\u2ac7","subsub;":"\u2ad5","subsup;":"\u2ad3","succapprox;":"\u2ab8","succ;":"\u227b","succcurlyeq;":"\u227d","Succeeds;":"\u227b","SucceedsEqual;":"\u2ab0","SucceedsSlantEqual;":"\u227d","SucceedsTilde;":"\u227f","succeq;":"\u2ab0","succnapprox;":"\u2aba","succneqq;":"\u2ab6","succnsim;":"\u22e9","succsim;":"\u227f","SuchThat;":"\u220b","sum;":"\u2211","Sum;":"\u2211","sung;":"\u266a","sup1;":"\u00b9",sup1:"\u00b9","sup2;":"\u00b2",sup2:"\u00b2","sup3;":"\u00b3",sup3:"\u00b3","sup;":"\u2283","Sup;":"\u22d1","supdot;":"\u2abe","supdsub;":"\u2ad8","supE;":"\u2ac6","supe;":"\u2287","supedot;":"\u2ac4","Superset;":"\u2283","SupersetEqual;":"\u2287","suphsol;":"\u27c9","suphsub;":"\u2ad7","suplarr;":"\u297b","supmult;":"\u2ac2","supnE;":"\u2acc","supne;":"\u228b","supplus;":"\u2ac0","supset;":"\u2283","Supset;":"\u22d1","supseteq;":"\u2287","supseteqq;":"\u2ac6","supsetneq;":"\u228b","supsetneqq;":"\u2acc","supsim;":"\u2ac8","supsub;":"\u2ad4","supsup;":"\u2ad6","swarhk;":"\u2926","swarr;":"\u2199","swArr;":"\u21d9","swarrow;":"\u2199","swnwar;":"\u292a","szlig;":"\u00df",szlig:"\u00df","Tab;":" ","target;":"\u2316","Tau;":"\u03a4","tau;":"\u03c4","tbrk;":"\u23b4","Tcaron;":"\u0164","tcaron;":"\u0165","Tcedil;":"\u0162","tcedil;":"\u0163","Tcy;":"\u0422","tcy;":"\u0442","tdot;":"\u20db","telrec;":"\u2315","Tfr;":"\ud835\udd17","tfr;":"\ud835\udd31","there4;":"\u2234","therefore;":"\u2234","Therefore;":"\u2234","Theta;":"\u0398","theta;":"\u03b8","thetasym;":"\u03d1","thetav;":"\u03d1","thickapprox;":"\u2248","thicksim;":"\u223c","ThickSpace;":"\u205f\u200a","ThinSpace;":"\u2009","thinsp;":"\u2009","thkap;":"\u2248","thksim;":"\u223c","THORN;":"\u00de",THORN:"\u00de","thorn;":"\u00fe",thorn:"\u00fe","tilde;":"\u02dc","Tilde;":"\u223c","TildeEqual;":"\u2243","TildeFullEqual;":"\u2245","TildeTilde;":"\u2248","timesbar;":"\u2a31","timesb;":"\u22a0","times;":"\u00d7",times:"\u00d7","timesd;":"\u2a30","tint;":"\u222d","toea;":"\u2928","topbot;":"\u2336","topcir;":"\u2af1","top;":"\u22a4","Topf;":"\ud835\udd4b","topf;":"\ud835\udd65","topfork;":"\u2ada","tosa;":"\u2929","tprime;":"\u2034","trade;":"\u2122","TRADE;":"\u2122","triangle;":"\u25b5","triangledown;":"\u25bf","triangleleft;":"\u25c3","trianglelefteq;":"\u22b4","triangleq;":"\u225c","triangleright;":"\u25b9","trianglerighteq;":"\u22b5","tridot;":"\u25ec","trie;":"\u225c","triminus;":"\u2a3a","TripleDot;":"\u20db","triplus;":"\u2a39","trisb;":"\u29cd","tritime;":"\u2a3b","trpezium;":"\u23e2","Tscr;":"\ud835\udcaf","tscr;":"\ud835\udcc9","TScy;":"\u0426","tscy;":"\u0446","TSHcy;":"\u040b","tshcy;":"\u045b","Tstrok;":"\u0166","tstrok;":"\u0167","twixt;":"\u226c","twoheadleftarrow;":"\u219e","twoheadrightarrow;":"\u21a0","Uacute;":"\u00da",Uacute:"\u00da","uacute;":"\u00fa",uacute:"\u00fa","uarr;":"\u2191","Uarr;":"\u219f","uArr;":"\u21d1","Uarrocir;":"\u2949","Ubrcy;":"\u040e","ubrcy;":"\u045e","Ubreve;":"\u016c","ubreve;":"\u016d","Ucirc;":"\u00db",Ucirc:"\u00db","ucirc;":"\u00fb",ucirc:"\u00fb","Ucy;":"\u0423","ucy;":"\u0443","udarr;":"\u21c5","Udblac;":"\u0170","udblac;":"\u0171","udhar;":"\u296e","ufisht;":"\u297e","Ufr;":"\ud835\udd18","ufr;":"\ud835\udd32","Ugrave;":"\u00d9",Ugrave:"\u00d9","ugrave;":"\u00f9",ugrave:"\u00f9","uHar;":"\u2963","uharl;":"\u21bf","uharr;":"\u21be","uhblk;":"\u2580","ulcorn;":"\u231c","ulcorner;":"\u231c","ulcrop;":"\u230f","ultri;":"\u25f8","Umacr;":"\u016a","umacr;":"\u016b","uml;":"\u00a8",uml:"\u00a8","UnderBar;":"_","UnderBrace;":"\u23df","UnderBracket;":"\u23b5","UnderParenthesis;":"\u23dd","Union;":"\u22c3","UnionPlus;":"\u228e","Uogon;":"\u0172","uogon;":"\u0173","Uopf;":"\ud835\udd4c","uopf;":"\ud835\udd66","UpArrowBar;":"\u2912","uparrow;":"\u2191","UpArrow;":"\u2191","Uparrow;":"\u21d1","UpArrowDownArrow;":"\u21c5","updownarrow;":"\u2195","UpDownArrow;":"\u2195","Updownarrow;":"\u21d5","UpEquilibrium;":"\u296e","upharpoonleft;":"\u21bf","upharpoonright;":"\u21be","uplus;":"\u228e","UpperLeftArrow;":"\u2196","UpperRightArrow;":"\u2197","upsi;":"\u03c5","Upsi;":"\u03d2","upsih;":"\u03d2","Upsilon;":"\u03a5","upsilon;":"\u03c5","UpTeeArrow;":"\u21a5","UpTee;":"\u22a5","upuparrows;":"\u21c8","urcorn;":"\u231d","urcorner;":"\u231d","urcrop;":"\u230e","Uring;":"\u016e","uring;":"\u016f","urtri;":"\u25f9","Uscr;":"\ud835\udcb0","uscr;":"\ud835\udcca","utdot;":"\u22f0","Utilde;":"\u0168","utilde;":"\u0169","utri;":"\u25b5","utrif;":"\u25b4","uuarr;":"\u21c8","Uuml;":"\u00dc",Uuml:"\u00dc","uuml;":"\u00fc",uuml:"\u00fc","uwangle;":"\u29a7","vangrt;":"\u299c","varepsilon;":"\u03f5","varkappa;":"\u03f0","varnothing;":"\u2205","varphi;":"\u03d5","varpi;":"\u03d6","varpropto;":"\u221d","varr;":"\u2195","vArr;":"\u21d5","varrho;":"\u03f1","varsigma;":"\u03c2","varsubsetneq;":"\u228a\ufe00","varsubsetneqq;":"\u2acb\ufe00","varsupsetneq;":"\u228b\ufe00","varsupsetneqq;":"\u2acc\ufe00","vartheta;":"\u03d1","vartriangleleft;":"\u22b2","vartriangleright;":"\u22b3","vBar;":"\u2ae8","Vbar;":"\u2aeb","vBarv;":"\u2ae9","Vcy;":"\u0412","vcy;":"\u0432","vdash;":"\u22a2","vDash;":"\u22a8","Vdash;":"\u22a9","VDash;":"\u22ab","Vdashl;":"\u2ae6","veebar;":"\u22bb","vee;":"\u2228","Vee;":"\u22c1","veeeq;":"\u225a","vellip;":"\u22ee","verbar;":"|","Verbar;":"\u2016","vert;":"|","Vert;":"\u2016","VerticalBar;":"\u2223","VerticalLine;":"|","VerticalSeparator;":"\u2758","VerticalTilde;":"\u2240","VeryThinSpace;":"\u200a","Vfr;":"\ud835\udd19","vfr;":"\ud835\udd33","vltri;":"\u22b2","vnsub;":"\u2282\u20d2","vnsup;":"\u2283\u20d2","Vopf;":"\ud835\udd4d","vopf;":"\ud835\udd67","vprop;":"\u221d","vrtri;":"\u22b3","Vscr;":"\ud835\udcb1","vscr;":"\ud835\udccb","vsubnE;":"\u2acb\ufe00","vsubne;":"\u228a\ufe00","vsupnE;":"\u2acc\ufe00","vsupne;":"\u228b\ufe00","Vvdash;":"\u22aa","vzigzag;":"\u299a","Wcirc;":"\u0174","wcirc;":"\u0175","wedbar;":"\u2a5f","wedge;":"\u2227","Wedge;":"\u22c0","wedgeq;":"\u2259","weierp;":"\u2118","Wfr;":"\ud835\udd1a","wfr;":"\ud835\udd34","Wopf;":"\ud835\udd4e","wopf;":"\ud835\udd68","wp;":"\u2118","wr;":"\u2240","wreath;":"\u2240","Wscr;":"\ud835\udcb2","wscr;":"\ud835\udccc","xcap;":"\u22c2","xcirc;":"\u25ef","xcup;":"\u22c3","xdtri;":"\u25bd","Xfr;":"\ud835\udd1b","xfr;":"\ud835\udd35","xharr;":"\u27f7","xhArr;":"\u27fa","Xi;":"\u039e","xi;":"\u03be","xlarr;":"\u27f5","xlArr;":"\u27f8","xmap;":"\u27fc","xnis;":"\u22fb","xodot;":"\u2a00","Xopf;":"\ud835\udd4f","xopf;":"\ud835\udd69","xoplus;":"\u2a01","xotime;":"\u2a02","xrarr;":"\u27f6","xrArr;":"\u27f9","Xscr;":"\ud835\udcb3","xscr;":"\ud835\udccd","xsqcup;":"\u2a06","xuplus;":"\u2a04","xutri;":"\u25b3","xvee;":"\u22c1","xwedge;":"\u22c0","Yacute;":"\u00dd",Yacute:"\u00dd","yacute;":"\u00fd",yacute:"\u00fd","YAcy;":"\u042f","yacy;":"\u044f","Ycirc;":"\u0176","ycirc;":"\u0177","Ycy;":"\u042b","ycy;":"\u044b","yen;":"\u00a5",yen:"\u00a5","Yfr;":"\ud835\udd1c","yfr;":"\ud835\udd36","YIcy;":"\u0407","yicy;":"\u0457","Yopf;":"\ud835\udd50","yopf;":"\ud835\udd6a","Yscr;":"\ud835\udcb4","yscr;":"\ud835\udcce","YUcy;":"\u042e","yucy;":"\u044e","yuml;":"\u00ff",yuml:"\u00ff","Yuml;":"\u0178","Zacute;":"\u0179","zacute;":"\u017a","Zcaron;":"\u017d","zcaron;":"\u017e","Zcy;":"\u0417","zcy;":"\u0437","Zdot;":"\u017b","zdot;":"\u017c","zeetrf;":"\u2128","ZeroWidthSpace;":"\u200b","Zeta;":"\u0396","zeta;":"\u03b6","zfr;":"\ud835\udd37","Zfr;":"\u2128","ZHcy;":"\u0416","zhcy;":"\u0436","zigrarr;":"\u21dd","zopf;":"\ud835\udd6b","Zopf;":"\u2124","Zscr;":"\ud835\udcb5","zscr;":"\ud835\udccf","zwj;":"\u200d","zwnj;":"\u200c"}},{}],13:[function(e,t,n){function u(e,t){return r.isUndefined(t)?""+t:r.isNumber(t)&&(isNaN(t)||!isFinite(t))?t.toString():r.isFunction(t)||r.isRegExp(t)?t.toString():t}function a(e,t){return r.isString(e)?e.length=0;u--)if(n[u]!=s[u])return!1;for(u=n.length-1;u>=0;u--){o=n[u];if(!h(e[o],t[o]))return!1}return!0}function v(e,t){return!e||!t?!1:Object.prototype.toString.call(t)=="[object RegExp]"?t.test(e):e instanceof t?!0:t.call({},e)===!0?!0:!1}function m(e,t,n,i){var s;r.isString(n)&&(i=n,n=null);try{t()}catch(o){s=o}i=(n&&n.name?" ("+n.name+").":".")+(i?" "+i:"."),e&&!s&&l(s,n,"Missing expected exception"+i),!e&&v(s,n)&&l(s,n,"Got unwanted exception"+i);if(e&&s&&n&&!v(s,n)||!e&&s)throw s}var r=e("util/"),i=Array.prototype.slice,s=Object.prototype.hasOwnProperty,o=t.exports=c;o.AssertionError=function(t){this.name="AssertionError",this.actual=t.actual,this.expected=t.expected,this.operator=t.operator,t.message?(this.message=t.message,this.generatedMessage=!1):(this.message=f(this),this.generatedMessage=!0);var n=t.stackStartFunction||l;if(Error.captureStackTrace)Error.captureStackTrace(this,n);else{var r=new Error;if(r.stack){var i=r.stack,s=n.name,o=i.indexOf("\n"+s);if(o>=0){var u=i.indexOf("\n",o+1);i=i.substring(u+1)}this.stack=i}}},r.inherits(o.AssertionError,Error),o.fail=l,o.ok=c,o.equal=function(t,n,r){t!=n&&l(t,n,r,"==",o.equal)},o.notEqual=function(t,n,r){t==n&&l(t,n,r,"!=",o.notEqual)},o.deepEqual=function(t,n,r){h(t,n)||l(t,n,r,"deepEqual",o.deepEqual)},o.notDeepEqual=function(t,n,r){h(t,n)&&l(t,n,r,"notDeepEqual",o.notDeepEqual)},o.strictEqual=function(t,n,r){t!==n&&l(t,n,r,"===",o.strictEqual)},o.notStrictEqual=function(t,n,r){t===n&&l(t,n,r,"!==",o.notStrictEqual)},o.throws=function(e,t,n){m.apply(this,[!0].concat(i.call(arguments)))},o.doesNotThrow=function(e,t){m.apply(this,[!1].concat(i.call(arguments)))},o.ifError=function(e){if(e)throw e};var g=Object.keys||function(e){var t=[];for(var n in e)s.call(e,n)&&t.push(n);return t}},{"util/":15}],14:[function(e,t,n){t.exports=function(t){return t&&typeof t=="object"&&typeof t.copy=="function"&&typeof t.fill=="function"&&typeof t.readUInt8=="function"}},{}],15:[function(e,t,n){(function(t,r){function u(e,t){var r={seen:[],stylize:f};return arguments.length>=3&&(r.depth=arguments[2]),arguments.length>=4&&(r.colors=arguments[3]),y(t)?r.showHidden=t:t&&n._extend(r,t),T(r.showHidden)&&(r.showHidden=!1),T(r.depth)&&(r.depth=2),T(r.colors)&&(r.colors=!1),T(r.customInspect)&&(r.customInspect=!0),r.colors&&(r.stylize=a),c(r,e,r.depth)}function a(e,t){var n=u.styles[t];return n?"["+u.colors[n][0]+"m"+e+"["+u.colors[n][1]+"m":e}function f(e,t){return e}function l(e){var t={};return e.forEach(function(e,n){t[e]=!0}),t}function c(e,t,r){if(e.customInspect&&t&&A(t.inspect)&&t.inspect!==n.inspect&&(!t.constructor||t.constructor.prototype!==t)){var i=t.inspect(r,e);return S(i)||(i=c(e,i,r)),i}var s=h(e,t);if(s)return s;var o=Object.keys(t),u=l(o);e.showHidden&&(o=Object.getOwnPropertyNames(t));if(L(t)&&(o.indexOf("message")>=0||o.indexOf("description")>=0))return p(t);if(o.length===0){if(A(t)){var a=t.name?": "+t.name:"";return e.stylize("[Function"+a+"]","special")}if(N(t))return e.stylize(RegExp.prototype.toString.call(t),"regexp");if(k(t))return e.stylize(Date.prototype.toString.call(t),"date");if(L(t))return p(t)}var f="",y=!1,b=["{","}"];g(t)&&(y=!0,b=["[","]"]);if(A(t)){var w=t.name?": "+t.name:"";f=" [Function"+w+"]"}N(t)&&(f=" "+RegExp.prototype.toString.call(t)),k(t)&&(f=" "+Date.prototype.toUTCString.call(t)),L(t)&&(f=" "+p(t));if(o.length!==0||!!y&&t.length!=0){if(r<0)return N(t)?e.stylize(RegExp.prototype.toString.call(t),"regexp"):e.stylize("[Object]","special");e.seen.push(t);var E;return y?E=d(e,t,r,u,o):E=o.map(function(n){return v(e,t,r,u,n,y)}),e.seen.pop(),m(E,f,b)}return b[0]+f+b[1]}function h(e,t){if(T(t))return e.stylize("undefined","undefined");if(S(t)){var n="'"+JSON.stringify(t).replace(/^"|"$/g,"").replace(/'/g,"\\'").replace(/\\"/g,'"')+"'";return e.stylize(n,"string")}if(E(t))return e.stylize(""+t,"number");if(y(t))return e.stylize(""+t,"boolean");if(b(t))return e.stylize("null","null")}function p(e){return"["+Error.prototype.toString.call(e)+"]"}function d(e,t,n,r,i){var s=[];for(var o=0,u=t.length;o-1&&(s?u=u.split("\n").map(function(e){return" "+e}).join("\n").substr(2):u="\n"+u.split("\n").map(function(e){return" "+e}).join("\n"))):u=e.stylize("[Circular]","special"));if(T(o)){if(s&&i.match(/^\d+$/))return u;o=JSON.stringify(""+i),o.match(/^"([a-zA-Z_][a-zA-Z_0-9]*)"$/)?(o=o.substr(1,o.length-2),o=e.stylize(o,"name")):(o=o.replace(/'/g,"\\'").replace(/\\"/g,'"').replace(/(^"|"$)/g,"'"),o=e.stylize(o,"string"))}return o+": "+u}function m(e,t,n){var r=0,i=e.reduce(function(e,t){return r++,t.indexOf("\n")>=0&&r++,e+t.replace(/\u001b\[\d\d?m/g,"").length+1},0);return i>60?n[0]+(t===""?"":t+"\n ")+" "+e.join(",\n ")+" "+n[1]:n[0]+t+" "+e.join(", ")+" "+n[1]}function g(e){return Array.isArray(e)}function y(e){return typeof e=="boolean"}function b(e){return e===null}function w(e){return e==null}function E(e){return typeof e=="number"}function S(e){return typeof e=="string"}function x(e){return typeof e=="symbol"}function T(e){return e===void 0}function N(e){return C(e)&&M(e)==="[object RegExp]"}function C(e){return typeof e=="object"&&e!==null}function k(e){return C(e)&&M(e)==="[object Date]"}function L(e){return C(e)&&(M(e)==="[object Error]"||e instanceof Error)}function A(e){return typeof e=="function"}function O(e){return e===null||typeof e=="boolean"||typeof e=="number"||typeof e=="string"||typeof e=="symbol"||typeof e=="undefined"}function M(e){return Object.prototype.toString.call(e)}function _(e){return e<10?"0"+e.toString(10):e.toString(10)}function P(){var e=new Date,t=[_(e.getHours()),_(e.getMinutes()),_(e.getSeconds())].join(":");return[e.getDate(),D[e.getMonth()],t].join(" ")}function H(e,t){return Object.prototype.hasOwnProperty.call(e,t)}var i=/%[sdj%]/g;n.format=function(e){if(!S(e)){var t=[];for(var n=0;n=s)return e;switch(e){case"%s":return String(r[n++]);case"%d":return Number(r[n++]);case"%j":try{return JSON.stringify(r[n++])}catch(t){return"[Circular]"};default:return e}});for(var a=r[n];n0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),console.trace())}return this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){function r(){this.removeListener(e,r),n||(n=!0,t.apply(this,arguments))}if(!i(t))throw TypeError("listener must be a function");var n=!1;return r.listener=t,this.on(e,r),this},r.prototype.removeListener=function(e,t){var n,r,s,u;if(!i(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;n=this._events[e],s=n.length,r=-1;if(n===t||i(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(o(n)){for(u=s;u-->0;)if(n[u]===t||n[u].listener&&n[u].listener===t){r=u;break}if(r<0)return this;n.length===1?(n.length=0,delete this._events[e]):n.splice(r,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return arguments.length===0?this._events={}:this._events[e]&&delete this._events[e],this;if(arguments.length===0){for(t in this._events){if(t==="removeListener")continue;this.removeAllListeners(t)}return this.removeAllListeners("removeListener"),this._events={},this}n=this._events[e];if(i(n))this.removeListener(e,n);else while(n.length)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){var t;return!this._events||!this._events[e]?t=[]:i(this._events[e])?t=[this._events[e]]:t=this._events[e].slice(),t},r.listenerCount=function(e,t){var n;return!e._events||!e._events[t]?n=0:i(e._events[t])?n=1:n=e._events[t].length,n}},{}],17:[function(e,t,n){typeof Object.create=="function"?t.exports=function(t,n){t.super_=n,t.prototype=Object.create(n.prototype,{constructor:{value:t,enumerable:!1,writable:!0,configurable:!0}})}:t.exports=function(t,n){t.super_=n;var r=function(){};r.prototype=n.prototype,t.prototype=new r,t.prototype.constructor=t}},{}],18:[function(e,t,n){function i(){}var r=t.exports={};r.nextTick=function(){var e=typeof window!="undefined"&&window.setImmediate,t=typeof window!="undefined"&&window.postMessage&&window.addEventListener;if(e)return function(e){return window.setImmediate(e)};if(t){var n=[];return window.addEventListener("message",function(e){var t=e.source;if((t===window||t===null)&&e.data==="process-tick"){e.stopPropagation();if(n.length>0){var r=n.shift();r()}}},!0),function(t){n.push(t),window.postMessage("process-tick","*")}}return function(t){setTimeout(t,0)}}(),r.title="browser",r.browser=!0,r.env={},r.argv=[],r.on=i,r.once=i,r.off=i,r.emit=i,r.binding=function(e){throw new Error("process.binding is not supported")},r.cwd=function(){return"/"},r.chdir=function(e){throw new Error("process.chdir is not supported")}},{}],19:[function(e,t,n){t.exports=e(14)},{}],20:[function(e,t,n){t.exports=e(15)},{"./support/isBuffer":19,"/usr/local/lib/node_modules/browserify/node_modules/insert-module-globals/node_modules/process/browser.js":18,inherits:17}]},{},[9])(9)}),define("ace/mode/html_worker",["require","exports","module","ace/lib/oop","ace/lib/lang","ace/worker/mirror","ace/mode/html/saxparser"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/lang"),s=e("../worker/mirror").Mirror,o=e("./html/saxparser").SAXParser,u={"expected-doctype-but-got-start-tag":"info","expected-doctype-but-got-chars":"info","non-html-root":"info"},a=t.Worker=function(e){s.call(this,e),this.setTimeout(400),this.context=null};r.inherits(a,s),function(){this.setOptions=function(e){this.context=e.context},this.onUpdate=function(){var e=this.doc.getValue();if(!e)return;var t=new o,n=[],r=function(){};t.contentHandler={startDocument:r,endDocument:r,startElement:r,endElement:r,characters:r},t.errorHandler={error:function(e,t,r){n.push({row:t.line,column:t.column,text:e,type:u[r]||"error"})}},this.context?t.parseFragment(e,this.context):t.parse(e),this.sender.emit("error",n)}}.call(a.prototype)}),define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+ta)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n1&&u(t,"")>-1&&(a=RegExp(this.source,r.replace.call(o(this),"g","")),r.replace.call(e.slice(t.index),a,function(){for(var e=1;et.index&&this.lastIndex--}return t},s||(RegExp.prototype.test=function(e){var t=r.exec.call(this,e);return t&&this.global&&!t[0].length&&this.lastIndex>t.index&&this.lastIndex--,!!t})}),define("ace/lib/es5-shim",["require","exports","module"],function(e,t,n){function r(){}function w(e){try{return Object.defineProperty(e,"sentinel",{}),"sentinel"in e}catch(t){}}function H(e){return e=+e,e!==e?e=0:e!==0&&e!==1/0&&e!==-1/0&&(e=(e>0||-1)*Math.floor(Math.abs(e))),e}function B(e){var t=typeof e;return e===null||t==="undefined"||t==="boolean"||t==="number"||t==="string"}function j(e){var t,n,r;if(B(e))return e;n=e.valueOf;if(typeof n=="function"){t=n.call(e);if(B(t))return t}r=e.toString;if(typeof r=="function"){t=r.call(e);if(B(t))return t}throw new TypeError}Function.prototype.bind||(Function.prototype.bind=function(t){var n=this;if(typeof n!="function")throw new TypeError("Function.prototype.bind called on incompatible "+n);var i=u.call(arguments,1),s=function(){if(this instanceof s){var e=n.apply(this,i.concat(u.call(arguments)));return Object(e)===e?e:this}return n.apply(t,i.concat(u.call(arguments)))};return n.prototype&&(r.prototype=n.prototype,s.prototype=new r,r.prototype=null),s});var i=Function.prototype.call,s=Array.prototype,o=Object.prototype,u=s.slice,a=i.bind(o.toString),f=i.bind(o.hasOwnProperty),l,c,h,p,d;if(d=f(o,"__defineGetter__"))l=i.bind(o.__defineGetter__),c=i.bind(o.__defineSetter__),h=i.bind(o.__lookupGetter__),p=i.bind(o.__lookupSetter__);if([1,2].splice(0).length!=2)if(!function(){function e(e){var t=new Array(e+2);return t[0]=t[1]=0,t}var t=[],n;t.splice.apply(t,e(20)),t.splice.apply(t,e(26)),n=t.length,t.splice(5,0,"XXX"),n+1==t.length;if(n+1==t.length)return!0}())Array.prototype.splice=function(e,t){var n=this.length;e>0?e>n&&(e=n):e==void 0?e=0:e<0&&(e=Math.max(n+e,0)),e+ta)for(h=l;h--;)this[f+h]=this[a+h];if(s&&e===c)this.length=c,this.push.apply(this,i);else{this.length=c+s;for(h=0;h>>0;if(a(t)!="[object Function]")throw new TypeError;while(++s>>0,s=Array(i),o=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var u=0;u>>0,s=[],o,u=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var f=0;f>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0,s=arguments[1];if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");for(var o=0;o>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduce of empty array with no initial value");var s=0,o;if(arguments.length>=2)o=arguments[1];else do{if(s in r){o=r[s++];break}if(++s>=i)throw new TypeError("reduce of empty array with no initial value")}while(!0);for(;s>>0;if(a(t)!="[object Function]")throw new TypeError(t+" is not a function");if(!i&&arguments.length==1)throw new TypeError("reduceRight of empty array with no initial value");var s,o=i-1;if(arguments.length>=2)s=arguments[1];else do{if(o in r){s=r[o--];break}if(--o<0)throw new TypeError("reduceRight of empty array with no initial value")}while(!0);do o in this&&(s=t.call(void 0,s,r[o],o,n));while(o--);return s});if(!Array.prototype.indexOf||[0,1].indexOf(1,2)!=-1)Array.prototype.indexOf=function(t){var n=g&&a(this)=="[object String]"?this.split(""):F(this),r=n.length>>>0;if(!r)return-1;var i=0;arguments.length>1&&(i=H(arguments[1])),i=i>=0?i:Math.max(0,r+i);for(;i>>0;if(!r)return-1;var i=r-1;arguments.length>1&&(i=Math.min(i,H(arguments[1]))),i=i>=0?i:r-Math.abs(i);for(;i>=0;i--)if(i in n&&t===n[i])return i;return-1};Object.getPrototypeOf||(Object.getPrototypeOf=function(t){return t.__proto__||(t.constructor?t.constructor.prototype:o)});if(!Object.getOwnPropertyDescriptor){var y="Object.getOwnPropertyDescriptor called on a non-object: ";Object.getOwnPropertyDescriptor=function(t,n){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(y+t);if(!f(t,n))return;var r,i,s;r={enumerable:!0,configurable:!0};if(d){var u=t.__proto__;t.__proto__=o;var i=h(t,n),s=p(t,n);t.__proto__=u;if(i||s)return i&&(r.get=i),s&&(r.set=s),r}return r.value=t[n],r}}Object.getOwnPropertyNames||(Object.getOwnPropertyNames=function(t){return Object.keys(t)});if(!Object.create){var b;Object.prototype.__proto__===null?b=function(){return{__proto__:null}}:b=function(){var e={};for(var t in e)e[t]=null;return e.constructor=e.hasOwnProperty=e.propertyIsEnumerable=e.isPrototypeOf=e.toLocaleString=e.toString=e.valueOf=e.__proto__=null,e},Object.create=function(t,n){var r;if(t===null)r=b();else{if(typeof t!="object")throw new TypeError("typeof prototype["+typeof t+"] != 'object'");var i=function(){};i.prototype=t,r=new i,r.__proto__=t}return n!==void 0&&Object.defineProperties(r,n),r}}if(Object.defineProperty){var E=w({}),S=typeof document=="undefined"||w(document.createElement("div"));if(!E||!S)var x=Object.defineProperty}if(!Object.defineProperty||x){var T="Property description must be an object: ",N="Object.defineProperty called on non-object: ",C="getters & setters can not be defined on this javascript engine";Object.defineProperty=function(t,n,r){if(typeof t!="object"&&typeof t!="function"||t===null)throw new TypeError(N+t);if(typeof r!="object"&&typeof r!="function"||r===null)throw new TypeError(T+r);if(x)try{return x.call(Object,t,n,r)}catch(i){}if(f(r,"value"))if(d&&(h(t,n)||p(t,n))){var s=t.__proto__;t.__proto__=o,delete t[n],t[n]=r.value,t.__proto__=s}else t[n]=r.value;else{if(!d)throw new TypeError(C);f(r,"get")&&l(t,n,r.get),f(r,"set")&&c(t,n,r.set)}return t}}Object.defineProperties||(Object.defineProperties=function(t,n){for(var r in n)f(n,r)&&Object.defineProperty(t,r,n[r]);return t}),Object.seal||(Object.seal=function(t){return t}),Object.freeze||(Object.freeze=function(t){return t});try{Object.freeze(function(){})}catch(k){Object.freeze=function(t){return function(n){return typeof n=="function"?n:t(n)}}(Object.freeze)}Object.preventExtensions||(Object.preventExtensions=function(t){return t}),Object.isSealed||(Object.isSealed=function(t){return!1}),Object.isFrozen||(Object.isFrozen=function(t){return!1}),Object.isExtensible||(Object.isExtensible=function(t){if(Object(t)===t)throw new TypeError;var n="";while(f(t,n))n+="?";t[n]=!0;var r=f(t,n);return delete t[n],r});if(!Object.keys){var L=!0,A=["toString","toLocaleString","valueOf","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","constructor"],O=A.length;for(var M in{toString:null})L=!1;Object.keys=function I(e){if(typeof e!="object"&&typeof e!="function"||e===null)throw new TypeError("Object.keys called on a non-object");var I=[];for(var t in e)f(e,t)&&I.push(t);if(L)for(var n=0,r=O;n=0?parseFloat((i.match(/(?:MSIE |Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]):parseFloat((i.match(/(?:Trident\/[0-9]+[\.0-9]+;.*rv:)([0-9]+[\.0-9]+)/)||[])[1]),t.isOldIE=t.isIE&&t.isIE<9,t.isGecko=t.isMozilla=(window.Controllers||window.controllers)&&window.navigator.product==="Gecko",t.isOldGecko=t.isGecko&&parseInt((i.match(/rv:(\d+)/)||[])[1],10)<4,t.isOpera=window.opera&&Object.prototype.toString.call(window.opera)=="[object Opera]",t.isWebKit=parseFloat(i.split("WebKit/")[1])||undefined,t.isChrome=parseFloat(i.split(" Chrome/")[1])||undefined,t.isAIR=i.indexOf("AdobeAIR")>=0,t.isIPad=i.indexOf("iPad")>=0,t.isTouchPad=i.indexOf("TouchPad")>=0,t.isChromeOS=i.indexOf(" CrOS ")>=0}),define("ace/lib/event",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function a(e,t,n){var a=u(t);if(!i.isMac&&s){t.getModifierState&&(t.getModifierState("OS")||t.getModifierState("Win"))&&(a|=8);if(s.altGr){if((3&a)==3)return;s.altGr=0}if(n===18||n===17){var f="location"in t?t.location:t.keyLocation;if(n===17&&f===1)s[n]==1&&(o=t.timeStamp);else if(n===18&&a===3&&f===2){var l=t.timeStamp-o;l<50&&(s.altGr=!0)}}}n in r.MODIFIER_KEYS&&(n=-1),a&8&&n>=91&&n<=93&&(n=-1);if(!a&&n===13){var f="location"in t?t.location:t.keyLocation;if(f===3){e(t,a,-n);if(t.defaultPrevented)return}}if(i.isChromeOS&&a&8){e(t,a,n);if(t.defaultPrevented)return;a&=-9}return!!a||n in r.FUNCTION_KEYS||n in r.PRINTABLE_KEYS?e(t,a,n):!1}function f(){s=Object.create(null)}var r=e("./keys"),i=e("./useragent"),s=null,o=0;t.addListener=function(e,t,n){if(e.addEventListener)return e.addEventListener(t,n,!1);if(e.attachEvent){var r=function(){n.call(e,window.event)};n._wrapper=r,e.attachEvent("on"+t,r)}},t.removeListener=function(e,t,n){if(e.removeEventListener)return e.removeEventListener(t,n,!1);e.detachEvent&&e.detachEvent("on"+t,n._wrapper||n)},t.stopEvent=function(e){return t.stopPropagation(e),t.preventDefault(e),!1},t.stopPropagation=function(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0},t.preventDefault=function(e){e.preventDefault?e.preventDefault():e.returnValue=!1},t.getButton=function(e){return e.type=="dblclick"?0:e.type=="contextmenu"||i.isMac&&e.ctrlKey&&!e.altKey&&!e.shiftKey?2:e.preventDefault?e.button:{1:0,2:2,4:1}[e.button]},t.capture=function(e,n,r){function i(e){n&&n(e),r&&r(e),t.removeListener(document,"mousemove",n,!0),t.removeListener(document,"mouseup",i,!0),t.removeListener(document,"dragstart",i,!0)}return t.addListener(document,"mousemove",n,!0),t.addListener(document,"mouseup",i,!0),t.addListener(document,"dragstart",i,!0),i},t.addTouchMoveListener=function(e,n){if("ontouchmove"in e){var r,i;t.addListener(e,"touchstart",function(e){var t=e.changedTouches[0];r=t.clientX,i=t.clientY}),t.addListener(e,"touchmove",function(e){var t=1,s=e.changedTouches[0];e.wheelX=-(s.clientX-r)/t,e.wheelY=-(s.clientY-i)/t,r=s.clientX,i=s.clientY,n(e)})}},t.addMouseWheelListener=function(e,n){"onmousewheel"in e?t.addListener(e,"mousewheel",function(e){var t=8;e.wheelDeltaX!==undefined?(e.wheelX=-e.wheelDeltaX/t,e.wheelY=-e.wheelDeltaY/t):(e.wheelX=0,e.wheelY=-e.wheelDelta/t),n(e)}):"onwheel"in e?t.addListener(e,"wheel",function(e){var t=.35;switch(e.deltaMode){case e.DOM_DELTA_PIXEL:e.wheelX=e.deltaX*t||0,e.wheelY=e.deltaY*t||0;break;case e.DOM_DELTA_LINE:case e.DOM_DELTA_PAGE:e.wheelX=(e.deltaX||0)*5,e.wheelY=(e.deltaY||0)*5}n(e)}):t.addListener(e,"DOMMouseScroll",function(e){e.axis&&e.axis==e.HORIZONTAL_AXIS?(e.wheelX=(e.detail||0)*5,e.wheelY=0):(e.wheelX=0,e.wheelY=(e.detail||0)*5),n(e)})},t.addMultiMouseDownListener=function(e,n,r,s){function c(e){t.getButton(e)!==0?o=0:e.detail>1?(o++,o>4&&(o=1)):o=1;if(i.isIE){var c=Math.abs(e.clientX-u)>5||Math.abs(e.clientY-a)>5;if(!f||c)o=1;f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),o==1&&(u=e.clientX,a=e.clientY)}e._clicks=o,r[s]("mousedown",e);if(o>4)o=0;else if(o>1)return r[s](l[o],e)}function h(e){o=2,f&&clearTimeout(f),f=setTimeout(function(){f=null},n[o-1]||600),r[s]("mousedown",e),r[s](l[o],e)}var o=0,u,a,f,l={2:"dblclick",3:"tripleclick",4:"quadclick"};Array.isArray(e)||(e=[e]),e.forEach(function(e){t.addListener(e,"mousedown",c),i.isOldIE&&t.addListener(e,"dblclick",h)})};var u=!i.isMac||!i.isOpera||"KeyboardEvent"in window?function(e){return 0|(e.ctrlKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.metaKey?8:0)}:function(e){return 0|(e.metaKey?1:0)|(e.altKey?2:0)|(e.shiftKey?4:0)|(e.ctrlKey?8:0)};t.getModifierString=function(e){return r.KEY_MODS[u(e)]},t.addCommandKeyListener=function(e,n){var r=t.addListener;if(i.isOldGecko||i.isOpera&&!("KeyboardEvent"in window)){var o=null;r(e,"keydown",function(e){o=e.keyCode}),r(e,"keypress",function(e){return a(n,e,o)})}else{var u=null;r(e,"keydown",function(e){s[e.keyCode]=(s[e.keyCode]||0)+1;var t=a(n,e,e.keyCode);return u=e.defaultPrevented,t}),r(e,"keypress",function(e){u&&(e.ctrlKey||e.altKey||e.shiftKey||e.metaKey)&&(t.stopEvent(e),u=null)}),r(e,"keyup",function(e){s[e.keyCode]=null}),s||(f(),r(window,"focus",f))}};if(typeof window=="object"&&window.postMessage&&!i.isOldIE){var l=1;t.nextTick=function(e,n){n=n||window;var r="zero-timeout-message-"+l;t.addListener(n,"message",function i(s){s.data==r&&(t.stopPropagation(s),t.removeListener(n,"message",i),e())}),n.postMessage(r,"*")}}t.nextFrame=typeof window=="object"&&(window.requestAnimationFrame||window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.msRequestAnimationFrame||window.oRequestAnimationFrame),t.nextFrame?t.nextFrame=t.nextFrame.bind(window):t.nextFrame=function(e){setTimeout(e,17)}}),define("ace/lib/lang",["require","exports","module"],function(e,t,n){"use strict";t.last=function(e){return e[e.length-1]},t.stringReverse=function(e){return e.split("").reverse().join("")},t.stringRepeat=function(e,t){var n="";while(t>0){t&1&&(n+=e);if(t>>=1)e+=e}return n};var r=/^\s\s*/,i=/\s\s*$/;t.stringTrimLeft=function(e){return e.replace(r,"")},t.stringTrimRight=function(e){return e.replace(i,"")},t.copyObject=function(e){var t={};for(var n in e)t[n]=e[n];return t},t.copyArray=function(e){var t=[];for(var n=0,r=e.length;n=53&&O()},I=o.delayedCall(j,50);r.addListener(n,"compositionstart",B),i.isGecko?r.addListener(n,"text",function(){I.schedule()}):(r.addListener(n,"keyup",function(){I.schedule()}),r.addListener(n,"keydown",function(){I.schedule()})),r.addListener(n,"compositionend",F),this.getElement=function(){return n},this.setReadOnly=function(e){n.readOnly=e},this.onContextMenu=function(e){L=!0,b(t.selection.isEmpty()),t._emit("nativecontextmenu",{target:t,domEvent:e}),this.moveToMouse(e,!0)},this.moveToMouse=function(e,o){if(!o&&i.isOldIE)return;p||(p=n.style.cssText),n.style.cssText=(o?"z-index:100000;":"")+"height:"+n.style.height+";"+(i.isIE?"opacity:0.1;":"");var u=t.container.getBoundingClientRect(),a=s.computedStyle(t.container),f=u.top+(parseInt(a.borderTopWidth)||0),l=u.left+(parseInt(u.borderLeftWidth)||0),c=u.bottom-f-n.clientHeight-2,h=function(e){n.style.left=e.clientX-l-2+"px",n.style.top=Math.min(e.clientY-f-2,c)+"px"};h(e);if(e.type!="mousedown")return;t.renderer.$keepTextAreaAtCursor&&(t.renderer.$keepTextAreaAtCursor=null),clearTimeout(q),i.isWin&&!i.isOldIE&&r.capture(t.container,h,R)},this.onContextMenuClose=R;var q,U=function(e){t.textInput.onContextMenu(e),R()};r.addListener(n,"mouseup",U),r.addListener(n,"mousedown",function(e){e.preventDefault(),R()}),r.addListener(t.renderer.scroller,"contextmenu",U),r.addListener(n,"contextmenu",U)};t.TextInput=f}),define("ace/mouse/default_handlers",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";function u(e){e.$clickSelection=null;var t=e.editor;t.setDefaultHandler("mousedown",this.onMouseDown.bind(e)),t.setDefaultHandler("dblclick",this.onDoubleClick.bind(e)),t.setDefaultHandler("tripleclick",this.onTripleClick.bind(e)),t.setDefaultHandler("quadclick",this.onQuadClick.bind(e)),t.setDefaultHandler("mousewheel",this.onMouseWheel.bind(e)),t.setDefaultHandler("touchmove",this.onTouchMove.bind(e));var n=["select","startSelect","selectEnd","selectAllEnd","selectByWordsEnd","selectByLinesEnd","dragWait","dragWaitEnd","focusWait"];n.forEach(function(t){e[t]=this[t]},this),e.selectByLines=this.extendSelectionBy.bind(e,"getLineRange"),e.selectByWords=this.extendSelectionBy.bind(e,"getWordRange")}function a(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}function f(e,t){if(e.start.row==e.end.row)var n=2*t.column-e.start.column-e.end.column;else if(e.start.row==e.end.row-1&&!e.start.column&&!e.end.column)var n=t.column-4;else var n=2*t.row-e.start.row-e.end.row;return n<0?{cursor:e.start,anchor:e.end}:{cursor:e.end,anchor:e.start}}var r=e("../lib/dom"),i=e("../lib/event"),s=e("../lib/useragent"),o=0;(function(){this.onMouseDown=function(e){var t=e.inSelection(),n=e.getDocumentPosition();this.mousedownEvent=e;var r=this.editor,i=e.getButton();if(i!==0){var s=r.getSelectionRange(),o=s.isEmpty();r.$blockScrolling++,(o||i==1)&&r.selection.moveToPosition(n),r.$blockScrolling--,i==2&&r.textInput.onContextMenu(e.domEvent);return}this.mousedownEvent.time=Date.now();if(t&&!r.isFocused()){r.focus();if(this.$focusTimout&&!this.$clickSelection&&!r.inMultiSelectMode){this.setState("focusWait"),this.captureMouse(e);return}}return this.captureMouse(e),this.startSelect(n,e.domEvent._clicks>1),e.preventDefault()},this.startSelect=function(e,t){e=e||this.editor.renderer.screenToTextCoordinates(this.x,this.y);var n=this.editor;n.$blockScrolling++,this.mousedownEvent.getShiftKey()?n.selection.selectToPosition(e):t||n.selection.moveToPosition(e),t||this.select(),n.renderer.scroller.setCapture&&n.renderer.scroller.setCapture(),n.setStyle("ace_selecting"),this.setState("select"),n.$blockScrolling--},this.select=function(){var e,t=this.editor,n=t.renderer.screenToTextCoordinates(this.x,this.y);t.$blockScrolling++;if(this.$clickSelection){var r=this.$clickSelection.comparePoint(n);if(r==-1)e=this.$clickSelection.end;else if(r==1)e=this.$clickSelection.start;else{var i=f(this.$clickSelection,n);n=i.cursor,e=i.anchor}t.selection.setSelectionAnchor(e.row,e.column)}t.selection.selectToPosition(n),t.$blockScrolling--,t.renderer.scrollCursorIntoView()},this.extendSelectionBy=function(e){var t,n=this.editor,r=n.renderer.screenToTextCoordinates(this.x,this.y),i=n.selection[e](r.row,r.column);n.$blockScrolling++;if(this.$clickSelection){var s=this.$clickSelection.comparePoint(i.start),o=this.$clickSelection.comparePoint(i.end);if(s==-1&&o<=0){t=this.$clickSelection.end;if(i.end.row!=r.row||i.end.column!=r.column)r=i.start}else if(o==1&&s>=0){t=this.$clickSelection.start;if(i.start.row!=r.row||i.start.column!=r.column)r=i.end}else if(s==-1&&o==1)r=i.end,t=i.start;else{var u=f(this.$clickSelection,r);r=u.cursor,t=u.anchor}n.selection.setSelectionAnchor(t.row,t.column)}n.selection.selectToPosition(r),n.$blockScrolling--,n.renderer.scrollCursorIntoView()},this.selectEnd=this.selectAllEnd=this.selectByWordsEnd=this.selectByLinesEnd=function(){this.$clickSelection=null,this.editor.unsetStyle("ace_selecting"),this.editor.renderer.scroller.releaseCapture&&this.editor.renderer.scroller.releaseCapture()},this.focusWait=function(){var e=a(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y),t=Date.now();(e>o||t-this.mousedownEvent.time>this.$focusTimout)&&this.startSelect(this.mousedownEvent.getDocumentPosition())},this.onDoubleClick=function(e){var t=e.getDocumentPosition(),n=this.editor,r=n.session,i=r.getBracketRange(t);i?(i.isEmpty()&&(i.start.column--,i.end.column++),this.setState("select")):(i=n.selection.getWordRange(t.row,t.column),this.setState("selectByWords")),this.$clickSelection=i,this.select()},this.onTripleClick=function(e){var t=e.getDocumentPosition(),n=this.editor;this.setState("selectByLines");var r=n.getSelectionRange();r.isMultiLine()&&r.contains(t.row,t.column)?(this.$clickSelection=n.selection.getLineRange(r.start.row),this.$clickSelection.end=n.selection.getLineRange(r.end.row).end):this.$clickSelection=n.selection.getLineRange(t.row),this.select()},this.onQuadClick=function(e){var t=this.editor;t.selectAll(),this.$clickSelection=t.getSelectionRange(),this.setState("selectAll")},this.onMouseWheel=function(e){if(e.getAccelKey())return;e.getShiftKey()&&e.wheelY&&!e.wheelX&&(e.wheelX=e.wheelY,e.wheelY=0);var t=e.domEvent.timeStamp,n=t-(this.$lastScrollTime||0),r=this.editor,i=r.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);if(i||n<200)return this.$lastScrollTime=t,r.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()},this.onTouchMove=function(e){var t=e.domEvent.timeStamp,n=t-(this.$lastScrollTime||0),r=this.editor,i=r.renderer.isScrollableBy(e.wheelX*e.speed,e.wheelY*e.speed);if(i||n<200)return this.$lastScrollTime=t,r.renderer.scrollBy(e.wheelX*e.speed,e.wheelY*e.speed),e.stop()}}).call(u.prototype),t.DefaultHandlers=u}),define("ace/tooltip",["require","exports","module","ace/lib/oop","ace/lib/dom"],function(e,t,n){"use strict";function s(e){this.isOpen=!1,this.$element=null,this.$parentNode=e}var r=e("./lib/oop"),i=e("./lib/dom");(function(){this.$init=function(){return this.$element=i.createElement("div"),this.$element.className="ace_tooltip",this.$element.style.display="none",this.$parentNode.appendChild(this.$element),this.$element},this.getElement=function(){return this.$element||this.$init()},this.setText=function(e){i.setInnerText(this.getElement(),e)},this.setHtml=function(e){this.getElement().innerHTML=e},this.setPosition=function(e,t){this.getElement().style.left=e+"px",this.getElement().style.top=t+"px"},this.setClassName=function(e){i.addCssClass(this.getElement(),e)},this.show=function(e,t,n){e!=null&&this.setText(e),t!=null&&n!=null&&this.setPosition(t,n),this.isOpen||(this.getElement().style.display="block",this.isOpen=!0)},this.hide=function(){this.isOpen&&(this.getElement().style.display="none",this.isOpen=!1)},this.getHeight=function(){return this.getElement().offsetHeight},this.getWidth=function(){return this.getElement().offsetWidth}}).call(s.prototype),t.Tooltip=s}),define("ace/mouse/default_gutter_handler",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/event","ace/tooltip"],function(e,t,n){"use strict";function u(e){function l(){var r=u.getDocumentPosition().row,s=n.$annotations[r];if(!s)return c();var o=t.session.getLength();if(r==o){var a=t.renderer.pixelToScreenCoordinates(0,u.y).row,l=u.$pos;if(a>t.session.documentToScreenRow(l.row,l.column))return c()}if(f==s)return;f=s.text.join("
"),i.setHtml(f),i.show(),t._signal("showGutterTooltip",i),t.on("mousewheel",c);if(e.$tooltipFollowsMouse)h(u);else{var p=u.domEvent.target,d=p.getBoundingClientRect(),v=i.getElement().style;v.left=d.right+"px",v.top=d.bottom+"px"}}function c(){o&&(o=clearTimeout(o)),f&&(i.hide(),f=null,t._signal("hideGutterTooltip",i),t.removeEventListener("mousewheel",c))}function h(e){i.setPosition(e.x,e.y)}var t=e.editor,n=t.renderer.$gutterLayer,i=new a(t.container);e.editor.setDefaultHandler("guttermousedown",function(r){if(!t.isFocused()||r.getButton()!=0)return;var i=n.getRegion(r);if(i=="foldWidgets")return;var s=r.getDocumentPosition().row,o=t.session.selection;if(r.getShiftKey())o.selectTo(s,0);else{if(r.domEvent.detail==2)return t.selectAll(),r.preventDefault();e.$clickSelection=t.selection.getLineRange(s)}return e.setState("selectByLines"),e.captureMouse(r),r.preventDefault()});var o,u,f;e.editor.setDefaultHandler("guttermousemove",function(t){var n=t.domEvent.target||t.domEvent.srcElement;if(r.hasCssClass(n,"ace_fold-widget"))return c();f&&e.$tooltipFollowsMouse&&h(t),u=t;if(o)return;o=setTimeout(function(){o=null,u&&!e.isMousePressed?l():c()},50)}),s.addListener(t.renderer.$gutter,"mouseout",function(e){u=null;if(!f||o)return;o=setTimeout(function(){o=null,c()},50)}),t.on("changeSession",c)}function a(e){o.call(this,e)}var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/event"),o=e("../tooltip").Tooltip;i.inherits(a,o),function(){this.setPosition=function(e,t){var n=window.innerWidth||document.documentElement.clientWidth,r=window.innerHeight||document.documentElement.clientHeight,i=this.getWidth(),s=this.getHeight();e+=15,t+=15,e+i>n&&(e-=e+i-n),t+s>r&&(t-=20+s),o.prototype.setPosition.call(this,e,t)}}.call(a.prototype),t.GutterHandler=u}),define("ace/mouse/mouse_event",["require","exports","module","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=t.MouseEvent=function(e,t){this.domEvent=e,this.editor=t,this.x=this.clientX=e.clientX,this.y=this.clientY=e.clientY,this.$pos=null,this.$inSelection=null,this.propagationStopped=!1,this.defaultPrevented=!1};(function(){this.stopPropagation=function(){r.stopPropagation(this.domEvent),this.propagationStopped=!0},this.preventDefault=function(){r.preventDefault(this.domEvent),this.defaultPrevented=!0},this.stop=function(){this.stopPropagation(),this.preventDefault()},this.getDocumentPosition=function(){return this.$pos?this.$pos:(this.$pos=this.editor.renderer.screenToTextCoordinates(this.clientX,this.clientY),this.$pos)},this.inSelection=function(){if(this.$inSelection!==null)return this.$inSelection;var e=this.editor,t=e.getSelectionRange();if(t.isEmpty())this.$inSelection=!1;else{var n=this.getDocumentPosition();this.$inSelection=t.contains(n.row,n.column)}return this.$inSelection},this.getButton=function(){return r.getButton(this.domEvent)},this.getShiftKey=function(){return this.domEvent.shiftKey},this.getAccelKey=i.isMac?function(){return this.domEvent.metaKey}:function(){return this.domEvent.ctrlKey}}).call(s.prototype)}),define("ace/mouse/dragdrop_handler",["require","exports","module","ace/lib/dom","ace/lib/event","ace/lib/useragent"],function(e,t,n){"use strict";function f(e){function T(e,n){var r=Date.now(),i=!n||e.row!=n.row,s=!n||e.column!=n.column;if(!S||i||s)t.$blockScrolling+=1,t.moveCursorToPosition(e),t.$blockScrolling-=1,S=r,x={x:p,y:d};else{var o=l(x.x,x.y,p,d);o>a?S=null:r-S>=u&&(t.renderer.scrollCursorIntoView(),S=null)}}function N(e,n){var r=Date.now(),i=t.renderer.layerConfig.lineHeight,s=t.renderer.layerConfig.characterWidth,u=t.renderer.scroller.getBoundingClientRect(),a={x:{left:p-u.left,right:u.right-p},y:{top:d-u.top,bottom:u.bottom-d}},f=Math.min(a.x.left,a.x.right),l=Math.min(a.y.top,a.y.bottom),c={row:e.row,column:e.column};f/s<=2&&(c.column+=a.x.left=o&&t.renderer.scrollCursorIntoView(c):E=r:E=null}function C(){var e=g;g=t.renderer.screenToTextCoordinates(p,d),T(g,e),N(g,e)}function k(){m=t.selection.toOrientedRange(),h=t.session.addMarker(m,"ace_selection",t.getSelectionStyle()),t.clearSelection(),t.isFocused()&&t.renderer.$cursorLayer.setBlinking(!1),clearInterval(v),C(),v=setInterval(C,20),y=0,i.addListener(document,"mousemove",O)}function L(){clearInterval(v),t.session.removeMarker(h),h=null,t.$blockScrolling+=1,t.selection.fromOrientedRange(m),t.$blockScrolling-=1,t.isFocused()&&!w&&t.renderer.$cursorLayer.setBlinking(!t.getReadOnly()),m=null,g=null,y=0,E=null,S=null,i.removeListener(document,"mousemove",O)}function O(){A==null&&(A=setTimeout(function(){A!=null&&h&&L()},20))}function M(e){var t=e.types;return!t||Array.prototype.some.call(t,function(e){return e=="text/plain"||e=="Text"})}function _(e){var t=["copy","copymove","all","uninitialized"],n=["move","copymove","linkmove","all","uninitialized"],r=s.isMac?e.altKey:e.ctrlKey,i="uninitialized";try{i=e.dataTransfer.effectAllowed.toLowerCase()}catch(e){}var o="none";return r&&t.indexOf(i)>=0?o="copy":n.indexOf(i)>=0?o="move":t.indexOf(i)>=0&&(o="copy"),o}var t=e.editor,n=r.createElement("img");n.src="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",s.isOpera&&(n.style.cssText="width:1px;height:1px;position:fixed;top:0;left:0;z-index:2147483647;opacity:0;");var f=["dragWait","dragWaitEnd","startDrag","dragReadyEnd","onMouseDrag"];f.forEach(function(t){e[t]=this[t]},this),t.addEventListener("mousedown",this.onMouseDown.bind(e));var c=t.container,h,p,d,v,m,g,y=0,b,w,E,S,x;this.onDragStart=function(e){if(this.cancelDrag||!c.draggable){var r=this;return setTimeout(function(){r.startSelect(),r.captureMouse(e)},0),e.preventDefault()}m=t.getSelectionRange();var i=e.dataTransfer;i.effectAllowed=t.getReadOnly()?"copy":"copyMove",s.isOpera&&(t.container.appendChild(n),n.scrollTop=0),i.setDragImage&&i.setDragImage(n,0,0),s.isOpera&&t.container.removeChild(n),i.clearData(),i.setData("Text",t.session.getTextRange()),w=!0,this.setState("drag")},this.onDragEnd=function(e){c.draggable=!1,w=!1,this.setState(null);if(!t.getReadOnly()){var n=e.dataTransfer.dropEffect;!b&&n=="move"&&t.session.remove(t.getSelectionRange()),t.renderer.$cursorLayer.setBlinking(!0)}this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle("")},this.onDragEnter=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||k(),y++,e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragOver=function(e){if(t.getReadOnly()||!M(e.dataTransfer))return;return p=e.clientX,d=e.clientY,h||(k(),y++),A!==null&&(A=null),e.dataTransfer.dropEffect=b=_(e),i.preventDefault(e)},this.onDragLeave=function(e){y--;if(y<=0&&h)return L(),b=null,i.preventDefault(e)},this.onDrop=function(e){if(!g)return;var n=e.dataTransfer;if(w)switch(b){case"move":m.contains(g.row,g.column)?m={start:g,end:g}:m=t.moveText(m,g);break;case"copy":m=t.moveText(m,g,!0)}else{var r=n.getData("Text");m={start:g,end:t.session.insert(g,r)},t.focus(),b=null}return L(),i.preventDefault(e)},i.addListener(c,"dragstart",this.onDragStart.bind(e)),i.addListener(c,"dragend",this.onDragEnd.bind(e)),i.addListener(c,"dragenter",this.onDragEnter.bind(e)),i.addListener(c,"dragover",this.onDragOver.bind(e)),i.addListener(c,"dragleave",this.onDragLeave.bind(e)),i.addListener(c,"drop",this.onDrop.bind(e));var A=null}function l(e,t,n,r){return Math.sqrt(Math.pow(n-e,2)+Math.pow(r-t,2))}var r=e("../lib/dom"),i=e("../lib/event"),s=e("../lib/useragent"),o=200,u=200,a=5;(function(){this.dragWait=function(){var e=Date.now()-this.mousedownEvent.time;e>this.editor.getDragDelay()&&this.startDrag()},this.dragWaitEnd=function(){var e=this.editor.container;e.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()),this.selectEnd()},this.dragReadyEnd=function(e){this.editor.renderer.$cursorLayer.setBlinking(!this.editor.getReadOnly()),this.editor.unsetStyle("ace_dragging"),this.editor.renderer.setCursorStyle(""),this.dragWaitEnd()},this.startDrag=function(){this.cancelDrag=!1;var e=this.editor,t=e.container;t.draggable=!0,e.renderer.$cursorLayer.setBlinking(!1),e.setStyle("ace_dragging");var n=s.isWin?"default":"move";e.renderer.setCursorStyle(n),this.setState("dragReady")},this.onMouseDrag=function(e){var t=this.editor.container;if(s.isIE&&this.state=="dragReady"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>3&&t.dragDrop()}if(this.state==="dragWait"){var n=l(this.mousedownEvent.x,this.mousedownEvent.y,this.x,this.y);n>0&&(t.draggable=!1,this.startSelect(this.mousedownEvent.getDocumentPosition()))}},this.onMouseDown=function(e){if(!this.$dragEnabled)return;this.mousedownEvent=e;var t=this.editor,n=e.inSelection(),r=e.getButton(),i=e.domEvent.detail||1;if(i===1&&r===0&&n){if(e.editor.inMultiSelectMode&&(e.getAccelKey()||e.getShiftKey()))return;this.mousedownEvent.time=Date.now();var o=e.domEvent.target||e.domEvent.srcElement;"unselectable"in o&&(o.unselectable="on");if(t.getDragDelay()){if(s.isWebKit){this.cancelDrag=!0;var u=t.container;u.draggable=!0}this.setState("dragWait")}else this.startDrag();this.captureMouse(e,this.onMouseDrag.bind(this)),e.defaultPrevented=!0}}}).call(f.prototype),t.DragdropHandler=f}),define("ace/lib/net",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("./dom");t.get=function(e,t){var n=new XMLHttpRequest;n.open("GET",e,!0),n.onreadystatechange=function(){n.readyState===4&&t(n.responseText)},n.send(null)},t.loadScript=function(e,t){var n=r.getDocumentHead(),i=document.createElement("script");i.src=e,n.appendChild(i),i.onload=i.onreadystatechange=function(e,n){if(n||!i.readyState||i.readyState=="loaded"||i.readyState=="complete")i=i.onload=i.onreadystatechange=null,n||t()}},t.qualifyURL=function(e){var t=document.createElement("a");return t.href=e,t.href}}),define("ace/lib/event_emitter",["require","exports","module"],function(e,t,n){"use strict";var r={},i=function(){this.propagationStopped=!0},s=function(){this.defaultPrevented=!0};r._emit=r._dispatchEvent=function(e,t){this._eventRegistry||(this._eventRegistry={}),this._defaultHandlers||(this._defaultHandlers={});var n=this._eventRegistry[e]||[],r=this._defaultHandlers[e];if(!n.length&&!r)return;if(typeof t!="object"||!t)t={};t.type||(t.type=e),t.stopPropagation||(t.stopPropagation=i),t.preventDefault||(t.preventDefault=s),n=n.slice();for(var o=0;o1&&(i=n[n.length-2]);var o=a[t+"Path"];return o==null?o=a.basePath:r=="/"&&(t=r=""),o&&o.slice(-1)!="/"&&(o+="/"),o+t+r+i+this.get("suffix")},t.setModuleUrl=function(e,t){return a.$moduleUrls[e]=t},t.$loading={},t.loadModule=function(n,r){var i,o;Array.isArray(n)&&(o=n[0],n=n[1]);try{i=e(n)}catch(u){}if(i&&!t.$loading[n])return r&&r(i);t.$loading[n]||(t.$loading[n]=[]),t.$loading[n].push(r);if(t.$loading[n].length>1)return;var a=function(){e([n],function(e){t._emit("load.module",{name:n,module:e});var r=t.$loading[n];t.$loading[n]=null,r.forEach(function(t){t&&t(e)})})};if(!t.get("packaged"))return a();s.loadScript(t.moduleUrl(n,o),a)},t.init=f}),define("ace/mouse/mouse_handler",["require","exports","module","ace/lib/event","ace/lib/useragent","ace/mouse/default_handlers","ace/mouse/default_gutter_handler","ace/mouse/mouse_event","ace/mouse/dragdrop_handler","ace/config"],function(e,t,n){"use strict";var r=e("../lib/event"),i=e("../lib/useragent"),s=e("./default_handlers").DefaultHandlers,o=e("./default_gutter_handler").GutterHandler,u=e("./mouse_event").MouseEvent,a=e("./dragdrop_handler").DragdropHandler,f=e("../config"),l=function(e){var t=this;this.editor=e,new s(this),new o(this),new a(this);var n=function(t){var n=!document.hasFocus||!document.hasFocus()||!e.isFocused()&&document.activeElement==(e.textInput&&e.textInput.getElement());n&&window.focus(),e.focus()},u=e.renderer.getMouseEventTarget();r.addListener(u,"click",this.onMouseEvent.bind(this,"click")),r.addListener(u,"mousemove",this.onMouseMove.bind(this,"mousemove")),r.addMultiMouseDownListener([u,e.renderer.scrollBarV&&e.renderer.scrollBarV.inner,e.renderer.scrollBarH&&e.renderer.scrollBarH.inner,e.textInput&&e.textInput.getElement()].filter(Boolean),[400,300,250],this,"onMouseEvent"),r.addMouseWheelListener(e.container,this.onMouseWheel.bind(this,"mousewheel")),r.addTouchMoveListener(e.container,this.onTouchMove.bind(this,"touchmove"));var f=e.renderer.$gutter;r.addListener(f,"mousedown",this.onMouseEvent.bind(this,"guttermousedown")),r.addListener(f,"click",this.onMouseEvent.bind(this,"gutterclick")),r.addListener(f,"dblclick",this.onMouseEvent.bind(this,"gutterdblclick")),r.addListener(f,"mousemove",this.onMouseEvent.bind(this,"guttermousemove")),r.addListener(u,"mousedown",n),r.addListener(f,"mousedown",n),i.isIE&&e.renderer.scrollBarV&&(r.addListener(e.renderer.scrollBarV.element,"mousedown",n),r.addListener(e.renderer.scrollBarH.element,"mousedown",n)),e.on("mousemove",function(n){if(t.state||t.$dragDelay||!t.$dragEnabled)return;var r=e.renderer.screenToTextCoordinates(n.x,n.y),i=e.session.selection.getRange(),s=e.renderer;!i.isEmpty()&&i.insideStart(r.row,r.column)?s.setCursorStyle("default"):s.setCursorStyle("")})};(function(){this.onMouseEvent=function(e,t){this.editor._emit(e,new u(t,this.editor))},this.onMouseMove=function(e,t){var n=this.editor._eventRegistry&&this.editor._eventRegistry.mousemove;if(!n||!n.length)return;this.editor._emit(e,new u(t,this.editor))},this.onMouseWheel=function(e,t){var n=new u(t,this.editor);n.speed=this.$scrollSpeed*2,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.onTouchMove=function(e,t){var n=new u(t,this.editor);n.speed=1,n.wheelX=t.wheelX,n.wheelY=t.wheelY,this.editor._emit(e,n)},this.setState=function(e){this.state=e},this.captureMouse=function(e,t){this.x=e.x,this.y=e.y,this.isMousePressed=!0;var n=this.editor.renderer;n.$keepTextAreaAtCursor&&(n.$keepTextAreaAtCursor=null);var s=this,o=function(e){if(!e)return;if(i.isWebKit&&!e.which&&s.releaseMouse)return s.releaseMouse();s.x=e.clientX,s.y=e.clientY,t&&t(e),s.mouseEvent=new u(e,s.editor),s.$mouseMoved=!0},a=function(e){clearInterval(l),f(),s[s.state+"End"]&&s[s.state+"End"](e),s.state="",n.$keepTextAreaAtCursor==null&&(n.$keepTextAreaAtCursor=!0,n.$moveTextAreaToCursor()),s.isMousePressed=!1,s.$onCaptureMouseMove=s.releaseMouse=null,e&&s.onMouseEvent("mouseup",e)},f=function(){s[s.state]&&s[s.state](),s.$mouseMoved=!1};if(i.isOldIE&&e.domEvent.type=="dblclick")return setTimeout(function(){a(e)});s.$onCaptureMouseMove=o,s.releaseMouse=r.capture(this.editor.container,o,a);var l=setInterval(f,20)},this.releaseMouse=null,this.cancelContextMenu=function(){var e=function(t){if(t&&t.domEvent&&t.domEvent.type!="contextmenu")return;this.editor.off("nativecontextmenu",e),t&&t.domEvent&&r.stopEvent(t.domEvent)}.bind(this);setTimeout(e,10),this.editor.on("nativecontextmenu",e)}}).call(l.prototype),f.defineOptions(l.prototype,"mouseHandler",{scrollSpeed:{initialValue:2},dragDelay:{initialValue:i.isMac?150:0},dragEnabled:{initialValue:!0},focusTimout:{initialValue:0},tooltipFollowsMouse:{initialValue:!0}}),t.MouseHandler=l}),define("ace/mouse/fold_handler",["require","exports","module"],function(e,t,n){"use strict";function r(e){e.on("click",function(t){var n=t.getDocumentPosition(),r=e.session,i=r.getFoldAt(n.row,n.column,1);i&&(t.getAccelKey()?r.removeFold(i):r.expandFold(i),t.stop())}),e.on("gutterclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session;i.foldWidgets&&i.foldWidgets[r]&&e.session.onFoldWidgetClick(r,t),e.isFocused()||e.focus(),t.stop()}}),e.on("gutterdblclick",function(t){var n=e.renderer.$gutterLayer.getRegion(t);if(n=="foldWidgets"){var r=t.getDocumentPosition().row,i=e.session,s=i.getParentFoldRangeData(r,!0),o=s.range||s.firstRange;if(o){r=o.start.row;var u=i.getFoldAt(r,i.getLine(r).length,1);u?i.removeFold(u):(i.addFold("...",o),e.renderer.scrollCursorIntoView({row:o.start.row,column:0}))}t.stop()}})}t.FoldHandler=r}),define("ace/keyboard/keybinding",["require","exports","module","ace/lib/keys","ace/lib/event"],function(e,t,n){"use strict";var r=e("../lib/keys"),i=e("../lib/event"),s=function(e){this.$editor=e,this.$data={editor:e},this.$handlers=[],this.setDefaultHandler(e.commands)};(function(){this.setDefaultHandler=function(e){this.removeKeyboardHandler(this.$defaultHandler),this.$defaultHandler=e,this.addKeyboardHandler(e,0)},this.setKeyboardHandler=function(e){var t=this.$handlers;if(t[t.length-1]==e)return;while(t[t.length-1]&&t[t.length-1]!=this.$defaultHandler)this.removeKeyboardHandler(t[t.length-1]);this.addKeyboardHandler(e,1)},this.addKeyboardHandler=function(e,t){if(!e)return;typeof e=="function"&&!e.handleKeyboard&&(e.handleKeyboard=e);var n=this.$handlers.indexOf(e);n!=-1&&this.$handlers.splice(n,1),t==undefined?this.$handlers.push(e):this.$handlers.splice(t,0,e),n==-1&&e.attach&&e.attach(this.$editor)},this.removeKeyboardHandler=function(e){var t=this.$handlers.indexOf(e);return t==-1?!1:(this.$handlers.splice(t,1),e.detach&&e.detach(this.$editor),!0)},this.getKeyboardHandler=function(){return this.$handlers[this.$handlers.length-1]},this.getStatusText=function(){var e=this.$data,t=e.editor;return this.$handlers.map(function(n){return n.getStatusText&&n.getStatusText(t,e)||""}).filter(Boolean).join(" ")},this.$callKeyboardHandlers=function(e,t,n,r){var s,o=!1,u=this.$editor.commands;for(var a=this.$handlers.length;a--;){s=this.$handlers[a].handleKeyboard(this.$data,e,t,n,r);if(!s||!s.command)continue;s.command=="null"?o=!0:o=u.exec(s.command,this.$editor,s.args,r),o&&r&&e!=-1&&s.passEvent!=1&&s.command.passEvent!=1&&i.stopEvent(r);if(o)break}return!o&&e==-1&&(s={command:"insertstring"},o=u.exec("insertstring",this.$editor,t)),o&&this.$editor._signal&&this.$editor._signal("keyboardActivity",s),o},this.onCommandKey=function(e,t,n){var i=r.keyCodeToString(n);this.$callKeyboardHandlers(t,i,n,e)},this.onTextInput=function(e){this.$callKeyboardHandlers(-1,e)}}).call(s.prototype),t.KeyBinding=s}),define("ace/range",["require","exports","module"],function(e,t,n){"use strict";var r=function(e,t){return e.row-t.row||e.column-t.column},i=function(e,t,n,r){this.start={row:e,column:t},this.end={row:n,column:r}};(function(){this.isEqual=function(e){return this.start.row===e.start.row&&this.end.row===e.end.row&&this.start.column===e.start.column&&this.end.column===e.end.column},this.toString=function(){return"Range: ["+this.start.row+"/"+this.start.column+"] -> ["+this.end.row+"/"+this.end.column+"]"},this.contains=function(e,t){return this.compare(e,t)==0},this.compareRange=function(e){var t,n=e.end,r=e.start;return t=this.compare(n.row,n.column),t==1?(t=this.compare(r.row,r.column),t==1?2:t==0?1:0):t==-1?-2:(t=this.compare(r.row,r.column),t==-1?-1:t==1?42:0)},this.comparePoint=function(e){return this.compare(e.row,e.column)},this.containsRange=function(e){return this.comparePoint(e.start)==0&&this.comparePoint(e.end)==0},this.intersects=function(e){var t=this.compareRange(e);return t==-1||t==0||t==1},this.isEnd=function(e,t){return this.end.row==e&&this.end.column==t},this.isStart=function(e,t){return this.start.row==e&&this.start.column==t},this.setStart=function(e,t){typeof e=="object"?(this.start.column=e.column,this.start.row=e.row):(this.start.row=e,this.start.column=t)},this.setEnd=function(e,t){typeof e=="object"?(this.end.column=e.column,this.end.row=e.row):(this.end.row=e,this.end.column=t)},this.inside=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)||this.isStart(e,t)?!1:!0:!1},this.insideStart=function(e,t){return this.compare(e,t)==0?this.isEnd(e,t)?!1:!0:!1},this.insideEnd=function(e,t){return this.compare(e,t)==0?this.isStart(e,t)?!1:!0:!1},this.compare=function(e,t){return!this.isMultiLine()&&e===this.start.row?tthis.end.column?1:0:ethis.end.row?1:this.start.row===e?t>=this.start.column?0:-1:this.end.row===e?t<=this.end.column?0:1:0},this.compareStart=function(e,t){return this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.compareEnd=function(e,t){return this.end.row==e&&this.end.column==t?1:this.compare(e,t)},this.compareInside=function(e,t){return this.end.row==e&&this.end.column==t?1:this.start.row==e&&this.start.column==t?-1:this.compare(e,t)},this.clipRows=function(e,t){if(this.end.row>t)var n={row:t+1,column:0};else if(this.end.rowt)var r={row:t+1,column:0};else if(this.start.rowt.row||e.row==t.row&&e.column>t.column},this.getRange=function(){var e=this.anchor,t=this.lead;return this.isEmpty()?o.fromPoints(t,t):this.isBackwards()?o.fromPoints(t,e):o.fromPoints(e,t)},this.clearSelection=function(){this.$isEmpty||(this.$isEmpty=!0,this._emit("changeSelection"))},this.selectAll=function(){var e=this.doc.getLength()-1;this.setSelectionAnchor(0,0),this.moveCursorTo(e,this.doc.getLine(e).length)},this.setRange=this.setSelectionRange=function(e,t){t?(this.setSelectionAnchor(e.end.row,e.end.column),this.selectTo(e.start.row,e.start.column)):(this.setSelectionAnchor(e.start.row,e.start.column),this.selectTo(e.end.row,e.end.column)),this.getRange().isEmpty()&&(this.$isEmpty=!0),this.$desiredColumn=null},this.$moveSelection=function(e){var t=this.lead;this.$isEmpty&&this.setSelectionAnchor(t.row,t.column),e.call(this)},this.selectTo=function(e,t){this.$moveSelection(function(){this.moveCursorTo(e,t)})},this.selectToPosition=function(e){this.$moveSelection(function(){this.moveCursorToPosition(e)})},this.moveTo=function(e,t){this.clearSelection(),this.moveCursorTo(e,t)},this.moveToPosition=function(e){this.clearSelection(),this.moveCursorToPosition(e)},this.selectUp=function(){this.$moveSelection(this.moveCursorUp)},this.selectDown=function(){this.$moveSelection(this.moveCursorDown)},this.selectRight=function(){this.$moveSelection(this.moveCursorRight)},this.selectLeft=function(){this.$moveSelection(this.moveCursorLeft)},this.selectLineStart=function(){this.$moveSelection(this.moveCursorLineStart)},this.selectLineEnd=function(){this.$moveSelection(this.moveCursorLineEnd)},this.selectFileEnd=function(){this.$moveSelection(this.moveCursorFileEnd)},this.selectFileStart=function(){this.$moveSelection(this.moveCursorFileStart)},this.selectWordRight=function(){this.$moveSelection(this.moveCursorWordRight)},this.selectWordLeft=function(){this.$moveSelection(this.moveCursorWordLeft)},this.getWordRange=function(e,t){if(typeof t=="undefined"){var n=e||this.lead;e=n.row,t=n.column}return this.session.getWordRange(e,t)},this.selectWord=function(){this.setSelectionRange(this.getWordRange())},this.selectAWord=function(){var e=this.getCursor(),t=this.session.getAWordRange(e.row,e.column);this.setSelectionRange(t)},this.getLineRange=function(e,t){var n=typeof e=="number"?e:this.lead.row,r,i=this.session.getFoldLine(n);return i?(n=i.start.row,r=i.end.row):r=n,t===!0?new o(n,0,r,this.session.getLine(r).length):new o(n,0,r+1,0)},this.selectLine=function(){this.setSelectionRange(this.getLineRange())},this.moveCursorUp=function(){this.moveCursorBy(-1,0)},this.moveCursorDown=function(){this.moveCursorBy(1,0)},this.moveCursorLeft=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,-1))this.moveCursorTo(t.start.row,t.start.column);else if(e.column===0)e.row>0&&this.moveCursorTo(e.row-1,this.doc.getLine(e.row-1).length);else{var n=this.session.getTabSize();this.session.isTabStop(e)&&this.doc.getLine(e.row).slice(e.column-n,e.column).split(" ").length-1==n?this.moveCursorBy(0,-n):this.moveCursorBy(0,-1)}},this.moveCursorRight=function(){var e=this.lead.getPosition(),t;if(t=this.session.getFoldAt(e.row,e.column,1))this.moveCursorTo(t.end.row,t.end.column);else if(this.lead.column==this.doc.getLine(this.lead.row).length)this.lead.row0&&(t.column=r)}}this.moveCursorTo(t.row,t.column)},this.moveCursorFileEnd=function(){var e=this.doc.getLength()-1,t=this.doc.getLine(e).length;this.moveCursorTo(e,t)},this.moveCursorFileStart=function(){this.moveCursorTo(0,0)},this.moveCursorLongWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i;this.session.nonTokenRe.lastIndex=0,this.session.tokenRe.lastIndex=0;var s=this.session.getFoldAt(e,t,1);if(s){this.moveCursorTo(s.end.row,s.end.column);return}if(i=this.session.nonTokenRe.exec(r))t+=this.session.nonTokenRe.lastIndex,this.session.nonTokenRe.lastIndex=0,r=n.substring(t);if(t>=n.length){this.moveCursorTo(e,n.length),this.moveCursorRight(),e0&&this.moveCursorWordLeft();return}if(o=this.session.tokenRe.exec(s))t-=this.session.tokenRe.lastIndex,this.session.tokenRe.lastIndex=0;this.moveCursorTo(e,t)},this.$shortWordEndIndex=function(e){var t,n=0,r,i=/\s/,s=this.session.tokenRe;s.lastIndex=0;if(t=this.session.tokenRe.exec(e))n=this.session.tokenRe.lastIndex;else{while((r=e[n])&&i.test(r))n++;if(n<1){s.lastIndex=0;while((r=e[n])&&!s.test(r)){s.lastIndex=0,n++;if(i.test(r)){if(n>2){n--;break}while((r=e[n])&&i.test(r))n++;if(n>2)break}}}}return s.lastIndex=0,n},this.moveCursorShortWordRight=function(){var e=this.lead.row,t=this.lead.column,n=this.doc.getLine(e),r=n.substring(t),i=this.session.getFoldAt(e,t,1);if(i)return this.moveCursorTo(i.end.row,i.end.column);if(t==n.length){var s=this.doc.getLength();do e++,r=this.doc.getLine(e);while(e0&&/^\s*$/.test(r));t=r.length,/\s+$/.test(r)||(r="")}var s=i.stringReverse(r),o=this.$shortWordEndIndex(s);return this.moveCursorTo(e,t-o)},this.moveCursorWordRight=function(){this.session.$selectLongWords?this.moveCursorLongWordRight():this.moveCursorShortWordRight()},this.moveCursorWordLeft=function(){this.session.$selectLongWords?this.moveCursorLongWordLeft():this.moveCursorShortWordLeft()},this.moveCursorBy=function(e,t){var n=this.session.documentToScreenPosition(this.lead.row,this.lead.column);t===0&&(this.$desiredColumn?n.column=this.$desiredColumn:this.$desiredColumn=n.column);var r=this.session.screenToDocumentPosition(n.row+e,n.column);e!==0&&t===0&&r.row===this.lead.row&&r.column===this.lead.column&&this.session.lineWidgets&&this.session.lineWidgets[r.row]&&(r.row>0||e>0)&&r.row++,this.moveCursorTo(r.row,r.column+t,t===0)},this.moveCursorToPosition=function(e){this.moveCursorTo(e.row,e.column)},this.moveCursorTo=function(e,t,n){var r=this.session.getFoldAt(e,t,1);r&&(e=r.start.row,t=r.start.column),this.$keepDesiredColumnOnChange=!0,this.lead.setPosition(e,t),this.$keepDesiredColumnOnChange=!1,n||(this.$desiredColumn=null)},this.moveCursorToScreen=function(e,t,n){var r=this.session.screenToDocumentPosition(e,t);this.moveCursorTo(r.row,r.column,n)},this.detach=function(){this.lead.detach(),this.anchor.detach(),this.session=this.doc=null},this.fromOrientedRange=function(e){this.setSelectionRange(e,e.cursor==e.start),this.$desiredColumn=e.desiredColumn||this.$desiredColumn},this.toOrientedRange=function(e){var t=this.getRange();return e?(e.start.column=t.start.column,e.start.row=t.start.row,e.end.column=t.end.column,e.end.row=t.end.row):e=t,e.cursor=this.isBackwards()?e.start:e.end,e.desiredColumn=this.$desiredColumn,e},this.getRangeOfMovements=function(e){var t=this.getCursor();try{e(this);var n=this.getCursor();return o.fromPoints(t,n)}catch(r){return o.fromPoints(t,t)}finally{this.moveCursorToPosition(t)}},this.toJSON=function(){if(this.rangeCount)var e=this.ranges.map(function(e){var t=e.clone();return t.isBackwards=e.cursor==e.start,t});else{var e=this.getRange();e.isBackwards=this.isBackwards()}return e},this.fromJSON=function(e){if(e.start==undefined){if(this.rangeList){this.toSingleRange(e[0]);for(var t=e.length;t--;){var n=o.fromPoints(e[t].start,e[t].end);e[t].isBackwards&&(n.cursor=n.start),this.addRange(n,!0)}return}e=e[0]}this.rangeList&&this.toSingleRange(e),this.setSelectionRange(e,e.isBackwards)},this.isEqual=function(e){if((e.length||this.rangeCount)&&e.length!=this.rangeCount)return!1;if(!e.length||!this.ranges)return this.getRange().isEqual(e);for(var t=this.ranges.length;t--;)if(!this.ranges[t].isEqual(e[t]))return!1;return!0}}).call(u.prototype),t.Selection=u}),define("ace/tokenizer",["require","exports","module","ace/config"],function(e,t,n){"use strict";var r=e("./config"),i=2e3,s=function(e){this.states=e,this.regExps={},this.matchMappings={};for(var t in this.states){var n=this.states[t],r=[],i=0,s=this.matchMappings[t]={defaultToken:"text"},o="g",u=[];for(var a=0;a1?f.onMatch=this.$applyToken:f.onMatch=f.token),c>1&&(/\\\d/.test(f.regex)?l=f.regex.replace(/\\([0-9]+)/g,function(e,t){return"\\"+(parseInt(t,10)+i+1)}):(c=1,l=this.removeCapturingGroups(f.regex)),!f.splitRegex&&typeof f.token!="string"&&u.push(f)),s[i]=a,i+=c,r.push(l),f.onMatch||(f.onMatch=null)}r.length||(s[0]=0,r.push("$")),u.forEach(function(e){e.splitRegex=this.createSplitterRegexp(e.regex,o)},this),this.regExps[t]=new RegExp("("+r.join(")|(")+")|($)",o)}};(function(){this.$setMaxTokenCount=function(e){i=e|0},this.$applyToken=function(e){var t=this.splitRegex.exec(e).slice(1),n=this.token.apply(this,t);if(typeof n=="string")return[{type:n,value:e}];var r=[];for(var i=0,s=n.length;il){var g=e.substring(l,m-v.length);h.type==p?h.value+=g:(h.type&&f.push(h),h={type:p,value:g})}for(var y=0;yi){c>2*e.length&&this.reportError("infinite loop with in ace tokenizer",{startState:t,line:e});while(l1&&n[0]!==r&&n.unshift("#tmp",r),{tokens:f,state:n.length?n:r}},this.reportError=r.reportError}).call(s.prototype),t.Tokenizer=s}),define("ace/mode/text_highlight_rules",["require","exports","module","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../lib/lang"),i=function(){this.$rules={start:[{token:"empty_line",regex:"^$"},{defaultToken:"text"}]}};(function(){this.addRules=function(e,t){if(!t){for(var n in e)this.$rules[n]=e[n];return}for(var n in e){var r=e[n];for(var i=0;i=this.$rowTokens.length){this.$row+=1,e||(e=this.$session.getLength());if(this.$row>=e)return this.$row=e-1,null;this.$rowTokens=this.$session.getTokens(this.$row),this.$tokenIndex=0}return this.$rowTokens[this.$tokenIndex]},this.getCurrentToken=function(){return this.$rowTokens[this.$tokenIndex]},this.getCurrentTokenRow=function(){return this.$row},this.getCurrentTokenColumn=function(){var e=this.$rowTokens,t=this.$tokenIndex,n=e[t].start;if(n!==undefined)return n;n=0;while(t>0)t-=1,n+=e[t].value.length;return n},this.getCurrentTokenPosition=function(){return{row:this.$row,column:this.getCurrentTokenColumn()}}}).call(r.prototype),t.TokenIterator=r}),define("ace/mode/behaviour/cstyle",["require","exports","module","ace/lib/oop","ace/mode/behaviour","ace/token_iterator","ace/lib/lang"],function(e,t,n){"use strict";var r=e("../../lib/oop"),i=e("../behaviour").Behaviour,s=e("../../token_iterator").TokenIterator,o=e("../../lib/lang"),u=["text","paren.rparen","punctuation.operator"],a=["text","paren.rparen","punctuation.operator","comment"],f,l={},c=function(e){var t=-1;e.multiSelect&&(t=e.selection.index,l.rangeCount!=e.multiSelect.rangeCount&&(l={rangeCount:e.multiSelect.rangeCount}));if(l[t])return f=l[t];f=l[t]={autoInsertedBrackets:0,autoInsertedRow:-1,autoInsertedLineEnd:"",maybeInsertedBrackets:0,maybeInsertedRow:-1,maybeInsertedLineStart:"",maybeInsertedLineEnd:""}},h=function(e,t,n,r){var i=e.end.row-e.start.row;return{text:n+t+r,selection:[0,e.start.column+1,i,e.end.column+(i?0:1)]}},p=function(){this.add("braces","insertion",function(e,t,n,r,i){var s=n.getCursorPosition(),u=r.doc.getLine(s.row);if(i=="{"){c(n);var a=n.getSelectionRange(),l=r.doc.getTextRange(a);if(l!==""&&l!=="{"&&n.getWrapBehavioursEnabled())return h(a,l,"{","}");if(p.isSaneInsertion(n,r))return/[\]\}\)]/.test(u[s.column])||n.inMultiSelectMode?(p.recordAutoInsert(n,r,"}"),{text:"{}",selection:[1,1]}):(p.recordMaybeInsert(n,r,"{"),{text:"{",selection:[1,1]})}else if(i=="}"){c(n);var d=u.substring(s.column,s.column+1);if(d=="}"){var v=r.$findOpeningBracket("}",{column:s.column+1,row:s.row});if(v!==null&&p.isAutoInsertedClosing(s,u,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}else{if(i=="\n"||i=="\r\n"){c(n);var m="";p.isMaybeInsertedClosing(s,u)&&(m=o.stringRepeat("}",f.maybeInsertedBrackets),p.clearMaybeInsertedClosing());var d=u.substring(s.column,s.column+1);if(d==="}"){var g=r.findMatchingBracket({row:s.row,column:s.column+1},"}");if(!g)return null;var y=this.$getIndent(r.getLine(g.row))}else{if(!m){p.clearMaybeInsertedClosing();return}var y=this.$getIndent(u)}var b=y+r.getTabString();return{text:"\n"+b+"\n"+y+m,selection:[1,b.length,1,b.length]}}p.clearMaybeInsertedClosing()}}),this.add("braces","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="{"){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.end.column,i.end.column+1);if(u=="}")return i.end.column++,i;f.maybeInsertedBrackets--}}),this.add("parens","insertion",function(e,t,n,r,i){if(i=="("){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"(",")");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,")"),{text:"()",selection:[1,1]}}else if(i==")"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f==")"){var l=r.$findOpeningBracket(")",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("parens","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="("){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==")")return i.end.column++,i}}),this.add("brackets","insertion",function(e,t,n,r,i){if(i=="["){c(n);var s=n.getSelectionRange(),o=r.doc.getTextRange(s);if(o!==""&&n.getWrapBehavioursEnabled())return h(s,o,"[","]");if(p.isSaneInsertion(n,r))return p.recordAutoInsert(n,r,"]"),{text:"[]",selection:[1,1]}}else if(i=="]"){c(n);var u=n.getCursorPosition(),a=r.doc.getLine(u.row),f=a.substring(u.column,u.column+1);if(f=="]"){var l=r.$findOpeningBracket("]",{column:u.column+1,row:u.row});if(l!==null&&p.isAutoInsertedClosing(u,a,i))return p.popAutoInsertedClosing(),{text:"",selection:[1,1]}}}}),this.add("brackets","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&s=="["){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u=="]")return i.end.column++,i}}),this.add("string_dquotes","insertion",function(e,t,n,r,i){if(i=='"'||i=="'"){if(this.lineCommentStart&&this.lineCommentStart.indexOf(i)!=-1)return;c(n);var s=i,o=n.getSelectionRange(),u=r.doc.getTextRange(o);if(u!==""&&u!=="'"&&u!='"'&&n.getWrapBehavioursEnabled())return h(o,u,s,s);if(!u){var a=n.getCursorPosition(),f=r.doc.getLine(a.row),l=f.substring(a.column-1,a.column),p=f.substring(a.column,a.column+1),d=r.getTokenAt(a.row,a.column),v=r.getTokenAt(a.row,a.column+1);if(l=="\\"&&d&&/escape/.test(d.type))return null;var m=d&&/string|escape/.test(d.type),g=!v||/string|escape/.test(v.type),y;if(p==s)y=m!==g,y&&/string\.end/.test(v.type)&&(y=!1);else{if(m&&!g)return null;if(m&&g)return null;var b=r.$mode.tokenRe;b.lastIndex=0;var w=b.test(l);b.lastIndex=0;var E=b.test(l);if(w||E)return null;if(p&&!/[\s;,.})\]\\]/.test(p))return null;y=!0}return{text:y?s+s:"",selection:[1,1]}}}}),this.add("string_dquotes","deletion",function(e,t,n,r,i){var s=r.doc.getTextRange(i);if(!i.isMultiLine()&&(s=='"'||s=="'")){c(n);var o=r.doc.getLine(i.start.row),u=o.substring(i.start.column+1,i.start.column+2);if(u==s)return i.end.column++,i}})};p.isSaneInsertion=function(e,t){var n=e.getCursorPosition(),r=new s(t,n.row,n.column);if(!this.$matchTokenType(r.getCurrentToken()||"text",u)){var i=new s(t,n.row,n.column+1);if(!this.$matchTokenType(i.getCurrentToken()||"text",u))return!1}return r.stepForward(),r.getCurrentTokenRow()!==n.row||this.$matchTokenType(r.getCurrentToken()||"text",a)},p.$matchTokenType=function(e,t){return t.indexOf(e.type||e)>-1},p.recordAutoInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isAutoInsertedClosing(r,i,f.autoInsertedLineEnd[0])||(f.autoInsertedBrackets=0),f.autoInsertedRow=r.row,f.autoInsertedLineEnd=n+i.substr(r.column),f.autoInsertedBrackets++},p.recordMaybeInsert=function(e,t,n){var r=e.getCursorPosition(),i=t.doc.getLine(r.row);this.isMaybeInsertedClosing(r,i)||(f.maybeInsertedBrackets=0),f.maybeInsertedRow=r.row,f.maybeInsertedLineStart=i.substr(0,r.column)+n,f.maybeInsertedLineEnd=i.substr(r.column),f.maybeInsertedBrackets++},p.isAutoInsertedClosing=function(e,t,n){return f.autoInsertedBrackets>0&&e.row===f.autoInsertedRow&&n===f.autoInsertedLineEnd[0]&&t.substr(e.column)===f.autoInsertedLineEnd},p.isMaybeInsertedClosing=function(e,t){return f.maybeInsertedBrackets>0&&e.row===f.maybeInsertedRow&&t.substr(e.column)===f.maybeInsertedLineEnd&&t.substr(0,e.column)==f.maybeInsertedLineStart},p.popAutoInsertedClosing=function(){f.autoInsertedLineEnd=f.autoInsertedLineEnd.substr(1),f.autoInsertedBrackets--},p.clearMaybeInsertedClosing=function(){f&&(f.maybeInsertedBrackets=0,f.maybeInsertedRow=-1)},r.inherits(p,i),t.CstyleBehaviour=p}),define("ace/unicode",["require","exports","module"],function(e,t,n){"use strict";function r(e){var n=/\w{4}/g;for(var r in e)t.packages[r]=e[r].replace(n,"\\u$&")}t.packages={},r({L:"0041-005A0061-007A00AA00B500BA00C0-00D600D8-00F600F8-02C102C6-02D102E0-02E402EC02EE0370-037403760377037A-037D03860388-038A038C038E-03A103A3-03F503F7-0481048A-05250531-055605590561-058705D0-05EA05F0-05F20621-064A066E066F0671-06D306D506E506E606EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA07F407F507FA0800-0815081A082408280904-0939093D09500958-0961097109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E460E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EC60EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10A0-10C510D0-10FA10FC1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317D717DC1820-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541AA71B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C7D1CE9-1CEC1CEE-1CF11D00-1DBF1E00-1F151F18-1F1D1F20-1F451F48-1F4D1F50-1F571F591F5B1F5D1F5F-1F7D1F80-1FB41FB6-1FBC1FBE1FC2-1FC41FC6-1FCC1FD0-1FD31FD6-1FDB1FE0-1FEC1FF2-1FF41FF6-1FFC2071207F2090-209421022107210A-211321152119-211D212421262128212A-212D212F-2139213C-213F2145-2149214E218321842C00-2C2E2C30-2C5E2C60-2CE42CEB-2CEE2D00-2D252D30-2D652D6F2D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE2E2F300530063031-3035303B303C3041-3096309D-309F30A1-30FA30FC-30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A48CA4D0-A4FDA500-A60CA610-A61FA62AA62BA640-A65FA662-A66EA67F-A697A6A0-A6E5A717-A71FA722-A788A78BA78CA7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2A9CFAA00-AA28AA40-AA42AA44-AA4BAA60-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADB-AADDABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB00-FB06FB13-FB17FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF21-FF3AFF41-FF5AFF66-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",Ll:"0061-007A00AA00B500BA00DF-00F600F8-00FF01010103010501070109010B010D010F01110113011501170119011B011D011F01210123012501270129012B012D012F01310133013501370138013A013C013E014001420144014601480149014B014D014F01510153015501570159015B015D015F01610163016501670169016B016D016F0171017301750177017A017C017E-0180018301850188018C018D019201950199-019B019E01A101A301A501A801AA01AB01AD01B001B401B601B901BA01BD-01BF01C601C901CC01CE01D001D201D401D601D801DA01DC01DD01DF01E101E301E501E701E901EB01ED01EF01F001F301F501F901FB01FD01FF02010203020502070209020B020D020F02110213021502170219021B021D021F02210223022502270229022B022D022F02310233-0239023C023F0240024202470249024B024D024F-02930295-02AF037103730377037B-037D039003AC-03CE03D003D103D5-03D703D903DB03DD03DF03E103E303E503E703E903EB03ED03EF-03F303F503F803FB03FC0430-045F04610463046504670469046B046D046F04710473047504770479047B047D047F0481048B048D048F04910493049504970499049B049D049F04A104A304A504A704A904AB04AD04AF04B104B304B504B704B904BB04BD04BF04C204C404C604C804CA04CC04CE04CF04D104D304D504D704D904DB04DD04DF04E104E304E504E704E904EB04ED04EF04F104F304F504F704F904FB04FD04FF05010503050505070509050B050D050F05110513051505170519051B051D051F0521052305250561-05871D00-1D2B1D62-1D771D79-1D9A1E011E031E051E071E091E0B1E0D1E0F1E111E131E151E171E191E1B1E1D1E1F1E211E231E251E271E291E2B1E2D1E2F1E311E331E351E371E391E3B1E3D1E3F1E411E431E451E471E491E4B1E4D1E4F1E511E531E551E571E591E5B1E5D1E5F1E611E631E651E671E691E6B1E6D1E6F1E711E731E751E771E791E7B1E7D1E7F1E811E831E851E871E891E8B1E8D1E8F1E911E931E95-1E9D1E9F1EA11EA31EA51EA71EA91EAB1EAD1EAF1EB11EB31EB51EB71EB91EBB1EBD1EBF1EC11EC31EC51EC71EC91ECB1ECD1ECF1ED11ED31ED51ED71ED91EDB1EDD1EDF1EE11EE31EE51EE71EE91EEB1EED1EEF1EF11EF31EF51EF71EF91EFB1EFD1EFF-1F071F10-1F151F20-1F271F30-1F371F40-1F451F50-1F571F60-1F671F70-1F7D1F80-1F871F90-1F971FA0-1FA71FB0-1FB41FB61FB71FBE1FC2-1FC41FC61FC71FD0-1FD31FD61FD71FE0-1FE71FF2-1FF41FF61FF7210A210E210F2113212F21342139213C213D2146-2149214E21842C30-2C5E2C612C652C662C682C6A2C6C2C712C732C742C76-2C7C2C812C832C852C872C892C8B2C8D2C8F2C912C932C952C972C992C9B2C9D2C9F2CA12CA32CA52CA72CA92CAB2CAD2CAF2CB12CB32CB52CB72CB92CBB2CBD2CBF2CC12CC32CC52CC72CC92CCB2CCD2CCF2CD12CD32CD52CD72CD92CDB2CDD2CDF2CE12CE32CE42CEC2CEE2D00-2D25A641A643A645A647A649A64BA64DA64FA651A653A655A657A659A65BA65DA65FA663A665A667A669A66BA66DA681A683A685A687A689A68BA68DA68FA691A693A695A697A723A725A727A729A72BA72DA72F-A731A733A735A737A739A73BA73DA73FA741A743A745A747A749A74BA74DA74FA751A753A755A757A759A75BA75DA75FA761A763A765A767A769A76BA76DA76FA771-A778A77AA77CA77FA781A783A785A787A78CFB00-FB06FB13-FB17FF41-FF5A",Lu:"0041-005A00C0-00D600D8-00DE01000102010401060108010A010C010E01100112011401160118011A011C011E01200122012401260128012A012C012E01300132013401360139013B013D013F0141014301450147014A014C014E01500152015401560158015A015C015E01600162016401660168016A016C016E017001720174017601780179017B017D018101820184018601870189-018B018E-0191019301940196-0198019C019D019F01A001A201A401A601A701A901AC01AE01AF01B1-01B301B501B701B801BC01C401C701CA01CD01CF01D101D301D501D701D901DB01DE01E001E201E401E601E801EA01EC01EE01F101F401F6-01F801FA01FC01FE02000202020402060208020A020C020E02100212021402160218021A021C021E02200222022402260228022A022C022E02300232023A023B023D023E02410243-02460248024A024C024E03700372037603860388-038A038C038E038F0391-03A103A3-03AB03CF03D2-03D403D803DA03DC03DE03E003E203E403E603E803EA03EC03EE03F403F703F903FA03FD-042F04600462046404660468046A046C046E04700472047404760478047A047C047E0480048A048C048E04900492049404960498049A049C049E04A004A204A404A604A804AA04AC04AE04B004B204B404B604B804BA04BC04BE04C004C104C304C504C704C904CB04CD04D004D204D404D604D804DA04DC04DE04E004E204E404E604E804EA04EC04EE04F004F204F404F604F804FA04FC04FE05000502050405060508050A050C050E05100512051405160518051A051C051E0520052205240531-055610A0-10C51E001E021E041E061E081E0A1E0C1E0E1E101E121E141E161E181E1A1E1C1E1E1E201E221E241E261E281E2A1E2C1E2E1E301E321E341E361E381E3A1E3C1E3E1E401E421E441E461E481E4A1E4C1E4E1E501E521E541E561E581E5A1E5C1E5E1E601E621E641E661E681E6A1E6C1E6E1E701E721E741E761E781E7A1E7C1E7E1E801E821E841E861E881E8A1E8C1E8E1E901E921E941E9E1EA01EA21EA41EA61EA81EAA1EAC1EAE1EB01EB21EB41EB61EB81EBA1EBC1EBE1EC01EC21EC41EC61EC81ECA1ECC1ECE1ED01ED21ED41ED61ED81EDA1EDC1EDE1EE01EE21EE41EE61EE81EEA1EEC1EEE1EF01EF21EF41EF61EF81EFA1EFC1EFE1F08-1F0F1F18-1F1D1F28-1F2F1F38-1F3F1F48-1F4D1F591F5B1F5D1F5F1F68-1F6F1FB8-1FBB1FC8-1FCB1FD8-1FDB1FE8-1FEC1FF8-1FFB21022107210B-210D2110-211221152119-211D212421262128212A-212D2130-2133213E213F214521832C00-2C2E2C602C62-2C642C672C692C6B2C6D-2C702C722C752C7E-2C802C822C842C862C882C8A2C8C2C8E2C902C922C942C962C982C9A2C9C2C9E2CA02CA22CA42CA62CA82CAA2CAC2CAE2CB02CB22CB42CB62CB82CBA2CBC2CBE2CC02CC22CC42CC62CC82CCA2CCC2CCE2CD02CD22CD42CD62CD82CDA2CDC2CDE2CE02CE22CEB2CEDA640A642A644A646A648A64AA64CA64EA650A652A654A656A658A65AA65CA65EA662A664A666A668A66AA66CA680A682A684A686A688A68AA68CA68EA690A692A694A696A722A724A726A728A72AA72CA72EA732A734A736A738A73AA73CA73EA740A742A744A746A748A74AA74CA74EA750A752A754A756A758A75AA75CA75EA760A762A764A766A768A76AA76CA76EA779A77BA77DA77EA780A782A784A786A78BFF21-FF3A",Lt:"01C501C801CB01F21F88-1F8F1F98-1F9F1FA8-1FAF1FBC1FCC1FFC",Lm:"02B0-02C102C6-02D102E0-02E402EC02EE0374037A0559064006E506E607F407F507FA081A0824082809710E460EC610FC17D718431AA71C78-1C7D1D2C-1D611D781D9B-1DBF2071207F2090-20942C7D2D6F2E2F30053031-3035303B309D309E30FC-30FEA015A4F8-A4FDA60CA67FA717-A71FA770A788A9CFAA70AADDFF70FF9EFF9F",Lo:"01BB01C0-01C3029405D0-05EA05F0-05F20621-063F0641-064A066E066F0671-06D306D506EE06EF06FA-06FC06FF07100712-072F074D-07A507B107CA-07EA0800-08150904-0939093D09500958-096109720979-097F0985-098C098F09900993-09A809AA-09B009B209B6-09B909BD09CE09DC09DD09DF-09E109F009F10A05-0A0A0A0F0A100A13-0A280A2A-0A300A320A330A350A360A380A390A59-0A5C0A5E0A72-0A740A85-0A8D0A8F-0A910A93-0AA80AAA-0AB00AB20AB30AB5-0AB90ABD0AD00AE00AE10B05-0B0C0B0F0B100B13-0B280B2A-0B300B320B330B35-0B390B3D0B5C0B5D0B5F-0B610B710B830B85-0B8A0B8E-0B900B92-0B950B990B9A0B9C0B9E0B9F0BA30BA40BA8-0BAA0BAE-0BB90BD00C05-0C0C0C0E-0C100C12-0C280C2A-0C330C35-0C390C3D0C580C590C600C610C85-0C8C0C8E-0C900C92-0CA80CAA-0CB30CB5-0CB90CBD0CDE0CE00CE10D05-0D0C0D0E-0D100D12-0D280D2A-0D390D3D0D600D610D7A-0D7F0D85-0D960D9A-0DB10DB3-0DBB0DBD0DC0-0DC60E01-0E300E320E330E40-0E450E810E820E840E870E880E8A0E8D0E94-0E970E99-0E9F0EA1-0EA30EA50EA70EAA0EAB0EAD-0EB00EB20EB30EBD0EC0-0EC40EDC0EDD0F000F40-0F470F49-0F6C0F88-0F8B1000-102A103F1050-1055105A-105D106110651066106E-10701075-1081108E10D0-10FA1100-1248124A-124D1250-12561258125A-125D1260-1288128A-128D1290-12B012B2-12B512B8-12BE12C012C2-12C512C8-12D612D8-13101312-13151318-135A1380-138F13A0-13F41401-166C166F-167F1681-169A16A0-16EA1700-170C170E-17111720-17311740-17511760-176C176E-17701780-17B317DC1820-18421844-18771880-18A818AA18B0-18F51900-191C1950-196D1970-19741980-19AB19C1-19C71A00-1A161A20-1A541B05-1B331B45-1B4B1B83-1BA01BAE1BAF1C00-1C231C4D-1C4F1C5A-1C771CE9-1CEC1CEE-1CF12135-21382D30-2D652D80-2D962DA0-2DA62DA8-2DAE2DB0-2DB62DB8-2DBE2DC0-2DC62DC8-2DCE2DD0-2DD62DD8-2DDE3006303C3041-3096309F30A1-30FA30FF3105-312D3131-318E31A0-31B731F0-31FF3400-4DB54E00-9FCBA000-A014A016-A48CA4D0-A4F7A500-A60BA610-A61FA62AA62BA66EA6A0-A6E5A7FB-A801A803-A805A807-A80AA80C-A822A840-A873A882-A8B3A8F2-A8F7A8FBA90A-A925A930-A946A960-A97CA984-A9B2AA00-AA28AA40-AA42AA44-AA4BAA60-AA6FAA71-AA76AA7AAA80-AAAFAAB1AAB5AAB6AAB9-AABDAAC0AAC2AADBAADCABC0-ABE2AC00-D7A3D7B0-D7C6D7CB-D7FBF900-FA2DFA30-FA6DFA70-FAD9FB1DFB1F-FB28FB2A-FB36FB38-FB3CFB3EFB40FB41FB43FB44FB46-FBB1FBD3-FD3DFD50-FD8FFD92-FDC7FDF0-FDFBFE70-FE74FE76-FEFCFF66-FF6FFF71-FF9DFFA0-FFBEFFC2-FFC7FFCA-FFCFFFD2-FFD7FFDA-FFDC",M:"0300-036F0483-04890591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DE-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0903093C093E-094E0951-0955096209630981-098309BC09BE-09C409C709C809CB-09CD09D709E209E30A01-0A030A3C0A3E-0A420A470A480A4B-0A4D0A510A700A710A750A81-0A830ABC0ABE-0AC50AC7-0AC90ACB-0ACD0AE20AE30B01-0B030B3C0B3E-0B440B470B480B4B-0B4D0B560B570B620B630B820BBE-0BC20BC6-0BC80BCA-0BCD0BD70C01-0C030C3E-0C440C46-0C480C4A-0C4D0C550C560C620C630C820C830CBC0CBE-0CC40CC6-0CC80CCA-0CCD0CD50CD60CE20CE30D020D030D3E-0D440D46-0D480D4A-0D4D0D570D620D630D820D830DCA0DCF-0DD40DD60DD8-0DDF0DF20DF30E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F3E0F3F0F71-0F840F860F870F90-0F970F99-0FBC0FC6102B-103E1056-1059105E-10601062-10641067-106D1071-10741082-108D108F109A-109D135F1712-17141732-1734175217531772177317B6-17D317DD180B-180D18A91920-192B1930-193B19B0-19C019C819C91A17-1A1B1A55-1A5E1A60-1A7C1A7F1B00-1B041B34-1B441B6B-1B731B80-1B821BA1-1BAA1C24-1C371CD0-1CD21CD4-1CE81CED1CF21DC0-1DE61DFD-1DFF20D0-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66F-A672A67CA67DA6F0A6F1A802A806A80BA823-A827A880A881A8B4-A8C4A8E0-A8F1A926-A92DA947-A953A980-A983A9B3-A9C0AA29-AA36AA43AA4CAA4DAA7BAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE3-ABEAABECABEDFB1EFE00-FE0FFE20-FE26",Mn:"0300-036F0483-04870591-05BD05BF05C105C205C405C505C70610-061A064B-065E067006D6-06DC06DF-06E406E706E806EA-06ED07110730-074A07A6-07B007EB-07F30816-0819081B-08230825-08270829-082D0900-0902093C0941-0948094D0951-095509620963098109BC09C1-09C409CD09E209E30A010A020A3C0A410A420A470A480A4B-0A4D0A510A700A710A750A810A820ABC0AC1-0AC50AC70AC80ACD0AE20AE30B010B3C0B3F0B41-0B440B4D0B560B620B630B820BC00BCD0C3E-0C400C46-0C480C4A-0C4D0C550C560C620C630CBC0CBF0CC60CCC0CCD0CE20CE30D41-0D440D4D0D620D630DCA0DD2-0DD40DD60E310E34-0E3A0E47-0E4E0EB10EB4-0EB90EBB0EBC0EC8-0ECD0F180F190F350F370F390F71-0F7E0F80-0F840F860F870F90-0F970F99-0FBC0FC6102D-10301032-10371039103A103D103E10581059105E-10601071-1074108210851086108D109D135F1712-17141732-1734175217531772177317B7-17BD17C617C9-17D317DD180B-180D18A91920-19221927192819321939-193B1A171A181A561A58-1A5E1A601A621A65-1A6C1A73-1A7C1A7F1B00-1B031B341B36-1B3A1B3C1B421B6B-1B731B801B811BA2-1BA51BA81BA91C2C-1C331C361C371CD0-1CD21CD4-1CE01CE2-1CE81CED1DC0-1DE61DFD-1DFF20D0-20DC20E120E5-20F02CEF-2CF12DE0-2DFF302A-302F3099309AA66FA67CA67DA6F0A6F1A802A806A80BA825A826A8C4A8E0-A8F1A926-A92DA947-A951A980-A982A9B3A9B6-A9B9A9BCAA29-AA2EAA31AA32AA35AA36AA43AA4CAAB0AAB2-AAB4AAB7AAB8AABEAABFAAC1ABE5ABE8ABEDFB1EFE00-FE0FFE20-FE26",Mc:"0903093E-09400949-094C094E0982098309BE-09C009C709C809CB09CC09D70A030A3E-0A400A830ABE-0AC00AC90ACB0ACC0B020B030B3E0B400B470B480B4B0B4C0B570BBE0BBF0BC10BC20BC6-0BC80BCA-0BCC0BD70C01-0C030C41-0C440C820C830CBE0CC0-0CC40CC70CC80CCA0CCB0CD50CD60D020D030D3E-0D400D46-0D480D4A-0D4C0D570D820D830DCF-0DD10DD8-0DDF0DF20DF30F3E0F3F0F7F102B102C10311038103B103C105610571062-10641067-106D108310841087-108C108F109A-109C17B617BE-17C517C717C81923-19261929-192B193019311933-193819B0-19C019C819C91A19-1A1B1A551A571A611A631A641A6D-1A721B041B351B3B1B3D-1B411B431B441B821BA11BA61BA71BAA1C24-1C2B1C341C351CE11CF2A823A824A827A880A881A8B4-A8C3A952A953A983A9B4A9B5A9BAA9BBA9BD-A9C0AA2FAA30AA33AA34AA4DAA7BABE3ABE4ABE6ABE7ABE9ABEAABEC",Me:"0488048906DE20DD-20E020E2-20E4A670-A672",N:"0030-003900B200B300B900BC-00BE0660-066906F0-06F907C0-07C90966-096F09E6-09EF09F4-09F90A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BF20C66-0C6F0C78-0C7E0CE6-0CEF0D66-0D750E50-0E590ED0-0ED90F20-0F331040-10491090-10991369-137C16EE-16F017E0-17E917F0-17F91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C5920702074-20792080-20892150-21822185-21892460-249B24EA-24FF2776-27932CFD30073021-30293038-303A3192-31953220-32293251-325F3280-328932B1-32BFA620-A629A6E6-A6EFA830-A835A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nd:"0030-00390660-066906F0-06F907C0-07C90966-096F09E6-09EF0A66-0A6F0AE6-0AEF0B66-0B6F0BE6-0BEF0C66-0C6F0CE6-0CEF0D66-0D6F0E50-0E590ED0-0ED90F20-0F291040-10491090-109917E0-17E91810-18191946-194F19D0-19DA1A80-1A891A90-1A991B50-1B591BB0-1BB91C40-1C491C50-1C59A620-A629A8D0-A8D9A900-A909A9D0-A9D9AA50-AA59ABF0-ABF9FF10-FF19",Nl:"16EE-16F02160-21822185-218830073021-30293038-303AA6E6-A6EF",No:"00B200B300B900BC-00BE09F4-09F90BF0-0BF20C78-0C7E0D70-0D750F2A-0F331369-137C17F0-17F920702074-20792080-20892150-215F21892460-249B24EA-24FF2776-27932CFD3192-31953220-32293251-325F3280-328932B1-32BFA830-A835",P:"0021-00230025-002A002C-002F003A003B003F0040005B-005D005F007B007D00A100AB00B700BB00BF037E0387055A-055F0589058A05BE05C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F3A-0F3D0F850FD0-0FD4104A-104F10FB1361-13681400166D166E169B169C16EB-16ED1735173617D4-17D617D8-17DA1800-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD32010-20272030-20432045-20512053-205E207D207E208D208E2329232A2768-277527C527C627E6-27EF2983-299829D8-29DB29FC29FD2CF9-2CFC2CFE2CFF2E00-2E2E2E302E313001-30033008-30113014-301F3030303D30A030FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFD3EFD3FFE10-FE19FE30-FE52FE54-FE61FE63FE68FE6AFE6BFF01-FF03FF05-FF0AFF0C-FF0FFF1AFF1BFF1FFF20FF3B-FF3DFF3FFF5BFF5DFF5F-FF65",Pd:"002D058A05BE140018062010-20152E172E1A301C303030A0FE31FE32FE58FE63FF0D",Ps:"0028005B007B0F3A0F3C169B201A201E2045207D208D23292768276A276C276E27702772277427C527E627E827EA27EC27EE2983298529872989298B298D298F299129932995299729D829DA29FC2E222E242E262E283008300A300C300E3010301430163018301A301DFD3EFE17FE35FE37FE39FE3BFE3DFE3FFE41FE43FE47FE59FE5BFE5DFF08FF3BFF5BFF5FFF62",Pe:"0029005D007D0F3B0F3D169C2046207E208E232A2769276B276D276F27712773277527C627E727E927EB27ED27EF298429862988298A298C298E2990299229942996299829D929DB29FD2E232E252E272E293009300B300D300F3011301530173019301B301E301FFD3FFE18FE36FE38FE3AFE3CFE3EFE40FE42FE44FE48FE5AFE5CFE5EFF09FF3DFF5DFF60FF63",Pi:"00AB2018201B201C201F20392E022E042E092E0C2E1C2E20",Pf:"00BB2019201D203A2E032E052E0A2E0D2E1D2E21",Pc:"005F203F20402054FE33FE34FE4D-FE4FFF3F",Po:"0021-00230025-0027002A002C002E002F003A003B003F0040005C00A100B700BF037E0387055A-055F058905C005C305C605F305F40609060A060C060D061B061E061F066A-066D06D40700-070D07F7-07F90830-083E0964096509700DF40E4F0E5A0E5B0F04-0F120F850FD0-0FD4104A-104F10FB1361-1368166D166E16EB-16ED1735173617D4-17D617D8-17DA1800-18051807-180A1944194519DE19DF1A1E1A1F1AA0-1AA61AA8-1AAD1B5A-1B601C3B-1C3F1C7E1C7F1CD3201620172020-20272030-2038203B-203E2041-20432047-205120532055-205E2CF9-2CFC2CFE2CFF2E002E012E06-2E082E0B2E0E-2E162E182E192E1B2E1E2E1F2E2A-2E2E2E302E313001-3003303D30FBA4FEA4FFA60D-A60FA673A67EA6F2-A6F7A874-A877A8CEA8CFA8F8-A8FAA92EA92FA95FA9C1-A9CDA9DEA9DFAA5C-AA5FAADEAADFABEBFE10-FE16FE19FE30FE45FE46FE49-FE4CFE50-FE52FE54-FE57FE5F-FE61FE68FE6AFE6BFF01-FF03FF05-FF07FF0AFF0CFF0EFF0FFF1AFF1BFF1FFF20FF3CFF61FF64FF65",S:"0024002B003C-003E005E0060007C007E00A2-00A900AC00AE-00B100B400B600B800D700F702C2-02C502D2-02DF02E5-02EB02ED02EF-02FF03750384038503F604820606-0608060B060E060F06E906FD06FE07F609F209F309FA09FB0AF10B700BF3-0BFA0C7F0CF10CF20D790E3F0F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-139917DB194019E0-19FF1B61-1B6A1B74-1B7C1FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE20442052207A-207C208A-208C20A0-20B8210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B2140-2144214A-214D214F2190-2328232B-23E82400-24262440-244A249C-24E92500-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE27C0-27C427C7-27CA27CC27D0-27E527F0-29822999-29D729DC-29FB29FE-2B4C2B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F309B309C319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A700-A716A720A721A789A78AA828-A82BA836-A839AA77-AA79FB29FDFCFDFDFE62FE64-FE66FE69FF04FF0BFF1C-FF1EFF3EFF40FF5CFF5EFFE0-FFE6FFE8-FFEEFFFCFFFD",Sm:"002B003C-003E007C007E00AC00B100D700F703F60606-060820442052207A-207C208A-208C2140-2144214B2190-2194219A219B21A021A321A621AE21CE21CF21D221D421F4-22FF2308-230B23202321237C239B-23B323DC-23E125B725C125F8-25FF266F27C0-27C427C7-27CA27CC27D0-27E527F0-27FF2900-29822999-29D729DC-29FB29FE-2AFF2B30-2B442B47-2B4CFB29FE62FE64-FE66FF0BFF1C-FF1EFF5CFF5EFFE2FFE9-FFEC",Sc:"002400A2-00A5060B09F209F309FB0AF10BF90E3F17DB20A0-20B8A838FDFCFE69FF04FFE0FFE1FFE5FFE6",Sk:"005E006000A800AF00B400B802C2-02C502D2-02DF02E5-02EB02ED02EF-02FF0375038403851FBD1FBF-1FC11FCD-1FCF1FDD-1FDF1FED-1FEF1FFD1FFE309B309CA700-A716A720A721A789A78AFF3EFF40FFE3",So:"00A600A700A900AE00B000B60482060E060F06E906FD06FE07F609FA0B700BF3-0BF80BFA0C7F0CF10CF20D790F01-0F030F13-0F170F1A-0F1F0F340F360F380FBE-0FC50FC7-0FCC0FCE0FCF0FD5-0FD8109E109F13601390-1399194019E0-19FF1B61-1B6A1B74-1B7C210021012103-21062108210921142116-2118211E-2123212521272129212E213A213B214A214C214D214F2195-2199219C-219F21A121A221A421A521A7-21AD21AF-21CD21D021D121D321D5-21F32300-2307230C-231F2322-2328232B-237B237D-239A23B4-23DB23E2-23E82400-24262440-244A249C-24E92500-25B625B8-25C025C2-25F72600-266E2670-26CD26CF-26E126E326E8-26FF2701-27042706-2709270C-27272729-274B274D274F-27522756-275E2761-276727942798-27AF27B1-27BE2800-28FF2B00-2B2F2B452B462B50-2B592CE5-2CEA2E80-2E992E9B-2EF32F00-2FD52FF0-2FFB300430123013302030363037303E303F319031913196-319F31C0-31E33200-321E322A-32503260-327F328A-32B032C0-32FE3300-33FF4DC0-4DFFA490-A4C6A828-A82BA836A837A839AA77-AA79FDFDFFE4FFE8FFEDFFEEFFFCFFFD",Z:"002000A01680180E2000-200A20282029202F205F3000",Zs:"002000A01680180E2000-200A202F205F3000",Zl:"2028",Zp:"2029",C:"0000-001F007F-009F00AD03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-0605061C061D0620065F06DD070E070F074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17B417B517DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF200B-200F202A-202E2060-206F20722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-F8FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFD-FF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFFBFFFEFFFF",Cc:"0000-001F007F-009F",Cf:"00AD0600-060306DD070F17B417B5200B-200F202A-202E2060-2064206A-206FFEFFFFF9-FFFB",Co:"E000-F8FF",Cs:"D800-DFFF",Cn:"03780379037F-0383038B038D03A20526-05300557055805600588058B-059005C8-05CF05EB-05EF05F5-05FF06040605061C061D0620065F070E074B074C07B2-07BF07FB-07FF082E082F083F-08FF093A093B094F095609570973-097809800984098D098E0991099209A909B109B3-09B509BA09BB09C509C609C909CA09CF-09D609D8-09DB09DE09E409E509FC-0A000A040A0B-0A0E0A110A120A290A310A340A370A3A0A3B0A3D0A43-0A460A490A4A0A4E-0A500A52-0A580A5D0A5F-0A650A76-0A800A840A8E0A920AA90AB10AB40ABA0ABB0AC60ACA0ACE0ACF0AD1-0ADF0AE40AE50AF00AF2-0B000B040B0D0B0E0B110B120B290B310B340B3A0B3B0B450B460B490B4A0B4E-0B550B58-0B5B0B5E0B640B650B72-0B810B840B8B-0B8D0B910B96-0B980B9B0B9D0BA0-0BA20BA5-0BA70BAB-0BAD0BBA-0BBD0BC3-0BC50BC90BCE0BCF0BD1-0BD60BD8-0BE50BFB-0C000C040C0D0C110C290C340C3A-0C3C0C450C490C4E-0C540C570C5A-0C5F0C640C650C70-0C770C800C810C840C8D0C910CA90CB40CBA0CBB0CC50CC90CCE-0CD40CD7-0CDD0CDF0CE40CE50CF00CF3-0D010D040D0D0D110D290D3A-0D3C0D450D490D4E-0D560D58-0D5F0D640D650D76-0D780D800D810D840D97-0D990DB20DBC0DBE0DBF0DC7-0DC90DCB-0DCE0DD50DD70DE0-0DF10DF5-0E000E3B-0E3E0E5C-0E800E830E850E860E890E8B0E8C0E8E-0E930E980EA00EA40EA60EA80EA90EAC0EBA0EBE0EBF0EC50EC70ECE0ECF0EDA0EDB0EDE-0EFF0F480F6D-0F700F8C-0F8F0F980FBD0FCD0FD9-0FFF10C6-10CF10FD-10FF1249124E124F12571259125E125F1289128E128F12B112B612B712BF12C112C612C712D7131113161317135B-135E137D-137F139A-139F13F5-13FF169D-169F16F1-16FF170D1715-171F1737-173F1754-175F176D17711774-177F17DE17DF17EA-17EF17FA-17FF180F181A-181F1878-187F18AB-18AF18F6-18FF191D-191F192C-192F193C-193F1941-1943196E196F1975-197F19AC-19AF19CA-19CF19DB-19DD1A1C1A1D1A5F1A7D1A7E1A8A-1A8F1A9A-1A9F1AAE-1AFF1B4C-1B4F1B7D-1B7F1BAB-1BAD1BBA-1BFF1C38-1C3A1C4A-1C4C1C80-1CCF1CF3-1CFF1DE7-1DFC1F161F171F1E1F1F1F461F471F4E1F4F1F581F5A1F5C1F5E1F7E1F7F1FB51FC51FD41FD51FDC1FF01FF11FF51FFF2065-206920722073208F2095-209F20B9-20CF20F1-20FF218A-218F23E9-23FF2427-243F244B-245F26CE26E226E4-26E727002705270A270B2728274C274E2753-2755275F27602795-279727B027BF27CB27CD-27CF2B4D-2B4F2B5A-2BFF2C2F2C5F2CF2-2CF82D26-2D2F2D66-2D6E2D70-2D7F2D97-2D9F2DA72DAF2DB72DBF2DC72DCF2DD72DDF2E32-2E7F2E9A2EF4-2EFF2FD6-2FEF2FFC-2FFF3040309730983100-3104312E-3130318F31B8-31BF31E4-31EF321F32FF4DB6-4DBF9FCC-9FFFA48D-A48FA4C7-A4CFA62C-A63FA660A661A674-A67BA698-A69FA6F8-A6FFA78D-A7FAA82C-A82FA83A-A83FA878-A87FA8C5-A8CDA8DA-A8DFA8FC-A8FFA954-A95EA97D-A97FA9CEA9DA-A9DDA9E0-A9FFAA37-AA3FAA4EAA4FAA5AAA5BAA7C-AA7FAAC3-AADAAAE0-ABBFABEEABEFABFA-ABFFD7A4-D7AFD7C7-D7CAD7FC-D7FFFA2EFA2FFA6EFA6FFADA-FAFFFB07-FB12FB18-FB1CFB37FB3DFB3FFB42FB45FBB2-FBD2FD40-FD4FFD90FD91FDC8-FDEFFDFEFDFFFE1A-FE1FFE27-FE2FFE53FE67FE6C-FE6FFE75FEFDFEFEFF00FFBF-FFC1FFC8FFC9FFD0FFD1FFD8FFD9FFDD-FFDFFFE7FFEF-FFF8FFFEFFFF"})}),define("ace/mode/text",["require","exports","module","ace/tokenizer","ace/mode/text_highlight_rules","ace/mode/behaviour/cstyle","ace/unicode","ace/lib/lang","ace/token_iterator","ace/range"],function(e,t,n){"use strict";var r=e("../tokenizer").Tokenizer,i=e("./text_highlight_rules").TextHighlightRules,s=e("./behaviour/cstyle").CstyleBehaviour,o=e("../unicode"),u=e("../lib/lang"),a=e("../token_iterator").TokenIterator,f=e("../range").Range,l=function(){this.HighlightRules=i};(function(){this.$defaultBehaviour=new s,this.tokenRe=new RegExp("^["+o.packages.L+o.packages.Mn+o.packages.Mc+o.packages.Nd+o.packages.Pc+"\\$_]+","g"),this.nonTokenRe=new RegExp("^(?:[^"+o.packages.L+o.packages.Mn+o.packages.Mc+o.packages.Nd+o.packages.Pc+"\\$_]|\\s])+","g"),this.getTokenizer=function(){return this.$tokenizer||(this.$highlightRules=this.$highlightRules||new this.HighlightRules(this.$highlightRuleConfig),this.$tokenizer=new r(this.$highlightRules.getRules())),this.$tokenizer},this.lineCommentStart="",this.blockComment="",this.toggleCommentLines=function(e,t,n,r){function w(e){for(var t=n;t<=r;t++)e(i.getLine(t),t)}var i=t.doc,s=!0,o=!0,a=Infinity,f=t.getTabSize(),l=!1;if(!this.lineCommentStart){if(!this.blockComment)return!1;var c=this.blockComment.start,h=this.blockComment.end,p=new RegExp("^(\\s*)(?:"+u.escapeRegExp(c)+")"),d=new RegExp("(?:"+u.escapeRegExp(h)+")\\s*$"),v=function(e,t){if(g(e,t))return;if(!s||/\S/.test(e))i.insertInLine({row:t,column:e.length},h),i.insertInLine({row:t,column:a},c)},m=function(e,t){var n;(n=e.match(d))&&i.removeInLine(t,e.length-n[0].length,e.length),(n=e.match(p))&&i.removeInLine(t,n[1].length,n[0].length)},g=function(e,n){if(p.test(e))return!0;var r=t.getTokens(n);for(var i=0;i2?r%f!=f-1:r%f==0}}var E=Infinity;w(function(e,t){var n=e.search(/\S/);n!==-1?(ne.length&&(E=e.length)}),a==Infinity&&(a=E,s=!1,o=!1),l&&a%f!=0&&(a=Math.floor(a/f)*f),w(o?m:v)},this.toggleBlockComment=function(e,t,n,r){var i=this.blockComment;if(!i)return;!i.start&&i[0]&&(i=i[0]);var s=new a(t,r.row,r.column),o=s.getCurrentToken(),u=t.selection,l=t.selection.toOrientedRange(),c,h;if(o&&/comment/.test(o.type)){var p,d;while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.start);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;p=new f(m,g,m,g+i.start.length);break}o=s.stepBackward()}var s=new a(t,r.row,r.column),o=s.getCurrentToken();while(o&&/comment/.test(o.type)){var v=o.value.indexOf(i.end);if(v!=-1){var m=s.getCurrentTokenRow(),g=s.getCurrentTokenColumn()+v;d=new f(m,g,m,g+i.end.length);break}o=s.stepForward()}d&&t.remove(d),p&&(t.remove(p),c=p.start.row,h=-i.start.length)}else h=i.start.length,c=n.start.row,t.insert(n.end,i.end),t.insert(n.start,i.start);l.start.row==c&&(l.start.column+=h),l.end.row==c&&(l.end.column+=h),t.selection.fromOrientedRange(l)},this.getNextLineIndent=function(e,t,n){return this.$getIndent(t)},this.checkOutdent=function(e,t,n){return!1},this.autoOutdent=function(e,t,n){},this.$getIndent=function(e){return e.match(/^\s*/)[0]},this.createWorker=function(e){return null},this.createModeDelegates=function(e){this.$embeds=[],this.$modes={};for(var t in e)e[t]&&(this.$embeds.push(t),this.$modes[t]=new e[t]);var n=["toggleBlockComment","toggleCommentLines","getNextLineIndent","checkOutdent","autoOutdent","transformAction","getCompletions"];for(var t=0;t=0&&t.row=0&&t.column<=e[t.row].length}function s(e,t){t.action!="insert"&&t.action!="remove"&&r(t,"delta.action must be 'insert' or 'remove'"),t.lines instanceof Array||r(t,"delta.lines must be an Array"),(!t.start||!t.end)&&r(t,"delta.start/end must be an present");var n=t.start;i(e,t.start)||r(t,"delta.start must be contained in document");var s=t.end;t.action=="remove"&&!i(e,s)&&r(t,"delta.end must contained in document for 'remove' actions");var o=s.row-n.row,u=s.column-(o==0?n.column:0);(o!=t.lines.length-1||t.lines[o].length!=u)&&r(t,"delta.range must match delta lines")}t.applyDelta=function(e,t,n){var r=t.start.row,i=t.start.column,s=e[r]||"";switch(t.action){case"insert":var o=t.lines;if(o.length===1)e[r]=s.substring(0,i)+t.lines[0]+s.substring(i);else{var u=[r,1].concat(t.lines);e.splice.apply(e,u),e[r]=s.substring(0,i)+e[r],e[r+t.lines.length-1]+=s.substring(i)}break;case"remove":var a=t.end.column,f=t.end.row;r===f?e[r]=s.substring(0,i)+s.substring(a):e.splice(r,f-r+1,s.substring(0,i)+e[f].substring(a))}}}),define("ace/anchor",["require","exports","module","ace/lib/oop","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/event_emitter").EventEmitter,s=t.Anchor=function(e,t,n){this.$onChange=this.onChange.bind(this),this.attach(e),typeof n=="undefined"?this.setPosition(t.row,t.column):this.setPosition(t,n)};(function(){function e(e,t,n){var r=n?e.column<=t.column:e.columnthis.row)return;var n=t(e,{row:this.row,column:this.column},this.$insertRight);this.setPosition(n.row,n.column,!0)},this.setPosition=function(e,t,n){var r;n?r={row:e,column:t}:r=this.$clipPositionToDocument(e,t);if(this.row==r.row&&this.column==r.column)return;var i={row:this.row,column:this.column};this.row=r.row,this.column=r.column,this._signal("change",{old:i,value:r})},this.detach=function(){this.document.removeEventListener("change",this.$onChange)},this.attach=function(e){this.document=e||this.document,this.document.on("change",this.$onChange)},this.$clipPositionToDocument=function(e,t){var n={};return e>=this.document.getLength()?(n.row=Math.max(0,this.document.getLength()-1),n.column=this.document.getLine(n.row).length):e<0?(n.row=0,n.column=0):(n.row=e,n.column=Math.min(this.document.getLine(n.row).length,Math.max(0,t))),t<0&&(n.column=0),n}}).call(s.prototype)}),define("ace/document",["require","exports","module","ace/lib/oop","ace/apply_delta","ace/lib/event_emitter","ace/range","ace/anchor"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./apply_delta").applyDelta,s=e("./lib/event_emitter").EventEmitter,o=e("./range").Range,u=e("./anchor").Anchor,a=function(e){this.$lines=[""],e.length===0?this.$lines=[""]:Array.isArray(e)?this.insertMergedLines({row:0,column:0},e):this.insert({row:0,column:0},e)};(function(){r.implement(this,s),this.setValue=function(e){var t=this.getLength()-1;this.remove(new o(0,0,t,this.getLine(t).length)),this.insert({row:0,column:0},e)},this.getValue=function(){return this.getAllLines().join(this.getNewLineCharacter())},this.createAnchor=function(e,t){return new u(this,e,t)},"aaa".split(/a/).length===0?this.$split=function(e){return e.replace(/\r\n|\r/g,"\n").split("\n")}:this.$split=function(e){return e.split(/\r\n|\r|\n/)},this.$detectNewLine=function(e){var t=e.match(/^.*?(\r\n|\r|\n)/m);this.$autoNewLine=t?t[1]:"\n",this._signal("changeNewLineMode")},this.getNewLineCharacter=function(){switch(this.$newLineMode){case"windows":return"\r\n";case"unix":return"\n";default:return this.$autoNewLine||"\n"}},this.$autoNewLine="",this.$newLineMode="auto",this.setNewLineMode=function(e){if(this.$newLineMode===e)return;this.$newLineMode=e,this._signal("changeNewLineMode")},this.getNewLineMode=function(){return this.$newLineMode},this.isNewLine=function(e){return e=="\r\n"||e=="\r"||e=="\n"},this.getLine=function(e){return this.$lines[e]||""},this.getLines=function(e,t){return this.$lines.slice(e,t+1)},this.getAllLines=function(){return this.getLines(0,this.getLength())},this.getLength=function(){return this.$lines.length},this.getTextRange=function(e){return this.getLinesForRange(e).join(this.getNewLineCharacter())},this.getLinesForRange=function(e){var t;if(e.start.row===e.end.row)t=[this.getLine(e.start.row).substring(e.start.column,e.end.column)];else{t=this.getLines(e.start.row,e.end.row),t[0]=(t[0]||"").substring(e.start.column);var n=t.length-1;e.end.row-e.start.row==n&&(t[n]=t[n].substring(0,e.end.column))}return t},this.insertLines=function(e,t){return console.warn("Use of document.insertLines is deprecated. Use the insertFullLines method instead."),this.insertFullLines(e,t)},this.removeLines=function(e,t){return console.warn("Use of document.removeLines is deprecated. Use the removeFullLines method instead."),this.removeFullLines(e,t)},this.insertNewLine=function(e){return console.warn("Use of document.insertNewLine is deprecated. Use insertMergedLines(position, ['', '']) instead."),this.insertMergedLines(e,["",""])},this.insert=function(e,t){return this.getLength()<=1&&this.$detectNewLine(t),this.insertMergedLines(e,this.$split(t))},this.insertInLine=function(e,t){var n=this.clippedPos(e.row,e.column),r=this.pos(e.row,e.column+t.length);return this.applyDelta({start:n,end:r,action:"insert",lines:[t]},!0),this.clonePos(r)},this.clippedPos=function(e,t){var n=this.getLength();e===undefined?e=n:e<0?e=0:e>=n&&(e=n-1,t=undefined);var r=this.getLine(e);return t==undefined&&(t=r.length),t=Math.min(Math.max(t,0),r.length),{row:e,column:t}},this.clonePos=function(e){return{row:e.row,column:e.column}},this.pos=function(e,t){return{row:e,column:t}},this.$clipPosition=function(e){var t=this.getLength();return e.row>=t?(e.row=Math.max(0,t-1),e.column=this.getLine(t-1).length):(e.row=Math.max(0,e.row),e.column=Math.min(Math.max(e.column,0),this.getLine(e.row).length)),e},this.insertFullLines=function(e,t){e=Math.min(Math.max(e,0),this.getLength());var n=0;e0,r=t=0&&this.applyDelta({start:this.pos(e,this.getLine(e).length),end:this.pos(e+1,0),action:"remove",lines:["",""]})},this.replace=function(e,t){e instanceof o||(e=o.fromPoints(e.start,e.end));if(t.length===0&&e.isEmpty())return e.start;if(t==this.getTextRange(e))return e.end;this.remove(e);var n;return t?n=this.insert(e.start,t):n=e.start,n},this.applyDeltas=function(e){for(var t=0;t=0;t--)this.revertDelta(e[t])},this.applyDelta=function(e,t){var n=e.action=="insert";if(n?e.lines.length<=1&&!e.lines[0]:!o.comparePoints(e.start,e.end))return;n&&e.lines.length>2e4&&this.$splitAndapplyLargeDelta(e,2e4),i(this.$lines,e,t),this._signal("change",e)},this.$splitAndapplyLargeDelta=function(e,t){var n=e.lines,r=n.length,i=e.start.row,s=e.start.column,o=0,u=0;do{o=u,u+=t-1;var a=n.slice(o,u);if(u>r){e.lines=a,e.start.row=i+o,e.start.column=s;break}a.push(""),this.applyDelta({start:this.pos(i+o,s),end:this.pos(i+u,s=0),action:e.action,lines:a},!0)}while(!0)},this.revertDelta=function(e){this.applyDelta({start:this.clonePos(e.start),end:this.clonePos(e.end),action:e.action=="insert"?"remove":"insert",lines:e.lines.slice()})},this.indexToPosition=function(e,t){var n=this.$lines||this.getAllLines(),r=this.getNewLineCharacter().length;for(var i=t||0,s=n.length;i20){n.running=setTimeout(n.$worker,20);break}}n.currentLine=t,s<=r&&n.fireUpdateEvent(s,r)}};(function(){r.implement(this,i),this.setTokenizer=function(e){this.tokenizer=e,this.lines=[],this.states=[],this.start(0)},this.setDocument=function(e){this.doc=e,this.lines=[],this.states=[],this.stop()},this.fireUpdateEvent=function(e,t){var n={first:e,last:t};this._signal("update",{data:n})},this.start=function(e){this.currentLine=Math.min(e||0,this.currentLine,this.doc.getLength()),this.lines.splice(this.currentLine,this.lines.length),this.states.splice(this.currentLine,this.states.length),this.stop(),this.running=setTimeout(this.$worker,700)},this.scheduleStart=function(){this.running||(this.running=setTimeout(this.$worker,700))},this.$updateOnChange=function(e){var t=e.start.row,n=e.end.row-t;if(n===0)this.lines[t]=null;else if(e.action=="remove")this.lines.splice(t,n+1,null),this.states.splice(t,n+1,null);else{var r=Array(n+1);r.unshift(t,1),this.lines.splice.apply(this.lines,r),this.states.splice.apply(this.states,r)}this.currentLine=Math.min(t,this.currentLine,this.doc.getLength()),this.stop()},this.stop=function(){this.running&&clearTimeout(this.running),this.running=!1},this.getTokens=function(e){return this.lines[e]||this.$tokenizeRow(e)},this.getState=function(e){return this.currentLine==e&&this.$tokenizeRow(e),this.states[e]||"start"},this.$tokenizeRow=function(e){var t=this.doc.getLine(e),n=this.states[e-1],r=this.tokenizer.getLineTokens(t,n,e);return this.states[e]+""!=r.state+""?(this.states[e]=r.state,this.lines[e+1]=null,this.currentLine>e+1&&(this.currentLine=e+1)):this.currentLine==e&&(this.currentLine=e+1),this.lines[e]=r.tokens}}).call(s.prototype),t.BackgroundTokenizer=s}),define("ace/search_highlight",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(e,t,n){this.setRegexp(e),this.clazz=t,this.type=n||"text"};(function(){this.MAX_RANGES=500,this.setRegexp=function(e){if(this.regExp+""==e+"")return;this.regExp=e,this.cache=[]},this.update=function(e,t,n,i){if(!this.regExp)return;var o=i.firstRow,u=i.lastRow;for(var a=o;a<=u;a++){var f=this.cache[a];f==null&&(f=r.getMatchOffsets(n.getLine(a),this.regExp),f.length>this.MAX_RANGES&&(f=f.slice(0,this.MAX_RANGES)),f=f.map(function(e){return new s(a,e.offset,a,e.offset+e.length)}),this.cache[a]=f.length?f:"");for(var l=f.length;l--;)t.drawSingleLineMarker(e,f[l].toScreenRange(n),this.clazz,i)}}}).call(o.prototype),t.SearchHighlight=o}),define("ace/edit_session/fold_line",["require","exports","module","ace/range"],function(e,t,n){"use strict";function i(e,t){this.foldData=e,Array.isArray(t)?this.folds=t:t=this.folds=[t];var n=t[t.length-1];this.range=new r(t[0].start.row,t[0].start.column,n.end.row,n.end.column),this.start=this.range.start,this.end=this.range.end,this.folds.forEach(function(e){e.setFoldLine(this)},this)}var r=e("../range").Range;(function(){this.shiftRow=function(e){this.start.row+=e,this.end.row+=e,this.folds.forEach(function(t){t.start.row+=e,t.end.row+=e})},this.addFold=function(e){if(e.sameRow){if(e.start.rowthis.endRow)throw new Error("Can't add a fold to this FoldLine as it has no connection");this.folds.push(e),this.folds.sort(function(e,t){return-e.range.compareEnd(t.start.row,t.start.column)}),this.range.compareEnd(e.start.row,e.start.column)>0?(this.end.row=e.end.row,this.end.column=e.end.column):this.range.compareStart(e.end.row,e.end.column)<0&&(this.start.row=e.start.row,this.start.column=e.start.column)}else if(e.start.row==this.end.row)this.folds.push(e),this.end.row=e.end.row,this.end.column=e.end.column;else{if(e.end.row!=this.start.row)throw new Error("Trying to add fold to FoldRow that doesn't have a matching row");this.folds.unshift(e),this.start.row=e.start.row,this.start.column=e.start.column}e.foldLine=this},this.containsRow=function(e){return e>=this.start.row&&e<=this.end.row},this.walk=function(e,t,n){var r=0,i=this.folds,s,o,u,a=!0;t==null&&(t=this.end.row,n=this.end.column);for(var f=0;f0)continue;var a=i(e,o.start);return u===0?t&&a!==0?-s-2:s:a>0||a===0&&!t?s:-s-1}return-s-1},this.add=function(e){var t=!e.isEmpty(),n=this.pointIndex(e.start,t);n<0&&(n=-n-1);var r=this.pointIndex(e.end,t,n);return r<0?r=-r-1:r++,this.ranges.splice(n,r-n,e)},this.addList=function(e){var t=[];for(var n=e.length;n--;)t.push.apply(t,this.add(e[n]));return t},this.substractPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges.splice(t,1)},this.merge=function(){var e=[],t=this.ranges;t=t.sort(function(e,t){return i(e.start,t.start)});var n=t[0],r;for(var s=1;s=0},this.containsPoint=function(e){return this.pointIndex(e)>=0},this.rangeAtPoint=function(e){var t=this.pointIndex(e);if(t>=0)return this.ranges[t]},this.clipRows=function(e,t){var n=this.ranges;if(n[0].start.row>t||n[n.length-1].start.rowr)break;l.start.row==r&&l.start.column>=t.column&&(l.start.column!=t.column||!this.$insertRight)&&(l.start.column+=o,l.start.row+=s);if(l.end.row==r&&l.end.column>=t.column){if(l.end.column==t.column&&this.$insertRight)continue;l.end.column==t.column&&o>0&&al.start.column&&l.end.column==u[a+1].start.column&&(l.end.column-=o),l.end.column+=o,l.end.row+=s}}if(s!=0&&a=e)return i;if(i.end.row>e)return null}return null},this.getNextFoldLine=function(e,t){var n=this.$foldData,r=0;t&&(r=n.indexOf(t)),r==-1&&(r=0);for(r;r=e)return i}return null},this.getFoldedRowCount=function(e,t){var n=this.$foldData,r=t-e+1;for(var i=0;i=t){u=e?r-=t-u:r=0);break}o>=e&&(u>=e?r-=o-u:r-=o-e+1)}return r},this.$addFoldLine=function(e){return this.$foldData.push(e),this.$foldData.sort(function(e,t){return e.start.row-t.start.row}),e},this.addFold=function(e,t){var n=this.$foldData,r=!1,o;e instanceof s?o=e:(o=new s(t,e),o.collapseChildren=t.collapseChildren),this.$clipRangeToDocument(o.range);var u=o.start.row,a=o.start.column,f=o.end.row,l=o.end.column;if(u0&&(this.removeFolds(p),p.forEach(function(e){o.addSubFold(e)}));for(var d=0;d0&&this.foldAll(e.start.row+1,e.end.row,e.collapseChildren-1),e.subFolds=[]},this.expandFolds=function(e){e.forEach(function(e){this.expandFold(e)},this)},this.unfold=function(e,t){var n,i;e==null?(n=new r(0,0,this.getLength(),0),t=!0):typeof e=="number"?n=new r(e,0,e,this.getLine(e).length):"row"in e?n=r.fromPoints(e,e):n=e,i=this.getFoldsInRangeList(n);if(t)this.removeFolds(i);else{var s=i;while(s.length)this.expandFolds(s),s=this.getFoldsInRangeList(n)}if(i.length)return i},this.isRowFolded=function(e,t){return!!this.getFoldLine(e,t)},this.getRowFoldEnd=function(e,t){var n=this.getFoldLine(e,t);return n?n.end.row:e},this.getRowFoldStart=function(e,t){var n=this.getFoldLine(e,t);return n?n.start.row:e},this.getFoldDisplayLine=function(e,t,n,r,i){r==null&&(r=e.start.row),i==null&&(i=0),t==null&&(t=e.end.row),n==null&&(n=this.getLine(t).length);var s=this.doc,o="";return e.walk(function(e,t,n,u){if(t=e){i=s.end.row;try{var o=this.addFold("...",s);o&&(o.collapseChildren=n)}catch(u){}}}},this.$foldStyles={manual:1,markbegin:1,markbeginend:1},this.$foldStyle="markbegin",this.setFoldStyle=function(e){if(!this.$foldStyles[e])throw new Error("invalid fold style: "+e+"["+Object.keys(this.$foldStyles).join(", ")+"]");if(this.$foldStyle==e)return;this.$foldStyle=e,e=="manual"&&this.unfold();var t=this.$foldMode;this.$setFolding(null),this.$setFolding(t)},this.$setFolding=function(e){if(this.$foldMode==e)return;this.$foldMode=e,this.off("change",this.$updateFoldWidgets),this.off("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets),this._signal("changeAnnotation");if(!e||this.$foldStyle=="manual"){this.foldWidgets=null;return}this.foldWidgets=[],this.getFoldWidget=e.getFoldWidget.bind(e,this,this.$foldStyle),this.getFoldWidgetRange=e.getFoldWidgetRange.bind(e,this,this.$foldStyle),this.$updateFoldWidgets=this.updateFoldWidgets.bind(this),this.$tokenizerUpdateFoldWidgets=this.tokenizerUpdateFoldWidgets.bind(this),this.on("change",this.$updateFoldWidgets),this.on("tokenizerUpdate",this.$tokenizerUpdateFoldWidgets)},this.getParentFoldRangeData=function(e,t){var n=this.foldWidgets;if(!n||t&&n[e])return{};var r=e-1,i;while(r>=0){var s=n[r];s==null&&(s=n[r]=this.getFoldWidget(r));if(s=="start"){var o=this.getFoldWidgetRange(r);i||(i=o);if(o&&o.end.row>=e)break}r--}return{range:r!==-1&&o,firstRange:i}},this.onFoldWidgetClick=function(e,t){t=t.domEvent;var n={children:t.shiftKey,all:t.ctrlKey||t.metaKey,siblings:t.altKey},r=this.$toggleFoldWidget(e,n);if(!r){var i=t.target||t.srcElement;i&&/ace_fold-widget/.test(i.className)&&(i.className+=" ace_invalid")}},this.$toggleFoldWidget=function(e,t){if(!this.getFoldWidget)return;var n=this.getFoldWidget(e),r=this.getLine(e),i=n==="end"?-1:1,s=this.getFoldAt(e,i===-1?0:r.length,i);if(s)return t.children||t.all?this.removeFold(s):this.expandFold(s),s;var o=this.getFoldWidgetRange(e,!0);if(o&&!o.isMultiLine()){s=this.getFoldAt(o.start.row,o.start.column,1);if(s&&o.isEqual(s.range))return this.removeFold(s),s}if(t.siblings){var u=this.getParentFoldRangeData(e);if(u.range)var a=u.range.start.row+1,f=u.range.end.row;this.foldAll(a,f,t.all?1e4:0)}else t.children?(f=o?o.end.row:this.getLength(),this.foldAll(e+1,f,t.all?1e4:0)):o&&(t.all&&(o.collapseChildren=1e4),this.addFold("...",o));return o},this.toggleFoldWidget=function(e){var t=this.selection.getCursor().row;t=this.getRowFoldStart(t);var n=this.$toggleFoldWidget(t,{});if(n)return;var r=this.getParentFoldRangeData(t,!0);n=r.range||r.firstRange;if(n){t=n.start.row;var i=this.getFoldAt(t,this.getLine(t).length,1);i?this.removeFold(i):this.addFold("...",n)}},this.updateFoldWidgets=function(e){var t=e.start.row,n=e.end.row-t;if(n===0)this.foldWidgets[t]=null;else if(e.action=="remove")this.foldWidgets.splice(t,n+1,null);else{var r=Array(n+1);r.unshift(t,1),this.foldWidgets.splice.apply(this.foldWidgets,r)}},this.tokenizerUpdateFoldWidgets=function(e){var t=e.data;t.first!=t.last&&this.foldWidgets.length>t.first&&this.foldWidgets.splice(t.first,this.foldWidgets.length)}}var r=e("../range").Range,i=e("./fold_line").FoldLine,s=e("./fold").Fold,o=e("../token_iterator").TokenIterator;t.Folding=u}),define("ace/edit_session/bracket_match",["require","exports","module","ace/token_iterator","ace/range"],function(e,t,n){"use strict";function s(){this.findMatchingBracket=function(e,t){if(e.column==0)return null;var n=t||this.getLine(e.row).charAt(e.column-1);if(n=="")return null;var r=n.match(/([\(\[\{])|([\)\]\}])/);return r?r[1]?this.$findClosingBracket(r[1],e):this.$findOpeningBracket(r[2],e):null},this.getBracketRange=function(e){var t=this.getLine(e.row),n=!0,r,s=t.charAt(e.column-1),o=s&&s.match(/([\(\[\{])|([\)\]\}])/);o||(s=t.charAt(e.column),e={row:e.row,column:e.column+1},o=s&&s.match(/([\(\[\{])|([\)\]\}])/),n=!1);if(!o)return null;if(o[1]){var u=this.$findClosingBracket(o[1],e);if(!u)return null;r=i.fromPoints(e,u),n||(r.end.column++,r.start.column--),r.cursor=r.end}else{var u=this.$findOpeningBracket(o[2],e);if(!u)return null;r=i.fromPoints(u,e),n||(r.start.column++,r.end.column--),r.cursor=r.start}return r},this.$brackets={")":"(","(":")","]":"[","[":"]","{":"}","}":"{"},this.$findOpeningBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("rparen",".paren").replace(/\b(?:end)\b/,"(?:start|begin|end)")+")+"));var a=t.column-o.getCurrentTokenColumn()-2,f=u.value;for(;;){while(a>=0){var l=f.charAt(a);if(l==i){s-=1;if(s==0)return{row:o.getCurrentTokenRow(),column:a+o.getCurrentTokenColumn()}}else l==e&&(s+=1);a-=1}do u=o.stepBackward();while(u&&!n.test(u.type));if(u==null)break;f=u.value,a=f.length-1}return null},this.$findClosingBracket=function(e,t,n){var i=this.$brackets[e],s=1,o=new r(this,t.row,t.column),u=o.getCurrentToken();u||(u=o.stepForward());if(!u)return;n||(n=new RegExp("(\\.?"+u.type.replace(".","\\.").replace("lparen",".paren").replace(/\b(?:start|begin)\b/,"(?:start|begin|end)")+")+"));var a=t.column-o.getCurrentTokenColumn();for(;;){var f=u.value,l=f.length;while(a=4352&&e<=4447||e>=4515&&e<=4519||e>=4602&&e<=4607||e>=9001&&e<=9002||e>=11904&&e<=11929||e>=11931&&e<=12019||e>=12032&&e<=12245||e>=12272&&e<=12283||e>=12288&&e<=12350||e>=12353&&e<=12438||e>=12441&&e<=12543||e>=12549&&e<=12589||e>=12593&&e<=12686||e>=12688&&e<=12730||e>=12736&&e<=12771||e>=12784&&e<=12830||e>=12832&&e<=12871||e>=12880&&e<=13054||e>=13056&&e<=19903||e>=19968&&e<=42124||e>=42128&&e<=42182||e>=43360&&e<=43388||e>=44032&&e<=55203||e>=55216&&e<=55238||e>=55243&&e<=55291||e>=63744&&e<=64255||e>=65040&&e<=65049||e>=65072&&e<=65106||e>=65108&&e<=65126||e>=65128&&e<=65131||e>=65281&&e<=65376||e>=65504&&e<=65510}r.implement(this,o),this.setDocument=function(e){this.doc&&this.doc.removeListener("change",this.$onChange),this.doc=e,e.on("change",this.$onChange),this.bgTokenizer&&this.bgTokenizer.setDocument(this.getDocument()),this.resetCaches()},this.getDocument=function(){return this.doc},this.$resetRowCache=function(e){if(!e){this.$docRowCache=[],this.$screenRowCache=[];return}var t=this.$docRowCache.length,n=this.$getRowCacheIndex(this.$docRowCache,e)+1;t>n&&(this.$docRowCache.splice(n,t),this.$screenRowCache.splice(n,t))},this.$getRowCacheIndex=function(e,t){var n=0,r=e.length-1;while(n<=r){var i=n+r>>1,s=e[i];if(t>s)n=i+1;else{if(!(t=t)break}return r=n[s],r?(r.index=s,r.start=i-r.value.length,r):null},this.setUndoManager=function(e){this.$undoManager=e,this.$deltas=[],this.$deltasDoc=[],this.$deltasFold=[],this.$informUndoManager&&this.$informUndoManager.cancel();if(e){var t=this;this.$syncInformUndoManager=function(){t.$informUndoManager.cancel(),t.$deltasFold.length&&(t.$deltas.push({group:"fold",deltas:t.$deltasFold}),t.$deltasFold=[]),t.$deltasDoc.length&&(t.$deltas.push({group:"doc",deltas:t.$deltasDoc}),t.$deltasDoc=[]),t.$deltas.length>0&&e.execute({action:"aceupdate",args:[t.$deltas,t],merge:t.mergeUndoDeltas}),t.mergeUndoDeltas=!1,t.$deltas=[]},this.$informUndoManager=i.delayedCall(this.$syncInformUndoManager)}},this.markUndoGroup=function(){this.$syncInformUndoManager&&this.$syncInformUndoManager()},this.$defaultUndoManager={undo:function(){},redo:function(){},reset:function(){}},this.getUndoManager=function(){return this.$undoManager||this.$defaultUndoManager},this.getTabString=function(){return this.getUseSoftTabs()?i.stringRepeat(" ",this.getTabSize()):" "},this.setUseSoftTabs=function(e){this.setOption("useSoftTabs",e)},this.getUseSoftTabs=function(){return this.$useSoftTabs&&!this.$mode.$indentWithTabs},this.setTabSize=function(e){this.setOption("tabSize",e)},this.getTabSize=function(){return this.$tabSize},this.isTabStop=function(e){return this.$useSoftTabs&&e.column%this.$tabSize===0},this.$overwrite=!1,this.setOverwrite=function(e){this.setOption("overwrite",e)},this.getOverwrite=function(){return this.$overwrite},this.toggleOverwrite=function(){this.setOverwrite(!this.$overwrite)},this.addGutterDecoration=function(e,t){this.$decorations[e]||(this.$decorations[e]=""),this.$decorations[e]+=" "+t,this._signal("changeBreakpoint",{})},this.removeGutterDecoration=function(e,t){this.$decorations[e]=(this.$decorations[e]||"").replace(" "+t,""),this._signal("changeBreakpoint",{})},this.getBreakpoints=function(){return this.$breakpoints},this.setBreakpoints=function(e){this.$breakpoints=[];for(var t=0;t0&&(r=!!n.charAt(t-1).match(this.tokenRe)),r||(r=!!n.charAt(t).match(this.tokenRe));if(r)var i=this.tokenRe;else if(/^\s+$/.test(n.slice(t-1,t+1)))var i=/\s/;else var i=this.nonTokenRe;var s=t;if(s>0){do s--;while(s>=0&&n.charAt(s).match(i));s++}var o=t;while(oe&&(e=t.screenWidth)}),this.lineWidgetWidth=e},this.$computeWidth=function(e){if(this.$modified||e){this.$modified=!1;if(this.$useWrapMode)return this.screenWidth=this.$wrapLimit;var t=this.doc.getAllLines(),n=this.$rowLengthCache,r=0,i=0,s=this.$foldData[i],o=s?s.start.row:Infinity,u=t.length;for(var a=0;ao){a=s.end.row+1;if(a>=u)break;s=this.$foldData[i++],o=s?s.start.row:Infinity}n[a]==null&&(n[a]=this.$getStringScreenWidth(t[a])[0]),n[a]>r&&(r=n[a])}this.screenWidth=r}},this.getLine=function(e){return this.doc.getLine(e)},this.getLines=function(e,t){return this.doc.getLines(e,t)},this.getLength=function(){return this.doc.getLength()},this.getTextRange=function(e){return this.doc.getTextRange(e||this.selection.getRange())},this.insert=function(e,t){return this.doc.insert(e,t)},this.remove=function(e){return this.doc.remove(e)},this.removeFullLines=function(e,t){return this.doc.removeFullLines(e,t)},this.undoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=e.length-1;r!=-1;r--){var i=e[r];i.group=="doc"?(this.doc.revertDeltas(i.deltas),n=this.$getUndoSelection(i.deltas,!0,n)):i.deltas.forEach(function(e){this.addFolds(e.folds)},this)}return this.$fromUndo=!1,n&&this.$undoSelect&&!t&&this.selection.setSelectionRange(n),n},this.redoChanges=function(e,t){if(!e.length)return;this.$fromUndo=!0;var n=null;for(var r=0;re.end.column&&(s.start.column+=u),s.end.row==e.end.row&&s.end.column>e.end.column&&(s.end.column+=u)),o&&s.start.row>=e.end.row&&(s.start.row+=o,s.end.row+=o)}s.end=this.insert(s.start,r);if(i.length){var a=e.start,l=s.start,o=l.row-a.row,u=l.column-a.column;this.addFolds(i.map(function(e){return e=e.clone(),e.start.row==a.row&&(e.start.column+=u),e.end.row==a.row&&(e.end.column+=u),e.start.row+=o,e.end.row+=o,e}))}return s},this.indentRows=function(e,t,n){n=n.replace(/\t/g,this.getTabString());for(var r=e;r<=t;r++)this.doc.insertInLine({row:r,column:0},n)},this.outdentRows=function(e){var t=e.collapseRows(),n=new f(0,0,0,0),r=this.getTabSize();for(var i=t.start.row;i<=t.end.row;++i){var s=this.getLine(i);n.start.row=i,n.end.row=i;for(var o=0;o0){var r=this.getRowFoldEnd(t+n);if(r>this.doc.getLength()-1)return 0;var i=r-t}else{e=this.$clipRowToDocument(e),t=this.$clipRowToDocument(t);var i=t-e+1}var s=new f(e,0,t,Number.MAX_VALUE),o=this.getFoldsInRange(s).map(function(e){return e=e.clone(),e.start.row+=i,e.end.row+=i,e}),u=n==0?this.doc.getLines(e,t):this.doc.removeFullLines(e,t);return this.doc.insertFullLines(e+i,u),o.length&&this.addFolds(o),i},this.moveLinesUp=function(e,t){return this.$moveLines(e,t,-1)},this.moveLinesDown=function(e,t){return this.$moveLines(e,t,1)},this.duplicateLines=function(e,t){return this.$moveLines(e,t,0)},this.$clipRowToDocument=function(e){return Math.max(0,Math.min(e,this.doc.getLength()-1))},this.$clipColumnToRow=function(e,t){return t<0?0:Math.min(this.doc.getLine(e).length,t)},this.$clipPositionToDocument=function(e,t){t=Math.max(0,t);if(e<0)e=0,t=0;else{var n=this.doc.getLength();e>=n?(e=n-1,t=this.doc.getLine(n-1).length):t=Math.min(this.doc.getLine(e).length,t)}return{row:e,column:t}},this.$clipRangeToDocument=function(e){e.start.row<0?(e.start.row=0,e.start.column=0):e.start.column=this.$clipColumnToRow(e.start.row,e.start.column);var t=this.doc.getLength()-1;return e.end.row>t?(e.end.row=t,e.end.column=this.doc.getLine(t).length):e.end.column=this.$clipColumnToRow(e.end.row,e.end.column),e},this.$wrapLimit=80,this.$useWrapMode=!1,this.$wrapLimitRange={min:null,max:null},this.setUseWrapMode=function(e){if(e!=this.$useWrapMode){this.$useWrapMode=e,this.$modified=!0,this.$resetRowCache(0);if(e){var t=this.getLength();this.$wrapData=Array(t),this.$updateWrapData(0,t-1)}this._signal("changeWrapMode")}},this.getUseWrapMode=function(){return this.$useWrapMode},this.setWrapLimitRange=function(e,t){if(this.$wrapLimitRange.min!==e||this.$wrapLimitRange.max!==t)this.$wrapLimitRange={min:e,max:t},this.$modified=!0,this.$useWrapMode&&this._signal("changeWrapMode")},this.adjustWrapLimit=function(e,t){var n=this.$wrapLimitRange;n.max<0&&(n={min:t,max:t});var r=this.$constrainWrapLimit(e,n.min,n.max);return r!=this.$wrapLimit&&r>1?(this.$wrapLimit=r,this.$modified=!0,this.$useWrapMode&&(this.$updateWrapData(0,this.getLength()-1),this.$resetRowCache(0),this._signal("changeWrapLimit")),!0):!1},this.$constrainWrapLimit=function(e,t,n){return t&&(e=Math.max(t,e)),n&&(e=Math.min(n,e)),e},this.getWrapLimit=function(){return this.$wrapLimit},this.setWrapLimit=function(e){this.setWrapLimitRange(e,e)},this.getWrapLimitRange=function(){return{min:this.$wrapLimitRange.min,max:this.$wrapLimitRange.max}},this.$updateInternalDataOnChange=function(e){var t=this.$useWrapMode,n=e.action,r=e.start,i=e.end,s=r.row,o=i.row,u=o-s,a=null;this.$updating=!0;if(u!=0)if(n==="remove"){this[t?"$wrapData":"$rowLengthCache"].splice(s,u);var f=this.$foldData;a=this.getFoldsInRange(e),this.removeFolds(a);var l=this.getFoldLine(i.row),c=0;if(l){l.addRemoveChars(i.row,i.column,r.column-i.column),l.shiftRow(-u);var h=this.getFoldLine(s);h&&h!==l&&(h.merge(l),l=h),c=f.indexOf(l)+1}for(c;c=i.row&&l.shiftRow(-u)}o=s}else{var p=Array(u);p.unshift(s,0);var d=t?this.$wrapData:this.$rowLengthCache;d.splice.apply(d,p);var f=this.$foldData,l=this.getFoldLine(s),c=0;if(l){var v=l.range.compareInside(r.row,r.column);v==0?(l=l.split(r.row,r.column),l&&(l.shiftRow(u),l.addRemoveChars(o,0,i.column-r.column))):v==-1&&(l.addRemoveChars(s,0,i.column-r.column),l.shiftRow(u)),c=f.indexOf(l)+1}for(c;c=s&&l.shiftRow(u)}}else{u=Math.abs(e.start.column-e.end.column),n==="remove"&&(a=this.getFoldsInRange(e),this.removeFolds(a),u=-u);var l=this.getFoldLine(s);l&&l.addRemoveChars(s,r.column,u)}return t&&this.$wrapData.length!=this.doc.getLength()&&console.error("doc.getLength() and $wrapData.length have to be the same!"),this.$updating=!1,t?this.$updateWrapData(s,o):this.$updateRowLengthCache(s,o),a},this.$updateRowLengthCache=function(e,t,n){this.$rowLengthCache[e]=null,this.$rowLengthCache[t]=null},this.$updateWrapData=function(e,t){var r=this.doc.getAllLines(),i=this.getTabSize(),s=this.$wrapData,o=this.$wrapLimit,a,f,l=e;t=Math.min(t,r.length-1);while(l<=t)f=this.getFoldLine(l,f),f?(a=[],f.walk(function(e,t,i,s){var o;if(e!=null){o=this.$getDisplayTokens(e,a.length),o[0]=n;for(var f=1;fr-b){var w=a+r-b;if(e[w-1]>=p&&e[w]>=p){y(w);continue}if(e[w]==n||e[w]==u){for(w;w!=a-1;w--)if(e[w]==n)break;if(w>a){y(w);continue}w=a+r;for(w;w>2)),a-1);while(w>E&&e[w]E&&e[w]E&&e[w]==l)w--}else while(w>E&&e[w]E){y(++w);continue}w=a+r,e[w]==t&&w--,y(w-b)}return s},this.$getDisplayTokens=function(n,r){var i=[],s;r=r||0;for(var o=0;o39&&u<48||u>57&&u<64?i.push(l):u>=4352&&m(u)?i.push(e,t):i.push(e)}return i},this.$getStringScreenWidth=function(e,t,n){if(t==0)return[0,0];t==null&&(t=Infinity),n=n||0;var r,i;for(i=0;i=4352&&m(r)?n+=2:n+=1;if(n>t)break}return[n,i]},this.lineWidgets=null,this.getRowLength=function(e){if(this.lineWidgets)var t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0;else t=0;return!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.getRowLineCount=function(e){return!this.$useWrapMode||!this.$wrapData[e]?1:this.$wrapData[e].length+1},this.getRowWrapIndent=function(e){if(this.$useWrapMode){var t=this.screenToDocumentPosition(e,Number.MAX_VALUE),n=this.$wrapData[t.row];return n.length&&n[0]=0)var o=a[f],r=this.$docRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getLength()-1,p=this.getNextFoldLine(r),d=p?p.start.row:Infinity;while(o<=e){u=this.getRowLength(r);if(o+u>e||r>=h)break;o+=u,r++,r>d&&(r=p.end.row+1,p=this.getNextFoldLine(r,p),d=p?p.start.row:Infinity),c&&(this.$docRowCache.push(r),this.$screenRowCache.push(o))}if(p&&p.start.row<=r)n=this.getFoldDisplayLine(p),r=p.start.row;else{if(o+u<=e||r>h)return{row:h,column:this.getLine(h).length};n=this.getLine(r),p=null}var v=0;if(this.$useWrapMode){var m=this.$wrapData[r];if(m){var g=Math.floor(e-o);s=m[g],g>0&&m.length&&(v=m.indent,i=m[g-1]||m[m.length-1],n=n.substring(i))}}return i+=this.$getStringScreenWidth(n,t-v)[1],this.$useWrapMode&&i>=s&&(i=s-1),p?p.idxToPosition(i):{row:r,column:i}},this.documentToScreenPosition=function(e,t){if(typeof t=="undefined")var n=this.$clipPositionToDocument(e.row,e.column);else n=this.$clipPositionToDocument(e,t);e=n.row,t=n.column;var r=0,i=null,s=null;s=this.getFoldAt(e,t,1),s&&(e=s.start.row,t=s.start.column);var o,u=0,a=this.$docRowCache,f=this.$getRowCacheIndex(a,e),l=a.length;if(l&&f>=0)var u=a[f],r=this.$screenRowCache[f],c=e>a[l-1];else var c=!l;var h=this.getNextFoldLine(u),p=h?h.start.row:Infinity;while(u=p){o=h.end.row+1;if(o>e)break;h=this.getNextFoldLine(o,h),p=h?h.start.row:Infinity}else o=u+1;r+=this.getRowLength(u),u=o,c&&(this.$docRowCache.push(u),this.$screenRowCache.push(r))}var d="";h&&u>=p?(d=this.getFoldDisplayLine(h,e,t),i=h.start.row):(d=this.getLine(e).substring(0,t),i=e);var v=0;if(this.$useWrapMode){var m=this.$wrapData[i];if(m){var g=0;while(d.length>=m[g])r++,g++;d=d.substring(m[g-1]||0,d.length),v=g>0?m.indent:0}}return{row:r,column:v+this.$getStringScreenWidth(d)[0]}},this.documentToScreenColumn=function(e,t){return this.documentToScreenPosition(e,t).column},this.documentToScreenRow=function(e,t){return this.documentToScreenPosition(e,t).row},this.getScreenLength=function(){var e=0,t=null;if(!this.$useWrapMode){e=this.getLength();var n=this.$foldData;for(var r=0;ro&&(s=t.end.row+1,t=this.$foldData[r++],o=t?t.start.row:Infinity)}}return this.lineWidgets&&(e+=this.$getWidgetScreenLength()),e},this.$setFontMetrics=function(e){if(!this.$enableVarChar)return;this.$getStringScreenWidth=function(t,n,r){if(n===0)return[0,0];n||(n=Infinity),r=r||0;var i,s;for(s=0;sn)break}return[r,s]}},this.destroy=function(){this.bgTokenizer&&(this.bgTokenizer.setDocument(null),this.bgTokenizer=null),this.$stopWorker()}}).call(p.prototype),e("./edit_session/folding").Folding.call(p.prototype),e("./edit_session/bracket_match").BracketMatch.call(p.prototype),s.defineOptions(p.prototype,"session",{wrap:{set:function(e){!e||e=="off"?e=!1:e=="free"?e=!0:e=="printMargin"?e=-1:typeof e=="string"&&(e=parseInt(e,10)||!1);if(this.$wrap==e)return;this.$wrap=e;if(!e)this.setUseWrapMode(!1);else{var t=typeof e=="number"?e:null;this.setWrapLimitRange(t,t),this.setUseWrapMode(!0)}},get:function(){return this.getUseWrapMode()?this.$wrap==-1?"printMargin":this.getWrapLimitRange().min?this.$wrap:"free":"off"},handlesSet:!0},wrapMethod:{set:function(e){e=e=="auto"?this.$mode.type!="text":e!="text",e!=this.$wrapAsCode&&(this.$wrapAsCode=e,this.$useWrapMode&&(this.$modified=!0,this.$resetRowCache(0),this.$updateWrapData(0,this.getLength()-1)))},initialValue:"auto"},indentedSoftWrap:{initialValue:!0},firstLineNumber:{set:function(){this._signal("changeBreakpoint")},initialValue:1},useWorker:{set:function(e){this.$useWorker=e,this.$stopWorker(),e&&this.$startWorker()},initialValue:!0},useSoftTabs:{initialValue:!0},tabSize:{set:function(e){if(isNaN(e)||this.$tabSize===e)return;this.$modified=!0,this.$rowLengthCache=[],this.$tabSize=e,this._signal("changeTabSize")},initialValue:4,handlesSet:!0},overwrite:{set:function(e){this._signal("changeOverwrite")},initialValue:!1},newLineMode:{set:function(e){this.doc.setNewLineMode(e)},get:function(){return this.doc.getNewLineMode()},handlesSet:!0},mode:{set:function(e){this.setMode(e)},get:function(){return this.$modeId}}}),t.EditSession=p}),define("ace/search",["require","exports","module","ace/lib/lang","ace/lib/oop","ace/range"],function(e,t,n){"use strict";function u(e,t){function n(e){return/\w/.test(e)||t.regExp?"\\b":""}return n(e[0])+e+n(e[e.length-1])}var r=e("./lib/lang"),i=e("./lib/oop"),s=e("./range").Range,o=function(){this.$options={}};(function(){this.set=function(e){return i.mixin(this.$options,e),this},this.getOptions=function(){return r.copyObject(this.$options)},this.setOptions=function(e){this.$options=e},this.find=function(e){var t=this.$options,n=this.$matchIterator(e,t);if(!n)return!1;var r=null;return n.forEach(function(e,n,i){if(!e.start){var o=e.offset+(i||0);r=new s(n,o,n,o+e.length);if(!e.length&&t.start&&t.start.start&&t.skipCurrent!=0&&r.isEqual(t.start))return r=null,!1}else r=e;return!0}),r},this.findAll=function(e){var t=this.$options;if(!t.needle)return[];this.$assembleRegExp(t);var n=t.range,i=n?e.getLines(n.start.row,n.end.row):e.doc.getAllLines(),o=[],u=t.re;if(t.$isMultiLine){var a=u.length,f=i.length-a,l;e:for(var c=u.offset||0;c<=f;c++){for(var h=0;hv)continue;o.push(l=new s(c,v,c+a-1,m)),a>2&&(c=c+a-2)}}else for(var g=0;gE&&o[h].end.row==n.end.row)h--;o=o.slice(g,h+1);for(g=0,h=o.length;g=0;u--)if(i(o[u],t,s))return!0};else var u=function(e,t,s){var o=r.getMatchOffsets(e,n);for(var u=0;u=o;r--)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=u,o=s.row;r>=o;r--)if(n(e.getLine(r),r))return}:function(n){var r=s.row,i=e.getLine(r).substr(s.column);if(n(i,r,s.column))return;for(r+=1;r<=u;r++)if(n(e.getLine(r),r))return;if(t.wrap==0)return;for(r=o,u=s.row;r<=u;r++)if(n(e.getLine(r),r))return};return{forEach:a}}}).call(o.prototype),t.Search=o}),define("ace/keyboard/hash_handler",["require","exports","module","ace/lib/keys","ace/lib/useragent"],function(e,t,n){"use strict";function o(e,t){this.platform=t||(i.isMac?"mac":"win"),this.commands={},this.commandKeyBinding={},this.addCommands(e),this.$singleCommand=!0}function u(e,t){o.call(this,e,t),this.$singleCommand=!1}var r=e("../lib/keys"),i=e("../lib/useragent"),s=r.KEY_MODS;u.prototype=o.prototype,function(){function e(e){return typeof e=="object"&&e.bindKey&&e.bindKey.position||0}this.addCommand=function(e){this.commands[e.name]&&this.removeCommand(e),this.commands[e.name]=e,e.bindKey&&this._buildKeyHash(e)},this.removeCommand=function(e,t){var n=e&&(typeof e=="string"?e:e.name);e=this.commands[n],t||delete this.commands[n];var r=this.commandKeyBinding;for(var i in r){var s=r[i];if(s==e)delete r[i];else if(Array.isArray(s)){var o=s.indexOf(e);o!=-1&&(s.splice(o,1),s.length==1&&(r[i]=s[0]))}}},this.bindKey=function(e,t,n){typeof e=="object"&&e&&(n==undefined&&(n=e.position),e=e[this.platform]);if(!e)return;if(typeof t=="function")return this.addCommand({exec:t,bindKey:e,name:t.name||e});e.split("|").forEach(function(e){var r="";if(e.indexOf(" ")!=-1){var i=e.split(/\s+/);e=i.pop(),i.forEach(function(e){var t=this.parseKeys(e),n=s[t.hashId]+t.key;r+=(r?" ":"")+n,this._addCommandToBinding(r,"chainKeys")},this),r+=" "}var o=this.parseKeys(e),u=s[o.hashId]+o.key;this._addCommandToBinding(r+u,t,n)},this)},this._addCommandToBinding=function(t,n,r){var i=this.commandKeyBinding,s;if(!n)delete i[t];else if(!i[t]||this.$singleCommand)i[t]=n;else{Array.isArray(i[t])?(s=i[t].indexOf(n))!=-1&&i[t].splice(s,1):i[t]=[i[t]],typeof r!="number"&&(r||n.isDefault?r=-100:r=e(n));var o=i[t];for(s=0;sr)break}o.splice(s,0,n)}},this.addCommands=function(e){e&&Object.keys(e).forEach(function(t){var n=e[t];if(!n)return;if(typeof n=="string")return this.bindKey(n,t);typeof n=="function"&&(n={exec:n});if(typeof n!="object")return;n.name||(n.name=t),this.addCommand(n)},this)},this.removeCommands=function(e){Object.keys(e).forEach(function(t){this.removeCommand(e[t])},this)},this.bindKeys=function(e){Object.keys(e).forEach(function(t){this.bindKey(t,e[t])},this)},this._buildKeyHash=function(e){this.bindKey(e.bindKey,e)},this.parseKeys=function(e){var t=e.toLowerCase().split(/[\-\+]([\-\+])?/).filter(function(e){return e}),n=t.pop(),i=r[n];if(r.FUNCTION_KEYS[i])n=r.FUNCTION_KEYS[i].toLowerCase();else{if(!t.length)return{key:n,hashId:-1};if(t.length==1&&t[0]=="shift")return{key:n.toUpperCase(),hashId:-1}}var s=0;for(var o=t.length;o--;){var u=r.KEY_MODS[t[o]];if(u==null)return typeof console!="undefined"&&console.error("invalid modifier "+t[o]+" in "+e),!1;s|=u}return{key:n,hashId:s}},this.findKeyCommand=function(t,n){var r=s[t]+n;return this.commandKeyBinding[r]},this.handleKeyboard=function(e,t,n,r){if(r<0)return;var i=s[t]+n,o=this.commandKeyBinding[i];e.$keyChain&&(e.$keyChain+=" "+i,o=this.commandKeyBinding[e.$keyChain]||o);if(o)if(o=="chainKeys"||o[o.length-1]=="chainKeys")return e.$keyChain=e.$keyChain||i,{command:"null"};if(e.$keyChain)if(!!t&&t!=4||n.length!=1){if(t==-1||r>0)e.$keyChain=""}else e.$keyChain=e.$keyChain.slice(0,-i.length-1);return{command:o}},this.getStatusText=function(e,t){return t.$keyChain||""}}.call(o.prototype),t.HashHandler=o,t.MultiHashHandler=u}),define("ace/commands/command_manager",["require","exports","module","ace/lib/oop","ace/keyboard/hash_handler","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../keyboard/hash_handler").MultiHashHandler,s=e("../lib/event_emitter").EventEmitter,o=function(e,t){i.call(this,t,e),this.byName=this.commands,this.setDefaultHandler("exec",function(e){return e.command.exec(e.editor,e.args||{})})};r.inherits(o,i),function(){r.implement(this,s),this.exec=function(e,t,n){if(Array.isArray(e)){for(var r=e.length;r--;)if(this.exec(e[r],t,n))return!0;return!1}typeof e=="string"&&(e=this.commands[e]);if(!e)return!1;if(t&&t.$readOnly&&!e.readOnly)return!1;var i={editor:t,command:e,args:n};return i.returnValue=this._emit("exec",i),this._signal("afterExec",i),i.returnValue===!1?!1:!0},this.toggleRecording=function(e){if(this.$inReplay)return;return e&&e._emit("changeStatus"),this.recording?(this.macro.pop(),this.removeEventListener("exec",this.$addCommandToMacro),this.macro.length||(this.macro=this.oldMacro),this.recording=!1):(this.$addCommandToMacro||(this.$addCommandToMacro=function(e){this.macro.push([e.command,e.args])}.bind(this)),this.oldMacro=this.macro,this.macro=[],this.on("exec",this.$addCommandToMacro),this.recording=!0)},this.replay=function(e){if(this.$inReplay||!this.macro)return;if(this.recording)return this.toggleRecording(e);try{this.$inReplay=!0,this.macro.forEach(function(t){typeof t=="string"?this.exec(t,e):this.exec(t[0],e,t[1])},this)}finally{this.$inReplay=!1}},this.trimMacro=function(e){return e.map(function(e){return typeof e[0]!="string"&&(e[0]=e[0].name),e[1]||(e=e[0]),e})}}.call(o.prototype),t.CommandManager=o}),define("ace/commands/default_commands",["require","exports","module","ace/lib/lang","ace/config","ace/range"],function(e,t,n){"use strict";function o(e,t){return{win:e,mac:t}}var r=e("../lib/lang"),i=e("../config"),s=e("../range").Range;t.commands=[{name:"showSettingsMenu",bindKey:o("Ctrl-,","Command-,"),exec:function(e){i.loadModule("ace/ext/settings_menu",function(t){t.init(e),e.showSettingsMenu()})},readOnly:!0},{name:"goToNextError",bindKey:o("Alt-E","F4"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,1)})},scrollIntoView:"animate",readOnly:!0},{name:"goToPreviousError",bindKey:o("Alt-Shift-E","Shift-F4"),exec:function(e){i.loadModule("ace/ext/error_marker",function(t){t.showErrorMarker(e,-1)})},scrollIntoView:"animate",readOnly:!0},{name:"selectall",bindKey:o("Ctrl-A","Command-A"),exec:function(e){e.selectAll()},readOnly:!0},{name:"centerselection",bindKey:o(null,"Ctrl-L"),exec:function(e){e.centerSelection()},readOnly:!0},{name:"gotoline",bindKey:o("Ctrl-L","Command-L"),exec:function(e){var t=parseInt(prompt("Enter line number:"),10);isNaN(t)||e.gotoLine(t)},readOnly:!0},{name:"fold",bindKey:o("Alt-L|Ctrl-F1","Command-Alt-L|Command-F1"),exec:function(e){e.session.toggleFold(!1)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"unfold",bindKey:o("Alt-Shift-L|Ctrl-Shift-F1","Command-Alt-Shift-L|Command-Shift-F1"),exec:function(e){e.session.toggleFold(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleFoldWidget",bindKey:o("F2","F2"),exec:function(e){e.session.toggleFoldWidget()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"toggleParentFoldWidget",bindKey:o("Alt-F2","Alt-F2"),exec:function(e){e.session.toggleFoldWidget(!0)},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"foldall",bindKey:o(null,"Ctrl-Command-Option-0"),exec:function(e){e.session.foldAll()},scrollIntoView:"center",readOnly:!0},{name:"foldOther",bindKey:o("Alt-0","Command-Option-0"),exec:function(e){e.session.foldAll(),e.session.unfold(e.selection.getAllRanges())},scrollIntoView:"center",readOnly:!0},{name:"unfoldall",bindKey:o("Alt-Shift-0","Command-Option-Shift-0"),exec:function(e){e.session.unfold()},scrollIntoView:"center",readOnly:!0},{name:"findnext",bindKey:o("Ctrl-K","Command-G"),exec:function(e){e.findNext()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"findprevious",bindKey:o("Ctrl-Shift-K","Command-Shift-G"),exec:function(e){e.findPrevious()},multiSelectAction:"forEach",scrollIntoView:"center",readOnly:!0},{name:"selectOrFindNext",bindKey:o("Alt-K","Ctrl-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findNext()},readOnly:!0},{name:"selectOrFindPrevious",bindKey:o("Alt-Shift-K","Ctrl-Shift-G"),exec:function(e){e.selection.isEmpty()?e.selection.selectWord():e.findPrevious()},readOnly:!0},{name:"find",bindKey:o("Ctrl-F","Command-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e)})},readOnly:!0},{name:"overwrite",bindKey:"Insert",exec:function(e){e.toggleOverwrite()},readOnly:!0},{name:"selecttostart",bindKey:o("Ctrl-Shift-Home","Command-Shift-Home|Command-Shift-Up"),exec:function(e){e.getSelection().selectFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotostart",bindKey:o("Ctrl-Home","Command-Home|Command-Up"),exec:function(e){e.navigateFileStart()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectup",bindKey:o("Shift-Up","Shift-Up|Ctrl-Shift-P"),exec:function(e){e.getSelection().selectUp()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golineup",bindKey:o("Up","Up|Ctrl-P"),exec:function(e,t){e.navigateUp(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttoend",bindKey:o("Ctrl-Shift-End","Command-Shift-End|Command-Shift-Down"),exec:function(e){e.getSelection().selectFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"gotoend",bindKey:o("Ctrl-End","Command-End|Command-Down"),exec:function(e){e.navigateFileEnd()},multiSelectAction:"forEach",readOnly:!0,scrollIntoView:"animate",aceCommandGroup:"fileJump"},{name:"selectdown",bindKey:o("Shift-Down","Shift-Down|Ctrl-Shift-N"),exec:function(e){e.getSelection().selectDown()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"golinedown",bindKey:o("Down","Down|Ctrl-N"),exec:function(e,t){e.navigateDown(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordleft",bindKey:o("Ctrl-Shift-Left","Option-Shift-Left"),exec:function(e){e.getSelection().selectWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordleft",bindKey:o("Ctrl-Left","Option-Left"),exec:function(e){e.navigateWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolinestart",bindKey:o("Alt-Shift-Left","Command-Shift-Left|Ctrl-Shift-A"),exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolinestart",bindKey:o("Alt-Left|Home","Command-Left|Home|Ctrl-A"),exec:function(e){e.navigateLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectleft",bindKey:o("Shift-Left","Shift-Left|Ctrl-Shift-B"),exec:function(e){e.getSelection().selectLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoleft",bindKey:o("Left","Left|Ctrl-B"),exec:function(e,t){e.navigateLeft(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectwordright",bindKey:o("Ctrl-Shift-Right","Option-Shift-Right"),exec:function(e){e.getSelection().selectWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotowordright",bindKey:o("Ctrl-Right","Option-Right"),exec:function(e){e.navigateWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selecttolineend",bindKey:o("Alt-Shift-Right","Command-Shift-Right|Shift-End|Ctrl-Shift-E"),exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotolineend",bindKey:o("Alt-Right|End","Command-Right|End|Ctrl-E"),exec:function(e){e.navigateLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectright",bindKey:o("Shift-Right","Shift-Right"),exec:function(e){e.getSelection().selectRight()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"gotoright",bindKey:o("Right","Right|Ctrl-F"),exec:function(e,t){e.navigateRight(t.times)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectpagedown",bindKey:"Shift-PageDown",exec:function(e){e.selectPageDown()},readOnly:!0},{name:"pagedown",bindKey:o(null,"Option-PageDown"),exec:function(e){e.scrollPageDown()},readOnly:!0},{name:"gotopagedown",bindKey:o("PageDown","PageDown|Ctrl-V"),exec:function(e){e.gotoPageDown()},readOnly:!0},{name:"selectpageup",bindKey:"Shift-PageUp",exec:function(e){e.selectPageUp()},readOnly:!0},{name:"pageup",bindKey:o(null,"Option-PageUp"),exec:function(e){e.scrollPageUp()},readOnly:!0},{name:"gotopageup",bindKey:"PageUp",exec:function(e){e.gotoPageUp()},readOnly:!0},{name:"scrollup",bindKey:o("Ctrl-Up",null),exec:function(e){e.renderer.scrollBy(0,-2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"scrolldown",bindKey:o("Ctrl-Down",null),exec:function(e){e.renderer.scrollBy(0,2*e.renderer.layerConfig.lineHeight)},readOnly:!0},{name:"selectlinestart",bindKey:"Shift-Home",exec:function(e){e.getSelection().selectLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"selectlineend",bindKey:"Shift-End",exec:function(e){e.getSelection().selectLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"togglerecording",bindKey:o("Ctrl-Alt-E","Command-Option-E"),exec:function(e){e.commands.toggleRecording(e)},readOnly:!0},{name:"replaymacro",bindKey:o("Ctrl-Shift-E","Command-Shift-E"),exec:function(e){e.commands.replay(e)},readOnly:!0},{name:"jumptomatching",bindKey:o("Ctrl-P","Ctrl-P"),exec:function(e){e.jumpToMatching()},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"selecttomatching",bindKey:o("Ctrl-Shift-P","Ctrl-Shift-P"),exec:function(e){e.jumpToMatching(!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"expandToMatching",bindKey:o("Ctrl-Shift-M","Ctrl-Shift-M"),exec:function(e){e.jumpToMatching(!0,!0)},multiSelectAction:"forEach",scrollIntoView:"animate",readOnly:!0},{name:"passKeysToBrowser",bindKey:o(null,null),exec:function(){},passEvent:!0,readOnly:!0},{name:"copy",exec:function(e){},readOnly:!0},{name:"cut",exec:function(e){var t=e.getSelectionRange();e._emit("cut",t),e.selection.isEmpty()||(e.session.remove(t),e.clearSelection())},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"paste",exec:function(e,t){e.$handlePaste(t)},scrollIntoView:"cursor"},{name:"removeline",bindKey:o("Ctrl-D","Command-D"),exec:function(e){e.removeLines()},scrollIntoView:"cursor",multiSelectAction:"forEachLine"},{name:"duplicateSelection",bindKey:o("Ctrl-Shift-D","Command-Shift-D"),exec:function(e){e.duplicateSelection()},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"sortlines",bindKey:o("Ctrl-Alt-S","Command-Alt-S"),exec:function(e){e.sortLines()},scrollIntoView:"selection",multiSelectAction:"forEachLine"},{name:"togglecomment",bindKey:o("Ctrl-/","Command-/"),exec:function(e){e.toggleCommentLines()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"toggleBlockComment",bindKey:o("Ctrl-Shift-/","Command-Shift-/"),exec:function(e){e.toggleBlockComment()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"modifyNumberUp",bindKey:o("Ctrl-Shift-Up","Alt-Shift-Up"),exec:function(e){e.modifyNumber(1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"modifyNumberDown",bindKey:o("Ctrl-Shift-Down","Alt-Shift-Down"),exec:function(e){e.modifyNumber(-1)},scrollIntoView:"cursor",multiSelectAction:"forEach"},{name:"replace",bindKey:o("Ctrl-H","Command-Option-F"),exec:function(e){i.loadModule("ace/ext/searchbox",function(t){t.Search(e,!0)})}},{name:"undo",bindKey:o("Ctrl-Z","Command-Z"),exec:function(e){e.undo()}},{name:"redo",bindKey:o("Ctrl-Shift-Z|Ctrl-Y","Command-Shift-Z|Command-Y"),exec:function(e){e.redo()}},{name:"copylinesup",bindKey:o("Alt-Shift-Up","Command-Option-Up"),exec:function(e){e.copyLinesUp()},scrollIntoView:"cursor"},{name:"movelinesup",bindKey:o("Alt-Up","Option-Up"),exec:function(e){e.moveLinesUp()},scrollIntoView:"cursor"},{name:"copylinesdown",bindKey:o("Alt-Shift-Down","Command-Option-Down"),exec:function(e){e.copyLinesDown()},scrollIntoView:"cursor"},{name:"movelinesdown",bindKey:o("Alt-Down","Option-Down"),exec:function(e){e.moveLinesDown()},scrollIntoView:"cursor"},{name:"del",bindKey:o("Delete","Delete|Ctrl-D|Shift-Delete"),exec:function(e){e.remove("right")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"backspace",bindKey:o("Shift-Backspace|Backspace","Ctrl-Backspace|Shift-Backspace|Backspace|Ctrl-H"),exec:function(e){e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"cut_or_delete",bindKey:o("Shift-Delete",null),exec:function(e){if(!e.selection.isEmpty())return!1;e.remove("left")},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolinestart",bindKey:o("Alt-Backspace","Command-Backspace"),exec:function(e){e.removeToLineStart()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removetolineend",bindKey:o("Alt-Delete","Ctrl-K"),exec:function(e){e.removeToLineEnd()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordleft",bindKey:o("Ctrl-Backspace","Alt-Backspace|Ctrl-Alt-Backspace"),exec:function(e){e.removeWordLeft()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"removewordright",bindKey:o("Ctrl-Delete","Alt-Delete"),exec:function(e){e.removeWordRight()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"outdent",bindKey:o("Shift-Tab","Shift-Tab"),exec:function(e){e.blockOutdent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"indent",bindKey:o("Tab","Tab"),exec:function(e){e.indent()},multiSelectAction:"forEach",scrollIntoView:"selectionPart"},{name:"blockoutdent",bindKey:o("Ctrl-[","Ctrl-["),exec:function(e){e.blockOutdent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"blockindent",bindKey:o("Ctrl-]","Ctrl-]"),exec:function(e){e.blockIndent()},multiSelectAction:"forEachLine",scrollIntoView:"selectionPart"},{name:"insertstring",exec:function(e,t){e.insert(t)},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"inserttext",exec:function(e,t){e.insert(r.stringRepeat(t.text||"",t.times||1))},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"splitline",bindKey:o(null,"Ctrl-O"),exec:function(e){e.splitLine()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"transposeletters",bindKey:o("Ctrl-T","Ctrl-T"),exec:function(e){e.transposeLetters()},multiSelectAction:function(e){e.transposeSelections(1)},scrollIntoView:"cursor"},{name:"touppercase",bindKey:o("Ctrl-U","Ctrl-U"),exec:function(e){e.toUpperCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"tolowercase",bindKey:o("Ctrl-Shift-U","Ctrl-Shift-U"),exec:function(e){e.toLowerCase()},multiSelectAction:"forEach",scrollIntoView:"cursor"},{name:"expandtoline",bindKey:o("Ctrl-Shift-L","Command-Shift-L"),exec:function(e){var t=e.selection.getRange();t.start.column=t.end.column=0,t.end.row++,e.selection.setRange(t,!1)},multiSelectAction:"forEach",scrollIntoView:"cursor",readOnly:!0},{name:"joinlines",bindKey:o(null,null),exec:function(e){var t=e.selection.isBackwards(),n=t?e.selection.getSelectionLead():e.selection.getSelectionAnchor(),i=t?e.selection.getSelectionAnchor():e.selection.getSelectionLead(),o=e.session.doc.getLine(n.row).length,u=e.session.doc.getTextRange(e.selection.getRange()),a=u.replace(/\n\s*/," ").length,f=e.session.doc.getLine(n.row);for(var l=n.row+1;l<=i.row+1;l++){var c=r.stringTrimLeft(r.stringTrimRight(e.session.doc.getLine(l)));c.length!==0&&(c=" "+c),f+=c}i.row+10?(e.selection.moveCursorTo(n.row,n.column),e.selection.selectTo(n.row,n.column+a)):(o=e.session.doc.getLine(n.row).length>o?o+1:o,e.selection.moveCursorTo(n.row,o))},multiSelectAction:"forEach",readOnly:!0},{name:"invertSelection",bindKey:o(null,null),exec:function(e){var t=e.session.doc.getLength()-1,n=e.session.doc.getLine(t).length,r=e.selection.rangeList.ranges,i=[];r.length<1&&(r=[e.selection.getRange()]);for(var o=0;o0&&this.$blockScrolling--;var n=t&&t.scrollIntoView;if(n){switch(n){case"center-animate":n="animate";case"center":this.renderer.scrollCursorIntoView(null,.5);break;case"animate":case"cursor":this.renderer.scrollCursorIntoView();break;case"selectionPart":var r=this.selection.getRange(),i=this.renderer.layerConfig;(r.start.row>=i.lastRow||r.end.row<=i.firstRow)&&this.renderer.scrollSelectionIntoView(this.selection.anchor,this.selection.lead);break;default:}n=="animate"&&this.renderer.animateScrolling(this.curOp.scrollTop)}this.prevOp=this.curOp,this.curOp=null}},this.$mergeableCommands=["backspace","del","insertstring"],this.$historyTracker=function(e){if(!this.$mergeUndoDeltas)return;var t=this.prevOp,n=this.$mergeableCommands,r=t.command&&e.command.name==t.command.name;if(e.command.name=="insertstring"){var i=e.args;this.mergeNextCommand===undefined&&(this.mergeNextCommand=!0),r=r&&this.mergeNextCommand&&(!/\s/.test(i)||/\s/.test(t.args)),this.mergeNextCommand=!0}else r=r&&n.indexOf(e.command.name)!==-1;this.$mergeUndoDeltas!="always"&&Date.now()-this.sequenceStartTime>2e3&&(r=!1),r?this.session.mergeUndoDeltas=!0:n.indexOf(e.command.name)!==-1&&(this.sequenceStartTime=Date.now())},this.setKeyboardHandler=function(e,t){if(e&&typeof e=="string"){this.$keybindingId=e;var n=this;g.loadModule(["keybinding",e],function(r){n.$keybindingId==e&&n.keyBinding.setKeyboardHandler(r&&r.handler),t&&t()})}else this.$keybindingId=null,this.keyBinding.setKeyboardHandler(e),t&&t()},this.getKeyboardHandler=function(){return this.keyBinding.getKeyboardHandler()},this.setSession=function(e){if(this.session==e)return;this.curOp&&this.endOperation(),this.curOp={};var t=this.session;if(t){this.session.off("change",this.$onDocumentChange),this.session.off("changeMode",this.$onChangeMode),this.session.off("tokenizerUpdate",this.$onTokenizerUpdate),this.session.off("changeTabSize",this.$onChangeTabSize),this.session.off("changeWrapLimit",this.$onChangeWrapLimit),this.session.off("changeWrapMode",this.$onChangeWrapMode),this.session.off("changeFold",this.$onChangeFold),this.session.off("changeFrontMarker",this.$onChangeFrontMarker),this.session.off("changeBackMarker",this.$onChangeBackMarker),this.session.off("changeBreakpoint",this.$onChangeBreakpoint),this.session.off("changeAnnotation",this.$onChangeAnnotation),this.session.off("changeOverwrite",this.$onCursorChange),this.session.off("changeScrollTop",this.$onScrollTopChange),this.session.off("changeScrollLeft",this.$onScrollLeftChange);var n=this.session.getSelection();n.off("changeCursor",this.$onCursorChange),n.off("changeSelection",this.$onSelectionChange)}this.session=e,e?(this.$onDocumentChange=this.onDocumentChange.bind(this),e.on("change",this.$onDocumentChange),this.renderer.setSession(e),this.$onChangeMode=this.onChangeMode.bind(this),e.on("changeMode",this.$onChangeMode),this.$onTokenizerUpdate=this.onTokenizerUpdate.bind(this),e.on("tokenizerUpdate",this.$onTokenizerUpdate),this.$onChangeTabSize=this.renderer.onChangeTabSize.bind(this.renderer),e.on("changeTabSize",this.$onChangeTabSize),this.$onChangeWrapLimit=this.onChangeWrapLimit.bind(this),e.on("changeWrapLimit",this.$onChangeWrapLimit),this.$onChangeWrapMode=this.onChangeWrapMode.bind(this),e.on("changeWrapMode",this.$onChangeWrapMode),this.$onChangeFold=this.onChangeFold.bind(this),e.on("changeFold",this.$onChangeFold),this.$onChangeFrontMarker=this.onChangeFrontMarker.bind(this),this.session.on("changeFrontMarker",this.$onChangeFrontMarker),this.$onChangeBackMarker=this.onChangeBackMarker.bind(this),this.session.on("changeBackMarker",this.$onChangeBackMarker),this.$onChangeBreakpoint=this.onChangeBreakpoint.bind(this),this.session.on("changeBreakpoint",this.$onChangeBreakpoint),this.$onChangeAnnotation=this.onChangeAnnotation.bind(this),this.session.on("changeAnnotation",this.$onChangeAnnotation),this.$onCursorChange=this.onCursorChange.bind(this),this.session.on("changeOverwrite",this.$onCursorChange),this.$onScrollTopChange=this.onScrollTopChange.bind(this),this.session.on("changeScrollTop",this.$onScrollTopChange),this.$onScrollLeftChange=this.onScrollLeftChange.bind(this),this.session.on("changeScrollLeft",this.$onScrollLeftChange),this.selection=e.getSelection(),this.selection.on("changeCursor",this.$onCursorChange),this.$onSelectionChange=this.onSelectionChange.bind(this),this.selection.on("changeSelection",this.$onSelectionChange),this.onChangeMode(),this.$blockScrolling+=1,this.onCursorChange(),this.$blockScrolling-=1,this.onScrollTopChange(),this.onScrollLeftChange(),this.onSelectionChange(),this.onChangeFrontMarker(),this.onChangeBackMarker(),this.onChangeBreakpoint(),this.onChangeAnnotation(),this.session.getUseWrapMode()&&this.renderer.adjustWrapLimit(),this.renderer.updateFull()):(this.selection=null,this.renderer.setSession(e)),this._signal("changeSession",{session:e,oldSession:t}),this.curOp=null,t&&t._signal("changeEditor",{oldEditor:this}),e&&e._signal("changeEditor",{editor:this})},this.getSession=function(){return this.session},this.setValue=function(e,t){return this.session.doc.setValue(e),t?t==1?this.navigateFileEnd():t==-1&&this.navigateFileStart():this.selectAll(),e},this.getValue=function(){return this.session.getValue()},this.getSelection=function(){return this.selection},this.resize=function(e){this.renderer.onResize(e)},this.setTheme=function(e,t){this.renderer.setTheme(e,t)},this.getTheme=function(){return this.renderer.getTheme()},this.setStyle=function(e){this.renderer.setStyle(e)},this.unsetStyle=function(e){this.renderer.unsetStyle(e)},this.getFontSize=function(){return this.getOption("fontSize")||i.computedStyle(this.container,"fontSize")},this.setFontSize=function(e){this.setOption("fontSize",e)},this.$highlightBrackets=function(){this.session.$bracketHighlight&&(this.session.removeMarker(this.session.$bracketHighlight),this.session.$bracketHighlight=null);if(this.$highlightPending)return;var e=this;this.$highlightPending=!0,setTimeout(function(){e.$highlightPending=!1;var t=e.session;if(!t||!t.bgTokenizer)return;var n=t.findMatchingBracket(e.getCursorPosition());if(n)var r=new p(n.row,n.column,n.row,n.column+1);else if(t.$mode.getMatching)var r=t.$mode.getMatching(e.session);r&&(t.$bracketHighlight=t.addMarker(r,"ace_bracket","text"))},50)},this.$highlightTags=function(){if(this.$highlightTagPending)return;var e=this;this.$highlightTagPending=!0,setTimeout(function(){e.$highlightTagPending=!1;var t=e.session;if(!t||!t.bgTokenizer)return;var n=e.getCursorPosition(),r=new y(e.session,n.row,n.column),i=r.getCurrentToken();if(!i||!/\b(?:tag-open|tag-name)/.test(i.type)){t.removeMarker(t.$tagHighlight),t.$tagHighlight=null;return}if(i.type.indexOf("tag-open")!=-1){i=r.stepForward();if(!i)return}var s=i.value,o=0,u=r.stepBackward();if(u.value=="<"){do u=i,i=r.stepForward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="=0)}else{do i=u,u=r.stepBackward(),i&&i.value===s&&i.type.indexOf("tag-name")!==-1&&(u.value==="<"?o++:u.value==="1)&&(t=!1)}if(e.$highlightLineMarker&&!t)e.removeMarker(e.$highlightLineMarker.id),e.$highlightLineMarker=null;else if(!e.$highlightLineMarker&&t){var n=new p(t.row,t.column,t.row,Infinity);n.id=e.addMarker(n,"ace_active-line","screenLine"),e.$highlightLineMarker=n}else t&&(e.$highlightLineMarker.start.row=t.row,e.$highlightLineMarker.end.row=t.row,e.$highlightLineMarker.start.column=t.column,e._signal("changeBackMarker"))},this.onSelectionChange=function(e){var t=this.session;t.$selectionMarker&&t.removeMarker(t.$selectionMarker),t.$selectionMarker=null;if(!this.selection.isEmpty()){var n=this.selection.getRange(),r=this.getSelectionStyle();t.$selectionMarker=t.addMarker(n,"ace_selection",r)}else this.$updateHighlightActiveLine();var i=this.$highlightSelectedWord&&this.$getSelectionHighLightRegexp();this.session.highlight(i),this._signal("changeSelection")},this.$getSelectionHighLightRegexp=function(){var e=this.session,t=this.getSelectionRange();if(t.isEmpty()||t.isMultiLine())return;var n=t.start.column-1,r=t.end.column+1,i=e.getLine(t.start.row),s=i.length,o=i.substring(Math.max(n,0),Math.min(r,s));if(n>=0&&/^[\w\d]/.test(o)||r<=s&&/[\w\d]$/.test(o))return;o=i.substring(t.start.column,t.end.column);if(!/^[\w\d]+$/.test(o))return;var u=this.$search.$assembleRegExp({wholeWord:!0,caseSensitive:!0,needle:o});return u},this.onChangeFrontMarker=function(){this.renderer.updateFrontMarkers()},this.onChangeBackMarker=function(){this.renderer.updateBackMarkers()},this.onChangeBreakpoint=function(){this.renderer.updateBreakpoints()},this.onChangeAnnotation=function(){this.renderer.setAnnotations(this.session.getAnnotations())},this.onChangeMode=function(e){this.renderer.updateText(),this._emit("changeMode",e)},this.onChangeWrapLimit=function(){this.renderer.updateFull()},this.onChangeWrapMode=function(){this.renderer.onResize(!0)},this.onChangeFold=function(){this.$updateHighlightActiveLine(),this.renderer.updateFull()},this.getSelectedText=function(){return this.session.getTextRange(this.getSelectionRange())},this.getCopyText=function(){var e=this.getSelectedText();return this._signal("copy",e),e},this.onCopy=function(){this.commands.exec("copy",this)},this.onCut=function(){this.commands.exec("cut",this)},this.onPaste=function(e,t){var n={text:e,event:t};this.commands.exec("paste",this,n)},this.$handlePaste=function(e){typeof e=="string"&&(e={text:e}),this._signal("paste",e);var t=e.text;if(!this.inMultiSelectMode||this.inVirtualSelectionMode)this.insert(t);else{var n=t.split(/\r\n|\r|\n/),r=this.selection.rangeList.ranges;if(n.length>r.length||n.length<2||!n[1])return this.commands.exec("insertstring",this,t);for(var i=r.length;i--;){var s=r[i];s.isEmpty()||this.session.remove(s),this.session.insert(s.start,n[i])}}},this.execCommand=function(e,t){return this.commands.exec(e,this,t)},this.insert=function(e,t){var n=this.session,r=n.getMode(),i=this.getCursorPosition();if(this.getBehavioursEnabled()&&!t){var s=r.transformAction(n.getState(i.row),"insertion",this,n,e);s&&(e!==s.text&&(this.session.mergeUndoDeltas=!1,this.$mergeNextCommand=!1),e=s.text)}e==" "&&(e=this.session.getTabString());if(!this.selection.isEmpty()){var o=this.getSelectionRange();i=this.session.remove(o),this.clearSelection()}else if(this.session.getOverwrite()){var o=new p.fromPoints(i,i);o.end.column+=e.length,this.session.remove(o)}if(e=="\n"||e=="\r\n"){var u=n.getLine(i.row);if(i.column>u.search(/\S|$/)){var a=u.substr(i.column).search(/\S|$/);n.doc.removeInLine(i.row,i.column,i.column+a)}}this.clearSelection();var f=i.column,l=n.getState(i.row),u=n.getLine(i.row),c=r.checkOutdent(l,u,e),h=n.insert(i,e);s&&s.selection&&(s.selection.length==2?this.selection.setSelectionRange(new p(i.row,f+s.selection[0],i.row,f+s.selection[1])):this.selection.setSelectionRange(new p(i.row+s.selection[0],s.selection[1],i.row+s.selection[2],s.selection[3])));if(n.getDocument().isNewLine(e)){var d=r.getNextLineIndent(l,u.slice(0,i.column),n.getTabString());n.insert({row:i.row+1,column:0},d)}c&&r.autoOutdent(l,n,i.row)},this.onTextInput=function(e){this.keyBinding.onTextInput(e)},this.onCommandKey=function(e,t,n){this.keyBinding.onCommandKey(e,t,n)},this.setOverwrite=function(e){this.session.setOverwrite(e)},this.getOverwrite=function(){return this.session.getOverwrite()},this.toggleOverwrite=function(){this.session.toggleOverwrite()},this.setScrollSpeed=function(e){this.setOption("scrollSpeed",e)},this.getScrollSpeed=function(){return this.getOption("scrollSpeed")},this.setDragDelay=function(e){this.setOption("dragDelay",e)},this.getDragDelay=function(){return this.getOption("dragDelay")},this.setSelectionStyle=function(e){this.setOption("selectionStyle",e)},this.getSelectionStyle=function(){return this.getOption("selectionStyle")},this.setHighlightActiveLine=function(e){this.setOption("highlightActiveLine",e)},this.getHighlightActiveLine=function(){return this.getOption("highlightActiveLine")},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.setHighlightSelectedWord=function(e){this.setOption("highlightSelectedWord",e)},this.getHighlightSelectedWord=function(){return this.$highlightSelectedWord},this.setAnimatedScroll=function(e){this.renderer.setAnimatedScroll(e)},this.getAnimatedScroll=function(){return this.renderer.getAnimatedScroll()},this.setShowInvisibles=function(e){this.renderer.setShowInvisibles(e)},this.getShowInvisibles=function(){return this.renderer.getShowInvisibles()},this.setDisplayIndentGuides=function(e){this.renderer.setDisplayIndentGuides(e)},this.getDisplayIndentGuides=function(){return this.renderer.getDisplayIndentGuides()},this.setShowPrintMargin=function(e){this.renderer.setShowPrintMargin(e)},this.getShowPrintMargin=function(){return this.renderer.getShowPrintMargin()},this.setPrintMarginColumn=function(e){this.renderer.setPrintMarginColumn(e)},this.getPrintMarginColumn=function(){return this.renderer.getPrintMarginColumn()},this.setReadOnly=function(e){this.setOption("readOnly",e)},this.getReadOnly=function(){return this.getOption("readOnly")},this.setBehavioursEnabled=function(e){this.setOption("behavioursEnabled",e)},this.getBehavioursEnabled=function(){return this.getOption("behavioursEnabled")},this.setWrapBehavioursEnabled=function(e){this.setOption("wrapBehavioursEnabled",e)},this.getWrapBehavioursEnabled=function(){return this.getOption("wrapBehavioursEnabled")},this.setShowFoldWidgets=function(e){this.setOption("showFoldWidgets",e)},this.getShowFoldWidgets=function(){return this.getOption("showFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.remove=function(e){this.selection.isEmpty()&&(e=="left"?this.selection.selectLeft():this.selection.selectRight());var t=this.getSelectionRange();if(this.getBehavioursEnabled()){var n=this.session,r=n.getState(t.start.row),i=n.getMode().transformAction(r,"deletion",this,n,t);if(t.end.column===0){var s=n.getTextRange(t);if(s[s.length-1]=="\n"){var o=n.getLine(t.end.row);/^\s+$/.test(o)&&(t.end.column=o.length)}}i&&(t=i)}this.session.remove(t),this.clearSelection()},this.removeWordRight=function(){this.selection.isEmpty()&&this.selection.selectWordRight(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeWordLeft=function(){this.selection.isEmpty()&&this.selection.selectWordLeft(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineStart=function(){this.selection.isEmpty()&&this.selection.selectLineStart(),this.session.remove(this.getSelectionRange()),this.clearSelection()},this.removeToLineEnd=function(){this.selection.isEmpty()&&this.selection.selectLineEnd();var e=this.getSelectionRange();e.start.column==e.end.column&&e.start.row==e.end.row&&(e.end.column=0,e.end.row++),this.session.remove(e),this.clearSelection()},this.splitLine=function(){this.selection.isEmpty()||(this.session.remove(this.getSelectionRange()),this.clearSelection());var e=this.getCursorPosition();this.insert("\n"),this.moveCursorToPosition(e)},this.transposeLetters=function(){if(!this.selection.isEmpty())return;var e=this.getCursorPosition(),t=e.column;if(t===0)return;var n=this.session.getLine(e.row),r,i;tt.toLowerCase()?1:0});var r=new p(0,0,0,0);for(var i=e.first;i<=e.last;i++){var s=t.getLine(i);r.start.row=i,r.end.row=i,r.end.column=s.length,t.replace(r,n[i-e.first])}},this.toggleCommentLines=function(){var e=this.session.getState(this.getCursorPosition().row),t=this.$getSelectedRows();this.session.getMode().toggleCommentLines(e,this.session,t.first,t.last)},this.toggleBlockComment=function(){var e=this.getCursorPosition(),t=this.session.getState(e.row),n=this.getSelectionRange();this.session.getMode().toggleBlockComment(t,this.session,n,e)},this.getNumberAt=function(e,t){var n=/[\-]?[0-9]+(?:\.[0-9]+)?/g;n.lastIndex=0;var r=this.session.getLine(e);while(n.lastIndex=t){var s={value:i[0],start:i.index,end:i.index+i[0].length};return s}}return null},this.modifyNumber=function(e){var t=this.selection.getCursor().row,n=this.selection.getCursor().column,r=new p(t,n-1,t,n),i=this.session.getTextRange(r);if(!isNaN(parseFloat(i))&&isFinite(i)){var s=this.getNumberAt(t,n);if(s){var o=s.value.indexOf(".")>=0?s.start+s.value.indexOf(".")+1:s.end,u=s.start+s.value.length-o,a=parseFloat(s.value);a*=Math.pow(10,u),o!==s.end&&np+1)break;p=d.last}l--,u=this.session.$moveLines(h,p,t?0:e),t&&e==-1&&(c=l+1);while(c<=l)o[c].moveBy(u,0),c++;t||(u=0),a+=u}i.fromOrientedRange(i.ranges[0]),i.rangeList.attach(this.session),this.inVirtualSelectionMode=!1}},this.$getSelectedRows=function(e){return e=(e||this.getSelectionRange()).collapseRows(),{first:this.session.getRowFoldStart(e.start.row),last:this.session.getRowFoldEnd(e.end.row)}},this.onCompositionStart=function(e){this.renderer.showComposition(this.getCursorPosition())},this.onCompositionUpdate=function(e){this.renderer.setCompositionText(e)},this.onCompositionEnd=function(){this.renderer.hideComposition()},this.getFirstVisibleRow=function(){return this.renderer.getFirstVisibleRow()},this.getLastVisibleRow=function(){return this.renderer.getLastVisibleRow()},this.isRowVisible=function(e){return e>=this.getFirstVisibleRow()&&e<=this.getLastVisibleRow()},this.isRowFullyVisible=function(e){return e>=this.renderer.getFirstFullyVisibleRow()&&e<=this.renderer.getLastFullyVisibleRow()},this.$getVisibleRowCount=function(){return this.renderer.getScrollBottomRow()-this.renderer.getScrollTopRow()+1},this.$moveByPage=function(e,t){var n=this.renderer,r=this.renderer.layerConfig,i=e*Math.floor(r.height/r.lineHeight);this.$blockScrolling++,t===!0?this.selection.$moveSelection(function(){this.moveCursorBy(i,0)}):t===!1&&(this.selection.moveCursorBy(i,0),this.selection.clearSelection()),this.$blockScrolling--;var s=n.scrollTop;n.scrollBy(0,i*r.lineHeight),t!=null&&n.scrollCursorIntoView(null,.5),n.animateScrolling(s)},this.selectPageDown=function(){this.$moveByPage(1,!0)},this.selectPageUp=function(){this.$moveByPage(-1,!0)},this.gotoPageDown=function(){this.$moveByPage(1,!1)},this.gotoPageUp=function(){this.$moveByPage(-1,!1)},this.scrollPageDown=function(){this.$moveByPage(1)},this.scrollPageUp=function(){this.$moveByPage(-1)},this.scrollToRow=function(e){this.renderer.scrollToRow(e)},this.scrollToLine=function(e,t,n,r){this.renderer.scrollToLine(e,t,n,r)},this.centerSelection=function(){var e=this.getSelectionRange(),t={row:Math.floor(e.start.row+(e.end.row-e.start.row)/2),column:Math.floor(e.start.column+(e.end.column-e.start.column)/2)};this.renderer.alignCursor(t,.5)},this.getCursorPosition=function(){return this.selection.getCursor()},this.getCursorPositionScreen=function(){return this.session.documentToScreenPosition(this.getCursorPosition())},this.getSelectionRange=function(){return this.selection.getRange()},this.selectAll=function(){this.$blockScrolling+=1,this.selection.selectAll(),this.$blockScrolling-=1},this.clearSelection=function(){this.selection.clearSelection()},this.moveCursorTo=function(e,t){this.selection.moveCursorTo(e,t)},this.moveCursorToPosition=function(e){this.selection.moveCursorToPosition(e)},this.jumpToMatching=function(e,t){var n=this.getCursorPosition(),r=new y(this.session,n.row,n.column),i=r.getCurrentToken(),s=i||r.stepForward();if(!s)return;var o,u=!1,a={},f=n.column-s.start,l,c={")":"(","(":"(","]":"[","[":"[","{":"{","}":"{"};do{if(s.value.match(/[{}()\[\]]/g))for(;f=0;--s)this.$tryReplace(n[s],e)&&r++;return this.selection.setSelectionRange(i),this.$blockScrolling-=1,r},this.$tryReplace=function(e,t){var n=this.session.getTextRange(e);return t=this.$search.replace(n,t),t!==null?(e.end=this.session.replace(e,t),e):null},this.getLastSearchOptions=function(){return this.$search.getOptions()},this.find=function(e,t,n){t||(t={}),typeof e=="string"||e instanceof RegExp?t.needle=e:typeof e=="object"&&r.mixin(t,e);var i=this.selection.getRange();t.needle==null&&(e=this.session.getTextRange(i)||this.$search.$options.needle,e||(i=this.session.getWordRange(i.start.row,i.start.column),e=this.session.getTextRange(i)),this.$search.set({needle:e})),this.$search.set(t),t.start||this.$search.set({start:i});var s=this.$search.find(this.session);if(t.preventScroll)return s;if(s)return this.revealRange(s,n),s;t.backwards?i.start=i.end:i.end=i.start,this.selection.setRange(i)},this.findNext=function(e,t){this.find({skipCurrent:!0,backwards:!1},e,t)},this.findPrevious=function(e,t){this.find(e,{skipCurrent:!0,backwards:!0},t)},this.revealRange=function(e,t){this.$blockScrolling+=1,this.session.unfold(e),this.selection.setSelectionRange(e),this.$blockScrolling-=1;var n=this.renderer.scrollTop;this.renderer.scrollSelectionIntoView(e.start,e.end,.5),t!==!1&&this.renderer.animateScrolling(n)},this.undo=function(){this.$blockScrolling++,this.session.getUndoManager().undo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.redo=function(){this.$blockScrolling++,this.session.getUndoManager().redo(),this.$blockScrolling--,this.renderer.scrollCursorIntoView(null,.5)},this.destroy=function(){this.renderer.destroy(),this._signal("destroy",this),this.session&&this.session.destroy()},this.setAutoScrollEditorIntoView=function(e){if(!e)return;var t,n=this,r=!1;this.$scrollAnchor||(this.$scrollAnchor=document.createElement("div"));var i=this.$scrollAnchor;i.style.cssText="position:absolute",this.container.insertBefore(i,this.container.firstChild);var s=this.on("changeSelection",function(){r=!0}),o=this.renderer.on("beforeRender",function(){r&&(t=n.renderer.container.getBoundingClientRect())}),u=this.renderer.on("afterRender",function(){if(r&&t&&(n.isFocused()||n.searchBox&&n.searchBox.isFocused())){var e=n.renderer,s=e.$cursorLayer.$pixelPos,o=e.layerConfig,u=s.top-o.offset;s.top>=0&&u+t.top<0?r=!0:s.topwindow.innerHeight?r=!1:r=null,r!=null&&(i.style.top=u+"px",i.style.left=s.left+"px",i.style.height=o.lineHeight+"px",i.scrollIntoView(r)),r=t=null}});this.setAutoScrollEditorIntoView=function(e){if(e)return;delete this.setAutoScrollEditorIntoView,this.off("changeSelection",s),this.renderer.off("afterRender",u),this.renderer.off("beforeRender",o)}},this.$resetCursorStyle=function(){var e=this.$cursorStyle||"ace",t=this.renderer.$cursorLayer;if(!t)return;t.setSmoothBlinking(/smooth/.test(e)),t.isBlinking=!this.$readOnly&&e!="wide",i.setCssClass(t.element,"ace_slim-cursors",/slim/.test(e))}}).call(b.prototype),g.defineOptions(b.prototype,"editor",{selectionStyle:{set:function(e){this.onSelectionChange(),this._signal("changeSelectionStyle",{data:e})},initialValue:"line"},highlightActiveLine:{set:function(){this.$updateHighlightActiveLine()},initialValue:!0},highlightSelectedWord:{set:function(e){this.$onSelectionChange()},initialValue:!0},readOnly:{set:function(e){this.$resetCursorStyle()},initialValue:!1},cursorStyle:{set:function(e){this.$resetCursorStyle()},values:["ace","slim","smooth","wide"],initialValue:"ace"},mergeUndoDeltas:{values:[!1,!0,"always"],initialValue:!0},behavioursEnabled:{initialValue:!0},wrapBehavioursEnabled:{initialValue:!0},autoScrollEditorIntoView:{set:function(e){this.setAutoScrollEditorIntoView(e)}},keyboardHandler:{set:function(e){this.setKeyboardHandler(e)},get:function(){return this.keybindingId},handlesSet:!0},hScrollBarAlwaysVisible:"renderer",vScrollBarAlwaysVisible:"renderer",highlightGutterLine:"renderer",animatedScroll:"renderer",showInvisibles:"renderer",showPrintMargin:"renderer",printMarginColumn:"renderer",printMargin:"renderer",fadeFoldWidgets:"renderer",showFoldWidgets:"renderer",showLineNumbers:"renderer",showGutter:"renderer",displayIndentGuides:"renderer",fontSize:"renderer",fontFamily:"renderer",maxLines:"renderer",minLines:"renderer",scrollPastEnd:"renderer",fixedWidthGutter:"renderer",theme:"renderer",scrollSpeed:"$mouseHandler",dragDelay:"$mouseHandler",dragEnabled:"$mouseHandler",focusTimout:"$mouseHandler",tooltipFollowsMouse:"$mouseHandler",firstLineNumber:"session",overwrite:"session",newLineMode:"session",useWorker:"session",useSoftTabs:"session",tabSize:"session",wrap:"session",indentedSoftWrap:"session",foldStyle:"session",mode:"session"}),t.Editor=b}),define("ace/undomanager",["require","exports","module"],function(e,t,n){"use strict";var r=function(){this.reset()};(function(){function e(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines.length==1?null:e.lines,text:e.lines.length==1?e.lines[0]:null}}function t(e){return{action:e.action,start:e.start,end:e.end,lines:e.lines||[e.text]}}function n(e,t){var n=new Array(e.length);for(var r=0;r0},this.hasRedo=function(){return this.$redoStack.length>0},this.markClean=function(){this.dirtyCounter=0},this.isClean=function(){return this.dirtyCounter===0},this.$serializeDeltas=function(t){return n(t,e)},this.$deserializeDeltas=function(e){return n(e,t)}}).call(r.prototype),t.UndoManager=r}),define("ace/layer/gutter",["require","exports","module","ace/lib/dom","ace/lib/oop","ace/lib/lang","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/dom"),i=e("../lib/oop"),s=e("../lib/lang"),o=e("../lib/event_emitter").EventEmitter,u=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_gutter-layer",e.appendChild(this.element),this.setShowFoldWidgets(this.$showFoldWidgets),this.gutterWidth=0,this.$annotations=[],this.$updateAnnotations=this.$updateAnnotations.bind(this),this.$cells=[]};(function(){i.implement(this,o),this.setSession=function(e){this.session&&this.session.removeEventListener("change",this.$updateAnnotations),this.session=e,e&&e.on("change",this.$updateAnnotations)},this.addGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.addGutterDecoration"),this.session.addGutterDecoration(e,t)},this.removeGutterDecoration=function(e,t){window.console&&console.warn&&console.warn("deprecated use session.removeGutterDecoration"),this.session.removeGutterDecoration(e,t)},this.setAnnotations=function(e){this.$annotations=[];for(var t=0;to&&(v=s.end.row+1,s=t.getNextFoldLine(v,s),o=s?s.start.row:Infinity);if(v>i){while(this.$cells.length>d+1)p=this.$cells.pop(),this.element.removeChild(p.element);break}p=this.$cells[++d],p||(p={element:null,textNode:null,foldWidget:null},p.element=r.createElement("div"),p.textNode=document.createTextNode(""),p.element.appendChild(p.textNode),this.element.appendChild(p.element),this.$cells[d]=p);var m="ace_gutter-cell ";a[v]&&(m+=a[v]),f[v]&&(m+=f[v]),this.$annotations[v]&&(m+=this.$annotations[v].className),p.element.className!=m&&(p.element.className=m);var g=t.getRowLength(v)*e.lineHeight+"px";g!=p.element.style.height&&(p.element.style.height=g);if(u){var y=u[v];y==null&&(y=u[v]=t.getFoldWidget(v))}if(y){p.foldWidget||(p.foldWidget=r.createElement("span"),p.element.appendChild(p.foldWidget));var m="ace_fold-widget ace_"+y;y=="start"&&v==o&&vn.right-t.right)return"foldWidgets"}}).call(u.prototype),t.Gutter=u}),define("ace/layer/marker",["require","exports","module","ace/range","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../range").Range,i=e("../lib/dom"),s=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_marker-layer",e.appendChild(this.element)};(function(){function e(e,t,n,r){return(e?1:0)|(t?2:0)|(n?4:0)|(r?8:0)}this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setMarkers=function(e){this.markers=e},this.update=function(e){var e=e||this.config;if(!e)return;this.config=e;var t=[];for(var n in this.markers){var r=this.markers[n];if(!r.range){r.update(t,this,this.session,e);continue}var i=r.range.clipRows(e.firstRow,e.lastRow);if(i.isEmpty())continue;i=i.toScreenRange(this.session);if(r.renderer){var s=this.$getTop(i.start.row,e),o=this.$padding+i.start.column*e.characterWidth;r.renderer(t,i,o,s,e)}else r.type=="fullLine"?this.drawFullLineMarker(t,i,r.clazz,e):r.type=="screenLine"?this.drawScreenLineMarker(t,i,r.clazz,e):i.isMultiLine()?r.type=="text"?this.drawTextMarker(t,i,r.clazz,e):this.drawMultiLineMarker(t,i,r.clazz,e):this.drawSingleLineMarker(t,i,r.clazz+" ace_start"+" ace_br15",e)}this.element.innerHTML=t.join("")},this.$getTop=function(e,t){return(e-t.firstRowScreen)*t.lineHeight},this.drawTextMarker=function(t,n,i,s,o){var u=this.session,a=n.start.row,f=n.end.row,l=a,c=0,h=0,p=u.getScreenLastRowColumn(l),d=new r(l,n.start.column,l,h);for(;l<=f;l++)d.start.row=d.end.row=l,d.start.column=l==a?n.start.column:u.getRowWrapIndent(l),d.end.column=p,c=h,h=p,p=l+1p,l==f),s,l==f?0:1,o)},this.drawMultiLineMarker=function(e,t,n,r,i){var s=this.$padding,o=r.lineHeight,u=this.$getTop(t.start.row,r),a=s+t.start.column*r.characterWidth;i=i||"",e.push("
"),u=this.$getTop(t.end.row,r);var f=t.end.column*r.characterWidth;e.push("
"),o=(t.end.row-t.start.row-1)*r.lineHeight;if(o<=0)return;u=this.$getTop(t.start.row+1,r);var l=(t.start.column?1:0)|(t.end.column?0:8);e.push("
")},this.drawSingleLineMarker=function(e,t,n,r,i,s){var o=r.lineHeight,u=(t.end.column+(i||0)-t.start.column)*r.characterWidth,a=this.$getTop(t.start.row,r),f=this.$padding+t.start.column*r.characterWidth;e.push("
")},this.drawFullLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;t.start.row!=t.end.row&&(o+=this.$getTop(t.end.row,r)-s),e.push("
")},this.drawScreenLineMarker=function(e,t,n,r,i){var s=this.$getTop(t.start.row,r),o=r.lineHeight;e.push("
")}}).call(s.prototype),t.Marker=s}),define("ace/layer/text",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/useragent"),u=e("../lib/event_emitter").EventEmitter,a=function(e){this.element=i.createElement("div"),this.element.className="ace_layer ace_text-layer",e.appendChild(this.element),this.$updateEolChar=this.$updateEolChar.bind(this)};(function(){r.implement(this,u),this.EOF_CHAR="\u00b6",this.EOL_CHAR_LF="\u00ac",this.EOL_CHAR_CRLF="\u00a4",this.EOL_CHAR=this.EOL_CHAR_LF,this.TAB_CHAR="\u2014",this.SPACE_CHAR="\u00b7",this.$padding=0,this.$updateEolChar=function(){var e=this.session.doc.getNewLineCharacter()=="\n"?this.EOL_CHAR_LF:this.EOL_CHAR_CRLF;if(this.EOL_CHAR!=e)return this.EOL_CHAR=e,!0},this.setPadding=function(e){this.$padding=e,this.element.style.padding="0 "+e+"px"},this.getLineHeight=function(){return this.$fontMetrics.$characterSize.height||0},this.getCharacterWidth=function(){return this.$fontMetrics.$characterSize.width||0},this.$setFontMetrics=function(e){this.$fontMetrics=e,this.$fontMetrics.on("changeCharacterSize",function(e){this._signal("changeCharacterSize",e)}.bind(this)),this.$pollSizeChanges()},this.checkForSizeChanges=function(){this.$fontMetrics.checkForSizeChanges()},this.$pollSizeChanges=function(){return this.$pollSizeChangesTimer=this.$fontMetrics.$pollSizeChanges()},this.setSession=function(e){this.session=e,e&&this.$computeTabString()},this.showInvisibles=!1,this.setShowInvisibles=function(e){return this.showInvisibles==e?!1:(this.showInvisibles=e,this.$computeTabString(),!0)},this.displayIndentGuides=!0,this.setDisplayIndentGuides=function(e){return this.displayIndentGuides==e?!1:(this.displayIndentGuides=e,this.$computeTabString(),!0)},this.$tabStrings=[],this.onChangeTabSize=this.$computeTabString=function(){var e=this.session.getTabSize();this.tabSize=e;var t=this.$tabStrings=[0];for(var n=1;n"+s.stringRepeat(this.TAB_CHAR,n)+""):t.push(s.stringRepeat(" ",n));if(this.displayIndentGuides){this.$indentGuideRe=/\s\S| \t|\t |\s$/;var r="ace_indent-guide",i="",o="";if(this.showInvisibles){r+=" ace_invisible",i=" ace_invisible_space",o=" ace_invisible_tab";var u=s.stringRepeat(this.SPACE_CHAR,this.tabSize),a=s.stringRepeat(this.TAB_CHAR,this.tabSize)}else var u=s.stringRepeat(" ",this.tabSize),a=u;this.$tabStrings[" "]=""+u+"",this.$tabStrings[" "]=""+a+""}},this.updateLines=function(e,t,n){(this.config.lastRow!=e.lastRow||this.config.firstRow!=e.firstRow)&&this.scrollLines(e),this.config=e;var r=Math.max(t,e.firstRow),i=Math.min(n,e.lastRow),s=this.element.childNodes,o=0;for(var u=e.firstRow;uf&&(u=a.end.row+1,a=this.session.getNextFoldLine(u,a),f=a?a.start.row:Infinity);if(u>i)break;var l=s[o++];if(l){var c=[];this.$renderLine(c,u,!this.$useLineGroups(),u==f?a:!1),l.style.height=e.lineHeight*this.session.getRowLength(u)+"px",l.innerHTML=c.join("")}u++}},this.scrollLines=function(e){var t=this.config;this.config=e;if(!t||t.lastRow0;r--)n.removeChild(n.firstChild);if(t.lastRow>e.lastRow)for(var r=this.session.getFoldedRowCount(e.lastRow+1,t.lastRow);r>0;r--)n.removeChild(n.lastChild);if(e.firstRowt.lastRow){var i=this.$renderLinesFragment(e,t.lastRow+1,e.lastRow);n.appendChild(i)}},this.$renderLinesFragment=function(e,t,n){var r=this.element.ownerDocument.createDocumentFragment(),s=t,o=this.session.getNextFoldLine(s),u=o?o.start.row:Infinity;for(;;){s>u&&(s=o.end.row+1,o=this.session.getNextFoldLine(s,o),u=o?o.start.row:Infinity);if(s>n)break;var a=i.createElement("div"),f=[];this.$renderLine(f,s,!1,s==u?o:!1),a.innerHTML=f.join("");if(this.$useLineGroups())a.className="ace_line_group",r.appendChild(a),a.style.height=e.lineHeight*this.session.getRowLength(s)+"px";else while(a.firstChild)r.appendChild(a.firstChild);s++}return r},this.update=function(e){this.config=e;var t=[],n=e.firstRow,r=e.lastRow,i=n,s=this.session.getNextFoldLine(i),o=s?s.start.row:Infinity;for(;;){i>o&&(i=s.end.row+1,s=this.session.getNextFoldLine(i,s),o=s?s.start.row:Infinity);if(i>r)break;this.$useLineGroups()&&t.push("
"),this.$renderLine(t,i,!1,i==o?s:!1),this.$useLineGroups()&&t.push("
"),i++}this.element.innerHTML=t.join("")},this.$textToken={text:!0,rparen:!0,lparen:!0},this.$renderToken=function(e,t,n,r){var i=this,o=/\t|&|<|>|( +)|([\x00-\x1f\x80-\xa0\xad\u1680\u180E\u2000-\u200f\u2028\u2029\u202F\u205F\u3000\uFEFF\uFFF9-\uFFFC])|[\u1100-\u115F\u11A3-\u11A7\u11FA-\u11FF\u2329-\u232A\u2E80-\u2E99\u2E9B-\u2EF3\u2F00-\u2FD5\u2FF0-\u2FFB\u3000-\u303E\u3041-\u3096\u3099-\u30FF\u3105-\u312D\u3131-\u318E\u3190-\u31BA\u31C0-\u31E3\u31F0-\u321E\u3220-\u3247\u3250-\u32FE\u3300-\u4DBF\u4E00-\uA48C\uA490-\uA4C6\uA960-\uA97C\uAC00-\uD7A3\uD7B0-\uD7C6\uD7CB-\uD7FB\uF900-\uFAFF\uFE10-\uFE19\uFE30-\uFE52\uFE54-\uFE66\uFE68-\uFE6B\uFF01-\uFF60\uFFE0-\uFFE6]/g,u=function(e,n,r,o,u){if(n)return i.showInvisibles?""+s.stringRepeat(i.SPACE_CHAR,e.length)+"":e;if(e=="&")return"&";if(e=="<")return"<";if(e==">")return">";if(e==" "){var a=i.session.getScreenTabSize(t+o);return t+=a-1,i.$tabStrings[a]}if(e=="\u3000"){var f=i.showInvisibles?"ace_cjk ace_invisible ace_invisible_space":"ace_cjk",l=i.showInvisibles?i.SPACE_CHAR:"";return t+=1,""+l+""}return r?""+i.SPACE_CHAR+"":(t+=1,""+e+"")},a=r.replace(o,u);if(!this.$textToken[n.type]){var f="ace_"+n.type.replace(/\./g," ace_"),l="";n.type=="fold"&&(l=" style='width:"+n.value.length*this.config.characterWidth+"px;' "),e.push("",a,"")}else e.push(a);return t+r.length},this.renderIndentGuide=function(e,t,n){var r=t.search(this.$indentGuideRe);return r<=0||r>=n?t:t[0]==" "?(r-=r%this.tabSize,e.push(s.stringRepeat(this.$tabStrings[" "],r/this.tabSize)),t.substr(r)):t[0]==" "?(e.push(s.stringRepeat(this.$tabStrings[" "],r)),t.substr(r)):t},this.$renderWrappedLine=function(e,t,n,r){var i=0,o=0,u=n[0],a=0;for(var f=0;f=u)a=this.$renderToken(e,a,l,c.substring(0,u-i)),c=c.substring(u-i),i=u,r||e.push("","
"),e.push(s.stringRepeat("\u00a0",n.indent)),o++,a=0,u=n[o]||Number.MAX_VALUE;c.length!=0&&(i+=c.length,a=this.$renderToken(e,a,l,c))}}},this.$renderSimpleLine=function(e,t){var n=0,r=t[0],i=r.value;this.displayIndentGuides&&(i=this.renderIndentGuide(e,i)),i&&(n=this.$renderToken(e,n,r,i));for(var s=1;s");if(i.length){var s=this.session.getRowSplitData(t);s&&s.length?this.$renderWrappedLine(e,i,s,n):this.$renderSimpleLine(e,i)}this.showInvisibles&&(r&&(t=r.end.row),e.push("",t==this.session.getLength()-1?this.EOF_CHAR:this.EOL_CHAR,"")),n||e.push("
")},this.$getFoldLineTokens=function(e,t){function i(e,t,n){var i=0,s=0;while(s+e[i].value.lengthn-t&&(o=o.substring(0,n-t)),r.push({type:e[i].type,value:o}),s=t+o.length,i+=1}while(sn?r.push({type:e[i].type,value:o.substring(0,n-s)}):r.push(e[i]),s+=o.length,i+=1}}var n=this.session,r=[],s=n.getTokens(e);return t.walk(function(e,t,o,u,a){e!=null?r.push({type:"fold",value:e}):(a&&(s=n.getTokens(t)),s.length&&i(s,u,o))},t.end.row,this.session.getLine(t.end.row).length),r},this.$useLineGroups=function(){return this.session.getUseWrapMode()},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.$measureNode&&this.$measureNode.parentNode.removeChild(this.$measureNode),delete this.$measureNode}}).call(a.prototype),t.Text=a}),define("ace/layer/cursor",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";var r=e("../lib/dom"),i,s=function(e){this.element=r.createElement("div"),this.element.className="ace_layer ace_cursor-layer",e.appendChild(this.element),i===undefined&&(i=!("opacity"in this.element.style)),this.isVisible=!1,this.isBlinking=!0,this.blinkInterval=1e3,this.smoothBlinking=!1,this.cursors=[],this.cursor=this.addCursor(),r.addCssClass(this.element,"ace_hidden-cursors"),this.$updateCursors=(i?this.$updateVisibility:this.$updateOpacity).bind(this)};(function(){this.$updateVisibility=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.visibility=e?"":"hidden"},this.$updateOpacity=function(e){var t=this.cursors;for(var n=t.length;n--;)t[n].style.opacity=e?"":"0"},this.$padding=0,this.setPadding=function(e){this.$padding=e},this.setSession=function(e){this.session=e},this.setBlinking=function(e){e!=this.isBlinking&&(this.isBlinking=e,this.restartTimer())},this.setBlinkInterval=function(e){e!=this.blinkInterval&&(this.blinkInterval=e,this.restartTimer())},this.setSmoothBlinking=function(e){e!=this.smoothBlinking&&!i&&(this.smoothBlinking=e,r.setCssClass(this.element,"ace_smooth-blinking",e),this.$updateCursors(!0),this.$updateCursors=this.$updateOpacity.bind(this),this.restartTimer())},this.addCursor=function(){var e=r.createElement("div");return e.className="ace_cursor",this.element.appendChild(e),this.cursors.push(e),e},this.removeCursor=function(){if(this.cursors.length>1){var e=this.cursors.pop();return e.parentNode.removeChild(e),e}},this.hideCursor=function(){this.isVisible=!1,r.addCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.showCursor=function(){this.isVisible=!0,r.removeCssClass(this.element,"ace_hidden-cursors"),this.restartTimer()},this.restartTimer=function(){var e=this.$updateCursors;clearInterval(this.intervalId),clearTimeout(this.timeoutId),this.smoothBlinking&&r.removeCssClass(this.element,"ace_smooth-blinking"),e(!0);if(!this.isBlinking||!this.blinkInterval||!this.isVisible)return;this.smoothBlinking&&setTimeout(function(){r.addCssClass(this.element,"ace_smooth-blinking")}.bind(this));var t=function(){this.timeoutId=setTimeout(function(){e(!1)},.6*this.blinkInterval)}.bind(this);this.intervalId=setInterval(function(){e(!0),t()},this.blinkInterval),t()},this.getPixelPosition=function(e,t){if(!this.config||!this.session)return{left:0,top:0};e||(e=this.session.selection.getCursor());var n=this.session.documentToScreenPosition(e),r=this.$padding+n.column*this.config.characterWidth,i=(n.row-(t?this.config.firstRowScreen:0))*this.config.lineHeight;return{left:r,top:i}},this.update=function(e){this.config=e;var t=this.session.$selectionMarkers,n=0,r=0;if(t===undefined||t.length===0)t=[{cursor:null}];for(var n=0,i=t.length;ne.height+e.offset||s.top<0)&&n>1)continue;var o=(this.cursors[r++]||this.addCursor()).style;this.drawCursor?this.drawCursor(o,s,e,t[n],this.session):(o.left=s.left+"px",o.top=s.top+"px",o.width=e.characterWidth+"px",o.height=e.lineHeight+"px")}while(this.cursors.length>r)this.removeCursor();var u=this.session.getOverwrite();this.$setOverwrite(u),this.$pixelPos=s,this.restartTimer()},this.drawCursor=null,this.$setOverwrite=function(e){e!=this.overwrite&&(this.overwrite=e,e?r.addCssClass(this.element,"ace_overwrite-cursors"):r.removeCssClass(this.element,"ace_overwrite-cursors"))},this.destroy=function(){clearInterval(this.intervalId),clearTimeout(this.timeoutId)}}).call(s.prototype),t.Cursor=s}),define("ace/scrollbar",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/event","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./lib/event"),o=e("./lib/event_emitter").EventEmitter,u=32768,a=function(e){this.element=i.createElement("div"),this.element.className="ace_scrollbar ace_scrollbar"+this.classSuffix,this.inner=i.createElement("div"),this.inner.className="ace_scrollbar-inner",this.element.appendChild(this.inner),e.appendChild(this.element),this.setVisible(!1),this.skipEvent=!1,s.addListener(this.element,"scroll",this.onScroll.bind(this)),s.addListener(this.element,"mousedown",s.preventDefault)};(function(){r.implement(this,o),this.setVisible=function(e){this.element.style.display=e?"":"none",this.isVisible=e,this.coeff=1}}).call(a.prototype);var f=function(e,t){a.call(this,e),this.scrollTop=0,this.scrollHeight=0,t.$scrollbarWidth=this.width=i.scrollbarWidth(e.ownerDocument),this.inner.style.width=this.element.style.width=(this.width||15)+5+"px"};r.inherits(f,a),function(){this.classSuffix="-v",this.onScroll=function(){if(!this.skipEvent){this.scrollTop=this.element.scrollTop;if(this.coeff!=1){var e=this.element.clientHeight/this.scrollHeight;this.scrollTop=this.scrollTop*(1-e)/(this.coeff-e)}this._emit("scroll",{data:this.scrollTop})}this.skipEvent=!1},this.getWidth=function(){return this.isVisible?this.width:0},this.setHeight=function(e){this.element.style.height=e+"px"},this.setInnerHeight=this.setScrollHeight=function(e){this.scrollHeight=e,e>u?(this.coeff=u/e,e=u):this.coeff!=1&&(this.coeff=1),this.inner.style.height=e+"px"},this.setScrollTop=function(e){this.scrollTop!=e&&(this.skipEvent=!0,this.scrollTop=e,this.element.scrollTop=e*this.coeff)}}.call(f.prototype);var l=function(e,t){a.call(this,e),this.scrollLeft=0,this.height=t.$scrollbarWidth,this.inner.style.height=this.element.style.height=(this.height||15)+5+"px"};r.inherits(l,a),function(){this.classSuffix="-h",this.onScroll=function(){this.skipEvent||(this.scrollLeft=this.element.scrollLeft,this._emit("scroll",{data:this.scrollLeft})),this.skipEvent=!1},this.getHeight=function(){return this.isVisible?this.height:0},this.setWidth=function(e){this.element.style.width=e+"px"},this.setInnerWidth=function(e){this.inner.style.width=e+"px"},this.setScrollWidth=function(e){this.inner.style.width=e+"px"},this.setScrollLeft=function(e){this.scrollLeft!=e&&(this.skipEvent=!0,this.scrollLeft=this.element.scrollLeft=e)}}.call(l.prototype),t.ScrollBar=f,t.ScrollBarV=f,t.ScrollBarH=l,t.VScrollBar=f,t.HScrollBar=l}),define("ace/renderloop",["require","exports","module","ace/lib/event"],function(e,t,n){"use strict";var r=e("./lib/event"),i=function(e,t){this.onRender=e,this.pending=!1,this.changes=0,this.window=t||window};(function(){this.schedule=function(e){this.changes=this.changes|e;if(!this.pending&&this.changes){this.pending=!0;var t=this;r.nextFrame(function(){t.pending=!1;var e;while(e=t.changes)t.changes=0,t.onRender(e)},this.window)}}}).call(i.prototype),t.RenderLoop=i}),define("ace/layer/font_metrics",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/lib/lang","ace/lib/useragent","ace/lib/event_emitter"],function(e,t,n){var r=e("../lib/oop"),i=e("../lib/dom"),s=e("../lib/lang"),o=e("../lib/useragent"),u=e("../lib/event_emitter").EventEmitter,a=0,f=t.FontMetrics=function(e){this.el=i.createElement("div"),this.$setMeasureNodeStyles(this.el.style,!0),this.$main=i.createElement("div"),this.$setMeasureNodeStyles(this.$main.style),this.$measureNode=i.createElement("div"),this.$setMeasureNodeStyles(this.$measureNode.style),this.el.appendChild(this.$main),this.el.appendChild(this.$measureNode),e.appendChild(this.el),a||this.$testFractionalRect(),this.$measureNode.innerHTML=s.stringRepeat("X",a),this.$characterSize={width:0,height:0},this.checkForSizeChanges()};(function(){r.implement(this,u),this.$characterSize={width:0,height:0},this.$testFractionalRect=function(){var e=i.createElement("div");this.$setMeasureNodeStyles(e.style),e.style.width="0.2px",document.documentElement.appendChild(e);var t=e.getBoundingClientRect().width;t>0&&t<1?a=50:a=100,e.parentNode.removeChild(e)},this.$setMeasureNodeStyles=function(e,t){e.width=e.height="auto",e.left=e.top="0px",e.visibility="hidden",e.position="absolute",e.whiteSpace="pre",o.isIE<8?e["font-family"]="inherit":e.font="inherit",e.overflow=t?"hidden":"visible"},this.checkForSizeChanges=function(){var e=this.$measureSizes();if(e&&(this.$characterSize.width!==e.width||this.$characterSize.height!==e.height)){this.$measureNode.style.fontWeight="bold";var t=this.$measureSizes();this.$measureNode.style.fontWeight="",this.$characterSize=e,this.charSizes=Object.create(null),this.allowBoldFonts=t&&t.width===e.width&&t.height===e.height,this._emit("changeCharacterSize",{data:e})}},this.$pollSizeChanges=function(){if(this.$pollSizeChangesTimer)return this.$pollSizeChangesTimer;var e=this;return this.$pollSizeChangesTimer=setInterval(function(){e.checkForSizeChanges()},500)},this.setPolling=function(e){e?this.$pollSizeChanges():this.$pollSizeChangesTimer&&(clearInterval(this.$pollSizeChangesTimer),this.$pollSizeChangesTimer=0)},this.$measureSizes=function(){if(a===50){var e=null;try{e=this.$measureNode.getBoundingClientRect()}catch(t){e={width:0,height:0}}var n={height:e.height,width:e.width/a}}else var n={height:this.$measureNode.clientHeight,width:this.$measureNode.clientWidth/a};return n.width===0||n.height===0?null:n},this.$measureCharWidth=function(e){this.$main.innerHTML=s.stringRepeat(e,a);var t=this.$main.getBoundingClientRect();return t.width/a},this.getCharacterWidth=function(e){var t=this.charSizes[e];return t===undefined&&(t=this.charSizes[e]=this.$measureCharWidth(e)/this.$characterSize.width),t},this.destroy=function(){clearInterval(this.$pollSizeChangesTimer),this.el&&this.el.parentNode&&this.el.parentNode.removeChild(this.el)}}).call(f.prototype)}),define("ace/virtual_renderer",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/config","ace/lib/useragent","ace/layer/gutter","ace/layer/marker","ace/layer/text","ace/layer/cursor","ace/scrollbar","ace/scrollbar","ace/renderloop","ace/layer/font_metrics","ace/lib/event_emitter"],function(e,t,n){"use strict";var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./config"),o=e("./lib/useragent"),u=e("./layer/gutter").Gutter,a=e("./layer/marker").Marker,f=e("./layer/text").Text,l=e("./layer/cursor").Cursor,c=e("./scrollbar").HScrollBar,h=e("./scrollbar").VScrollBar,p=e("./renderloop").RenderLoop,d=e("./layer/font_metrics").FontMetrics,v=e("./lib/event_emitter").EventEmitter,m='.ace_editor {position: relative;overflow: hidden;font: 12px/normal \'Monaco\', \'Menlo\', \'Ubuntu Mono\', \'Consolas\', \'source-code-pro\', monospace;direction: ltr;text-align: left;}.ace_scroller {position: absolute;overflow: hidden;top: 0;bottom: 0;background-color: inherit;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;cursor: text;}.ace_content {position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;min-width: 100%;}.ace_dragging .ace_scroller:before{position: absolute;top: 0;left: 0;right: 0;bottom: 0;content: \'\';background: rgba(250, 250, 250, 0.01);z-index: 1000;}.ace_dragging.ace_dark .ace_scroller:before{background: rgba(0, 0, 0, 0.01);}.ace_selecting, .ace_selecting * {cursor: text !important;}.ace_gutter {position: absolute;overflow : hidden;width: auto;top: 0;bottom: 0;left: 0;cursor: default;z-index: 4;-ms-user-select: none;-moz-user-select: none;-webkit-user-select: none;user-select: none;}.ace_gutter-active-line {position: absolute;left: 0;right: 0;}.ace_scroller.ace_scroll-left {box-shadow: 17px 0 16px -16px rgba(0, 0, 0, 0.4) inset;}.ace_gutter-cell {padding-left: 19px;padding-right: 6px;background-repeat: no-repeat;}.ace_gutter-cell.ace_error {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAABOFBMVEX/////////QRswFAb/Ui4wFAYwFAYwFAaWGAfDRymzOSH/PxswFAb/SiUwFAYwFAbUPRvjQiDllog5HhHdRybsTi3/Tyv9Tir+Syj/UC3////XurebMBIwFAb/RSHbPx/gUzfdwL3kzMivKBAwFAbbvbnhPx66NhowFAYwFAaZJg8wFAaxKBDZurf/RB6mMxb/SCMwFAYwFAbxQB3+RB4wFAb/Qhy4Oh+4QifbNRcwFAYwFAYwFAb/QRzdNhgwFAYwFAbav7v/Uy7oaE68MBK5LxLewr/r2NXewLswFAaxJw4wFAbkPRy2PyYwFAaxKhLm1tMwFAazPiQwFAaUGAb/QBrfOx3bvrv/VC/maE4wFAbRPBq6MRO8Qynew8Dp2tjfwb0wFAbx6eju5+by6uns4uH9/f36+vr/GkHjAAAAYnRSTlMAGt+64rnWu/bo8eAA4InH3+DwoN7j4eLi4xP99Nfg4+b+/u9B/eDs1MD1mO7+4PHg2MXa347g7vDizMLN4eG+Pv7i5evs/v79yu7S3/DV7/498Yv24eH+4ufQ3Ozu/v7+y13sRqwAAADLSURBVHjaZc/XDsFgGIBhtDrshlitmk2IrbHFqL2pvXf/+78DPokj7+Fz9qpU/9UXJIlhmPaTaQ6QPaz0mm+5gwkgovcV6GZzd5JtCQwgsxoHOvJO15kleRLAnMgHFIESUEPmawB9ngmelTtipwwfASilxOLyiV5UVUyVAfbG0cCPHig+GBkzAENHS0AstVF6bacZIOzgLmxsHbt2OecNgJC83JERmePUYq8ARGkJx6XtFsdddBQgZE2nPR6CICZhawjA4Fb/chv+399kfR+MMMDGOQAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: 2px center;}.ace_gutter-cell.ace_warning {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAmVBMVEX///8AAAD///8AAAAAAABPSzb/5sAAAAB/blH/73z/ulkAAAAAAAD85pkAAAAAAAACAgP/vGz/rkDerGbGrV7/pkQICAf////e0IsAAAD/oED/qTvhrnUAAAD/yHD/njcAAADuv2r/nz//oTj/p064oGf/zHAAAAA9Nir/tFIAAAD/tlTiuWf/tkIAAACynXEAAAAAAAAtIRW7zBpBAAAAM3RSTlMAABR1m7RXO8Ln31Z36zT+neXe5OzooRDfn+TZ4p3h2hTf4t3k3ucyrN1K5+Xaks52Sfs9CXgrAAAAjklEQVR42o3PbQ+CIBQFYEwboPhSYgoYunIqqLn6/z8uYdH8Vmdnu9vz4WwXgN/xTPRD2+sgOcZjsge/whXZgUaYYvT8QnuJaUrjrHUQreGczuEafQCO/SJTufTbroWsPgsllVhq3wJEk2jUSzX3CUEDJC84707djRc5MTAQxoLgupWRwW6UB5fS++NV8AbOZgnsC7BpEAAAAABJRU5ErkJggg==");background-position: 2px center;}.ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAAAAAA6mKC9AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAAJ0Uk5TAAB2k804AAAAPklEQVQY02NgIB68QuO3tiLznjAwpKTgNyDbMegwisCHZUETUZV0ZqOquBpXj2rtnpSJT1AEnnRmL2OgGgAAIKkRQap2htgAAAAASUVORK5CYII=");background-position: 2px center;}.ace_dark .ace_gutter-cell.ace_info {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQBAMAAADt3eJSAAAAJFBMVEUAAAChoaGAgIAqKiq+vr6tra1ZWVmUlJSbm5s8PDxubm56enrdgzg3AAAAAXRSTlMAQObYZgAAAClJREFUeNpjYMAPdsMYHegyJZFQBlsUlMFVCWUYKkAZMxZAGdxlDMQBAG+TBP4B6RyJAAAAAElFTkSuQmCC");}.ace_scrollbar {position: absolute;right: 0;bottom: 0;z-index: 6;}.ace_scrollbar-inner {position: absolute;cursor: text;left: 0;top: 0;}.ace_scrollbar-v{overflow-x: hidden;overflow-y: scroll;top: 0;}.ace_scrollbar-h {overflow-x: scroll;overflow-y: hidden;left: 0;}.ace_print-margin {position: absolute;height: 100%;}.ace_text-input {position: absolute;z-index: 0;width: 0.5em;height: 1em;opacity: 0;background: transparent;-moz-appearance: none;appearance: none;border: none;resize: none;outline: none;overflow: hidden;font: inherit;padding: 0 1px;margin: 0 -1px;text-indent: -1em;-ms-user-select: text;-moz-user-select: text;-webkit-user-select: text;user-select: text;white-space: pre!important;}.ace_text-input.ace_composition {background: inherit;color: inherit;z-index: 1000;opacity: 1;text-indent: 0;}.ace_layer {z-index: 1;position: absolute;overflow: hidden;word-wrap: normal;white-space: pre;height: 100%;width: 100%;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;pointer-events: none;}.ace_gutter-layer {position: relative;width: auto;text-align: right;pointer-events: auto;}.ace_text-layer {font: inherit !important;}.ace_cjk {display: inline-block;text-align: center;}.ace_cursor-layer {z-index: 4;}.ace_cursor {z-index: 4;position: absolute;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;border-left: 2px solid;transform: translatez(0);}.ace_slim-cursors .ace_cursor {border-left-width: 1px;}.ace_overwrite-cursors .ace_cursor {border-left-width: 0;border-bottom: 1px solid;}.ace_hidden-cursors .ace_cursor {opacity: 0.2;}.ace_smooth-blinking .ace_cursor {-webkit-transition: opacity 0.18s;transition: opacity 0.18s;}.ace_editor.ace_multiselect .ace_cursor {border-left-width: 1px;}.ace_marker-layer .ace_step, .ace_marker-layer .ace_stack {position: absolute;z-index: 3;}.ace_marker-layer .ace_selection {position: absolute;z-index: 5;}.ace_marker-layer .ace_bracket {position: absolute;z-index: 6;}.ace_marker-layer .ace_active-line {position: absolute;z-index: 2;}.ace_marker-layer .ace_selected-word {position: absolute;z-index: 4;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;}.ace_line .ace_fold {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;display: inline-block;height: 11px;margin-top: -2px;vertical-align: middle;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACJJREFUeNpi+P//fxgTAwPDBxDxD078RSX+YeEyDFMCIMAAI3INmXiwf2YAAAAASUVORK5CYII=");background-repeat: no-repeat, repeat-x;background-position: center center, top left;color: transparent;border: 1px solid black;border-radius: 2px;cursor: pointer;pointer-events: auto;}.ace_dark .ace_fold {}.ace_fold:hover{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABEAAAAJCAYAAADU6McMAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAJpJREFUeNpi/P//PwOlgAXGYGRklAVSokD8GmjwY1wasKljQpYACtpCFeADcHVQfQyMQAwzwAZI3wJKvCLkfKBaMSClBlR7BOQikCFGQEErIH0VqkabiGCAqwUadAzZJRxQr/0gwiXIal8zQQPnNVTgJ1TdawL0T5gBIP1MUJNhBv2HKoQHHjqNrA4WO4zY0glyNKLT2KIfIMAAQsdgGiXvgnYAAAAASUVORK5CYII="),url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAA3CAYAAADNNiA5AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAACBJREFUeNpi+P//fz4TAwPDZxDxD5X4i5fLMEwJgAADAEPVDbjNw87ZAAAAAElFTkSuQmCC");}.ace_tooltip {background-color: #FFF;background-image: -webkit-linear-gradient(top, transparent, rgba(0, 0, 0, 0.1));background-image: linear-gradient(to bottom, transparent, rgba(0, 0, 0, 0.1));border: 1px solid gray;border-radius: 1px;box-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);color: black;max-width: 100%;padding: 3px 4px;position: fixed;z-index: 999999;-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;cursor: default;white-space: pre;word-wrap: break-word;line-height: normal;font-style: normal;font-weight: normal;letter-spacing: normal;pointer-events: none;}.ace_folding-enabled > .ace_gutter-cell {padding-right: 13px;}.ace_fold-widget {-moz-box-sizing: border-box;-webkit-box-sizing: border-box;box-sizing: border-box;margin: 0 -12px 0 1px;display: none;width: 11px;vertical-align: top;background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42mWKsQ0AMAzC8ixLlrzQjzmBiEjp0A6WwBCSPgKAXoLkqSot7nN3yMwR7pZ32NzpKkVoDBUxKAAAAABJRU5ErkJggg==");background-repeat: no-repeat;background-position: center;border-radius: 3px;border: 1px solid transparent;cursor: pointer;}.ace_folding-enabled .ace_fold-widget {display: inline-block; }.ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAANElEQVR42m3HwQkAMAhD0YzsRchFKI7sAikeWkrxwScEB0nh5e7KTPWimZki4tYfVbX+MNl4pyZXejUO1QAAAABJRU5ErkJggg==");}.ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAGCAYAAAAG5SQMAAAAOUlEQVR42jXKwQkAMAgDwKwqKD4EwQ26sSOkVWjgIIHAzPiCgaqiqnJHZnKICBERHN194O5b9vbLuAVRL+l0YWnZAAAAAElFTkSuQmCCXA==");}.ace_fold-widget:hover {border: 1px solid rgba(0, 0, 0, 0.3);background-color: rgba(255, 255, 255, 0.2);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.7);}.ace_fold-widget:active {border: 1px solid rgba(0, 0, 0, 0.4);background-color: rgba(0, 0, 0, 0.05);box-shadow: 0 1px 1px rgba(255, 255, 255, 0.8);}.ace_dark .ace_fold-widget {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAHklEQVQIW2P4//8/AzoGEQ7oGCaLLAhWiSwB146BAQCSTPYocqT0AAAAAElFTkSuQmCC");}.ace_dark .ace_fold-widget.ace_end {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAUAAAAFCAYAAACNbyblAAAAH0lEQVQIW2P4//8/AxQ7wNjIAjDMgC4AxjCVKBirIAAF0kz2rlhxpAAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget.ace_closed {background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAAFCAYAAACAcVaiAAAAHElEQVQIW2P4//+/AxAzgDADlOOAznHAKgPWAwARji8UIDTfQQAAAABJRU5ErkJggg==");}.ace_dark .ace_fold-widget:hover {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);background-color: rgba(255, 255, 255, 0.1);}.ace_dark .ace_fold-widget:active {box-shadow: 0 1px 1px rgba(255, 255, 255, 0.2);}.ace_fold-widget.ace_invalid {background-color: #FFB4B4;border-color: #DE5555;}.ace_fade-fold-widgets .ace_fold-widget {-webkit-transition: opacity 0.4s ease 0.05s;transition: opacity 0.4s ease 0.05s;opacity: 0;}.ace_fade-fold-widgets:hover .ace_fold-widget {-webkit-transition: opacity 0.05s ease 0.05s;transition: opacity 0.05s ease 0.05s;opacity:1;}.ace_underline {text-decoration: underline;}.ace_bold {font-weight: bold;}.ace_nobold .ace_bold {font-weight: normal;}.ace_italic {font-style: italic;}.ace_error-marker {background-color: rgba(255, 0, 0,0.2);position: absolute;z-index: 9;}.ace_highlight-marker {background-color: rgba(255, 255, 0,0.2);position: absolute;z-index: 8;}.ace_br1 {border-top-left-radius : 3px;}.ace_br2 {border-top-right-radius : 3px;}.ace_br3 {border-top-left-radius : 3px; border-top-right-radius: 3px;}.ace_br4 {border-bottom-right-radius: 3px;}.ace_br5 {border-top-left-radius : 3px; border-bottom-right-radius: 3px;}.ace_br6 {border-top-right-radius : 3px; border-bottom-right-radius: 3px;}.ace_br7 {border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px;}.ace_br8 {border-bottom-left-radius : 3px;}.ace_br9 {border-top-left-radius : 3px; border-bottom-left-radius: 3px;}.ace_br10{border-top-right-radius : 3px; border-bottom-left-radius: 3px;}.ace_br11{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br12{border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br13{border-top-left-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br14{border-top-right-radius : 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}.ace_br15{border-top-left-radius : 3px; border-top-right-radius: 3px; border-bottom-right-radius: 3px; border-bottom-left-radius: 3px;}';i.importCssString(m,"ace_editor.css");var g=function(e,t){var n=this;this.container=e||i.createElement("div"),this.$keepTextAreaAtCursor=!o.isOldIE,i.addCssClass(this.container,"ace_editor"),this.setTheme(t),this.$gutter=i.createElement("div"),this.$gutter.className="ace_gutter",this.container.appendChild(this.$gutter),this.scroller=i.createElement("div"),this.scroller.className="ace_scroller",this.container.appendChild(this.scroller),this.content=i.createElement("div"),this.content.className="ace_content",this.scroller.appendChild(this.content),this.$gutterLayer=new u(this.$gutter),this.$gutterLayer.on("changeGutterWidth",this.onGutterResize.bind(this)),this.$markerBack=new a(this.content);var r=this.$textLayer=new f(this.content);this.canvas=r.element,this.$markerFront=new a(this.content),this.$cursorLayer=new l(this.content),this.$horizScroll=!1,this.$vScroll=!1,this.scrollBar=this.scrollBarV=new h(this.container,this),this.scrollBarH=new c(this.container,this),this.scrollBarV.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollTop(e.data-n.scrollMargin.top)}),this.scrollBarH.addEventListener("scroll",function(e){n.$scrollAnimation||n.session.setScrollLeft(e.data-n.scrollMargin.left)}),this.scrollTop=0,this.scrollLeft=0,this.cursorPos={row:0,column:0},this.$fontMetrics=new d(this.container),this.$textLayer.$setFontMetrics(this.$fontMetrics),this.$textLayer.addEventListener("changeCharacterSize",function(e){n.updateCharacterSize(),n.onResize(!0,n.gutterWidth,n.$size.width,n.$size.height),n._signal("changeCharacterSize",e)}),this.$size={width:0,height:0,scrollerHeight:0,scrollerWidth:0,$dirty:!0},this.layerConfig={width:1,padding:0,firstRow:0,firstRowScreen:0,lastRow:0,lineHeight:0,characterWidth:0,minHeight:1,maxHeight:1,offset:0,height:1,gutterOffset:1},this.scrollMargin={left:0,right:0,top:0,bottom:0,v:0,h:0},this.$loop=new p(this.$renderChanges.bind(this),this.container.ownerDocument.defaultView),this.$loop.schedule(this.CHANGE_FULL),this.updateCharacterSize(),this.setPadding(4),s.resetOptions(this),s._emit("renderer",this)};(function(){this.CHANGE_CURSOR=1,this.CHANGE_MARKER=2,this.CHANGE_GUTTER=4,this.CHANGE_SCROLL=8,this.CHANGE_LINES=16,this.CHANGE_TEXT=32,this.CHANGE_SIZE=64,this.CHANGE_MARKER_BACK=128,this.CHANGE_MARKER_FRONT=256,this.CHANGE_FULL=512,this.CHANGE_H_SCROLL=1024,r.implement(this,v),this.updateCharacterSize=function(){this.$textLayer.allowBoldFonts!=this.$allowBoldFonts&&(this.$allowBoldFonts=this.$textLayer.allowBoldFonts,this.setStyle("ace_nobold",!this.$allowBoldFonts)),this.layerConfig.characterWidth=this.characterWidth=this.$textLayer.getCharacterWidth(),this.layerConfig.lineHeight=this.lineHeight=this.$textLayer.getLineHeight(),this.$updatePrintMargin()},this.setSession=function(e){this.session&&this.session.doc.off("changeNewLineMode",this.onChangeNewLineMode),this.session=e,e&&this.scrollMargin.top&&e.getScrollTop()<=0&&e.setScrollTop(-this.scrollMargin.top),this.$cursorLayer.setSession(e),this.$markerBack.setSession(e),this.$markerFront.setSession(e),this.$gutterLayer.setSession(e),this.$textLayer.setSession(e);if(!e)return;this.$loop.schedule(this.CHANGE_FULL),this.session.$setFontMetrics(this.$fontMetrics),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null,this.onChangeNewLineMode=this.onChangeNewLineMode.bind(this),this.onChangeNewLineMode(),this.session.doc.on("changeNewLineMode",this.onChangeNewLineMode)},this.updateLines=function(e,t,n){t===undefined&&(t=Infinity),this.$changedLines?(this.$changedLines.firstRow>e&&(this.$changedLines.firstRow=e),this.$changedLines.lastRowthis.layerConfig.lastRow)return;this.$loop.schedule(this.CHANGE_LINES)},this.onChangeNewLineMode=function(){this.$loop.schedule(this.CHANGE_TEXT),this.$textLayer.$updateEolChar()},this.onChangeTabSize=function(){this.$loop.schedule(this.CHANGE_TEXT|this.CHANGE_MARKER),this.$textLayer.onChangeTabSize()},this.updateText=function(){this.$loop.schedule(this.CHANGE_TEXT)},this.updateFull=function(e){e?this.$renderChanges(this.CHANGE_FULL,!0):this.$loop.schedule(this.CHANGE_FULL)},this.updateFontSize=function(){this.$textLayer.checkForSizeChanges()},this.$changes=0,this.$updateSizeAsync=function(){this.$loop.pending?this.$size.$dirty=!0:this.onResize()},this.onResize=function(e,t,n,r){if(this.resizing>2)return;this.resizing>0?this.resizing++:this.resizing=e?1:0;var i=this.container;r||(r=i.clientHeight||i.scrollHeight),n||(n=i.clientWidth||i.scrollWidth);var s=this.$updateCachedSize(e,t,n,r);if(!this.$size.scrollerHeight||!n&&!r)return this.resizing=0;e&&(this.$gutterLayer.$padding=null),e?this.$renderChanges(s|this.$changes,!0):this.$loop.schedule(s|this.$changes),this.resizing&&(this.resizing=0),this.scrollBarV.scrollLeft=this.scrollBarV.scrollTop=null},this.$updateCachedSize=function(e,t,n,r){r-=this.$extraHeight||0;var i=0,s=this.$size,o={width:s.width,height:s.height,scrollerHeight:s.scrollerHeight,scrollerWidth:s.scrollerWidth};r&&(e||s.height!=r)&&(s.height=r,i|=this.CHANGE_SIZE,s.scrollerHeight=s.height,this.$horizScroll&&(s.scrollerHeight-=this.scrollBarH.getHeight()),this.scrollBarV.element.style.bottom=this.scrollBarH.getHeight()+"px",i|=this.CHANGE_SCROLL);if(n&&(e||s.width!=n)){i|=this.CHANGE_SIZE,s.width=n,t==null&&(t=this.$showGutter?this.$gutter.offsetWidth:0),this.gutterWidth=t,this.scrollBarH.element.style.left=this.scroller.style.left=t+"px",s.scrollerWidth=Math.max(0,n-t-this.scrollBarV.getWidth()),this.scrollBarH.element.style.right=this.scroller.style.right=this.scrollBarV.getWidth()+"px",this.scroller.style.bottom=this.scrollBarH.getHeight()+"px";if(this.session&&this.session.getUseWrapMode()&&this.adjustWrapLimit()||e)i|=this.CHANGE_FULL}return s.$dirty=!n||!r,i&&this._signal("resize",o),i},this.onGutterResize=function(){var e=this.$showGutter?this.$gutter.offsetWidth:0;e!=this.gutterWidth&&(this.$changes|=this.$updateCachedSize(!0,e,this.$size.width,this.$size.height)),this.session.getUseWrapMode()&&this.adjustWrapLimit()?this.$loop.schedule(this.CHANGE_FULL):this.$size.$dirty?this.$loop.schedule(this.CHANGE_FULL):(this.$computeLayerConfig(),this.$loop.schedule(this.CHANGE_MARKER))},this.adjustWrapLimit=function(){var e=this.$size.scrollerWidth-this.$padding*2,t=Math.floor(e/this.characterWidth);return this.session.adjustWrapLimit(t,this.$showPrintMargin&&this.$printMarginColumn)},this.setAnimatedScroll=function(e){this.setOption("animatedScroll",e)},this.getAnimatedScroll=function(){return this.$animatedScroll},this.setShowInvisibles=function(e){this.setOption("showInvisibles",e)},this.getShowInvisibles=function(){return this.getOption("showInvisibles")},this.getDisplayIndentGuides=function(){return this.getOption("displayIndentGuides")},this.setDisplayIndentGuides=function(e){this.setOption("displayIndentGuides",e)},this.setShowPrintMargin=function(e){this.setOption("showPrintMargin",e)},this.getShowPrintMargin=function(){return this.getOption("showPrintMargin")},this.setPrintMarginColumn=function(e){this.setOption("printMarginColumn",e)},this.getPrintMarginColumn=function(){return this.getOption("printMarginColumn")},this.getShowGutter=function(){return this.getOption("showGutter")},this.setShowGutter=function(e){return this.setOption("showGutter",e)},this.getFadeFoldWidgets=function(){return this.getOption("fadeFoldWidgets")},this.setFadeFoldWidgets=function(e){this.setOption("fadeFoldWidgets",e)},this.setHighlightGutterLine=function(e){this.setOption("highlightGutterLine",e)},this.getHighlightGutterLine=function(){return this.getOption("highlightGutterLine")},this.$updateGutterLineHighlight=function(){var e=this.$cursorLayer.$pixelPos,t=this.layerConfig.lineHeight;if(this.session.getUseWrapMode()){var n=this.session.selection.getCursor();n.column=0,e=this.$cursorLayer.getPixelPosition(n,!0),t*=this.session.getRowLength(n.row)}this.$gutterLineHighlight.style.top=e.top-this.layerConfig.offset+"px",this.$gutterLineHighlight.style.height=t+"px"},this.$updatePrintMargin=function(){if(!this.$showPrintMargin&&!this.$printMarginEl)return;if(!this.$printMarginEl){var e=i.createElement("div");e.className="ace_layer ace_print-margin-layer",this.$printMarginEl=i.createElement("div"),this.$printMarginEl.className="ace_print-margin",e.appendChild(this.$printMarginEl),this.content.insertBefore(e,this.content.firstChild)}var t=this.$printMarginEl.style;t.left=this.characterWidth*this.$printMarginColumn+this.$padding+"px",t.visibility=this.$showPrintMargin?"visible":"hidden",this.session&&this.session.$wrap==-1&&this.adjustWrapLimit()},this.getContainerElement=function(){return this.container},this.getMouseEventTarget=function(){return this.scroller},this.getTextAreaContainer=function(){return this.container},this.$moveTextAreaToCursor=function(){if(!this.$keepTextAreaAtCursor)return;var e=this.layerConfig,t=this.$cursorLayer.$pixelPos.top,n=this.$cursorLayer.$pixelPos.left;t-=e.offset;var r=this.textarea.style,i=this.lineHeight;if(t<0||t>e.height-i){r.top=r.left="0";return}var s=this.characterWidth;if(this.$composition){var o=this.textarea.value.replace(/^\x01+/,"");s*=this.session.$getStringScreenWidth(o)[0]+2,i+=2}n-=this.scrollLeft,n>this.$size.scrollerWidth-s&&(n=this.$size.scrollerWidth-s),n+=this.gutterWidth,r.height=i+"px",r.width=s+"px",r.left=Math.min(n,this.$size.scrollerWidth-s)+"px",r.top=Math.min(t,this.$size.height-i)+"px"},this.getFirstVisibleRow=function(){return this.layerConfig.firstRow},this.getFirstFullyVisibleRow=function(){return this.layerConfig.firstRow+(this.layerConfig.offset===0?0:1)},this.getLastFullyVisibleRow=function(){var e=this.layerConfig,t=e.lastRow,n=this.session.documentToScreenRow(t,0)*e.lineHeight;return n-this.session.getScrollTop()>e.height-e.lineHeight?t-1:t},this.getLastVisibleRow=function(){return this.layerConfig.lastRow},this.$padding=null,this.setPadding=function(e){this.$padding=e,this.$textLayer.setPadding(e),this.$cursorLayer.setPadding(e),this.$markerFront.setPadding(e),this.$markerBack.setPadding(e),this.$loop.schedule(this.CHANGE_FULL),this.$updatePrintMargin()},this.setScrollMargin=function(e,t,n,r){var i=this.scrollMargin;i.top=e|0,i.bottom=t|0,i.right=r|0,i.left=n|0,i.v=i.top+i.bottom,i.h=i.left+i.right,i.top&&this.scrollTop<=0&&this.session&&this.session.setScrollTop(-i.top),this.updateFull()},this.getHScrollBarAlwaysVisible=function(){return this.$hScrollBarAlwaysVisible},this.setHScrollBarAlwaysVisible=function(e){this.setOption("hScrollBarAlwaysVisible",e)},this.getVScrollBarAlwaysVisible=function(){return this.$vScrollBarAlwaysVisible},this.setVScrollBarAlwaysVisible=function(e){this.setOption("vScrollBarAlwaysVisible",e)},this.$updateScrollBarV=function(){var e=this.layerConfig.maxHeight,t=this.$size.scrollerHeight;!this.$maxLines&&this.$scrollPastEnd&&(e-=(t-this.lineHeight)*this.$scrollPastEnd,this.scrollTop>e-t&&(e=this.scrollTop+t,this.scrollBarV.scrollTop=null)),this.scrollBarV.setScrollHeight(e+this.scrollMargin.v),this.scrollBarV.setScrollTop(this.scrollTop+this.scrollMargin.top)},this.$updateScrollBarH=function(){this.scrollBarH.setScrollWidth(this.layerConfig.width+2*this.$padding+this.scrollMargin.h),this.scrollBarH.setScrollLeft(this.scrollLeft+this.scrollMargin.left)},this.$frozen=!1,this.freeze=function(){this.$frozen=!0},this.unfreeze=function(){this.$frozen=!1},this.$renderChanges=function(e,t){this.$changes&&(e|=this.$changes,this.$changes=0);if(!this.session||!this.container.offsetWidth||this.$frozen||!e&&!t){this.$changes|=e;return}if(this.$size.$dirty)return this.$changes|=e,this.onResize(!0);this.lineHeight||this.$textLayer.checkForSizeChanges(),this._signal("beforeRender");var n=this.layerConfig;if(e&this.CHANGE_FULL||e&this.CHANGE_SIZE||e&this.CHANGE_TEXT||e&this.CHANGE_LINES||e&this.CHANGE_SCROLL||e&this.CHANGE_H_SCROLL){e|=this.$computeLayerConfig();if(n.firstRow!=this.layerConfig.firstRow&&n.firstRowScreen==this.layerConfig.firstRowScreen){var r=this.scrollTop+(n.firstRow-this.layerConfig.firstRow)*this.lineHeight;r>0&&(this.scrollTop=r,e|=this.CHANGE_SCROLL,e|=this.$computeLayerConfig())}n=this.layerConfig,this.$updateScrollBarV(),e&this.CHANGE_H_SCROLL&&this.$updateScrollBarH(),this.$gutterLayer.element.style.marginTop=-n.offset+"px",this.content.style.marginTop=-n.offset+"px",this.content.style.width=n.width+2*this.$padding+"px",this.content.style.height=n.minHeight+"px"}e&this.CHANGE_H_SCROLL&&(this.content.style.marginLeft=-this.scrollLeft+"px",this.scroller.className=this.scrollLeft<=0?"ace_scroller":"ace_scroller ace_scroll-left");if(e&this.CHANGE_FULL){this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this._signal("afterRender");return}if(e&this.CHANGE_SCROLL){e&this.CHANGE_TEXT||e&this.CHANGE_LINES?this.$textLayer.update(n):this.$textLayer.scrollLines(n),this.$showGutter&&this.$gutterLayer.update(n),this.$markerBack.update(n),this.$markerFront.update(n),this.$cursorLayer.update(n),this.$highlightGutterLine&&this.$updateGutterLineHighlight(),this.$moveTextAreaToCursor(),this._signal("afterRender");return}e&this.CHANGE_TEXT?(this.$textLayer.update(n),this.$showGutter&&this.$gutterLayer.update(n)):e&this.CHANGE_LINES?(this.$updateLines()||e&this.CHANGE_GUTTER&&this.$showGutter)&&this.$gutterLayer.update(n):(e&this.CHANGE_TEXT||e&this.CHANGE_GUTTER)&&this.$showGutter&&this.$gutterLayer.update(n),e&this.CHANGE_CURSOR&&(this.$cursorLayer.update(n),this.$moveTextAreaToCursor(),this.$highlightGutterLine&&this.$updateGutterLineHighlight()),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_FRONT)&&this.$markerFront.update(n),e&(this.CHANGE_MARKER|this.CHANGE_MARKER_BACK)&&this.$markerBack.update(n),this._signal("afterRender")},this.$autosize=function(){var e=this.session.getScreenLength()*this.lineHeight,t=this.$maxLines*this.lineHeight,n=Math.min(t,Math.max((this.$minLines||1)*this.lineHeight,e))+this.scrollMargin.v+(this.$extraHeight||0);this.$horizScroll&&(n+=this.scrollBarH.getHeight()),this.$maxPixelHeight&&n>this.$maxPixelHeight&&(n=this.$maxPixelHeight);var r=e>t;if(n!=this.desiredHeight||this.$size.height!=this.desiredHeight||r!=this.$vScroll){r!=this.$vScroll&&(this.$vScroll=r,this.scrollBarV.setVisible(r));var i=this.container.clientWidth;this.container.style.height=n+"px",this.$updateCachedSize(!0,this.$gutterWidth,i,n),this.desiredHeight=n,this._signal("autosize")}},this.$computeLayerConfig=function(){var e=this.session,t=this.$size,n=t.height<=2*this.lineHeight,r=this.session.getScreenLength(),i=r*this.lineHeight,s=this.$getLongestLine(),o=!n&&(this.$hScrollBarAlwaysVisible||t.scrollerWidth-s-2*this.$padding<0),u=this.$horizScroll!==o;u&&(this.$horizScroll=o,this.scrollBarH.setVisible(o));var a=this.$vScroll;this.$maxLines&&this.lineHeight>1&&this.$autosize();var f=this.scrollTop%this.lineHeight,l=t.scrollerHeight+this.lineHeight,c=!this.$maxLines&&this.$scrollPastEnd?(t.scrollerHeight-this.lineHeight)*this.$scrollPastEnd:0;i+=c;var h=this.scrollMargin;this.session.setScrollTop(Math.max(-h.top,Math.min(this.scrollTop,i-t.scrollerHeight+h.bottom))),this.session.setScrollLeft(Math.max(-h.left,Math.min(this.scrollLeft,s+2*this.$padding-t.scrollerWidth+h.right)));var p=!n&&(this.$vScrollBarAlwaysVisible||t.scrollerHeight-i+c<0||this.scrollTop>h.top),d=a!==p;d&&(this.$vScroll=p,this.scrollBarV.setVisible(p));var v=Math.ceil(l/this.lineHeight)-1,m=Math.max(0,Math.round((this.scrollTop-f)/this.lineHeight)),g=m+v,y,b,w=this.lineHeight;m=e.screenToDocumentRow(m,0);var E=e.getFoldLine(m);E&&(m=E.start.row),y=e.documentToScreenRow(m,0),b=e.getRowLength(m)*w,g=Math.min(e.screenToDocumentRow(g,0),e.getLength()-1),l=t.scrollerHeight+e.getRowLength(g)*w+b,f=this.scrollTop-y*w;var S=0;this.layerConfig.width!=s&&(S=this.CHANGE_H_SCROLL);if(u||d)S=this.$updateCachedSize(!0,this.gutterWidth,t.width,t.height),this._signal("scrollbarVisibilityChanged"),d&&(s=this.$getLongestLine());return this.layerConfig={width:s,padding:this.$padding,firstRow:m,firstRowScreen:y,lastRow:g,lineHeight:w,characterWidth:this.characterWidth,minHeight:l,maxHeight:i,offset:f,gutterOffset:w?Math.max(0,Math.ceil((f+t.height-t.scrollerHeight)/w)):0,height:this.$size.scrollerHeight},S},this.$updateLines=function(){var e=this.$changedLines.firstRow,t=this.$changedLines.lastRow;this.$changedLines=null;var n=this.layerConfig;if(e>n.lastRow+1)return;if(ts?(t&&a+o>s+this.lineHeight&&(s-=t*this.$size.scrollerHeight),s===0&&(s=-this.scrollMargin.top),this.session.setScrollTop(s)):a+this.$size.scrollerHeight-ui?(i=1-this.scrollMargin.top)return!0;if(t>0&&this.session.getScrollTop()+this.$size.scrollerHeight-this.layerConfig.maxHeight<-1+this.scrollMargin.bottom)return!0;if(e<0&&this.session.getScrollLeft()>=1-this.scrollMargin.left)return!0;if(e>0&&this.session.getScrollLeft()+this.$size.scrollerWidth-this.layerConfig.width<-1+this.scrollMargin.right)return!0},this.pixelToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=(e+this.scrollLeft-n.left-this.$padding)/this.characterWidth,i=Math.floor((t+this.scrollTop-n.top)/this.lineHeight),s=Math.round(r);return{row:i,column:s,side:r-s>0?1:-1}},this.screenToTextCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=Math.round((e+this.scrollLeft-n.left-this.$padding)/this.characterWidth),i=(t+this.scrollTop-n.top)/this.lineHeight;return this.session.screenToDocumentPosition(i,Math.max(r,0))},this.textToScreenCoordinates=function(e,t){var n=this.scroller.getBoundingClientRect(),r=this.session.documentToScreenPosition(e,t),i=this.$padding+Math.round(r.column*this.characterWidth),s=r.row*this.lineHeight;return{pageX:n.left+i-this.scrollLeft,pageY:n.top+s-this.scrollTop}},this.visualizeFocus=function(){i.addCssClass(this.container,"ace_focus")},this.visualizeBlur=function(){i.removeCssClass(this.container,"ace_focus")},this.showComposition=function(e){this.$composition||(this.$composition={keepTextAreaAtCursor:this.$keepTextAreaAtCursor,cssText:this.textarea.style.cssText}),this.$keepTextAreaAtCursor=!0,i.addCssClass(this.textarea,"ace_composition"),this.textarea.style.cssText="",this.$moveTextAreaToCursor()},this.setCompositionText=function(e){this.$moveTextAreaToCursor()},this.hideComposition=function(){if(!this.$composition)return;i.removeCssClass(this.textarea,"ace_composition"),this.$keepTextAreaAtCursor=this.$composition.keepTextAreaAtCursor,this.textarea.style.cssText=this.$composition.cssText,this.$composition=null},this.setTheme=function(e,t){function o(r){if(n.$themeId!=e)return t&&t();if(!r||!r.cssClass)throw new Error("couldn't load module "+e+" or it didn't call define");i.importCssString(r.cssText,r.cssClass,n.container.ownerDocument),n.theme&&i.removeCssClass(n.container,n.theme.cssClass);var s="padding"in r?r.padding:"padding"in(n.theme||{})?4:n.$padding;n.$padding&&s!=n.$padding&&n.setPadding(s),n.$theme=r.cssClass,n.theme=r,i.addCssClass(n.container,r.cssClass),i.setCssClass(n.container,"ace_dark",r.isDark),n.$size&&(n.$size.width=0,n.$updateSizeAsync()),n._dispatchEvent("themeLoaded",{theme:r}),t&&t()}var n=this;this.$themeId=e,n._dispatchEvent("themeChange",{theme:e});if(!e||typeof e=="string"){var r=e||this.$options.theme.initialValue;s.loadModule(["theme",r],o)}else o(e)},this.getTheme=function(){return this.$themeId},this.setStyle=function(e,t){i.setCssClass(this.container,e,t!==!1)},this.unsetStyle=function(e){i.removeCssClass(this.container,e)},this.setCursorStyle=function(e){this.scroller.style.cursor!=e&&(this.scroller.style.cursor=e)},this.setMouseCursor=function(e){this.scroller.style.cursor=e},this.destroy=function(){this.$textLayer.destroy(),this.$cursorLayer.destroy()}}).call(g.prototype),s.defineOptions(g.prototype,"renderer",{animatedScroll:{initialValue:!1},showInvisibles:{set:function(e){this.$textLayer.setShowInvisibles(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!1},showPrintMargin:{set:function(){this.$updatePrintMargin()},initialValue:!0},printMarginColumn:{set:function(){this.$updatePrintMargin()},initialValue:80},printMargin:{set:function(e){typeof e=="number"&&(this.$printMarginColumn=e),this.$showPrintMargin=!!e,this.$updatePrintMargin()},get:function(){return this.$showPrintMargin&&this.$printMarginColumn}},showGutter:{set:function(e){this.$gutter.style.display=e?"block":"none",this.$loop.schedule(this.CHANGE_FULL),this.onGutterResize()},initialValue:!0},fadeFoldWidgets:{set:function(e){i.setCssClass(this.$gutter,"ace_fade-fold-widgets",e)},initialValue:!1},showFoldWidgets:{set:function(e){this.$gutterLayer.setShowFoldWidgets(e)},initialValue:!0},showLineNumbers:{set:function(e){this.$gutterLayer.setShowLineNumbers(e),this.$loop.schedule(this.CHANGE_GUTTER)},initialValue:!0},displayIndentGuides:{set:function(e){this.$textLayer.setDisplayIndentGuides(e)&&this.$loop.schedule(this.CHANGE_TEXT)},initialValue:!0},highlightGutterLine:{set:function(e){if(!this.$gutterLineHighlight){this.$gutterLineHighlight=i.createElement("div"),this.$gutterLineHighlight.className="ace_gutter-active-line",this.$gutter.appendChild(this.$gutterLineHighlight);return}this.$gutterLineHighlight.style.display=e?"":"none",this.$cursorLayer.$pixelPos&&this.$updateGutterLineHighlight()},initialValue:!1,value:!0},hScrollBarAlwaysVisible:{set:function(e){(!this.$hScrollBarAlwaysVisible||!this.$horizScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},vScrollBarAlwaysVisible:{set:function(e){(!this.$vScrollBarAlwaysVisible||!this.$vScroll)&&this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:!1},fontSize:{set:function(e){typeof e=="number"&&(e+="px"),this.container.style.fontSize=e,this.updateFontSize()},initialValue:12},fontFamily:{set:function(e){this.container.style.fontFamily=e,this.updateFontSize()}},maxLines:{set:function(e){this.updateFull()}},minLines:{set:function(e){this.updateFull()}},maxPixelHeight:{set:function(e){this.updateFull()},initialValue:0},scrollPastEnd:{set:function(e){e=+e||0;if(this.$scrollPastEnd==e)return;this.$scrollPastEnd=e,this.$loop.schedule(this.CHANGE_SCROLL)},initialValue:0,handlesSet:!0},fixedWidthGutter:{set:function(e){this.$gutterLayer.$fixedWidth=!!e,this.$loop.schedule(this.CHANGE_GUTTER)}},theme:{set:function(e){this.setTheme(e)},get:function(){return this.$themeId||this.theme},initialValue:"./theme/textmate",handlesSet:!0}}),t.VirtualRenderer=g}),define("ace/worker/worker_client",["require","exports","module","ace/lib/oop","ace/lib/net","ace/lib/event_emitter","ace/config"],function(e,t,n){"use strict";var r=e("../lib/oop"),i=e("../lib/net"),s=e("../lib/event_emitter").EventEmitter,o=e("../config"),u=function(t,n,r,i){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.onMessage=this.onMessage.bind(this),e.nameToUrl&&!e.toUrl&&(e.toUrl=e.nameToUrl);if(o.get("packaged")||!e.toUrl)i=i||o.moduleUrl(n,"worker");else{var s=this.$normalizePath;i=i||s(e.toUrl("ace/worker/worker.js",null,"_"));var u={};t.forEach(function(t){u[t]=s(e.toUrl(t,null,"_").replace(/(\.js)?(\?.*)?$/,""))})}try{this.$worker=new Worker(i)}catch(a){if(!(a instanceof window.DOMException))throw a;var f=this.$workerBlob(i),l=window.URL||window.webkitURL,c=l.createObjectURL(f);this.$worker=new Worker(c),l.revokeObjectURL(c)}this.$worker.postMessage({init:!0,tlns:u,module:n,classname:r}),this.callbackId=1,this.callbacks={},this.$worker.onmessage=this.onMessage};(function(){r.implement(this,s),this.onMessage=function(e){var t=e.data;switch(t.type){case"event":this._signal(t.name,{data:t.data});break;case"call":var n=this.callbacks[t.id];n&&(n(t.data),delete this.callbacks[t.id]);break;case"error":this.reportError(t.data);break;case"log":window.console&&console.log&&console.log.apply(console,t.data)}},this.reportError=function(e){window.console&&console.error&&console.error(e)},this.$normalizePath=function(e){return i.qualifyURL(e)},this.terminate=function(){this._signal("terminate",{}),this.deltaQueue=null,this.$worker.terminate(),this.$worker=null,this.$doc&&this.$doc.off("change",this.changeListener),this.$doc=null},this.send=function(e,t){this.$worker.postMessage({command:e,args:t})},this.call=function(e,t,n){if(n){var r=this.callbackId++;this.callbacks[r]=n,t.push(r)}this.send(e,t)},this.emit=function(e,t){try{this.$worker.postMessage({event:e,data:{data:t.data}})}catch(n){console.error(n.stack)}},this.attachToDocument=function(e){this.$doc&&this.terminate(),this.$doc=e,this.call("setValue",[e.getValue()]),e.on("change",this.changeListener)},this.changeListener=function(e){this.deltaQueue||(this.deltaQueue=[],setTimeout(this.$sendDeltaQueue,0)),e.action=="insert"?this.deltaQueue.push(e.start,e.lines):this.deltaQueue.push(e.start,e.end)},this.$sendDeltaQueue=function(){var e=this.deltaQueue;if(!e)return;this.deltaQueue=null,e.length>50&&e.length>this.$doc.getLength()>>1?this.call("setValue",[this.$doc.getValue()]):this.emit("change",{data:e})},this.$workerBlob=function(e){var t="importScripts('"+i.qualifyURL(e)+"');";try{return new Blob([t],{type:"application/javascript"})}catch(n){var r=window.BlobBuilder||window.WebKitBlobBuilder||window.MozBlobBuilder,s=new r;return s.append(t),s.getBlob("application/javascript")}}}).call(u.prototype);var a=function(e,t,n){this.$sendDeltaQueue=this.$sendDeltaQueue.bind(this),this.changeListener=this.changeListener.bind(this),this.callbackId=1,this.callbacks={},this.messageBuffer=[];var r=null,i=!1,u=Object.create(s),a=this;this.$worker={},this.$worker.terminate=function(){},this.$worker.postMessage=function(e){a.messageBuffer.push(e),r&&(i?setTimeout(f):f())},this.setEmitSync=function(e){i=e};var f=function(){var e=a.messageBuffer.shift();e.command?r[e.command].apply(r,e.args):e.event&&u._signal(e.event,e.data)};u.postMessage=function(e){a.onMessage({data:e})},u.callback=function(e,t){this.postMessage({type:"call",id:t,data:e})},u.emit=function(e,t){this.postMessage({type:"event",name:e,data:t})},o.loadModule(["worker",t],function(e){r=new e[n](u);while(a.messageBuffer.length)f()})};a.prototype=u.prototype,t.UIWorkerClient=a,t.WorkerClient=u}),define("ace/placeholder",["require","exports","module","ace/range","ace/lib/event_emitter","ace/lib/oop"],function(e,t,n){"use strict";var r=e("./range").Range,i=e("./lib/event_emitter").EventEmitter,s=e("./lib/oop"),o=function(e,t,n,r,i,s){var o=this;this.length=t,this.session=e,this.doc=e.getDocument(),this.mainClass=i,this.othersClass=s,this.$onUpdate=this.onUpdate.bind(this),this.doc.on("change",this.$onUpdate),this.$others=r,this.$onCursorChange=function(){setTimeout(function(){o.onCursorChange()})},this.$pos=n;var u=e.getUndoManager().$undoStack||e.getUndoManager().$undostack||{length:-1};this.$undoStackDepth=u.length,this.setup(),e.selection.on("changeCursor",this.$onCursorChange)};(function(){s.implement(this,i),this.setup=function(){var e=this,t=this.doc,n=this.session;this.selectionBefore=n.selection.toJSON(),n.selection.inMultiSelectMode&&n.selection.toSingleRange(),this.pos=t.createAnchor(this.$pos.row,this.$pos.column);var i=this.pos;i.$insertRight=!0,i.detach(),i.markerId=n.addMarker(new r(i.row,i.column,i.row,i.column+this.length),this.mainClass,null,!1),this.others=[],this.$others.forEach(function(n){var r=t.createAnchor(n.row,n.column);r.$insertRight=!0,r.detach(),e.others.push(r)}),n.setUndoSelect(!1)},this.showOtherMarkers=function(){if(this.othersActive)return;var e=this.session,t=this;this.othersActive=!0,this.others.forEach(function(n){n.markerId=e.addMarker(new r(n.row,n.column,n.row,n.column+t.length),t.othersClass,null,!1)})},this.hideOtherMarkers=function(){if(!this.othersActive)return;this.othersActive=!1;for(var e=0;e=this.pos.column&&t.start.column<=this.pos.column+this.length+1,s=t.start.column-this.pos.column;this.updateAnchors(e),i&&(this.length+=n);if(i&&!this.session.$fromUndo)if(e.action==="insert")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};this.doc.insertMergedLines(a,e.lines)}else if(e.action==="remove")for(var o=this.others.length-1;o>=0;o--){var u=this.others[o],a={row:u.row,column:u.column+s};this.doc.remove(new r(a.row,a.column,a.row,a.column-n))}this.$updating=!1,this.updateMarkers()},this.updateAnchors=function(e){this.pos.onChange(e);for(var t=this.others.length;t--;)this.others[t].onChange(e);this.updateMarkers()},this.updateMarkers=function(){if(this.$updating)return;var e=this,t=this.session,n=function(n,i){t.removeMarker(n.markerId),n.markerId=t.addMarker(new r(n.row,n.column,n.row,n.column+e.length),i,null,!1)};n(this.pos,this.mainClass);for(var i=this.others.length;i--;)n(this.others[i],this.othersClass)},this.onCursorChange=function(e){if(this.$updating||!this.session)return;var t=this.session.selection.getCursor();t.row===this.pos.row&&t.column>=this.pos.column&&t.column<=this.pos.column+this.length?(this.showOtherMarkers(),this._emit("cursorEnter",e)):(this.hideOtherMarkers(),this._emit("cursorLeave",e))},this.detach=function(){this.session.removeMarker(this.pos&&this.pos.markerId),this.hideOtherMarkers(),this.doc.removeEventListener("change",this.$onUpdate),this.session.selection.removeEventListener("changeCursor",this.$onCursorChange),this.session.setUndoSelect(!0),this.session=null},this.cancel=function(){if(this.$undoStackDepth===-1)return;var e=this.session.getUndoManager(),t=(e.$undoStack||e.$undostack).length-this.$undoStackDepth;for(var n=0;n1&&!this.inMultiSelectMode&&(this._signal("multiSelect"),this.inMultiSelectMode=!0,this.session.$undoSelect=!1,this.rangeList.attach(this.session)),t||this.fromOrientedRange(e)},this.toSingleRange=function(e){e=e||this.ranges[0];var t=this.rangeList.removeAll();t.length&&this.$onRemoveRange(t),e&&this.fromOrientedRange(e)},this.substractPoint=function(e){var t=this.rangeList.substractPoint(e);if(t)return this.$onRemoveRange(t),t[0]},this.mergeOverlappingRanges=function(){var e=this.rangeList.merge();e.length?this.$onRemoveRange(e):this.ranges[0]&&this.fromOrientedRange(this.ranges[0])},this.$onAddRange=function(e){this.rangeCount=this.rangeList.ranges.length,this.ranges.unshift(e),this._signal("addRange",{range:e})},this.$onRemoveRange=function(e){this.rangeCount=this.rangeList.ranges.length;if(this.rangeCount==1&&this.inMultiSelectMode){var t=this.rangeList.ranges.pop();e.push(t),this.rangeCount=0}for(var n=e.length;n--;){var r=this.ranges.indexOf(e[n]);this.ranges.splice(r,1)}this._signal("removeRange",{ranges:e}),this.rangeCount===0&&this.inMultiSelectMode&&(this.inMultiSelectMode=!1,this._signal("singleSelect"),this.session.$undoSelect=!0,this.rangeList.detach(this.session)),t=t||this.ranges[0],t&&!t.isEqual(this.getRange())&&this.fromOrientedRange(t)},this.$initRangeList=function(){if(this.rangeList)return;this.rangeList=new r,this.ranges=[],this.rangeCount=0},this.getAllRanges=function(){return this.rangeCount?this.rangeList.ranges.concat():[this.getRange()]},this.splitIntoLines=function(){if(this.rangeCount>1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var n=this.getRange(),r=this.isBackwards(),s=n.start.row,o=n.end.row;if(s==o){if(r)var u=n.end,a=n.start;else var u=n.start,a=n.end;this.addRange(i.fromPoints(a,a)),this.addRange(i.fromPoints(u,u));return}var f=[],l=this.getLineRange(s,!0);l.start.column=n.start.column,f.push(l);for(var c=s+1;c1){var e=this.rangeList.ranges,t=e[e.length-1],n=i.fromPoints(e[0].start,t.end);this.toSingleRange(),this.setSelectionRange(n,t.cursor==t.start)}else{var r=this.session.documentToScreenPosition(this.selectionLead),s=this.session.documentToScreenPosition(this.selectionAnchor),o=this.rectangularRangeBlock(r,s);o.forEach(this.addRange,this)}},this.rectangularRangeBlock=function(e,t,n){var r=[],s=e.column0)d--;if(d>0){var m=0;while(r[m].isEmpty())m++}for(var g=d;g>=m;g--)r[g].isEmpty()&&r.splice(g,1)}return r}}.call(s.prototype);var d=e("./editor").Editor;(function(){this.updateSelectionMarkers=function(){this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.addSelectionMarker=function(e){e.cursor||(e.cursor=e.end);var t=this.getSelectionStyle();return e.marker=this.session.addMarker(e,"ace_selection",t),this.session.$selectionMarkers.push(e),this.session.selectionMarkerCount=this.session.$selectionMarkers.length,e},this.removeSelectionMarker=function(e){if(!e.marker)return;this.session.removeMarker(e.marker);var t=this.session.$selectionMarkers.indexOf(e);t!=-1&&this.session.$selectionMarkers.splice(t,1),this.session.selectionMarkerCount=this.session.$selectionMarkers.length},this.removeSelectionMarkers=function(e){var t=this.session.$selectionMarkers;for(var n=e.length;n--;){var r=e[n];if(!r.marker)continue;this.session.removeMarker(r.marker);var i=t.indexOf(r);i!=-1&&t.splice(i,1)}this.session.selectionMarkerCount=t.length},this.$onAddRange=function(e){this.addSelectionMarker(e.range),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onRemoveRange=function(e){this.removeSelectionMarkers(e.ranges),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onMultiSelect=function(e){if(this.inMultiSelectMode)return;this.inMultiSelectMode=!0,this.setStyle("ace_multiselect"),this.keyBinding.addKeyboardHandler(f.keyboardHandler),this.commands.setDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers()},this.$onSingleSelect=function(e){if(this.session.multiSelect.inVirtualMode)return;this.inMultiSelectMode=!1,this.unsetStyle("ace_multiselect"),this.keyBinding.removeKeyboardHandler(f.keyboardHandler),this.commands.removeDefaultHandler("exec",this.$onMultiSelectExec),this.renderer.updateCursor(),this.renderer.updateBackMarkers(),this._emit("changeSelection")},this.$onMultiSelectExec=function(e){var t=e.command,n=e.editor;if(!n.multiSelect)return;if(!t.multiSelectAction){var r=t.exec(n,e.args||{});n.multiSelect.addRange(n.multiSelect.toOrientedRange()),n.multiSelect.mergeOverlappingRanges()}else t.multiSelectAction=="forEach"?r=n.forEachSelection(t,e.args):t.multiSelectAction=="forEachLine"?r=n.forEachSelection(t,e.args,!0):t.multiSelectAction=="single"?(n.exitMultiSelectMode(),r=t.exec(n,e.args||{})):r=t.multiSelectAction(n,e.args||{});return r},this.forEachSelection=function(e,t,n){if(this.inVirtualSelectionMode)return;var r=n&&n.keepOrder,i=n==1||n&&n.$byLines,o=this.session,u=this.selection,a=u.rangeList,f=(r?u:a).ranges,l;if(!f.length)return e.exec?e.exec(this,t||{}):e(this,t||{});var c=u._eventRegistry;u._eventRegistry={};var h=new s(o);this.inVirtualSelectionMode=!0;for(var p=f.length;p--;){if(i)while(p>0&&f[p].start.row==f[p-1].end.row)p--;h.fromOrientedRange(f[p]),h.index=p,this.selection=o.selection=h;var d=e.exec?e.exec(this,t||{}):e(this,t||{});!l&&d!==undefined&&(l=d),h.toOrientedRange(f[p])}h.detach(),this.selection=o.selection=u,this.inVirtualSelectionMode=!1,u._eventRegistry=c,u.mergeOverlappingRanges();var v=this.renderer.$scrollAnimation;return this.onCursorChange(),this.onSelectionChange(),v&&v.from==v.to&&this.renderer.animateScrolling(v.from),l},this.exitMultiSelectMode=function(){if(!this.inMultiSelectMode||this.inVirtualSelectionMode)return;this.multiSelect.toSingleRange()},this.getSelectedText=function(){var e="";if(this.inMultiSelectMode&&!this.inVirtualSelectionMode){var t=this.multiSelect.rangeList.ranges,n=[];for(var r=0;r0);u<0&&(u=0),f>=c&&(f=c-1)}var p=this.session.removeFullLines(u,f);p=this.$reAlignText(p,l),this.session.insert({row:u,column:0},p.join("\n")+"\n"),l||(o.start.column=0,o.end.column=p[p.length-1].length),this.selection.setRange(o)}else{s.forEach(function(e){t.substractPoint(e.cursor)});var d=0,v=Infinity,m=n.map(function(t){var n=t.cursor,r=e.getLine(n.row),i=r.substr(n.column).search(/\S/g);return i==-1&&(i=0),n.column>d&&(d=n.column),io?e.insert(r,a.stringRepeat(" ",s-o)):e.remove(new i(r.row,r.column,r.row,r.column-s+o)),t.start.column=t.end.column=d,t.start.row=t.end.row=r.row,t.cursor=t.end}),t.fromOrientedRange(n[0]),this.renderer.updateCursor(),this.renderer.updateBackMarkers()}},this.$reAlignText=function(e,t){function u(e){return a.stringRepeat(" ",e)}function f(e){return e[2]?u(i)+e[2]+u(s-e[2].length+o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function l(e){return e[2]?u(i+s-e[2].length)+e[2]+u(o," ")+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}function c(e){return e[2]?u(i)+e[2]+u(o)+e[4].replace(/^([=:])\s+/,"$1 "):e[0]}var n=!0,r=!0,i,s,o;return e.map(function(e){var t=e.match(/(\s*)(.*?)(\s*)([=:].*)/);return t?i==null?(i=t[1].length,s=t[2].length,o=t[3].length,t):(i+s+o!=t[1].length+t[2].length+t[3].length&&(r=!1),i!=t[1].length&&(n=!1),i>t[1].length&&(i=t[1].length),st[3].length&&(o=t[3].length),t):[e]}).map(t?f:n?r?l:f:c)}}).call(d.prototype),t.onSessionChange=function(e){var t=e.session;t&&!t.multiSelect&&(t.$selectionMarkers=[],t.selection.$initRangeList(),t.multiSelect=t.selection),this.multiSelect=t&&t.multiSelect;var n=e.oldSession;n&&(n.multiSelect.off("addRange",this.$onAddRange),n.multiSelect.off("removeRange",this.$onRemoveRange),n.multiSelect.off("multiSelect",this.$onMultiSelect),n.multiSelect.off("singleSelect",this.$onSingleSelect),n.multiSelect.lead.off("change",this.$checkMultiselectChange),n.multiSelect.anchor.off("change",this.$checkMultiselectChange)),t&&(t.multiSelect.on("addRange",this.$onAddRange),t.multiSelect.on("removeRange",this.$onRemoveRange),t.multiSelect.on("multiSelect",this.$onMultiSelect),t.multiSelect.on("singleSelect",this.$onSingleSelect),t.multiSelect.lead.on("change",this.$checkMultiselectChange),t.multiSelect.anchor.on("change",this.$checkMultiselectChange)),t&&this.inMultiSelectMode!=t.selection.inMultiSelectMode&&(t.selection.inMultiSelectMode?this.$onMultiSelect():this.$onSingleSelect())},t.MultiSelect=m,e("./config").defineOptions(d.prototype,"editor",{enableMultiselect:{set:function(e){m(this),e?(this.on("changeSession",this.$multiselectOnSessionChange),this.on("mousedown",o)):(this.off("changeSession",this.$multiselectOnSessionChange),this.off("mousedown",o))},value:!0},enableBlockSelect:{set:function(e){this.$blockSelectEnabled=e},value:!0}})}),define("ace/mode/folding/fold_mode",["require","exports","module","ace/range"],function(e,t,n){"use strict";var r=e("../../range").Range,i=t.FoldMode=function(){};(function(){this.foldingStartMarker=null,this.foldingStopMarker=null,this.getFoldWidget=function(e,t,n){var r=e.getLine(n);return this.foldingStartMarker.test(r)?"start":t=="markbeginend"&&this.foldingStopMarker&&this.foldingStopMarker.test(r)?"end":""},this.getFoldWidgetRange=function(e,t,n){return null},this.indentationBlock=function(e,t,n){var i=/\S/,s=e.getLine(t),o=s.search(i);if(o==-1)return;var u=n||s.length,a=e.getLength(),f=t,l=t;while(++tf){var h=e.getLine(l).length;return new r(f,u,l,h)}},this.openingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i+1},u=e.$findClosingBracket(t,o,s);if(!u)return;var a=e.foldWidgets[u.row];return a==null&&(a=e.getFoldWidget(u.row)),a=="start"&&u.row>o.row&&(u.row--,u.column=e.getLine(u.row).length),r.fromPoints(o,u)},this.closingBracketBlock=function(e,t,n,i,s){var o={row:n,column:i},u=e.$findOpeningBracket(t,o);if(!u)return;return u.column++,o.column--,r.fromPoints(u,o)}}).call(i.prototype)}),define("ace/theme/textmate",["require","exports","module","ace/lib/dom"],function(e,t,n){"use strict";t.isDark=!1,t.cssClass="ace-tm",t.cssText='.ace-tm .ace_gutter {background: #f0f0f0;color: #333;}.ace-tm .ace_print-margin {width: 1px;background: #e8e8e8;}.ace-tm .ace_fold {background-color: #6B72E6;}.ace-tm {background-color: #FFFFFF;color: black;}.ace-tm .ace_cursor {color: black;}.ace-tm .ace_invisible {color: rgb(191, 191, 191);}.ace-tm .ace_storage,.ace-tm .ace_keyword {color: blue;}.ace-tm .ace_constant {color: rgb(197, 6, 11);}.ace-tm .ace_constant.ace_buildin {color: rgb(88, 72, 246);}.ace-tm .ace_constant.ace_language {color: rgb(88, 92, 246);}.ace-tm .ace_constant.ace_library {color: rgb(6, 150, 14);}.ace-tm .ace_invalid {background-color: rgba(255, 0, 0, 0.1);color: red;}.ace-tm .ace_support.ace_function {color: rgb(60, 76, 114);}.ace-tm .ace_support.ace_constant {color: rgb(6, 150, 14);}.ace-tm .ace_support.ace_type,.ace-tm .ace_support.ace_class {color: rgb(109, 121, 222);}.ace-tm .ace_keyword.ace_operator {color: rgb(104, 118, 135);}.ace-tm .ace_string {color: rgb(3, 106, 7);}.ace-tm .ace_comment {color: rgb(76, 136, 107);}.ace-tm .ace_comment.ace_doc {color: rgb(0, 102, 255);}.ace-tm .ace_comment.ace_doc.ace_tag {color: rgb(128, 159, 191);}.ace-tm .ace_constant.ace_numeric {color: rgb(0, 0, 205);}.ace-tm .ace_variable {color: rgb(49, 132, 149);}.ace-tm .ace_xml-pe {color: rgb(104, 104, 91);}.ace-tm .ace_entity.ace_name.ace_function {color: #0000A2;}.ace-tm .ace_heading {color: rgb(12, 7, 255);}.ace-tm .ace_list {color:rgb(185, 6, 144);}.ace-tm .ace_meta.ace_tag {color:rgb(0, 22, 142);}.ace-tm .ace_string.ace_regex {color: rgb(255, 0, 0)}.ace-tm .ace_marker-layer .ace_selection {background: rgb(181, 213, 255);}.ace-tm.ace_multiselect .ace_selection.ace_start {box-shadow: 0 0 3px 0px white;}.ace-tm .ace_marker-layer .ace_step {background: rgb(252, 255, 0);}.ace-tm .ace_marker-layer .ace_stack {background: rgb(164, 229, 101);}.ace-tm .ace_marker-layer .ace_bracket {margin: -1px 0 0 -1px;border: 1px solid rgb(192, 192, 192);}.ace-tm .ace_marker-layer .ace_active-line {background: rgba(0, 0, 0, 0.07);}.ace-tm .ace_gutter-active-line {background-color : #dcdcdc;}.ace-tm .ace_marker-layer .ace_selected-word {background: rgb(250, 250, 255);border: 1px solid rgb(200, 200, 250);}.ace-tm .ace_indent-guide {background: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAEAAAACCAYAAACZgbYnAAAAE0lEQVQImWP4////f4bLly//BwAmVgd1/w11/gAAAABJRU5ErkJggg==") right repeat-y;}';var r=e("../lib/dom");r.importCssString(t.cssText,t.cssClass)}),define("ace/line_widgets",["require","exports","module","ace/lib/oop","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function o(e){this.session=e,this.session.widgetManager=this,this.session.getRowLength=this.getRowLength,this.session.$getWidgetScreenLength=this.$getWidgetScreenLength,this.updateOnChange=this.updateOnChange.bind(this),this.renderWidgets=this.renderWidgets.bind(this),this.measureWidgets=this.measureWidgets.bind(this),this.session._changedWidgets=[],this.$onChangeEditor=this.$onChangeEditor.bind(this),this.session.on("change",this.updateOnChange),this.session.on("changeFold",this.updateOnFold),this.session.on("changeEditor",this.$onChangeEditor)}var r=e("./lib/oop"),i=e("./lib/dom"),s=e("./range").Range;(function(){this.getRowLength=function(e){var t;return this.lineWidgets?t=this.lineWidgets[e]&&this.lineWidgets[e].rowCount||0:t=0,!this.$useWrapMode||!this.$wrapData[e]?1+t:this.$wrapData[e].length+1+t},this.$getWidgetScreenLength=function(){var e=0;return this.lineWidgets.forEach(function(t){t&&t.rowCount&&!t.hidden&&(e+=t.rowCount)}),e},this.$onChangeEditor=function(e){this.attach(e.editor)},this.attach=function(e){e&&e.widgetManager&&e.widgetManager!=this&&e.widgetManager.detach();if(this.editor==e)return;this.detach(),this.editor=e,e&&(e.widgetManager=this,e.renderer.on("beforeRender",this.measureWidgets),e.renderer.on("afterRender",this.renderWidgets))},this.detach=function(e){var t=this.editor;if(!t)return;this.editor=null,t.widgetManager=null,t.renderer.off("beforeRender",this.measureWidgets),t.renderer.off("afterRender",this.renderWidgets);var n=this.session.lineWidgets;n&&n.forEach(function(e){e&&e.el&&e.el.parentNode&&(e._inDocument=!1,e.el.parentNode.removeChild(e.el))})},this.updateOnFold=function(e,t){var n=t.lineWidgets;if(!n||!e.action)return;var r=e.data,i=r.start.row,s=r.end.row,o=e.action=="add";for(var u=i+1;u0&&!r[i])i--;this.firstRow=n.firstRow,this.lastRow=n.lastRow,t.$cursorLayer.config=n;for(var o=i;o<=s;o++){var u=r[o];if(!u||!u.el)continue;if(u.hidden){u.el.style.top=-100-(u.pixelHeight||0)+"px";continue}u._inDocument||(u._inDocument=!0,t.container.appendChild(u.el));var a=t.$cursorLayer.getPixelPosition({row:o,column:0},!0).top;u.coverLine||(a+=n.lineHeight*this.session.getRowLineCount(u.row)),u.el.style.top=a-n.offset+"px";var f=u.coverGutter?0:t.gutterWidth;u.fixedWidth||(f-=t.scrollLeft),u.el.style.left=f+"px",u.fullWidth&&u.screenWidth&&(u.el.style.minWidth=n.width+2*n.padding+"px"),u.fixedWidth?u.el.style.right=t.scrollBar.getWidth()+"px":u.el.style.right=""}}}).call(o.prototype),t.LineWidgets=o}),define("ace/ext/error_marker",["require","exports","module","ace/line_widgets","ace/lib/dom","ace/range"],function(e,t,n){"use strict";function o(e,t,n){var r=0,i=e.length-1;while(r<=i){var s=r+i>>1,o=n(t,e[s]);if(o>0)r=s+1;else{if(!(o<0))return s;i=s-1}}return-(r+1)}function u(e,t,n){var r=e.getAnnotations().sort(s.comparePoints);if(!r.length)return;var i=o(r,{row:t,column:-1},s.comparePoints);i<0&&(i=-i-1),i>=r.length?i=n>0?0:r.length-1:i===0&&n<0&&(i=r.length-1);var u=r[i];if(!u||!n)return;if(u.row===t){do u=r[i+=n];while(u&&u.row===t);if(!u)return r.slice()}var a=[];t=u.row;do a[n<0?"unshift":"push"](u),u=r[i+=n];while(u&&u.row==t);return a.length&&a}var r=e("../line_widgets").LineWidgets,i=e("../lib/dom"),s=e("../range").Range;t.showErrorMarker=function(e,t){var n=e.session;n.widgetManager||(n.widgetManager=new r(n),n.widgetManager.attach(e));var s=e.getCursorPosition(),o=s.row,a=n.widgetManager.getWidgetsAtRow(o).filter(function(e){return e.type=="errorMarker"})[0];a?a.destroy():o-=t;var f=u(n,o,t),l;if(f){var c=f[0];s.column=(c.pos&&typeof c.column!="number"?c.pos.sc:c.column)||0,s.row=c.row,l=e.renderer.$gutterLayer.$annotations[s.row]}else{if(a)return;l={text:["Looks good!"],className:"ace_ok"}}e.session.unfold(s.row),e.selection.moveToPosition(s);var h={row:s.row,fixedWidth:!0,coverGutter:!0,el:i.createElement("div"),type:"errorMarker"},p=h.el.appendChild(i.createElement("div")),d=h.el.appendChild(i.createElement("div"));d.className="error_widget_arrow "+l.className;var v=e.renderer.$cursorLayer.getPixelPosition(s).left;d.style.left=v+e.renderer.gutterWidth-5+"px",h.el.className="error_widget_wrapper",p.className="error_widget "+l.className,p.innerHTML=l.text.join("
"),p.appendChild(i.createElement("div"));var m=function(e,t,n){if(t===0&&(n==="esc"||n==="return"))return h.destroy(),{command:"null"}};h.destroy=function(){if(e.$mouseHandler.isMousePressed)return;e.keyBinding.removeKeyboardHandler(m),n.widgetManager.removeLineWidget(h),e.off("changeSelection",h.destroy),e.off("changeSession",h.destroy),e.off("mouseup",h.destroy),e.off("change",h.destroy)},e.keyBinding.addKeyboardHandler(m),e.on("changeSelection",h.destroy),e.on("changeSession",h.destroy),e.on("mouseup",h.destroy),e.on("change",h.destroy),e.session.widgetManager.addLineWidget(h),h.el.onmousedown=e.focus.bind(e),e.renderer.scrollCursorIntoView(null,.5,{bottom:h.el.offsetHeight})},i.importCssString(" .error_widget_wrapper { background: inherit; color: inherit; border:none } .error_widget { border-top: solid 2px; border-bottom: solid 2px; margin: 5px 0; padding: 10px 40px; white-space: pre-wrap; } .error_widget.ace_error, .error_widget_arrow.ace_error{ border-color: #ff5a5a } .error_widget.ace_warning, .error_widget_arrow.ace_warning{ border-color: #F1D817 } .error_widget.ace_info, .error_widget_arrow.ace_info{ border-color: #5a5a5a } .error_widget.ace_ok, .error_widget_arrow.ace_ok{ border-color: #5aaa5a } .error_widget_arrow { position: absolute; border: solid 5px; border-top-color: transparent!important; border-right-color: transparent!important; border-left-color: transparent!important; top: -5px; }","")}),define("ace/ace",["require","exports","module","ace/lib/fixoldbrowsers","ace/lib/dom","ace/lib/event","ace/editor","ace/edit_session","ace/undomanager","ace/virtual_renderer","ace/worker/worker_client","ace/keyboard/hash_handler","ace/placeholder","ace/multi_select","ace/mode/folding/fold_mode","ace/theme/textmate","ace/ext/error_marker","ace/config"],function(e,t,n){"use strict";e("./lib/fixoldbrowsers");var r=e("./lib/dom"),i=e("./lib/event"),s=e("./editor").Editor,o=e("./edit_session").EditSession,u=e("./undomanager").UndoManager,a=e("./virtual_renderer").VirtualRenderer;e("./worker/worker_client"),e("./keyboard/hash_handler"),e("./placeholder"),e("./multi_select"),e("./mode/folding/fold_mode"),e("./theme/textmate"),e("./ext/error_marker"),t.config=e("./config"),t.require=e,typeof define=="function"&&(t.define=define),t.edit=function(e){if(typeof e=="string"){var n=e;e=document.getElementById(n);if(!e)throw new Error("ace.edit can't find div #"+n)}if(e&&e.env&&e.env.editor instanceof s)return e.env.editor;var o="";if(e&&/input|textarea/i.test(e.tagName)){var u=e;o=u.value,e=r.createElement("pre"),u.parentNode.replaceChild(e,u)}else e&&(o=r.getInnerText(e),e.innerHTML="");var f=t.createEditSession(o),l=new s(new a(e));l.setSession(f);var c={document:f,editor:l,onResize:l.resize.bind(l,null)};return u&&(c.textarea=u),i.addListener(window,"resize",c.onResize),l.on("destroy",function(){i.removeListener(window,"resize",c.onResize),c.editor.container.env=null}),l.container.env=l.env=c,l},t.createEditSession=function(e,t){var n=new o(e,t);return n.setUndoManager(new u),n},t.EditSession=o,t.UndoManager=u,t.version="1.2.6"}); - (function() { - window.require(["ace/ace"], function(a) { - if (a) { - a.config.init(true); - a.define = window.define; - } - if (!window.ace) - window.ace = a; - for (var key in a) if (a.hasOwnProperty(key)) - window.ace[key] = a[key]; - }); - })(); - \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/js_css_src/app.js b/examples/SmartSwitch/data_src/js_css_src/app.js deleted file mode 100644 index 46305f2..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/app.js +++ /dev/null @@ -1,5787 +0,0 @@ -var tpick = { - attach: function (target) { - - var dig = document.getElementById(target).value.split(":"); - var t1 = dig[0] || "23"; - var t2 = dig[1] || "59"; - - var uniqueID = 0; - while (document.getElementById("tpick-" + uniqueID) != null) { - uniqueID = Math.floor(Math.random() * (100 - 2)) + 1; - } - var tw = document.createElement("div"); - tw.id = "tpick-" + uniqueID; - tw.classList.add("tpop"); - tw.dataset.target = target; - tw.addEventListener("click", function (evt) { - if (evt.target.classList.contains("tpop")) { - this.classList.remove("show"); - } - }); - var tp = document.createElement("div"); - tp.classList.add("tpicker"); - tp.appendChild(this.draw("h",t1)); - tp.appendChild(this.draw("m",t2)); - var bottom = document.createElement("div"), - ok = document.createElement("input"); - ok.setAttribute("type", "button"); - ok.value = "OK"; - ok.addEventListener("click", function () { - tpick.set(this); - }); - bottom.classList.add("tpicker-btn"); - bottom.appendChild(ok); - tp.appendChild(bottom); - tw.appendChild(tp); - document.body.appendChild(tw); - var target = document.getElementById(target); - target.dataset.dp = uniqueID; - target.onfocus = function () { - document.getElementById("tpick-" + this.dataset.dp).classList.add("show"); - }; - }, - draw: function (type,tv) { - var docket = document.createElement("div"), - up = document.createElement("div"), - down = document.createElement("div"), - text = document.createElement("input"); - docket.classList.add("tpicker-" + type); - up.classList.add("tpicker-up"); - down.classList.add("tpicker-down"); - up.innerHTML = "︿"; - down.innerHTML = "﹀"; - text.readOnly = true; - text.setAttribute("type", "text"); - if (type == "h") { - text.value = tv; - up.addEventListener("click", function () { - tpick.spin("h", 1, this); - }); - down.addEventListener("click", function () { - tpick.spin("h", 0, this); - }); - } else if (type == "m") { - text.value = tv; - up.addEventListener("click", function () { - tpick.spin("m", 1, this); - }); - down.addEventListener("click", function () { - tpick.spin("m", 0, this); - }); - } - docket.appendChild(up); - docket.appendChild(text); - docket.appendChild(down); - return docket; - }, - spin: function (type, direction, el) { - var parent = el.parentElement, - field = parent.getElementsByTagName("input")[0], - value = field.value; - if (type == "h") { - value = parseInt(value); - if (direction) { - value++; - } else { - value--; - } - if (value == -1) { - value = 23; - } else if (value > 23) { - value = 0; - } - } else if (type == "m") { - value = parseInt(value); - if (direction) { - value += 5; - } else { - value -= 5; - } - if (value < 0) { - value = 55; - } else if (value > 59) { - value = 0; - } - if (value < 10) { - value = "0" + value; - } - } - field.value = ('00' + value).substr(-2); - }, - set: function (el) { - var parent = el.parentElement; - while (parent.classList.contains("tpop") == false) { - parent = parent.parentElement; - } - var input = parent.querySelectorAll("input[type=text]"); - var time = input[0].value + ":" + input[1].value; - document.getElementById(parent.dataset.target).value = time; - parent.classList.remove("show"); - } -}; -var fpick = { - attach: function (target) { - - var dig = document.getElementById(target).value.split("."); - var t1 = dig[0] || "1"; - var t2 = dig[1] || "2"; - var uniqueID = 0; - while (document.getElementById("fpick-" + uniqueID) != null) { - uniqueID = Math.floor(Math.random() * (100 - 2)) + 1; - } - var tw = document.createElement("div"); - tw.id = "fpick-" + uniqueID; - tw.classList.add("tpop"); - tw.dataset.target = target; - tw.addEventListener("click", function (evt) { - if (evt.target.classList.contains("tpop")) { - this.classList.remove("show"); - } - }); - var tp = document.createElement("div"); - tp.classList.add("fpicker"); - tp.appendChild(this.draw("h",t1)); - tp.appendChild(this.draw("m",t2)); - var bottom = document.createElement("div"), - ok = document.createElement("input"); - ok.setAttribute("type", "button"); - ok.value = "OK"; - ok.addEventListener("click", function () { - fpick.set(this); - }); - bottom.classList.add("fpicker-btn"); - bottom.appendChild(ok); - tp.appendChild(bottom); - tw.appendChild(tp); - document.body.appendChild(tw); - var target = document.getElementById(target); - target.dataset.dp = uniqueID; - target.onfocus = function () { - document.getElementById("fpick-" + this.dataset.dp).classList.add("show"); - }; - }, - draw: function (type,tv) { - - var docket = document.createElement("div"), - up = document.createElement("div"), - down = document.createElement("div"), - text = document.createElement("input"); - docket.classList.add("fpicker-" + type); - up.classList.add("fpicker-up"); - down.classList.add("fpicker-down"); - up.innerHTML = "︿"; - down.innerHTML = "﹀"; - text.readOnly = true; - text.setAttribute("type", "text"); - if (type == "h") { - text.value = tv; - up.addEventListener("click", function () { - fpick.spin("h", 1, this); - }); - down.addEventListener("click", function () { - fpick.spin("h", 0, this); - }); - } else if (type == "m") { - text.value = tv; - up.addEventListener("click", function () { - fpick.spin("m", 1, this); - }); - down.addEventListener("click", function () { - fpick.spin("m", 0, this); - }); - } - docket.appendChild(up); - docket.appendChild(text); - docket.appendChild(down); - return docket; - }, - spin: function (type, direction, el) { - var parent = el.parentElement, - field = parent.getElementsByTagName("input")[0], - value = field.value; - if (type == "h") { - value = parseInt(value); - if (direction) { - value++; - } else { - value--; - } - if (value == -41) { - value = 99; - } else if (value > 99) { - value = -40; - } - } else if (type == "m") { - value = parseInt(value); - if (direction) { - value++; - } else { - value--; - } - if (value < 0) { - value = 9; - } else if (value > 9) { - value = 0; - } - } - field.value = value; - }, - set: function (el) { - var parent = el.parentElement; - while (parent.classList.contains("tpop") == false) { - parent = parent.parentElement; - } - var input = parent.querySelectorAll("input[type=text]"); - var temperature = input[0].value + "." + input[1].value; - document.getElementById(parent.dataset.target).value = temperature; - parent.classList.remove("show"); - } -}; -!function (t) { - function n(i) { - if (e[i]) - return e[i].exports; - var o = e[i] = { - i: i, - l: !1, - exports: {} - }; - return t[i].call(o.exports, o, o.exports, n), - o.l = !0, - o.exports - } - var e = {}; - n.m = t, - n.c = e, - n.d = function (t, e, i) { - n.o(t, e) || Object.defineProperty(t, e, { - configurable: !1, - enumerable: !0, - get: i - }) - }, - n.n = function (t) { - var e = t && t.__esModule ? function () { - return t.default - } - : function () { - return t - }; - return n.d(e, "a", e), - e - }, - n.o = function (t, n) { - return Object.prototype.hasOwnProperty.call(t, n) - }, - n.p = "", - n(n.s = 0) -} -([function (t, n, e) { - e(1), - t.exports = e(4) - }, function (t, n, e) { - "use strict"; - var i = Object.assign || function (t) { - for (var n = 1; n < arguments.length; n++) { - var e = arguments[n]; - for (var i in e) - Object.prototype.hasOwnProperty.call(e, i) && (t[i] = e[i]) - } - return t - }; - e(2); - var o = e(3); - !function (t) { - function n(t) { - return t = i({}, c, t), - function (t) { - return ["nfc-top-left", "nfc-top-right", "nfc-bottom-left", "nfc-bottom-right"].indexOf(t) > -1 - } - (t.positionClass) || (console.warn("An invalid notification position class has been specified."), t.positionClass = c.positionClass), - t.onclick && "function" != typeof t.onclick && (console.warn("Notification on click must be a function."), t.onclick = c.onclick), - "number" != typeof t.showDuration && (t.showDuration = c.showDuration), - (0, o.isString)(t.theme) && 0 !== t.theme.length || (console.warn("Notification theme must be a string with length"), t.theme = c.theme), - t - } - function e(t) { - return t = n(t), - function () { - var n = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {}, - e = n.title, - i = n.message, - c = r(t.positionClass); - if (!e && !i) - return console.warn("Notification must contain a title or a message!"); - var a = (0, o.createElement)("div", "ncf", t.theme); - if (!0 === t.closeOnClick && a.addEventListener("click", function () { - return c.removeChild(a) - }), t.onclick && a.addEventListener("click", function (n) { - return t.onclick(n) - }), t.displayCloseButton) { - var s = (0, o.createElement)("button"); - s.innerText = "X", - !1 === t.closeOnClick && s.addEventListener("click", function () { - return c.removeChild(a) - }), - (0, o.append)(a, s) - } - if ((0, o.isString)(e) && e.length && (0, o.append)(a, (0, o.createParagraph)("ncf-title")(e)), (0, o.isString)(i) && i.length && (0, o.append)(a, (0, o.createParagraph)("nfc-message")(i)), (0, o.append)(c, a), t.showDuration && t.showDuration > 0) { - var l = setTimeout(function () { - c.removeChild(a), - 0 === c.querySelectorAll(".ncf").length && document.body.removeChild(c) - }, t.showDuration); - (t.closeOnClick || t.displayCloseButton) && a.addEventListener("click", function () { - return clearTimeout(l) - }) - } - } - } - function r(t) { - var n = document.querySelector("." + t); - return n || (n = (0, o.createElement)("div", "ncf-container", t), (0, o.append)(document.body, n)), - n - } - var c = { - closeOnClick: !0, - displayCloseButton: !1, - positionClass: "nfc-top-right", - onclick: !1, - showDuration: 3500, - theme: "success" - }; - t.createNotification ? console.warn("Window already contains a create notification function. Have you included the script twice?") : t.createNotification = e - } - (window) - }, function (t, n, e) { - "use strict"; - !function () { - function t(t) { - this.el = t; - for (var n = t.className.replace(/^\s+|\s+$/g, "").split(/\s+/), i = 0; i < n.length; i++) - e.call(this, n[i]) - } - if (!(void 0 === window.Element || "classList" in document.documentElement)) { - var n = Array.prototype, - e = n.push, - i = n.splice, - o = n.join; - t.prototype = { - add: function (t) { - this.contains(t) || (e.call(this, t), this.el.className = this.toString()) - }, - contains: function (t) { - return -1 != this.el.className.indexOf(t) - }, - item: function (t) { - return this[t] || null - }, - remove: function (t) { - if (this.contains(t)) { - for (var n = 0; n < this.length && this[n] != t; n++); - i.call(this, n, 1), - this.el.className = this.toString() - } - }, - toString: function () { - return o.call(this, " ") - }, - toggle: function (t) { - return this.contains(t) ? this.remove(t) : this.add(t), - this.contains(t) - } - }, - window.DOMTokenList = t, - function (t, n, e) { - Object.defineProperty ? Object.defineProperty(t, n, { - get: e - }) : t.__defineGetter__(n, e) - } - (Element.prototype, "classList", function () { - return new t(this) - }) - } - } - () - }, function (t, n, e) { - "use strict"; - Object.defineProperty(n, "__esModule", { - value: !0 - }); - var i = n.partial = function (t) { - for (var n = arguments.length, e = Array(n > 1 ? n - 1 : 0), i = 1; i < n; i++) - e[i - 1] = arguments[i]; - return function () { - for (var n = arguments.length, i = Array(n), o = 0; o < n; o++) - i[o] = arguments[o]; - return t.apply(void 0, e.concat(i)) - } - }, - o = (n.append = function (t) { - for (var n = arguments.length, e = Array(n > 1 ? n - 1 : 0), i = 1; i < n; i++) - e[i - 1] = arguments[i]; - return e.forEach(function (n) { - return t.appendChild(n) - }) - }, n.isString = function (t) { - return "string" == typeof t - }, n.createElement = function (t) { - for (var n = arguments.length, e = Array(n > 1 ? n - 1 : 0), i = 1; i < n; i++) - e[i - 1] = arguments[i]; - var o = document.createElement(t); - return e.length && e.forEach(function (t) { - return o.classList.add(t) - }), - o - }), - r = function (t, n) { - return t.innerText = n, - t - }, - c = function (t) { - for (var n = arguments.length, e = Array(n > 1 ? n - 1 : 0), c = 1; c < n; c++) - e[c - 1] = arguments[c]; - return i(r, o.apply(void 0, [t].concat(e))) - }; - n.createParagraph = function () { - for (var t = arguments.length, n = Array(t), e = 0; e < t; e++) - n[e] = arguments[e]; - return c.apply(void 0, ["p"].concat(n)) - } - }, function (t, n) {} - ]); -!function (a, b) { - "function" == typeof define && define.amd ? define("eve", function () { - return b() - }) : "object" == typeof exports ? module.exports = b() : a.eve = b() -} -(this, function () { - var a, - b, - c = "0.4.2", - d = "hasOwnProperty", - e = /[\.\/]/, - f = "*", - g = function () {}, - h = function (a, b) { - return a - b - }, - i = { - n: {} - }, - j = function (c, d) { - c = String(c); - var e, - f = b, - g = Array.prototype.slice.call(arguments, 2), - i = j.listeners(c), - k = 0, - l = [], - m = {}, - n = [], - o = a; - a = c, - b = 0; - for (var p = 0, q = i.length; q > p; p++) - "zIndex" in i[p] && (l.push(i[p].zIndex), i[p].zIndex < 0 && (m[i[p].zIndex] = i[p])); - for (l.sort(h); l[k] < 0; ) - if (e = m[l[k++]], n.push(e.apply(d, g)), b) - return b = f, n; - for (p = 0; q > p; p++) - if (e = i[p], "zIndex" in e) - if (e.zIndex == l[k]) { - if (n.push(e.apply(d, g)), b) - break; - do - if (k++, e = m[l[k]], e && n.push(e.apply(d, g)), b) - break; - while (e) - } else - m[e.zIndex] = e; - else if (n.push(e.apply(d, g)), b) - break; - return b = f, - a = o, - n.length ? n : null - }; - return j._events = i, - j.listeners = function (a) { - var b, - c, - d, - g, - h, - j, - k, - l, - m = a.split(e), - n = i, - o = [n], - p = []; - for (g = 0, h = m.length; h > g; g++) { - for (l = [], j = 0, k = o.length; k > j; j++) - for (n = o[j].n, c = [n[m[g]], n[f]], d = 2; d--; ) - b = c[d], b && (l.push(b), p = p.concat(b.f || [])); - o = l - } - return p - }, - j.on = function (a, b) { - if (a = String(a), "function" != typeof b) - return function () {}; - for (var c = a.split(e), d = i, f = 0, h = c.length; h > f; f++) - d = d.n, d = d.hasOwnProperty(c[f]) && d[c[f]] || (d[c[f]] = { - n: {} - }); - for (d.f = d.f || [], f = 0, h = d.f.length; h > f; f++) - if (d.f[f] == b) - return g; - return d.f.push(b), - function (a) { - +a == +a && (b.zIndex = +a) - } - }, - j.f = function (a) { - var b = [].slice.call(arguments, 1); - return function () { - j.apply(null, [a, null].concat(b).concat([].slice.call(arguments, 0))) - } - }, - j.stop = function () { - b = 1 - }, - j.nt = function (b) { - return b ? new RegExp("(?:\\.|\\/|^)" + b + "(?:\\.|\\/|$)").test(a) : a - }, - j.nts = function () { - return a.split(e) - }, - j.off = j.unbind = function (a, b) { - if (!a) - return void(j._events = i = { - n: {} - }); - var c, - g, - h, - k, - l, - m, - n, - o = a.split(e), - p = [i]; - for (k = 0, l = o.length; l > k; k++) - for (m = 0; m < p.length; m += h.length - 2) { - if (h = [m, 1], c = p[m].n, o[k] != f) - c[o[k]] && h.push(c[o[k]]); - else - for (g in c) - c[d](g) && h.push(c[g]); - p.splice.apply(p, h) - } - for (k = 0, l = p.length; l > k; k++) - for (c = p[k]; c.n; ) { - if (b) { - if (c.f) { - for (m = 0, n = c.f.length; n > m; m++) - if (c.f[m] == b) { - c.f.splice(m, 1); - break - } - !c.f.length && delete c.f - } - for (g in c.n) - if (c.n[d](g) && c.n[g].f) { - var q = c.n[g].f; - for (m = 0, n = q.length; n > m; m++) - if (q[m] == b) { - q.splice(m, 1); - break - } - !q.length && delete c.n[g].f - } - } else { - delete c.f; - for (g in c.n) - c.n[d](g) && c.n[g].f && delete c.n[g].f - } - c = c.n - } - }, - j.once = function (a, b) { - var c = function () { - return j.unbind(a, c), - b.apply(this, arguments) - }; - return j.on(a, c) - }, - j.version = c, - j.toString = function () { - return "You are running Eve " + c - }, - j -}), function (a, b) { - "function" == typeof define && define.amd ? define("raphael.core", ["eve"], function (a) { - return b(a) - }) : "object" == typeof exports ? module.exports = b(require("eve")) : a.Raphael = b(a.eve) -} -(this, function (a) { - function b(c) { - if (b.is(c, "function")) - return t ? c() : a.on("raphael.DOMload", c); - if (b.is(c, U)) - return b._engine.create[C](b, c.splice(0, 3 + b.is(c[0], S))).add(c); - var d = Array.prototype.slice.call(arguments, 0); - if (b.is(d[d.length - 1], "function")) { - var e = d.pop(); - return t ? e.call(b._engine.create[C](b, d)) : a.on("raphael.DOMload", function () { - e.call(b._engine.create[C](b, d)) - }) - } - return b._engine.create[C](b, arguments) - } - function c(a) { - if ("function" == typeof a || Object(a) !== a) - return a; - var b = new a.constructor; - for (var d in a) - a[y](d) && (b[d] = c(a[d])); - return b - } - function d(a, b) { - for (var c = 0, d = a.length; d > c; c++) - if (a[c] === b) - return a.push(a.splice(c, 1)[0]) - } - function e(a, b, c) { - function e() { - var f = Array.prototype.slice.call(arguments, 0), - g = f.join("␀"), - h = e.cache = e.cache || {}, - i = e.count = e.count || []; - return h[y](g) ? (d(i, g), c ? c(h[g]) : h[g]) : (i.length >= 1e3 && delete h[i.shift()], i.push(g), h[g] = a[C](b, f), c ? c(h[g]) : h[g]) - } - return e - } - function f() { - return this.hex - } - function g(a, b) { - for (var c = [], d = 0, e = a.length; e - 2 * !b > d; d += 2) { - var f = [{ - x: +a[d - 2], - y: +a[d - 1] - }, { - x: +a[d], - y: +a[d + 1] - }, { - x: +a[d + 2], - y: +a[d + 3] - }, { - x: +a[d + 4], - y: +a[d + 5] - } - ]; - b ? d ? e - 4 == d ? f[3] = { - x: +a[0], - y: +a[1] - } - : e - 2 == d && (f[2] = { - x: +a[0], - y: +a[1] - }, f[3] = { - x: +a[2], - y: +a[3] - }) : f[0] = { - x: +a[e - 2], - y: +a[e - 1] - } - : e - 4 == d ? f[3] = f[2] : d || (f[0] = { - x: +a[d], - y: +a[d + 1] - }), - c.push(["C", (-f[0].x + 6 * f[1].x + f[2].x) / 6, (-f[0].y + 6 * f[1].y + f[2].y) / 6, (f[1].x + 6 * f[2].x - f[3].x) / 6, (f[1].y + 6 * f[2].y - f[3].y) / 6, f[2].x, f[2].y]) - } - return c - } - function h(a, b, c, d, e) { - var f = -3 * b + 9 * c - 9 * d + 3 * e, - g = a * f + 6 * b - 12 * c + 6 * d; - return a * g - 3 * b + 3 * c - } - function i(a, b, c, d, e, f, g, i, j) { - null == j && (j = 1), - j = j > 1 ? 1 : 0 > j ? 0 : j; - for (var k = j / 2, l = 12, m = [ - .1252, .1252, - .3678, .3678, - .5873, .5873, - .7699, .7699, - .9041, .9041, - .9816, .9816], n = [.2491, .2491, .2335, .2335, .2032, .2032, .1601, .1601, .1069, .1069, .0472, .0472], o = 0, p = 0; l > p; p++) { - var q = k * m[p] + k, - r = h(q, a, c, e, g), - s = h(q, b, d, f, i), - t = r * r + s * s; - o += n[p] * M.sqrt(t) - } - return k * o - } - function j(a, b, c, d, e, f, g, h, j) { - if (!(0 > j || i(a, b, c, d, e, f, g, h) < j)) { - var k, - l = 1, - m = l / 2, - n = l - m, - o = .01; - for (k = i(a, b, c, d, e, f, g, h, n); P(k - j) > o; ) - m /= 2, n += (j > k ? 1 : -1) * m, k = i(a, b, c, d, e, f, g, h, n); - return n - } - } - function k(a, b, c, d, e, f, g, h) { - if (!(N(a, c) < O(e, g) || O(a, c) > N(e, g) || N(b, d) < O(f, h) || O(b, d) > N(f, h))) { - var i = (a * d - b * c) * (e - g) - (a - c) * (e * h - f * g), - j = (a * d - b * c) * (f - h) - (b - d) * (e * h - f * g), - k = (a - c) * (f - h) - (b - d) * (e - g); - if (k) { - var l = i / k, - m = j / k, - n = +l.toFixed(2), - o = +m.toFixed(2); - if (!(n < +O(a, c).toFixed(2) || n > +N(a, c).toFixed(2) || n < +O(e, g).toFixed(2) || n > +N(e, g).toFixed(2) || o < +O(b, d).toFixed(2) || o > +N(b, d).toFixed(2) || o < +O(f, h).toFixed(2) || o > +N(f, h).toFixed(2))) - return { - x: l, - y: m - } - } - } - } - function l(a, c, d) { - var e = b.bezierBBox(a), - f = b.bezierBBox(c); - if (!b.isBBoxIntersect(e, f)) - return d ? 0 : []; - for (var g = i.apply(0, a), h = i.apply(0, c), j = N(~~(g / 5), 1), l = N(~~(h / 5), 1), m = [], n = [], o = {}, p = d ? 0 : [], q = 0; j + 1 > q; q++) { - var r = b.findDotsAtSegment.apply(b, a.concat(q / j)); - m.push({ - x: r.x, - y: r.y, - t: q / j - }) - } - for (q = 0; l + 1 > q; q++) - r = b.findDotsAtSegment.apply(b, c.concat(q / l)), n.push({ - x: r.x, - y: r.y, - t: q / l - }); - for (q = 0; j > q; q++) - for (var s = 0; l > s; s++) { - var t = m[q], - u = m[q + 1], - v = n[s], - w = n[s + 1], - x = P(u.x - t.x) < .001 ? "y" : "x", - y = P(w.x - v.x) < .001 ? "y" : "x", - z = k(t.x, t.y, u.x, u.y, v.x, v.y, w.x, w.y); - if (z) { - if (o[z.x.toFixed(4)] == z.y.toFixed(4)) - continue; - o[z.x.toFixed(4)] = z.y.toFixed(4); - var A = t.t + P((z[x] - t[x]) / (u[x] - t[x])) * (u.t - t.t), - B = v.t + P((z[y] - v[y]) / (w[y] - v[y])) * (w.t - v.t); - A >= 0 && 1.001 >= A && B >= 0 && 1.001 >= B && (d ? p++ : p.push({ - x: z.x, - y: z.y, - t1: O(A, 1), - t2: O(B, 1) - })) - } - } - return p - } - function m(a, c, d) { - a = b._path2curve(a), - c = b._path2curve(c); - for (var e, f, g, h, i, j, k, m, n, o, p = d ? 0 : [], q = 0, r = a.length; r > q; q++) { - var s = a[q]; - if ("M" == s[0]) - e = i = s[1], f = j = s[2]; - else { - "C" == s[0] ? (n = [e, f].concat(s.slice(1)), e = n[6], f = n[7]) : (n = [e, f, e, f, i, j, i, j], e = i, f = j); - for (var t = 0, u = c.length; u > t; t++) { - var v = c[t]; - if ("M" == v[0]) - g = k = v[1], h = m = v[2]; - else { - "C" == v[0] ? (o = [g, h].concat(v.slice(1)), g = o[6], h = o[7]) : (o = [g, h, g, h, k, m, k, m], g = k, h = m); - var w = l(n, o, d); - if (d) - p += w; - else { - for (var x = 0, y = w.length; y > x; x++) - w[x].segment1 = q, w[x].segment2 = t, w[x].bez1 = n, w[x].bez2 = o; - p = p.concat(w) - } - } - } - } - } - return p - } - function n(a, b, c, d, e, f) { - null != a ? (this.a = +a, this.b = +b, this.c = +c, this.d = +d, this.e = +e, this.f = +f) : (this.a = 1, this.b = 0, this.c = 0, this.d = 1, this.e = 0, this.f = 0) - } - function o() { - return this.x + G + this.y + G + this.width + " × " + this.height - } - function p(a, b, c, d, e, f) { - function g(a) { - return ((l * a + k) * a + j) * a - } - function h(a, b) { - var c = i(a, b); - return ((o * c + n) * c + m) * c - } - function i(a, b) { - var c, - d, - e, - f, - h, - i; - for (e = a, i = 0; 8 > i; i++) { - if (f = g(e) - a, P(f) < b) - return e; - if (h = (3 * l * e + 2 * k) * e + j, P(h) < 1e-6) - break; - e -= f / h - } - if (c = 0, d = 1, e = a, c > e) - return c; - if (e > d) - return d; - for (; d > c; ) { - if (f = g(e), P(f - a) < b) - return e; - a > f ? c = e : d = e, - e = (d - c) / 2 + c - } - return e - } - var j = 3 * b, - k = 3 * (d - b) - j, - l = 1 - j - k, - m = 3 * c, - n = 3 * (e - c) - m, - o = 1 - m - n; - return h(a, 1 / (200 * f)) - } - function q(a, b) { - var c = [], - d = {}; - if (this.ms = b, this.times = 1, a) { - for (var e in a) - a[y](e) && (d[$(e)] = a[e], c.push($(e))); - c.sort(ka) - } - this.anim = d, - this.top = c[c.length - 1], - this.percents = c - } - function r(c, d, e, f, g, h) { - e = $(e); - var i, - j, - k, - l, - m, - o, - q = c.ms, - r = {}, - s = {}, - t = {}; - if (f) - for (w = 0, x = fb.length; x > w; w++) { - var u = fb[w]; - if (u.el.id == d.id && u.anim == c) { - u.percent != e ? (fb.splice(w, 1), k = 1) : j = u, - d.attr(u.totalOrigin); - break - } - } - else - f = +s; - for (var w = 0, x = c.percents.length; x > w; w++) { - if (c.percents[w] == e || c.percents[w] > f * c.top) { - e = c.percents[w], - m = c.percents[w - 1] || 0, - q = q / c.top * (e - m), - l = c.percents[w + 1], - i = c.anim[e]; - break - } - f && d.attr(c.anim[c.percents[w]]) - } - if (i) { - if (j) - j.initstatus = f, j.start = new Date - j.ms * f; - else { - for (var z in i) - if (i[y](z) && (ca[y](z) || d.paper.customAttributes[y](z))) - switch (r[z] = d.attr(z), null == r[z] && (r[z] = ba[z]), s[z] = i[z], ca[z]) { - case S: - t[z] = (s[z] - r[z]) / q; - break; - case "colour": - r[z] = b.getRGB(r[z]); - var A = b.getRGB(s[z]); - t[z] = { - r: (A.r - r[z].r) / q, - g: (A.g - r[z].g) / q, - b: (A.b - r[z].b) / q - }; - break; - case "path": - var B = Ia(r[z], s[z]), - C = B[1]; - for (r[z] = B[0], t[z] = [], w = 0, x = r[z].length; x > w; w++) { - t[z][w] = [0]; - for (var E = 1, F = r[z][w].length; F > E; E++) - t[z][w][E] = (C[w][E] - r[z][w][E]) / q - } - break; - case "transform": - var G = d._, - J = Na(G[z], s[z]); - if (J) - for (r[z] = J.from, s[z] = J.to, t[z] = [], t[z].real = !0, w = 0, x = r[z].length; x > w; w++) - for (t[z][w] = [r[z][w][0]], E = 1, F = r[z][w].length; F > E; E++) - t[z][w][E] = (s[z][w][E] - r[z][w][E]) / q; - else { - var K = d.matrix || new n, - L = { - _: { - transform: G.transform - }, - getBBox: function () { - return d.getBBox(1) - } - }; - r[z] = [K.a, K.b, K.c, K.d, K.e, K.f], - La(L, s[z]), - s[z] = L._.transform, - t[z] = [(L.matrix.a - K.a) / q, (L.matrix.b - K.b) / q, (L.matrix.c - K.c) / q, (L.matrix.d - K.d) / q, (L.matrix.e - K.e) / q, (L.matrix.f - K.f) / q] - } - break; - case "csv": - var M = H(i[z])[I](v), - N = H(r[z])[I](v); - if ("clip-rect" == z) - for (r[z] = N, t[z] = [], w = N.length; w--; ) - t[z][w] = (M[w] - r[z][w]) / q; - s[z] = M; - break; - default: - for (M = [][D](i[z]), N = [][D](r[z]), t[z] = [], w = d.paper.customAttributes[z].length; w--; ) - t[z][w] = ((M[w] || 0) - (N[w] || 0)) / q - } - var O = i.easing, - P = b.easing_formulas[O]; - if (!P) - if (P = H(O).match(Y), P && 5 == P.length) { - var Q = P; - P = function (a) { - return p(a, +Q[1], +Q[2], +Q[3], +Q[4], q) - } - } else - P = la; - if (o = i.start || c.start || +new Date, u = { - anim: c, - percent: e, - timestamp: o, - start: o + (c.del || 0), - status: 0, - initstatus: f || 0, - stop: !1, - ms: q, - easing: P, - from: r, - diff: t, - to: s, - el: d, - callback: i.callback, - prev: m, - next: l, - repeat: h || c.times, - origin: d.attr(), - totalOrigin: g - }, fb.push(u), f && !j && !k && (u.stop = !0, u.start = new Date - q * f, 1 == fb.length)) - return hb(); - k && (u.start = new Date - u.ms * f), - 1 == fb.length && gb(hb) - } - a("raphael.anim.start." + d.id, d, c) - } - } - function s(a) { - for (var b = 0; b < fb.length; b++) - fb[b].el.paper == a && fb.splice(b--, 1) - } - b.version = "2.1.4", - b.eve = a; - var t, - u, - v = /[, ]+/, - w = { - circle: 1, - rect: 1, - path: 1, - ellipse: 1, - text: 1, - image: 1 - }, - x = /\{(\d+)\}/g, - y = "hasOwnProperty", - z = { - doc: document, - win: window - }, - A = { - was: Object.prototype[y].call(z.win, "Raphael"), - is: z.win.Raphael - }, - B = function () { - this.ca = this.customAttributes = {} - }, - C = "apply", - D = "concat", - E = "ontouchstart" in z.win || z.win.DocumentTouch && z.doc instanceof DocumentTouch, - F = "", - G = " ", - H = String, - I = "split", - J = "click dblclick mousedown mousemove mouseout mouseover mouseup touchstart touchmove touchend touchcancel"[I](G), - K = { - mousedown: "touchstart", - mousemove: "touchmove", - mouseup: "touchend" - }, - L = H.prototype.toLowerCase, - M = Math, - N = M.max, - O = M.min, - P = M.abs, - Q = M.pow, - R = M.PI, - S = "number", - T = "string", - U = "array", - V = Object.prototype.toString, - W = (b._ISURL = /^url\(['"]?(.+?)['"]?\)$/i, /^\s*((#[a-f\d]{6})|(#[a-f\d]{3})|rgba?\(\s*([\d\.]+%?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+%?(?:\s*,\s*[\d\.]+%?)?)\s*\)|hsba?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\)|hsla?\(\s*([\d\.]+(?:deg|\xb0|%)?\s*,\s*[\d\.]+%?\s*,\s*[\d\.]+(?:%?\s*,\s*[\d\.]+)?)%?\s*\))\s*$/i), - X = { - NaN: 1, - Infinity: 1, - "-Infinity": 1 - }, - Y = /^(?:cubic-)?bezier\(([^,]+),([^,]+),([^,]+),([^\)]+)\)/, - Z = M.round, - $ = parseFloat, - _ = parseInt, - aa = H.prototype.toUpperCase, - ba = b._availableAttrs = { - "arrow-end": "none", - "arrow-start": "none", - blur: 0, - "clip-rect": "0 0 1e9 1e9", - cursor: "default", - cx: 0, - cy: 0, - fill: "#fff", - "fill-opacity": 1, - font: '10px "Arial"', - "font-family": '"Arial"', - "font-size": "10", - "font-style": "normal", - "font-weight": 400, - gradient: 0, - height: 0, - href: "http://raphaeljs.com/", - "letter-spacing": 0, - opacity: 1, - path: "M0,0", - r: 0, - rx: 0, - ry: 0, - src: "", - stroke: "#000", - "stroke-dasharray": "", - "stroke-linecap": "butt", - "stroke-linejoin": "butt", - "stroke-miterlimit": 0, - "stroke-opacity": 1, - "stroke-width": 1, - target: "_blank", - "text-anchor": "middle", - title: "Raphael", - transform: "", - width: 0, - x: 0, - y: 0 - }, - ca = b._availableAnimAttrs = { - blur: S, - "clip-rect": "csv", - cx: S, - cy: S, - fill: "colour", - "fill-opacity": S, - "font-size": S, - height: S, - opacity: S, - path: "path", - r: S, - rx: S, - ry: S, - stroke: "colour", - "stroke-opacity": S, - "stroke-width": S, - transform: "transform", - width: S, - x: S, - y: S - }, - da = /[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/, - ea = { - hs: 1, - rg: 1 - }, - fa = /,?([achlmqrstvxz]),?/gi, - ga = /([achlmrqstvz])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi, - ha = /([rstm])[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029,]*((-?\d*\.?\d*(?:e[\-+]?\d+)?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*)+)/gi, - ia = /(-?\d*\.?\d*(?:e[\-+]?\d+)?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,?[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*/gi, - ja = (b._radial_gradient = /^r(?:\(([^,]+?)[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*,[\x09\x0a\x0b\x0c\x0d\x20\xa0\u1680\u180e\u2000\u2001\u2002\u2003\u2004\u2005\u2006\u2007\u2008\u2009\u200a\u202f\u205f\u3000\u2028\u2029]*([^\)]+?)\))?/, {}), - ka = function (a, b) { - return $(a) - $(b) - }, - la = function (a) { - return a - }, - ma = b._rectPath = function (a, b, c, d, e) { - return e ? [["M", a + e, b], ["l", c - 2 * e, 0], ["a", e, e, 0, 0, 1, e, e], ["l", 0, d - 2 * e], ["a", e, e, 0, 0, 1, -e, e], ["l", 2 * e - c, 0], ["a", e, e, 0, 0, 1, -e, -e], ["l", 0, 2 * e - d], ["a", e, e, 0, 0, 1, e, -e], ["z"]] : [["M", a, b], ["l", c, 0], ["l", 0, d], ["l", -c, 0], ["z"]] - }, - na = function (a, b, c, d) { - return null == d && (d = c), - [["M", a, b], ["m", 0, -d], ["a", c, d, 0, 1, 1, 0, 2 * d], ["a", c, d, 0, 1, 1, 0, -2 * d], ["z"]] - }, - oa = b._getPath = { - path: function (a) { - return a.attr("path") - }, - circle: function (a) { - var b = a.attrs; - return na(b.cx, b.cy, b.r) - }, - ellipse: function (a) { - var b = a.attrs; - return na(b.cx, b.cy, b.rx, b.ry) - }, - rect: function (a) { - var b = a.attrs; - return ma(b.x, b.y, b.width, b.height, b.r) - }, - image: function (a) { - var b = a.attrs; - return ma(b.x, b.y, b.width, b.height) - }, - text: function (a) { - var b = a._getBBox(); - return ma(b.x, b.y, b.width, b.height) - }, - set: function (a) { - var b = a._getBBox(); - return ma(b.x, b.y, b.width, b.height) - } - }, - pa = b.mapPath = function (a, b) { - if (!b) - return a; - var c, - d, - e, - f, - g, - h, - i; - for (a = Ia(a), e = 0, g = a.length; g > e; e++) - for (i = a[e], f = 1, h = i.length; h > f; f += 2) - c = b.x(i[f], i[f + 1]), d = b.y(i[f], i[f + 1]), i[f] = c, i[f + 1] = d; - return a - }; - if (b._g = z, b.type = z.win.SVGAngle || z.doc.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure", "1.1") ? "SVG" : "VML", "VML" == b.type) { - var qa, - ra = z.doc.createElement("div"); - if (ra.innerHTML = '', qa = ra.firstChild, qa.style.behavior = "url(#default#VML)", !qa || "object" != typeof qa.adj) - return b.type = F; - ra = null - } - b.svg = !(b.vml = "VML" == b.type), - b._Paper = B, - b.fn = u = B.prototype = b.prototype, - b._id = 0, - b._oid = 0, - b.is = function (a, b) { - return b = L.call(b), - "finite" == b ? !X[y](+a) : "array" == b ? a instanceof Array : "null" == b && null === a || b == typeof a && null !== a || "object" == b && a === Object(a) || "array" == b && Array.isArray && Array.isArray(a) || V.call(a).slice(8, -1).toLowerCase() == b - }, - b.angle = function (a, c, d, e, f, g) { - if (null == f) { - var h = a - d, - i = c - e; - return h || i ? (180 + 180 * M.atan2(-i, -h) / R + 360) % 360 : 0 - } - return b.angle(a, c, f, g) - b.angle(d, e, f, g) - }, - b.rad = function (a) { - return a % 360 * R / 180 - }, - b.deg = function (a) { - return Math.round(180 * a / R % 360 * 1e3) / 1e3 - }, - b.snapTo = function (a, c, d) { - if (d = b.is(d, "finite") ? d : 10, b.is(a, U)) { - for (var e = a.length; e--; ) - if (P(a[e] - c) <= d) - return a[e] - } else { - a = +a; - var f = c % a; - if (d > f) - return c - f; - if (f > a - d) - return c - f + a - } - return c - }; - b.createUUID = function (a, b) { - return function () { - return "xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(a, b).toUpperCase() - } - } - (/[xy]/g, function (a) { - var b = 16 * M.random() | 0, - c = "x" == a ? b : 3 & b | 8; - return c.toString(16) - }); - b.setWindow = function (c) { - a("raphael.setWindow", b, z.win, c), - z.win = c, - z.doc = z.win.document, - b._engine.initWin && b._engine.initWin(z.win) - }; - var sa = function (a) { - if (b.vml) { - var c, - d = /^\s+|\s+$/g; - try { - var f = new ActiveXObject("htmlfile"); - f.write(""), - f.close(), - c = f.body - } catch (g) { - c = createPopup().document.body - } - var h = c.createTextRange(); - sa = e(function (a) { - try { - c.style.color = H(a).replace(d, F); - var b = h.queryCommandValue("ForeColor"); - return b = (255 & b) << 16 | 65280 & b | (16711680 & b) >>> 16, - "#" + ("000000" + b.toString(16)).slice(-6) - } catch (e) { - return "none" - } - }) - } else { - var i = z.doc.createElement("i"); - i.title = "Raphaël Colour Picker", - i.style.display = "none", - z.doc.body.appendChild(i), - sa = e(function (a) { - return i.style.color = a, - z.doc.defaultView.getComputedStyle(i, F).getPropertyValue("color") - }) - } - return sa(a) - }, - ta = function () { - return "hsb(" + [this.h, this.s, this.b] + ")" - }, - ua = function () { - return "hsl(" + [this.h, this.s, this.l] + ")" - }, - va = function () { - return this.hex - }, - wa = function (a, c, d) { - if (null == c && b.is(a, "object") && "r" in a && "g" in a && "b" in a && (d = a.b, c = a.g, a = a.r), null == c && b.is(a, T)) { - var e = b.getRGB(a); - a = e.r, - c = e.g, - d = e.b - } - return (a > 1 || c > 1 || d > 1) && (a /= 255, c /= 255, d /= 255), - [a, c, d] - }, - xa = function (a, c, d, e) { - a *= 255, - c *= 255, - d *= 255; - var f = { - r: a, - g: c, - b: d, - hex: b.rgb(a, c, d), - toString: va - }; - return b.is(e, "finite") && (f.opacity = e), - f - }; - b.color = function (a) { - var c; - return b.is(a, "object") && "h" in a && "s" in a && "b" in a ? (c = b.hsb2rgb(a), a.r = c.r, a.g = c.g, a.b = c.b, a.hex = c.hex) : b.is(a, "object") && "h" in a && "s" in a && "l" in a ? (c = b.hsl2rgb(a), a.r = c.r, a.g = c.g, a.b = c.b, a.hex = c.hex) : (b.is(a, "string") && (a = b.getRGB(a)), b.is(a, "object") && "r" in a && "g" in a && "b" in a ? (c = b.rgb2hsl(a), a.h = c.h, a.s = c.s, a.l = c.l, c = b.rgb2hsb(a), a.v = c.b) : (a = { - hex: "none" - }, a.r = a.g = a.b = a.h = a.s = a.v = a.l = -1)), - a.toString = va, - a - }, - b.hsb2rgb = function (a, b, c, d) { - this.is(a, "object") && "h" in a && "s" in a && "b" in a && (c = a.b, b = a.s, d = a.o, a = a.h), - a *= 360; - var e, - f, - g, - h, - i; - return a = a % 360 / 60, - i = c * b, - h = i * (1 - P(a % 2 - 1)), - e = f = g = c - i, - a = ~~a, - e += [i, h, 0, 0, h, i][a], - f += [h, i, i, h, 0, 0][a], - g += [0, 0, h, i, i, h][a], - xa(e, f, g, d) - }, - b.hsl2rgb = function (a, b, c, d) { - this.is(a, "object") && "h" in a && "s" in a && "l" in a && (c = a.l, b = a.s, a = a.h), - (a > 1 || b > 1 || c > 1) && (a /= 360, b /= 100, c /= 100), - a *= 360; - var e, - f, - g, - h, - i; - return a = a % 360 / 60, - i = 2 * b * (.5 > c ? c : 1 - c), - h = i * (1 - P(a % 2 - 1)), - e = f = g = c - i / 2, - a = ~~a, - e += [i, h, 0, 0, h, i][a], - f += [h, i, i, h, 0, 0][a], - g += [0, 0, h, i, i, h][a], - xa(e, f, g, d) - }, - b.rgb2hsb = function (a, b, c) { - c = wa(a, b, c), - a = c[0], - b = c[1], - c = c[2]; - var d, - e, - f, - g; - return f = N(a, b, c), - g = f - O(a, b, c), - d = 0 == g ? null : f == a ? (b - c) / g : f == b ? (c - a) / g + 2 : (a - b) / g + 4, - d = (d + 360) % 6 * 60 / 360, - e = 0 == g ? 0 : g / f, { - h: d, - s: e, - b: f, - toString: ta - } - }, - b.rgb2hsl = function (a, b, c) { - c = wa(a, b, c), - a = c[0], - b = c[1], - c = c[2]; - var d, - e, - f, - g, - h, - i; - return g = N(a, b, c), - h = O(a, b, c), - i = g - h, - d = 0 == i ? null : g == a ? (b - c) / i : g == b ? (c - a) / i + 2 : (a - b) / i + 4, - d = (d + 360) % 6 * 60 / 360, - f = (g + h) / 2, - e = 0 == i ? 0 : .5 > f ? i / (2 * f) : i / (2 - 2 * f), { - h: d, - s: e, - l: f, - toString: ua - } - }, - b._path2string = function () { - return this.join(",").replace(fa, "$1") - }; - b._preload = function (a, b) { - var c = z.doc.createElement("img"); - c.style.cssText = "position:absolute;left:-9999em;top:-9999em", - c.onload = function () { - b.call(this), - this.onload = null, - z.doc.body.removeChild(this) - }, - c.onerror = function () { - z.doc.body.removeChild(this) - }, - z.doc.body.appendChild(c), - c.src = a - }; - b.getRGB = e(function (a) { - if (!a || (a = H(a)).indexOf("-") + 1) - return { - r: -1, - g: -1, - b: -1, - hex: "none", - error: 1, - toString: f - }; - if ("none" == a) - return { - r: -1, - g: -1, - b: -1, - hex: "none", - toString: f - }; - !(ea[y](a.toLowerCase().substring(0, 2)) || "#" == a.charAt()) && (a = sa(a)); - var c, - d, - e, - g, - h, - i, - j = a.match(W); - return j ? (j[2] && (e = _(j[2].substring(5), 16), d = _(j[2].substring(3, 5), 16), c = _(j[2].substring(1, 3), 16)), j[3] && (e = _((h = j[3].charAt(3)) + h, 16), d = _((h = j[3].charAt(2)) + h, 16), c = _((h = j[3].charAt(1)) + h, 16)), j[4] && (i = j[4][I](da), c = $(i[0]), "%" == i[0].slice(-1) && (c *= 2.55), d = $(i[1]), "%" == i[1].slice(-1) && (d *= 2.55), e = $(i[2]), "%" == i[2].slice(-1) && (e *= 2.55), "rgba" == j[1].toLowerCase().slice(0, 4) && (g = $(i[3])), i[3] && "%" == i[3].slice(-1) && (g /= 100)), j[5] ? (i = j[5][I](da), c = $(i[0]), "%" == i[0].slice(-1) && (c *= 2.55), d = $(i[1]), "%" == i[1].slice(-1) && (d *= 2.55), e = $(i[2]), "%" == i[2].slice(-1) && (e *= 2.55), ("deg" == i[0].slice(-3) || "°" == i[0].slice(-1)) && (c /= 360), "hsba" == j[1].toLowerCase().slice(0, 4) && (g = $(i[3])), i[3] && "%" == i[3].slice(-1) && (g /= 100), b.hsb2rgb(c, d, e, g)) : j[6] ? (i = j[6][I](da), c = $(i[0]), "%" == i[0].slice(-1) && (c *= 2.55), d = $(i[1]), "%" == i[1].slice(-1) && (d *= 2.55), e = $(i[2]), "%" == i[2].slice(-1) && (e *= 2.55), ("deg" == i[0].slice(-3) || "°" == i[0].slice(-1)) && (c /= 360), "hsla" == j[1].toLowerCase().slice(0, 4) && (g = $(i[3])), i[3] && "%" == i[3].slice(-1) && (g /= 100), b.hsl2rgb(c, d, e, g)) : (j = { - r: c, - g: d, - b: e, - toString: f - }, j.hex = "#" + (16777216 | e | d << 8 | c << 16).toString(16).slice(1), b.is(g, "finite") && (j.opacity = g), j)) : { - r: -1, - g: -1, - b: -1, - hex: "none", - error: 1, - toString: f - } - }, b), - b.hsb = e(function (a, c, d) { - return b.hsb2rgb(a, c, d).hex - }), - b.hsl = e(function (a, c, d) { - return b.hsl2rgb(a, c, d).hex - }), - b.rgb = e(function (a, b, c) { - function d(a) { - return a + .5 | 0 - } - return "#" + (16777216 | d(c) | d(b) << 8 | d(a) << 16).toString(16).slice(1) - }), - b.getColor = function (a) { - var b = this.getColor.start = this.getColor.start || { - h: 0, - s: 1, - b: a || .75 - }, - c = this.hsb2rgb(b.h, b.s, b.b); - return b.h += .075, - b.h > 1 && (b.h = 0, b.s -= .2, b.s <= 0 && (this.getColor.start = { - h: 0, - s: 1, - b: b.b - })), - c.hex - }, - b.getColor.reset = function () { - delete this.start - }, - b.parsePathString = function (a) { - if (!a) - return null; - var c = ya(a); - if (c.arr) - return Aa(c.arr); - var d = { - a: 7, - c: 6, - h: 1, - l: 2, - m: 2, - r: 4, - q: 4, - s: 4, - t: 2, - v: 1, - z: 0 - }, - e = []; - return b.is(a, U) && b.is(a[0], U) && (e = Aa(a)), - e.length || H(a).replace(ga, function (a, b, c) { - var f = [], - g = b.toLowerCase(); - if (c.replace(ia, function (a, b) { - b && f.push(+b) - }), "m" == g && f.length > 2 && (e.push([b][D](f.splice(0, 2))), g = "l", b = "m" == b ? "l" : "L"), "r" == g) - e.push([b][D](f)); - else - for (; f.length >= d[g] && (e.push([b][D](f.splice(0, d[g]))), d[g]); ); - }), - e.toString = b._path2string, - c.arr = Aa(e), - e - }, - b.parseTransformString = e(function (a) { - if (!a) - return null; - var c = []; - return b.is(a, U) && b.is(a[0], U) && (c = Aa(a)), - c.length || H(a).replace(ha, function (a, b, d) { { - var e = []; - L.call(b) - } - d.replace(ia, function (a, b) { - b && e.push(+b) - }), - c.push([b][D](e)) - }), - c.toString = b._path2string, - c - }); - var ya = function (a) { - var b = ya.ps = ya.ps || {}; - return b[a] ? b[a].sleep = 100 : b[a] = { - sleep: 100 - }, - setTimeout(function () { - for (var c in b) - b[y](c) && c != a && (b[c].sleep--, !b[c].sleep && delete b[c]) - }), - b[a] - }; - b.findDotsAtSegment = function (a, b, c, d, e, f, g, h, i) { - var j = 1 - i, - k = Q(j, 3), - l = Q(j, 2), - m = i * i, - n = m * i, - o = k * a + 3 * l * i * c + 3 * j * i * i * e + n * g, - p = k * b + 3 * l * i * d + 3 * j * i * i * f + n * h, - q = a + 2 * i * (c - a) + m * (e - 2 * c + a), - r = b + 2 * i * (d - b) + m * (f - 2 * d + b), - s = c + 2 * i * (e - c) + m * (g - 2 * e + c), - t = d + 2 * i * (f - d) + m * (h - 2 * f + d), - u = j * a + i * c, - v = j * b + i * d, - w = j * e + i * g, - x = j * f + i * h, - y = 90 - 180 * M.atan2(q - s, r - t) / R; - return (q > s || t > r) && (y += 180), { - x: o, - y: p, - m: { - x: q, - y: r - }, - n: { - x: s, - y: t - }, - start: { - x: u, - y: v - }, - end: { - x: w, - y: x - }, - alpha: y - } - }, - b.bezierBBox = function (a, c, d, e, f, g, h, i) { - b.is(a, "array") || (a = [a, c, d, e, f, g, h, i]); - var j = Ha.apply(null, a); - return { - x: j.min.x, - y: j.min.y, - x2: j.max.x, - y2: j.max.y, - width: j.max.x - j.min.x, - height: j.max.y - j.min.y - } - }, - b.isPointInsideBBox = function (a, b, c) { - return b >= a.x && b <= a.x2 && c >= a.y && c <= a.y2 - }, - b.isBBoxIntersect = function (a, c) { - var d = b.isPointInsideBBox; - return d(c, a.x, a.y) || d(c, a.x2, a.y) || d(c, a.x, a.y2) || d(c, a.x2, a.y2) || d(a, c.x, c.y) || d(a, c.x2, c.y) || d(a, c.x, c.y2) || d(a, c.x2, c.y2) || (a.x < c.x2 && a.x > c.x || c.x < a.x2 && c.x > a.x) && (a.y < c.y2 && a.y > c.y || c.y < a.y2 && c.y > a.y) - }, - b.pathIntersection = function (a, b) { - return m(a, b) - }, - b.pathIntersectionNumber = function (a, b) { - return m(a, b, 1) - }, - b.isPointInsidePath = function (a, c, d) { - var e = b.pathBBox(a); - return b.isPointInsideBBox(e, c, d) && m(a, [["M", c, d], ["H", e.x2 + 10]], 1) % 2 == 1 - }, - b._removedFactory = function (b) { - return function () { - a("raphael.log", null, "Raphaël: you are calling to method “" + b + "” of removed object", b) - } - }; - var za = b.pathBBox = function (a) { - var b = ya(a); - if (b.bbox) - return c(b.bbox); - if (!a) - return { - x: 0, - y: 0, - width: 0, - height: 0, - x2: 0, - y2: 0 - }; - a = Ia(a); - for (var d, e = 0, f = 0, g = [], h = [], i = 0, j = a.length; j > i; i++) - if (d = a[i], "M" == d[0]) - e = d[1], f = d[2], g.push(e), h.push(f); - else { - var k = Ha(e, f, d[1], d[2], d[3], d[4], d[5], d[6]); - g = g[D](k.min.x, k.max.x), - h = h[D](k.min.y, k.max.y), - e = d[5], - f = d[6] - } - var l = O[C](0, g), - m = O[C](0, h), - n = N[C](0, g), - o = N[C](0, h), - p = n - l, - q = o - m, - r = { - x: l, - y: m, - x2: n, - y2: o, - width: p, - height: q, - cx: l + p / 2, - cy: m + q / 2 - }; - return b.bbox = c(r), - r - }, - Aa = function (a) { - var d = c(a); - return d.toString = b._path2string, - d - }, - Ba = b._pathToRelative = function (a) { - var c = ya(a); - if (c.rel) - return Aa(c.rel); - b.is(a, U) && b.is(a && a[0], U) || (a = b.parsePathString(a)); - var d = [], - e = 0, - f = 0, - g = 0, - h = 0, - i = 0; - "M" == a[0][0] && (e = a[0][1], f = a[0][2], g = e, h = f, i++, d.push(["M", e, f])); - for (var j = i, k = a.length; k > j; j++) { - var l = d[j] = [], - m = a[j]; - if (m[0] != L.call(m[0])) - switch (l[0] = L.call(m[0]), l[0]) { - case "a": - l[1] = m[1], - l[2] = m[2], - l[3] = m[3], - l[4] = m[4], - l[5] = m[5], - l[6] = + (m[6] - e).toFixed(3), - l[7] = + (m[7] - f).toFixed(3); - break; - case "v": - l[1] = + (m[1] - f).toFixed(3); - break; - case "m": - g = m[1], - h = m[2]; - default: - for (var n = 1, o = m.length; o > n; n++) - l[n] = + (m[n] - (n % 2 ? e : f)).toFixed(3) - } - else { - l = d[j] = [], - "m" == m[0] && (g = m[1] + e, h = m[2] + f); - for (var p = 0, q = m.length; q > p; p++) - d[j][p] = m[p] - } - var r = d[j].length; - switch (d[j][0]) { - case "z": - e = g, - f = h; - break; - case "h": - e += +d[j][r - 1]; - break; - case "v": - f += +d[j][r - 1]; - break; - default: - e += +d[j][r - 2], - f += +d[j][r - 1] - } - } - return d.toString = b._path2string, - c.rel = Aa(d), - d - }, - Ca = b._pathToAbsolute = function (a) { - var c = ya(a); - if (c.abs) - return Aa(c.abs); - if (b.is(a, U) && b.is(a && a[0], U) || (a = b.parsePathString(a)), !a || !a.length) - return [["M", 0, 0]]; - var d = [], - e = 0, - f = 0, - h = 0, - i = 0, - j = 0; - "M" == a[0][0] && (e = +a[0][1], f = +a[0][2], h = e, i = f, j++, d[0] = ["M", e, f]); - for (var k, l, m = 3 == a.length && "M" == a[0][0] && "R" == a[1][0].toUpperCase() && "Z" == a[2][0].toUpperCase(), n = j, o = a.length; o > n; n++) { - if (d.push(k = []), l = a[n], l[0] != aa.call(l[0])) - switch (k[0] = aa.call(l[0]), k[0]) { - case "A": - k[1] = l[1], - k[2] = l[2], - k[3] = l[3], - k[4] = l[4], - k[5] = l[5], - k[6] = + (l[6] + e), - k[7] = + (l[7] + f); - break; - case "V": - k[1] = +l[1] + f; - break; - case "H": - k[1] = +l[1] + e; - break; - case "R": - for (var p = [e, f][D](l.slice(1)), q = 2, r = p.length; r > q; q++) - p[q] = +p[q] + e, p[++q] = +p[q] + f; - d.pop(), - d = d[D](g(p, m)); - break; - case "M": - h = +l[1] + e, - i = +l[2] + f; - default: - for (q = 1, r = l.length; r > q; q++) - k[q] = +l[q] + (q % 2 ? e : f) - } - else if ("R" == l[0]) - p = [e, f][D](l.slice(1)), d.pop(), d = d[D](g(p, m)), k = ["R"][D](l.slice(-2)); - else - for (var s = 0, t = l.length; t > s; s++) - k[s] = l[s]; - switch (k[0]) { - case "Z": - e = h, - f = i; - break; - case "H": - e = k[1]; - break; - case "V": - f = k[1]; - break; - case "M": - h = k[k.length - 2], - i = k[k.length - 1]; - default: - e = k[k.length - 2], - f = k[k.length - 1] - } - } - return d.toString = b._path2string, - c.abs = Aa(d), - d - }, - Da = function (a, b, c, d) { - return [a, b, c, d, c, d] - }, - Ea = function (a, b, c, d, e, f) { - var g = 1 / 3, - h = 2 / 3; - return [g * a + h * c, g * b + h * d, g * e + h * c, g * f + h * d, e, f] - }, - Fa = function (a, b, c, d, f, g, h, i, j, k) { - var l, - m = 120 * R / 180, - n = R / 180 * (+f || 0), - o = [], - p = e(function (a, b, c) { - var d = a * M.cos(c) - b * M.sin(c), - e = a * M.sin(c) + b * M.cos(c); - return { - x: d, - y: e - } - }); - if (k) - y = k[0], z = k[1], w = k[2], x = k[3]; - else { - l = p(a, b, -n), - a = l.x, - b = l.y, - l = p(i, j, -n), - i = l.x, - j = l.y; - var q = (M.cos(R / 180 * f), M.sin(R / 180 * f), (a - i) / 2), - r = (b - j) / 2, - s = q * q / (c * c) + r * r / (d * d); - s > 1 && (s = M.sqrt(s), c = s * c, d = s * d); - var t = c * c, - u = d * d, - v = (g == h ? -1 : 1) * M.sqrt(P((t * u - t * r * r - u * q * q) / (t * r * r + u * q * q))), - w = v * c * r / d + (a + i) / 2, - x = v * -d * q / c + (b + j) / 2, - y = M.asin(((b - x) / d).toFixed(9)), - z = M.asin(((j - x) / d).toFixed(9)); - y = w > a ? R - y : y, - z = w > i ? R - z : z, - 0 > y && (y = 2 * R + y), - 0 > z && (z = 2 * R + z), - h && y > z && (y -= 2 * R), - !h && z > y && (z -= 2 * R) - } - var A = z - y; - if (P(A) > m) { - var B = z, - C = i, - E = j; - z = y + m * (h && z > y ? 1 : -1), - i = w + c * M.cos(z), - j = x + d * M.sin(z), - o = Fa(i, j, c, d, f, 0, h, C, E, [z, B, w, x]) - } - A = z - y; - var F = M.cos(y), - G = M.sin(y), - H = M.cos(z), - J = M.sin(z), - K = M.tan(A / 4), - L = 4 / 3 * c * K, - N = 4 / 3 * d * K, - O = [a, b], - Q = [a + L * G, b - N * F], - S = [i + L * J, j - N * H], - T = [i, j]; - if (Q[0] = 2 * O[0] - Q[0], Q[1] = 2 * O[1] - Q[1], k) - return [Q, S, T][D](o); - o = [Q, S, T][D](o).join()[I](","); - for (var U = [], V = 0, W = o.length; W > V; V++) - U[V] = V % 2 ? p(o[V - 1], o[V], n).y : p(o[V], o[V + 1], n).x; - return U - }, - Ga = function (a, b, c, d, e, f, g, h, i) { - var j = 1 - i; - return { - x: Q(j, 3) * a + 3 * Q(j, 2) * i * c + 3 * j * i * i * e + Q(i, 3) * g, - y: Q(j, 3) * b + 3 * Q(j, 2) * i * d + 3 * j * i * i * f + Q(i, 3) * h - } - }, - Ha = e(function (a, b, c, d, e, f, g, h) { - var i, - j = e - 2 * c + a - (g - 2 * e + c), - k = 2 * (c - a) - 2 * (e - c), - l = a - c, - m = (-k + M.sqrt(k * k - 4 * j * l)) / 2 / j, - n = (-k - M.sqrt(k * k - 4 * j * l)) / 2 / j, - o = [b, h], - p = [a, g]; - return P(m) > "1e12" && (m = .5), - P(n) > "1e12" && (n = .5), - m > 0 && 1 > m && (i = Ga(a, b, c, d, e, f, g, h, m), p.push(i.x), o.push(i.y)), - n > 0 && 1 > n && (i = Ga(a, b, c, d, e, f, g, h, n), p.push(i.x), o.push(i.y)), - j = f - 2 * d + b - (h - 2 * f + d), - k = 2 * (d - b) - 2 * (f - d), - l = b - d, - m = (-k + M.sqrt(k * k - 4 * j * l)) / 2 / j, - n = (-k - M.sqrt(k * k - 4 * j * l)) / 2 / j, - P(m) > "1e12" && (m = .5), - P(n) > "1e12" && (n = .5), - m > 0 && 1 > m && (i = Ga(a, b, c, d, e, f, g, h, m), p.push(i.x), o.push(i.y)), - n > 0 && 1 > n && (i = Ga(a, b, c, d, e, f, g, h, n), p.push(i.x), o.push(i.y)), { - min: { - x: O[C](0, p), - y: O[C](0, o) - }, - max: { - x: N[C](0, p), - y: N[C](0, o) - } - } - }), - Ia = b._path2curve = e(function (a, b) { - var c = !b && ya(a); - if (!b && c.curve) - return Aa(c.curve); - for (var d = Ca(a), e = b && Ca(b), f = { - x: 0, - y: 0, - bx: 0, - by: 0, - X: 0, - Y: 0, - qx: null, - qy: null - }, g = { - x: 0, - y: 0, - bx: 0, - by: 0, - X: 0, - Y: 0, - qx: null, - qy: null - }, h = (function (a, b, c) { - var d, - e, - f = { - T: 1, - Q: 1 - }; - if (!a) - return ["C", b.x, b.y, b.x, b.y, b.x, b.y]; - switch (!(a[0]in f) && (b.qx = b.qy = null), a[0]) { - case "M": - b.X = a[1], - b.Y = a[2]; - break; - case "A": - a = ["C"][D](Fa[C](0, [b.x, b.y][D](a.slice(1)))); - break; - case "S": - "C" == c || "S" == c ? (d = 2 * b.x - b.bx, e = 2 * b.y - b.by) : (d = b.x, e = b.y), - a = ["C", d, e][D](a.slice(1)); - break; - case "T": - "Q" == c || "T" == c ? (b.qx = 2 * b.x - b.qx, b.qy = 2 * b.y - b.qy) : (b.qx = b.x, b.qy = b.y), - a = ["C"][D](Ea(b.x, b.y, b.qx, b.qy, a[1], a[2])); - break; - case "Q": - b.qx = a[1], - b.qy = a[2], - a = ["C"][D](Ea(b.x, b.y, a[1], a[2], a[3], a[4])); - break; - case "L": - a = ["C"][D](Da(b.x, b.y, a[1], a[2])); - break; - case "H": - a = ["C"][D](Da(b.x, b.y, a[1], b.y)); - break; - case "V": - a = ["C"][D](Da(b.x, b.y, b.x, a[1])); - break; - case "Z": - a = ["C"][D](Da(b.x, b.y, b.X, b.Y)) - } - return a - }), i = function (a, b) { - if (a[b].length > 7) { - a[b].shift(); - for (var c = a[b]; c.length; ) - k[b] = "A", e && (l[b] = "A") , a.splice(b++, 0, ["C"][D](c.splice(0, 6))); - a.splice(b, 1), - p = N(d.length, e && e.length || 0) - } - }, j = function (a, b, c, f, g) { - a && b && "M" == a[g][0] && "M" != b[g][0] && (b.splice(g, 0, ["M", f.x, f.y]), c.bx = 0, c.by = 0, c.x = a[g][1], c.y = a[g][2], p = N(d.length, e && e.length || 0)) - }, k = [], l = [], m = "", n = "", o = 0, p = N(d.length, e && e.length || 0); p > o; o++) { - d[o] && (m = d[o][0]), - "C" != m && (k[o] = m, o && (n = k[o - 1])), - d[o] = h(d[o], f, n), - "A" != k[o] && "C" == m && (k[o] = "C"), - i(d, o), - e && (e[o] && (m = e[o][0]), "C" != m && (l[o] = m, o && (n = l[o - 1])), e[o] = h(e[o], g, n), "A" != l[o] && "C" == m && (l[o] = "C"), i(e, o)), - j(d, e, f, g, o), - j(e, d, g, f, o); - var q = d[o], - r = e && e[o], - s = q.length, - t = e && r.length; - f.x = q[s - 2], - f.y = q[s - 1], - f.bx = $(q[s - 4]) || f.x, - f.by = $(q[s - 3]) || f.y, - g.bx = e && ($(r[t - 4]) || g.x), - g.by = e && ($(r[t - 3]) || g.y), - g.x = e && r[t - 2], - g.y = e && r[t - 1] - } - return e || (c.curve = Aa(d)), - e ? [d, e] : d - }, null, Aa), - Ja = (b._parseDots = e(function (a) { - for (var c = [], d = 0, e = a.length; e > d; d++) { - var f = {}, - g = a[d].match(/^([^:]*):?([\d\.]*)/); - if (f.color = b.getRGB(g[1]), f.color.error) - return null; - f.opacity = f.color.opacity, - f.color = f.color.hex, - g[2] && (f.offset = g[2] + "%"), - c.push(f) - } - for (d = 1, e = c.length - 1; e > d; d++) - if (!c[d].offset) { - for (var h = $(c[d - 1].offset || 0), i = 0, j = d + 1; e > j; j++) - if (c[j].offset) { - i = c[j].offset; - break - } - i || (i = 100, j = e), - i = $(i); - for (var k = (i - h) / (j - d + 1); j > d; d++) - h += k, c[d].offset = h + "%" - } - return c - }), b._tear = function (a, b) { - a == b.top && (b.top = a.prev), - a == b.bottom && (b.bottom = a.next), - a.next && (a.next.prev = a.prev), - a.prev && (a.prev.next = a.next) - }), - Ka = (b._tofront = function (a, b) { - b.top !== a && (Ja(a, b), a.next = null, a.prev = b.top, b.top.next = a, b.top = a) - }, b._toback = function (a, b) { - b.bottom !== a && (Ja(a, b), a.next = b.bottom, a.prev = null, b.bottom.prev = a, b.bottom = a) - }, b._insertafter = function (a, b, c) { - Ja(a, c), - b == c.top && (c.top = a), - b.next && (b.next.prev = a), - a.next = b.next, - a.prev = b, - b.next = a - }, b._insertbefore = function (a, b, c) { - Ja(a, c), - b == c.bottom && (c.bottom = a), - b.prev && (b.prev.next = a), - a.prev = b.prev, - b.prev = a, - a.next = b - }, b.toMatrix = function (a, b) { - var c = za(a), - d = { - _: { - transform: F - }, - getBBox: function () { - return c - } - }; - return La(d, b), - d.matrix - }), - La = (b.transformPath = function (a, b) { - return pa(a, Ka(a, b)) - }, b._extractTransform = function (a, c) { - if (null == c) - return a._.transform; - c = H(c).replace(/\.{3}|\u2026/g, a._.transform || F); - var d = b.parseTransformString(c), - e = 0, - f = 0, - g = 0, - h = 1, - i = 1, - j = a._, - k = new n; - if (j.transform = d || [], d) - for (var l = 0, m = d.length; m > l; l++) { - var o, - p, - q, - r, - s, - t = d[l], - u = t.length, - v = H(t[0]).toLowerCase(), - w = t[0] != v, - x = w ? k.invert() : 0; - "t" == v && 3 == u ? w ? (o = x.x(0, 0), p = x.y(0, 0), q = x.x(t[1], t[2]), r = x.y(t[1], t[2]), k.translate(q - o, r - p)) : k.translate(t[1], t[2]) : "r" == v ? 2 == u ? (s = s || a.getBBox(1), k.rotate(t[1], s.x + s.width / 2, s.y + s.height / 2), e += t[1]) : 4 == u && (w ? (q = x.x(t[2], t[3]), r = x.y(t[2], t[3]), k.rotate(t[1], q, r)) : k.rotate(t[1], t[2], t[3]), e += t[1]) : "s" == v ? 2 == u || 3 == u ? (s = s || a.getBBox(1), k.scale(t[1], t[u - 1], s.x + s.width / 2, s.y + s.height / 2), h *= t[1], i *= t[u - 1]) : 5 == u && (w ? (q = x.x(t[3], t[4]), r = x.y(t[3], t[4]), k.scale(t[1], t[2], q, r)) : k.scale(t[1], t[2], t[3], t[4]), h *= t[1], i *= t[2]) : "m" == v && 7 == u && k.add(t[1], t[2], t[3], t[4], t[5], t[6]), - j.dirtyT = 1, - a.matrix = k - } - a.matrix = k, - j.sx = h, - j.sy = i, - j.deg = e, - j.dx = f = k.e, - j.dy = g = k.f, - 1 == h && 1 == i && !e && j.bbox ? (j.bbox.x += +f, j.bbox.y += +g) : j.dirtyT = 1 - }), - Ma = function (a) { - var b = a[0]; - switch (b.toLowerCase()) { - case "t": - return [b, 0, 0]; - case "m": - return [b, 1, 0, 0, 1, 0, 0]; - case "r": - return 4 == a.length ? [b, 0, a[2], a[3]] : [b, 0]; - case "s": - return 5 == a.length ? [b, 1, 1, a[3], a[4]] : 3 == a.length ? [b, 1, 1] : [b, 1] - } - }, - Na = b._equaliseTransform = function (a, c) { - c = H(c).replace(/\.{3}|\u2026/g, a), - a = b.parseTransformString(a) || [], - c = b.parseTransformString(c) || []; - for (var d, e, f, g, h = N(a.length, c.length), i = [], j = [], k = 0; h > k; k++) { - if (f = a[k] || Ma(c[k]), g = c[k] || Ma(f), f[0] != g[0] || "r" == f[0].toLowerCase() && (f[2] != g[2] || f[3] != g[3]) || "s" == f[0].toLowerCase() && (f[3] != g[3] || f[4] != g[4])) - return; - for (i[k] = [], j[k] = [], d = 0, e = N(f.length, g.length); e > d; d++) - d in f && (i[k][d] = f[d]), d in g && (j[k][d] = g[d]) - } - return { - from: i, - to: j - } - }; - b._getContainer = function (a, c, d, e) { - var f; - return f = null != e || b.is(a, "object") ? a : z.doc.getElementById(a), - null != f ? f.tagName ? null == c ? { - container: f, - width: f.style.pixelWidth || f.offsetWidth, - height: f.style.pixelHeight || f.offsetHeight - } - : { - container: f, - width: c, - height: d - } - : { - container: 1, - x: a, - y: c, - width: d, - height: e - } - : void 0 - }, - b.pathToRelative = Ba, - b._engine = {}, - b.path2curve = Ia, - b.matrix = function (a, b, c, d, e, f) { - return new n(a, b, c, d, e, f) - }, - function (a) { - function c(a) { - return a[0] * a[0] + a[1] * a[1] - } - function d(a) { - var b = M.sqrt(c(a)); - a[0] && (a[0] /= b), - a[1] && (a[1] /= b) - } - a.add = function (a, b, c, d, e, f) { - var g, - h, - i, - j, - k = [[], [], []], - l = [[this.a, this.c, this.e], [this.b, this.d, this.f], [0, 0, 1]], - m = [[a, c, e], [b, d, f], [0, 0, 1]]; - for (a && a instanceof n && (m = [[a.a, a.c, a.e], [a.b, a.d, a.f], [0, 0, 1]]), g = 0; 3 > g; g++) - for (h = 0; 3 > h; h++) { - for (j = 0, i = 0; 3 > i; i++) - j += l[g][i] * m[i][h]; - k[g][h] = j - } - this.a = k[0][0], - this.b = k[1][0], - this.c = k[0][1], - this.d = k[1][1], - this.e = k[0][2], - this.f = k[1][2] - }, - a.invert = function () { - var a = this, - b = a.a * a.d - a.b * a.c; - return new n(a.d / b, -a.b / b, -a.c / b, a.a / b, (a.c * a.f - a.d * a.e) / b, (a.b * a.e - a.a * a.f) / b) - }, - a.clone = function () { - return new n(this.a, this.b, this.c, this.d, this.e, this.f) - }, - a.translate = function (a, b) { - this.add(1, 0, 0, 1, a, b) - }, - a.scale = function (a, b, c, d) { - null == b && (b = a), - (c || d) && this.add(1, 0, 0, 1, c, d), - this.add(a, 0, 0, b, 0, 0), - (c || d) && this.add(1, 0, 0, 1, -c, -d) - }, - a.rotate = function (a, c, d) { - a = b.rad(a), - c = c || 0, - d = d || 0; - var e = +M.cos(a).toFixed(9), - f = +M.sin(a).toFixed(9); - this.add(e, f, -f, e, c, d), - this.add(1, 0, 0, 1, -c, -d) - }, - a.x = function (a, b) { - return a * this.a + b * this.c + this.e - }, - a.y = function (a, b) { - return a * this.b + b * this.d + this.f - }, - a.get = function (a) { - return +this[H.fromCharCode(97 + a)].toFixed(4) - }, - a.toString = function () { - return b.svg ? "matrix(" + [this.get(0), this.get(1), this.get(2), this.get(3), this.get(4), this.get(5)].join() + ")" : [this.get(0), this.get(2), this.get(1), this.get(3), 0, 0].join() - }, - a.toFilter = function () { - return "progid:DXImageTransform.Microsoft.Matrix(M11=" + this.get(0) + ", M12=" + this.get(2) + ", M21=" + this.get(1) + ", M22=" + this.get(3) + ", Dx=" + this.get(4) + ", Dy=" + this.get(5) + ", sizingmethod='auto expand')" - }, - a.offset = function () { - return [this.e.toFixed(4), this.f.toFixed(4)] - }, - a.split = function () { - var a = {}; - a.dx = this.e, - a.dy = this.f; - var e = [[this.a, this.c], [this.b, this.d]]; - a.scalex = M.sqrt(c(e[0])), - d(e[0]), - a.shear = e[0][0] * e[1][0] + e[0][1] * e[1][1], - e[1] = [e[1][0] - e[0][0] * a.shear, e[1][1] - e[0][1] * a.shear], - a.scaley = M.sqrt(c(e[1])), - d(e[1]), - a.shear /= a.scaley; - var f = -e[0][1], - g = e[1][1]; - return 0 > g ? (a.rotate = b.deg(M.acos(g)), 0 > f && (a.rotate = 360 - a.rotate)) : a.rotate = b.deg(M.asin(f)), - a.isSimple = !(+a.shear.toFixed(9) || a.scalex.toFixed(9) != a.scaley.toFixed(9) && a.rotate), - a.isSuperSimple = !+a.shear.toFixed(9) && a.scalex.toFixed(9) == a.scaley.toFixed(9) && !a.rotate, - a.noRotation = !+a.shear.toFixed(9) && !a.rotate, - a - }, - a.toTransformString = function (a) { - var b = a || this[I](); - return b.isSimple ? (b.scalex = +b.scalex.toFixed(4), b.scaley = +b.scaley.toFixed(4), b.rotate = +b.rotate.toFixed(4), (b.dx || b.dy ? "t" + [b.dx, b.dy] : F) + (1 != b.scalex || 1 != b.scaley ? "s" + [b.scalex, b.scaley, 0, 0] : F) + (b.rotate ? "r" + [b.rotate, 0, 0] : F)) : "m" + [this.get(0), this.get(1), this.get(2), this.get(3), this.get(4), this.get(5)] - } - } - (n.prototype); - for (var Oa = function () { - this.returnValue = !1 - }, Pa = function () { - return this.originalEvent.preventDefault() - }, Qa = function () { - this.cancelBubble = !0 - }, Ra = function () { - return this.originalEvent.stopPropagation() - }, Sa = function (a) { - var b = z.doc.documentElement.scrollTop || z.doc.body.scrollTop, - c = z.doc.documentElement.scrollLeft || z.doc.body.scrollLeft; - return { - x: a.clientX + c, - y: a.clientY + b - } - }, Ta = function () { - return z.doc.addEventListener ? function (a, b, c, d) { - var e = function (a) { - var b = Sa(a); - return c.call(d, a, b.x, b.y) - }; - if (a.addEventListener(b, e, !1), E && K[b]) { - var f = function (b) { - for (var e = Sa(b), f = b, g = 0, h = b.targetTouches && b.targetTouches.length; h > g; g++) - if (b.targetTouches[g].target == a) { - b = b.targetTouches[g], - b.originalEvent = f, - b.preventDefault = Pa, - b.stopPropagation = Ra; - break - } - return c.call(d, b, e.x, e.y) - }; - a.addEventListener(K[b], f, !1) - } - return function () { - return a.removeEventListener(b, e, !1), - E && K[b] && a.removeEventListener(K[b], f, !1), - !0 - } - } - : z.doc.attachEvent ? function (a, b, c, d) { - var e = function (a) { - a = a || z.win.event; - var b = z.doc.documentElement.scrollTop || z.doc.body.scrollTop, - e = z.doc.documentElement.scrollLeft || z.doc.body.scrollLeft, - f = a.clientX + e, - g = a.clientY + b; - return a.preventDefault = a.preventDefault || Oa, - a.stopPropagation = a.stopPropagation || Qa, - c.call(d, a, f, g) - }; - a.attachEvent("on" + b, e); - var f = function () { - return a.detachEvent("on" + b, e), - !0 - }; - return f - } - : void 0 - } - (), Ua = [], Va = function (b) { - for (var c, d = b.clientX, e = b.clientY, f = z.doc.documentElement.scrollTop || z.doc.body.scrollTop, g = z.doc.documentElement.scrollLeft || z.doc.body.scrollLeft, h = Ua.length; h--; ) { - if (c = Ua[h], E && b.touches) { - for (var i, j = b.touches.length; j--; ) - if (i = b.touches[j], i.identifier == c.el._drag.id) { - d = i.clientX, - e = i.clientY, - (b.originalEvent ? b.originalEvent : b).preventDefault(); - break - } - } else - b.preventDefault(); - var k, - l = c.el.node, - m = l.nextSibling, - n = l.parentNode, - o = l.style.display; - z.win.opera && n.removeChild(l), - l.style.display = "none", - k = c.el.paper.getElementByPoint(d, e), - l.style.display = o, - z.win.opera && (m ? n.insertBefore(l, m) : n.appendChild(l)), - k && a("raphael.drag.over." + c.el.id, c.el, k), - d += g, - e += f, - a("raphael.drag.move." + c.el.id, c.move_scope || c.el, d - c.el._drag.x, e - c.el._drag.y, d, e, b) - } - }, Wa = function (c) { - b.unmousemove(Va).unmouseup(Wa); - for (var d, e = Ua.length; e--; ) - d = Ua[e], d.el._drag = {}, - a("raphael.drag.end." + d.el.id, d.end_scope || d.start_scope || d.move_scope || d.el, c); - Ua = [] - }, Xa = b.el = {}, Ya = J.length; Ya--; ) - !function (a) { - b[a] = Xa[a] = function (c, d) { - return b.is(c, "function") && (this.events = this.events || [], this.events.push({ - name: a, - f: c, - unbind: Ta(this.shape || this.node || z.doc, a, c, d || this) - })), - this - }, - b["un" + a] = Xa["un" + a] = function (c) { - for (var d = this.events || [], e = d.length; e--; ) - d[e].name != a || !b.is(c, "undefined") && d[e].f != c || (d[e].unbind(), d.splice(e, 1), !d.length && delete this.events); - return this - } - } - (J[Ya]); - Xa.data = function (c, d) { - var e = ja[this.id] = ja[this.id] || {}; - if (0 == arguments.length) - return e; - if (1 == arguments.length) { - if (b.is(c, "object")) { - for (var f in c) - c[y](f) && this.data(f, c[f]); - return this - } - return a("raphael.data.get." + this.id, this, e[c], c), - e[c] - } - return e[c] = d, - a("raphael.data.set." + this.id, this, d, c), - this - }, - Xa.removeData = function (a) { - return null == a ? ja[this.id] = {} - : ja[this.id] && delete ja[this.id][a], - this - }, - Xa.getData = function () { - return c(ja[this.id] || {}) - }, - Xa.hover = function (a, b, c, d) { - return this.mouseover(a, c).mouseout(b, d || c) - }, - Xa.unhover = function (a, b) { - return this.unmouseover(a).unmouseout(b) - }; - var Za = []; - Xa.drag = function (c, d, e, f, g, h) { - function i(i) { - (i.originalEvent || i).preventDefault(); - var j = i.clientX, - k = i.clientY, - l = z.doc.documentElement.scrollTop || z.doc.body.scrollTop, - m = z.doc.documentElement.scrollLeft || z.doc.body.scrollLeft; - if (this._drag.id = i.identifier, E && i.touches) - for (var n, o = i.touches.length; o--; ) - if (n = i.touches[o], this._drag.id = n.identifier, n.identifier == this._drag.id) { - j = n.clientX, - k = n.clientY; - break - } - this._drag.x = j + m, - this._drag.y = k + l, - !Ua.length && b.mousemove(Va).mouseup(Wa), - Ua.push({ - el: this, - move_scope: f, - start_scope: g, - end_scope: h - }), - d && a.on("raphael.drag.start." + this.id, d), - c && a.on("raphael.drag.move." + this.id, c), - e && a.on("raphael.drag.end." + this.id, e), - a("raphael.drag.start." + this.id, g || f || this, i.clientX + m, i.clientY + l, i) - } - return this._drag = {}, - Za.push({ - el: this, - start: i - }), - this.mousedown(i), - this - }, - Xa.onDragOver = function (b) { - b ? a.on("raphael.drag.over." + this.id, b) : a.unbind("raphael.drag.over." + this.id) - }, - Xa.undrag = function () { - for (var c = Za.length; c--; ) - Za[c].el == this && (this.unmousedown(Za[c].start), Za.splice(c, 1), a.unbind("raphael.drag.*." + this.id)); - !Za.length && b.unmousemove(Va).unmouseup(Wa), - Ua = [] - }, - u.circle = function (a, c, d) { - var e = b._engine.circle(this, a || 0, c || 0, d || 0); - return this.__set__ && this.__set__.push(e), - e - }, - u.rect = function (a, c, d, e, f) { - var g = b._engine.rect(this, a || 0, c || 0, d || 0, e || 0, f || 0); - return this.__set__ && this.__set__.push(g), - g - }, - u.ellipse = function (a, c, d, e) { - var f = b._engine.ellipse(this, a || 0, c || 0, d || 0, e || 0); - return this.__set__ && this.__set__.push(f), - f - }, - u.path = function (a) { - a && !b.is(a, T) && !b.is(a[0], U) && (a += F); - var c = b._engine.path(b.format[C](b, arguments), this); - return this.__set__ && this.__set__.push(c), - c - }, - u.image = function (a, c, d, e, f) { - var g = b._engine.image(this, a || "about:blank", c || 0, d || 0, e || 0, f || 0); - return this.__set__ && this.__set__.push(g), - g - }, - u.text = function (a, c, d) { - var e = b._engine.text(this, a || 0, c || 0, H(d)); - return this.__set__ && this.__set__.push(e), - e - }, - u.set = function (a) { - !b.is(a, "array") && (a = Array.prototype.splice.call(arguments, 0, arguments.length)); - var c = new jb(a); - return this.__set__ && this.__set__.push(c), - c.paper = this, - c.type = "set", - c - }, - u.setStart = function (a) { - this.__set__ = a || this.set() - }, - u.setFinish = function (a) { - var b = this.__set__; - return delete this.__set__, - b - }, - u.getSize = function () { - var a = this.canvas.parentNode; - return { - width: a.offsetWidth, - height: a.offsetHeight - } - }, - u.setSize = function (a, c) { - return b._engine.setSize.call(this, a, c) - }, - u.setViewBox = function (a, c, d, e, f) { - return b._engine.setViewBox.call(this, a, c, d, e, f) - }, - u.top = u.bottom = null, - u.raphael = b; - var $a = function (a) { - var b = a.getBoundingClientRect(), - c = a.ownerDocument, - d = c.body, - e = c.documentElement, - f = e.clientTop || d.clientTop || 0, - g = e.clientLeft || d.clientLeft || 0, - h = b.top + (z.win.pageYOffset || e.scrollTop || d.scrollTop) - f, - i = b.left + (z.win.pageXOffset || e.scrollLeft || d.scrollLeft) - g; - return { - y: h, - x: i - } - }; - u.getElementByPoint = function (a, b) { - var c = this, - d = c.canvas, - e = z.doc.elementFromPoint(a, b); - if (z.win.opera && "svg" == e.tagName) { - var f = $a(d), - g = d.createSVGRect(); - g.x = a - f.x, - g.y = b - f.y, - g.width = g.height = 1; - var h = d.getIntersectionList(g, null); - h.length && (e = h[h.length - 1]) - } - if (!e) - return null; - for (; e.parentNode && e != d.parentNode && !e.raphael; ) - e = e.parentNode; - return e == c.canvas.parentNode && (e = d), - e = e && e.raphael ? c.getById(e.raphaelid) : null - }, - u.getElementsByBBox = function (a) { - var c = this.set(); - return this.forEach(function (d) { - b.isBBoxIntersect(d.getBBox(), a) && c.push(d) - }), - c - }, - u.getById = function (a) { - for (var b = this.bottom; b; ) { - if (b.id == a) - return b; - b = b.next - } - return null - }, - u.forEach = function (a, b) { - for (var c = this.bottom; c; ) { - if (a.call(b, c) === !1) - return this; - c = c.next - } - return this - }, - u.getElementsByPoint = function (a, b) { - var c = this.set(); - return this.forEach(function (d) { - d.isPointInside(a, b) && c.push(d) - }), - c - }, - Xa.isPointInside = function (a, c) { - var d = this.realPath = oa[this.type](this); - return this.attr("transform") && this.attr("transform").length && (d = b.transformPath(d, this.attr("transform"))), - b.isPointInsidePath(d, a, c) - }, - Xa.getBBox = function (a) { - if (this.removed) - return {}; - var b = this._; - return a ? ((b.dirty || !b.bboxwt) && (this.realPath = oa[this.type](this), b.bboxwt = za(this.realPath), b.bboxwt.toString = o, b.dirty = 0), b.bboxwt) : ((b.dirty || b.dirtyT || !b.bbox) && ((b.dirty || !this.realPath) && (b.bboxwt = 0, this.realPath = oa[this.type](this)), b.bbox = za(pa(this.realPath, this.matrix)), b.bbox.toString = o, b.dirty = b.dirtyT = 0), b.bbox) - }, - Xa.clone = function () { - if (this.removed) - return null; - var a = this.paper[this.type]().attr(this.attr()); - return this.__set__ && this.__set__.push(a), - a - }, - Xa.glow = function (a) { - if ("text" == this.type) - return null; - a = a || {}; - var b = { - width: (a.width || 10) + (+this.attr("stroke-width") || 1), - fill: a.fill || !1, - opacity: null == a.opacity ? .5 : a.opacity, - offsetx: a.offsetx || 0, - offsety: a.offsety || 0, - color: a.color || "#000" - }, - c = b.width / 2, - d = this.paper, - e = d.set(), - f = this.realPath || oa[this.type](this); - f = this.matrix ? pa(f, this.matrix) : f; - for (var g = 1; c + 1 > g; g++) - e.push(d.path(f).attr({ - stroke: b.color, - fill: b.fill ? b.color : "none", - "stroke-linejoin": "round", - "stroke-linecap": "round", - "stroke-width": + (b.width / c * g).toFixed(3), - opacity: + (b.opacity / c).toFixed(3) - })); - return e.insertBefore(this).translate(b.offsetx, b.offsety) - }; - var _a = function (a, c, d, e, f, g, h, k, l) { - return null == l ? i(a, c, d, e, f, g, h, k) : b.findDotsAtSegment(a, c, d, e, f, g, h, k, j(a, c, d, e, f, g, h, k, l)) - }, - ab = function (a, c) { - return function (d, e, f) { - d = Ia(d); - for (var g, h, i, j, k, l = "", m = {}, n = 0, o = 0, p = d.length; p > o; o++) { - if (i = d[o], "M" == i[0]) - g = +i[1], h = +i[2]; - else { - if (j = _a(g, h, i[1], i[2], i[3], i[4], i[5], i[6]), n + j > e) { - if (c && !m.start) { - if (k = _a(g, h, i[1], i[2], i[3], i[4], i[5], i[6], e - n), l += ["C" + k.start.x, k.start.y, k.m.x, k.m.y, k.x, k.y], f) - return l; - m.start = l, - l = ["M" + k.x, k.y + "C" + k.n.x, k.n.y, k.end.x, k.end.y, i[5], i[6]].join(), - n += j, - g = +i[5], - h = +i[6]; - continue - } - if (!a && !c) - return k = _a(g, h, i[1], i[2], i[3], i[4], i[5], i[6], e - n), { - x: k.x, - y: k.y, - alpha: k.alpha - } - } - n += j, - g = +i[5], - h = +i[6] - } - l += i.shift() + i - } - return m.end = l, - k = a ? n : c ? m : b.findDotsAtSegment(g, h, i[0], i[1], i[2], i[3], i[4], i[5], 1), - k.alpha && (k = { - x: k.x, - y: k.y, - alpha: k.alpha - }), - k - } - }, - bb = ab(1), - cb = ab(), - db = ab(0, 1); - b.getTotalLength = bb, - b.getPointAtLength = cb, - b.getSubpath = function (a, b, c) { - if (this.getTotalLength(a) - c < 1e-6) - return db(a, b).end; - var d = db(a, c, 1); - return b ? db(d, b).end : d - }, - Xa.getTotalLength = function () { - var a = this.getPath(); - if (a) - return this.node.getTotalLength ? this.node.getTotalLength() : bb(a) - }, - Xa.getPointAtLength = function (a) { - var b = this.getPath(); - if (b) - return cb(b, a) - }, - Xa.getPath = function () { - var a, - c = b._getPath[this.type]; - if ("text" != this.type && "set" != this.type) - return c && (a = c(this)), a - }, - Xa.getSubpath = function (a, c) { - var d = this.getPath(); - if (d) - return b.getSubpath(d, a, c) - }; - var eb = b.easing_formulas = { - linear: function (a) { - return a - }, - "<": function (a) { - return Q(a, 1.7) - }, - ">": function (a) { - return Q(a, .48) - }, - "<>": function (a) { - var b = .48 - a / 1.04, - c = M.sqrt(.1734 + b * b), - d = c - b, - e = Q(P(d), 1 / 3) * (0 > d ? -1 : 1), - f = -c - b, - g = Q(P(f), 1 / 3) * (0 > f ? -1 : 1), - h = e + g + .5; - return 3 * (1 - h) * h * h + h * h * h - }, - backIn: function (a) { - var b = 1.70158; - return a * a * ((b + 1) * a - b) - }, - backOut: function (a) { - a -= 1; - var b = 1.70158; - return a * a * ((b + 1) * a + b) + 1 - }, - elastic: function (a) { - return a == !!a ? a : Q(2, -10 * a) * M.sin(2 * (a - .075) * R / .3) + 1 - }, - bounce: function (a) { - var b, - c = 7.5625, - d = 2.75; - return 1 / d > a ? b = c * a * a : 2 / d > a ? (a -= 1.5 / d, b = c * a * a + .75) : 2.5 / d > a ? (a -= 2.25 / d, b = c * a * a + .9375) : (a -= 2.625 / d, b = c * a * a + .984375), - b - } - }; - eb.easeIn = eb["ease-in"] = eb["<"], - eb.easeOut = eb["ease-out"] = eb[">"], - eb.easeInOut = eb["ease-in-out"] = eb["<>"], - eb["back-in"] = eb.backIn, - eb["back-out"] = eb.backOut; - var fb = [], - gb = window.requestAnimationFrame || window.webkitRequestAnimationFrame || window.mozRequestAnimationFrame || window.oRequestAnimationFrame || window.msRequestAnimationFrame || function (a) { - setTimeout(a, 16) - }, - hb = function () { - for (var c = +new Date, d = 0; d < fb.length; d++) { - var e = fb[d]; - if (!e.el.removed && !e.paused) { - var f, - g, - h = c - e.start, - i = e.ms, - j = e.easing, - k = e.from, - l = e.diff, - m = e.to, - n = (e.t, e.el), - o = {}, - p = {}; - if (e.initstatus ? (h = (e.initstatus * e.anim.top - e.prev) / (e.percent - e.prev) * i, e.status = e.initstatus, delete e.initstatus, e.stop && fb.splice(d--, 1)) : e.status = (e.prev + (e.percent - e.prev) * (h / i)) / e.anim.top, !(0 > h)) - if (i > h) { - var q = j(h / i); - for (var s in k) - if (k[y](s)) { - switch (ca[s]) { - case S: - f = +k[s] + q * i * l[s]; - break; - case "colour": - f = "rgb(" + [ib(Z(k[s].r + q * i * l[s].r)), ib(Z(k[s].g + q * i * l[s].g)), ib(Z(k[s].b + q * i * l[s].b))].join(",") + ")"; - break; - case "path": - f = []; - for (var t = 0, u = k[s].length; u > t; t++) { - f[t] = [k[s][t][0]]; - for (var v = 1, w = k[s][t].length; w > v; v++) - f[t][v] = +k[s][t][v] + q * i * l[s][t][v]; - f[t] = f[t].join(G) - } - f = f.join(G); - break; - case "transform": - if (l[s].real) - for (f = [], t = 0, u = k[s].length; u > t; t++) - for (f[t] = [k[s][t][0]], v = 1, w = k[s][t].length; w > v; v++) - f[t][v] = k[s][t][v] + q * i * l[s][t][v]; - else { - var x = function (a) { - return +k[s][a] + q * i * l[s][a] - }; - f = [["m", x(0), x(1), x(2), x(3), x(4), x(5)]] - } - break; - case "csv": - if ("clip-rect" == s) - for (f = [], t = 4; t--; ) - f[t] = +k[s][t] + q * i * l[s][t]; - break; - default: - var z = [][D](k[s]); - for (f = [], t = n.paper.customAttributes[s].length; t--; ) - f[t] = +z[t] + q * i * l[s][t] - } - o[s] = f - } - n.attr(o), - function (b, c, d) { - setTimeout(function () { - a("raphael.anim.frame." + b, c, d) - }) - } - (n.id, n, e.anim) - } else { - if (function (c, d, e) { - setTimeout(function () { - a("raphael.anim.frame." + d.id, d, e), - a("raphael.anim.finish." + d.id, d, e), - b.is(c, "function") && c.call(d) - }) - } - (e.callback, n, e.anim), n.attr(m), fb.splice(d--, 1), e.repeat > 1 && !e.next) { - for (g in m) - m[y](g) && (p[g] = e.totalOrigin[g]); - e.el.attr(p), - r(e.anim, e.el, e.anim.percents[0], null, e.totalOrigin, e.repeat - 1) - } - e.next && !e.stop && r(e.anim, e.el, e.next, null, e.totalOrigin, e.repeat) - } - } - } - fb.length && gb(hb) - }, - ib = function (a) { - return a > 255 ? 255 : 0 > a ? 0 : a - }; - Xa.animateWith = function (a, c, d, e, f, g) { - var h = this; - if (h.removed) - return g && g.call(h), h; - var i = d instanceof q ? d : b.animation(d, e, f, g); - r(i, h, i.percents[0], null, h.attr()); - for (var j = 0, k = fb.length; k > j; j++) - if (fb[j].anim == c && fb[j].el == a) { - fb[k - 1].start = fb[j].start; - break - } - return h - }, - Xa.onAnimation = function (b) { - return b ? a.on("raphael.anim.frame." + this.id, b) : a.unbind("raphael.anim.frame." + this.id), - this - }, - q.prototype.delay = function (a) { - var b = new q(this.anim, this.ms); - return b.times = this.times, - b.del = +a || 0, - b - }, - q.prototype.repeat = function (a) { - var b = new q(this.anim, this.ms); - return b.del = this.del, - b.times = M.floor(N(a, 0)) || 1, - b - }, - b.animation = function (a, c, d, e) { - if (a instanceof q) - return a; - (b.is(d, "function") || !d) && (e = e || d || null, d = null), - a = Object(a), - c = +c || 0; - var f, - g, - h = {}; - for (g in a) - a[y](g) && $(g) != g && $(g) + "%" != g && (f = !0, h[g] = a[g]); - if (f) - return d && (h.easing = d), e && (h.callback = e), new q({ - 100: h - }, c); - if (e) { - var i = 0; - for (var j in a) { - var k = _(j); - a[y](j) && k > i && (i = k) - } - i += "%", - !a[i].callback && (a[i].callback = e) - } - return new q(a, c) - }, - Xa.animate = function (a, c, d, e) { - var f = this; - if (f.removed) - return e && e.call(f), f; - var g = a instanceof q ? a : b.animation(a, c, d, e); - return r(g, f, g.percents[0], null, f.attr()), - f - }, - Xa.setTime = function (a, b) { - return a && null != b && this.status(a, O(b, a.ms) / a.ms), - this - }, - Xa.status = function (a, b) { - var c, - d, - e = [], - f = 0; - if (null != b) - return r(a, this, -1, O(b, 1)), this; - for (c = fb.length; c > f; f++) - if (d = fb[f], d.el.id == this.id && (!a || d.anim == a)) { - if (a) - return d.status; - e.push({ - anim: d.anim, - status: d.status - }) - } - return a ? 0 : e - }, - Xa.pause = function (b) { - for (var c = 0; c < fb.length; c++) - fb[c].el.id != this.id || b && fb[c].anim != b || a("raphael.anim.pause." + this.id, this, fb[c].anim) !== !1 && (fb[c].paused = !0); - return this - }, - Xa.resume = function (b) { - for (var c = 0; c < fb.length; c++) - if (fb[c].el.id == this.id && (!b || fb[c].anim == b)) { - var d = fb[c]; - a("raphael.anim.resume." + this.id, this, d.anim) !== !1 && (delete d.paused, this.status(d.anim, d.status)) - } - return this - }, - Xa.stop = function (b) { - for (var c = 0; c < fb.length; c++) - fb[c].el.id != this.id || b && fb[c].anim != b || a("raphael.anim.stop." + this.id, this, fb[c].anim) !== !1 && fb.splice(c--, 1); - return this - }, - a.on("raphael.remove", s), - a.on("raphael.clear", s), - Xa.toString = function () { - return "Raphaël’s object" - }; - var jb = function (a) { - if (this.items = [], this.length = 0, this.type = "set", a) - for (var b = 0, c = a.length; c > b; b++) - !a[b] || a[b].constructor != Xa.constructor && a[b].constructor != jb || (this[this.items.length] = this.items[this.items.length] = a[b], this.length++) - }, - kb = jb.prototype; - kb.push = function () { - for (var a, b, c = 0, d = arguments.length; d > c; c++) - a = arguments[c], !a || a.constructor != Xa.constructor && a.constructor != jb || (b = this.items.length, this[b] = this.items[b] = a, this.length++); - return this - }, - kb.pop = function () { - return this.length && delete this[this.length--], - this.items.pop() - }, - kb.forEach = function (a, b) { - for (var c = 0, d = this.items.length; d > c; c++) - if (a.call(b, this.items[c], c) === !1) - return this; - return this - }; - for (var lb in Xa) - Xa[y](lb) && (kb[lb] = function (a) { - return function () { - var b = arguments; - return this.forEach(function (c) { - c[a][C](c, b) - }) - } - } - (lb)); - return kb.attr = function (a, c) { - if (a && b.is(a, U) && b.is(a[0], "object")) - for (var d = 0, e = a.length; e > d; d++) - this.items[d].attr(a[d]); - else - for (var f = 0, g = this.items.length; g > f; f++) - this.items[f].attr(a, c); - return this - }, - kb.clear = function () { - for (; this.length; ) - this.pop() - }, - kb.splice = function (a, b, c) { - a = 0 > a ? N(this.length + a, 0) : a, - b = N(0, O(this.length - a, b)); - var d, - e = [], - f = [], - g = []; - for (d = 2; d < arguments.length; d++) - g.push(arguments[d]); - for (d = 0; b > d; d++) - f.push(this[a + d]); - for (; d < this.length - a; d++) - e.push(this[a + d]); - var h = g.length; - for (d = 0; d < h + e.length; d++) - this.items[a + d] = this[a + d] = h > d ? g[d] : e[d - h]; - for (d = this.items.length = this.length -= b - h; this[d]; ) - delete this[d++]; - return new jb(f) - }, - kb.exclude = function (a) { - for (var b = 0, c = this.length; c > b; b++) - if (this[b] == a) - return this.splice(b, 1), !0 - }, - kb.animate = function (a, c, d, e) { - (b.is(d, "function") || !d) && (e = d || null); - var f, - g, - h = this.items.length, - i = h, - j = this; - if (!h) - return this; - e && (g = function () { - !--h && e.call(j) - }), - d = b.is(d, T) ? d : g; - var k = b.animation(a, c, d, g); - for (f = this.items[--i].animate(k); i--; ) - this.items[i] && !this.items[i].removed && this.items[i].animateWith(f, k, k), this.items[i] && !this.items[i].removed || h--; - return this - }, - kb.insertAfter = function (a) { - for (var b = this.items.length; b--; ) - this.items[b].insertAfter(a); - return this - }, - kb.getBBox = function () { - for (var a = [], b = [], c = [], d = [], e = this.items.length; e--; ) - if (!this.items[e].removed) { - var f = this.items[e].getBBox(); - a.push(f.x), - b.push(f.y), - c.push(f.x + f.width), - d.push(f.y + f.height) - } - return a = O[C](0, a), - b = O[C](0, b), - c = N[C](0, c), - d = N[C](0, d), { - x: a, - y: b, - x2: c, - y2: d, - width: c - a, - height: d - b - } - }, - kb.clone = function (a) { - a = this.paper.set(); - for (var b = 0, c = this.items.length; c > b; b++) - a.push(this.items[b].clone()); - return a - }, - kb.toString = function () { - return "Raphaël‘s set" - }, - kb.glow = function (a) { - var b = this.paper.set(); - return this.forEach(function (c, d) { - var e = c.glow(a); - null != e && e.forEach(function (a, c) { - b.push(a) - }) - }), - b - }, - kb.isPointInside = function (a, b) { - var c = !1; - return this.forEach(function (d) { - return d.isPointInside(a, b) ? (c = !0, !1) : void 0 - }), - c - }, - b.registerFont = function (a) { - if (!a.face) - return a; - this.fonts = this.fonts || {}; - var b = { - w: a.w, - face: {}, - glyphs: {} - }, - c = a.face["font-family"]; - for (var d in a.face) - a.face[y](d) && (b.face[d] = a.face[d]); - if (this.fonts[c] ? this.fonts[c].push(b) : this.fonts[c] = [b], !a.svg) { - b.face["units-per-em"] = _(a.face["units-per-em"], 10); - for (var e in a.glyphs) - if (a.glyphs[y](e)) { - var f = a.glyphs[e]; - if (b.glyphs[e] = { - w: f.w, - k: {}, - d: f.d && "M" + f.d.replace(/[mlcxtrv]/g, function (a) { - return { - l: "L", - c: "C", - x: "z", - t: "m", - r: "l", - v: "c" - } - [a] || "M" - }) + "z" - }, f.k) - for (var g in f.k) - f[y](g) && (b.glyphs[e].k[g] = f.k[g]) - } - } - return a - }, - u.getFont = function (a, c, d, e) { - if (e = e || "normal", d = d || "normal", c = +c || { - normal: 400, - bold: 700, - lighter: 300, - bolder: 800 - } - [c] || 400, b.fonts) { - var f = b.fonts[a]; - if (!f) { - var g = new RegExp("(^|\\s)" + a.replace(/[^\w\d\s+!~.:_-]/g, F) + "(\\s|$)", "i"); - for (var h in b.fonts) - if (b.fonts[y](h) && g.test(h)) { - f = b.fonts[h]; - break - } - } - var i; - if (f) - for (var j = 0, k = f.length; k > j && (i = f[j], i.face["font-weight"] != c || i.face["font-style"] != d && i.face["font-style"] || i.face["font-stretch"] != e); j++); - return i - } - }, - u.print = function (a, c, d, e, f, g, h, i) { - g = g || "middle", - h = N(O(h || 0, 1), -1), - i = N(O(i || 1, 3), 1); - var j, - k = H(d)[I](F), - l = 0, - m = 0, - n = F; - if (b.is(e, "string") && (e = this.getFont(e)), e) { - j = (f || 16) / e.face["units-per-em"]; - for (var o = e.face.bbox[I](v), p = +o[0], q = o[3] - o[1], r = 0, s = +o[1] + ("baseline" == g ? q + +e.face.descent : q / 2), t = 0, u = k.length; u > t; t++) { - if ("\n" == k[t]) - l = 0, x = 0, m = 0, r += q * i; - else { - var w = m && e.glyphs[k[t - 1]] || {}, - x = e.glyphs[k[t]]; - l += m ? (w.w || e.w) + (w.k && w.k[k[t]] || 0) + e.w * h : 0, - m = 1 - } - x && x.d && (n += b.transformPath(x.d, ["t", l * j, r * j, "s", j, j, p, s, "t", (a - p) / j, (c - s) / j])) - } - } - return this.path(n).attr({ - fill: "#000", - stroke: "none" - }) - }, - u.add = function (a) { - if (b.is(a, "array")) - for (var c, d = this.set(), e = 0, f = a.length; f > e; e++) - c = a[e] || {}, - w[y](c.type) && d.push(this[c.type]().attr(c)); - return d - }, - b.format = function (a, c) { - var d = b.is(c, U) ? [0][D](c) : arguments; - return a && b.is(a, T) && d.length - 1 && (a = a.replace(x, function (a, b) { - return null == d[++b] ? F : d[b] - })), - a || F - }, - b.fullfill = function () { - var a = /\{([^\}]+)\}/g, - b = /(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g, - c = function (a, c, d) { - var e = d; - return c.replace(b, function (a, b, c, d, f) { - b = b || d, - e && (b in e && (e = e[b]), "function" == typeof e && f && (e = e())) - }), - e = (null == e || e == d ? a : e) + "" - }; - return function (b, d) { - return String(b).replace(a, function (a, b) { - return c(a, b, d) - }) - } - } - (), - b.ninja = function () { - return A.was ? z.win.Raphael = A.is : delete Raphael, - b - }, - b.st = kb, - a.on("raphael.DOMload", function () { - t = !0 - }), - function (a, c, d) { - function e() { - /in/.test(a.readyState) ? setTimeout(e, 9) : b.eve("raphael.DOMload") - } - null == a.readyState && a.addEventListener && (a.addEventListener(c, d = function () { - a.removeEventListener(c, d, !1), - a.readyState = "complete" - }, !1), a.readyState = "loading"), - e() - } - (document, "DOMContentLoaded"), - b -}), function (a, b) { - "function" == typeof define && define.amd ? define("raphael.svg", ["raphael.core"], function (a) { - return b(a) - }) : b("object" == typeof exports ? require("./raphael.core") : a.Raphael) -} -(this, function (a) { - if (!a || a.svg) { - var b = "hasOwnProperty", - c = String, - d = parseFloat, - e = parseInt, - f = Math, - g = f.max, - h = f.abs, - i = f.pow, - j = /[, ]+/, - k = a.eve, - l = "", - m = " ", - n = "http://www.w3.org/1999/xlink", - o = { - block: "M5,0 0,2.5 5,5z", - classic: "M5,0 0,2.5 5,5 3.5,3 3.5,2z", - diamond: "M2.5,0 5,2.5 2.5,5 0,2.5z", - open: "M6,1 1,3.5 6,6", - oval: "M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z" - }, - p = {}; - a.toString = function () { - return "Your browser supports SVG.\nYou are running Raphaël " + this.version - }; - var q = function (d, e) { - if (e) { - "string" == typeof d && (d = q(d)); - for (var f in e) - e[b](f) && ("xlink:" == f.substring(0, 6) ? d.setAttributeNS(n, f.substring(6), c(e[f])) : d.setAttribute(f, c(e[f]))) - } else - d = a._g.doc.createElementNS("http://www.w3.org/2000/svg", d), d.style && (d.style.webkitTapHighlightColor = "rgba(0,0,0,0)"); - return d - }, - r = function (b, e) { - var j = "linear", - k = b.id + e, - m = .5, - n = .5, - o = b.node, - p = b.paper, - r = o.style, - s = a._g.doc.getElementById(k); - if (!s) { - if (e = c(e).replace(a._radial_gradient, function (a, b, c) { - if (j = "radial", b && c) { - m = d(b), - n = d(c); - var e = 2 * (n > .5) - 1; - i(m - .5, 2) + i(n - .5, 2) > .25 && (n = f.sqrt(.25 - i(m - .5, 2)) * e + .5) && .5 != n && (n = n.toFixed(5) - 1e-5 * e) - } - return l - }), e = e.split(/\s*\-\s*/), "linear" == j) { - var t = e.shift(); - if (t = -d(t), isNaN(t)) - return null; - var u = [0, 0, f.cos(a.rad(t)), f.sin(a.rad(t))], - v = 1 / (g(h(u[2]), h(u[3])) || 1); - u[2] *= v, - u[3] *= v, - u[2] < 0 && (u[0] = -u[2], u[2] = 0), - u[3] < 0 && (u[1] = -u[3], u[3] = 0) - } - var w = a._parseDots(e); - if (!w) - return null; - if (k = k.replace(/[\(\)\s,\xb0#]/g, "_"), b.gradient && k != b.gradient.id && (p.defs.removeChild(b.gradient), delete b.gradient), !b.gradient) { - s = q(j + "Gradient", { - id: k - }), - b.gradient = s, - q(s, "radial" == j ? { - fx: m, - fy: n - } - : { - x1: u[0], - y1: u[1], - x2: u[2], - y2: u[3], - gradientTransform: b.matrix.invert() - }), - p.defs.appendChild(s); - for (var x = 0, y = w.length; y > x; x++) - s.appendChild(q("stop", { - offset: w[x].offset ? w[x].offset : x ? "100%" : "0%", - "stop-color": w[x].color || "#fff", - "stop-opacity": isFinite(w[x].opacity) ? w[x].opacity : 1 - })) - } - } - return q(o, { - fill: "url('" + document.location.origin + document.location.pathname + "#" + k + "')", - opacity: 1, - "fill-opacity": 1 - }), - r.fill = l, - r.opacity = 1, - r.fillOpacity = 1, - 1 - }, - s = function (a) { - var b = a.getBBox(1); - q(a.pattern, { - patternTransform: a.matrix.invert() + " translate(" + b.x + "," + b.y + ")" - }) - }, - t = function (d, e, f) { - if ("path" == d.type) { - for (var g, h, i, j, k, m = c(e).toLowerCase().split("-"), n = d.paper, r = f ? "end" : "start", s = d.node, t = d.attrs, u = t["stroke-width"], v = m.length, w = "classic", x = 3, y = 3, z = 5; v--; ) - switch (m[v]) { - case "block": - case "classic": - case "oval": - case "diamond": - case "open": - case "none": - w = m[v]; - break; - case "wide": - y = 5; - break; - case "narrow": - y = 2; - break; - case "long": - x = 5; - break; - case "short": - x = 2 - } - if ("open" == w ? (x += 2, y += 2, z += 2, i = 1, j = f ? 4 : 1, k = { - fill: "none", - stroke: t.stroke - }) : (j = i = x / 2, k = { - fill: t.stroke, - stroke: "none" - }), d._.arrows ? f ? (d._.arrows.endPath && p[d._.arrows.endPath]--, d._.arrows.endMarker && p[d._.arrows.endMarker]--) : (d._.arrows.startPath && p[d._.arrows.startPath]--, d._.arrows.startMarker && p[d._.arrows.startMarker]--) : d._.arrows = {}, "none" != w) { - var A = "raphael-marker-" + w, - B = "raphael-marker-" + r + w + x + y + "-obj" + d.id; - a._g.doc.getElementById(A) ? p[A]++ : (n.defs.appendChild(q(q("path"), { - "stroke-linecap": "round", - d: o[w], - id: A - })), p[A] = 1); - var C, - D = a._g.doc.getElementById(B); - D ? (p[B]++, C = D.getElementsByTagName("use")[0]) : (D = q(q("marker"), { - id: B, - markerHeight: y, - markerWidth: x, - orient: "auto", - refX: j, - refY: y / 2 - }), C = q(q("use"), { - "xlink:href": "#" + A, - transform: (f ? "rotate(180 " + x / 2 + " " + y / 2 + ") " : l) + "scale(" + x / z + "," + y / z + ")", - "stroke-width": (1 / ((x / z + y / z) / 2)).toFixed(4) - }), D.appendChild(C), n.defs.appendChild(D), p[B] = 1), - q(C, k); - var E = i * ("diamond" != w && "oval" != w); - f ? (g = d._.arrows.startdx * u || 0, h = a.getTotalLength(t.path) - E * u) : (g = E * u, h = a.getTotalLength(t.path) - (d._.arrows.enddx * u || 0)), - k = {}, - k["marker-" + r] = "url(#" + B + ")", - (h || g) && (k.d = a.getSubpath(t.path, g, h)), - q(s, k), - d._.arrows[r + "Path"] = A, - d._.arrows[r + "Marker"] = B, - d._.arrows[r + "dx"] = E, - d._.arrows[r + "Type"] = w, - d._.arrows[r + "String"] = e - } else - f ? (g = d._.arrows.startdx * u || 0, h = a.getTotalLength(t.path) - g) : (g = 0, h = a.getTotalLength(t.path) - (d._.arrows.enddx * u || 0)), d._.arrows[r + "Path"] && q(s, { - d: a.getSubpath(t.path, g, h) - }), delete d._.arrows[r + "Path"], delete d._.arrows[r + "Marker"], delete d._.arrows[r + "dx"], delete d._.arrows[r + "Type"], delete d._.arrows[r + "String"]; - for (k in p) - if (p[b](k) && !p[k]) { - var F = a._g.doc.getElementById(k); - F && F.parentNode.removeChild(F) - } - } - }, - u = { - "-": [3, 1], - ".": [1, 1], - "-.": [3, 1, 1, 1], - "-..": [3, 1, 1, 1, 1, 1], - ". ": [1, 3], - "- ": [4, 3], - "--": [8, 3], - "- .": [4, 3, 1, 3], - "--.": [8, 3, 1, 3], - "--..": [8, 3, 1, 3, 1, 3] - }, - v = function (a, b, d) { - if (b = u[c(b).toLowerCase()]) { - for (var e = a.attrs["stroke-width"] || "1", f = { - round: e, - square: e, - butt: 0 - } - [a.attrs["stroke-linecap"] || d["stroke-linecap"]] || 0, g = [], h = b.length; h--; ) - g[h] = b[h] * e + (h % 2 ? 1 : -1) * f; - q(a.node, { - "stroke-dasharray": g.join(",") - }) - } else - q(a.node, { - "stroke-dasharray": "none" - }) - }, - w = function (d, f) { - var i = d.node, - k = d.attrs, - m = i.style.visibility; - i.style.visibility = "hidden"; - for (var o in f) - if (f[b](o)) { - if (!a._availableAttrs[b](o)) - continue; - var p = f[o]; - switch (k[o] = p, o) { - case "blur": - d.blur(p); - break; - case "title": - var u = i.getElementsByTagName("title"); - if (u.length && (u = u[0])) - u.firstChild.nodeValue = p; - else { - u = q("title"); - var w = a._g.doc.createTextNode(p); - u.appendChild(w), - i.appendChild(u) - } - break; - case "href": - case "target": - var x = i.parentNode; - if ("a" != x.tagName.toLowerCase()) { - var z = q("a"); - x.insertBefore(z, i), - z.appendChild(i), - x = z - } - "target" == o ? x.setAttributeNS(n, "show", "blank" == p ? "new" : p) : x.setAttributeNS(n, o, p); - break; - case "cursor": - i.style.cursor = p; - break; - case "transform": - d.transform(p); - break; - case "arrow-start": - t(d, p); - break; - case "arrow-end": - t(d, p, 1); - break; - case "clip-rect": - var A = c(p).split(j); - if (4 == A.length) { - d.clip && d.clip.parentNode.parentNode.removeChild(d.clip.parentNode); - var B = q("clipPath"), - C = q("rect"); - B.id = a.createUUID(), - q(C, { - x: A[0], - y: A[1], - width: A[2], - height: A[3] - }), - B.appendChild(C), - d.paper.defs.appendChild(B), - q(i, { - "clip-path": "url(#" + B.id + ")" - }), - d.clip = C - } - if (!p) { - var D = i.getAttribute("clip-path"); - if (D) { - var E = a._g.doc.getElementById(D.replace(/(^url\(#|\)$)/g, l)); - E && E.parentNode.removeChild(E), - q(i, { - "clip-path": l - }), - delete d.clip - } - } - break; - case "path": - "path" == d.type && (q(i, { - d: p ? k.path = a._pathToAbsolute(p) : "M0,0" - }), d._.dirty = 1, d._.arrows && ("startString" in d._.arrows && t(d, d._.arrows.startString), "endString" in d._.arrows && t(d, d._.arrows.endString, 1))); - break; - case "width": - if (i.setAttribute(o, p), d._.dirty = 1, !k.fx) - break; - o = "x", - p = k.x; - case "x": - k.fx && (p = -k.x - (k.width || 0)); - case "rx": - if ("rx" == o && "rect" == d.type) - break; - case "cx": - i.setAttribute(o, p), - d.pattern && s(d), - d._.dirty = 1; - break; - case "height": - if (i.setAttribute(o, p), d._.dirty = 1, !k.fy) - break; - o = "y", - p = k.y; - case "y": - k.fy && (p = -k.y - (k.height || 0)); - case "ry": - if ("ry" == o && "rect" == d.type) - break; - case "cy": - i.setAttribute(o, p), - d.pattern && s(d), - d._.dirty = 1; - break; - case "r": - "rect" == d.type ? q(i, { - rx: p, - ry: p - }) : i.setAttribute(o, p), - d._.dirty = 1; - break; - case "src": - "image" == d.type && i.setAttributeNS(n, "href", p); - break; - case "stroke-width": - (1 != d._.sx || 1 != d._.sy) && (p /= g(h(d._.sx), h(d._.sy)) || 1), - i.setAttribute(o, p), - k["stroke-dasharray"] && v(d, k["stroke-dasharray"], f), - d._.arrows && ("startString" in d._.arrows && t(d, d._.arrows.startString), "endString" in d._.arrows && t(d, d._.arrows.endString, 1)); - break; - case "stroke-dasharray": - v(d, p, f); - break; - case "fill": - var F = c(p).match(a._ISURL); - if (F) { - B = q("pattern"); - var G = q("image"); - B.id = a.createUUID(), - q(B, { - x: 0, - y: 0, - patternUnits: "userSpaceOnUse", - height: 1, - width: 1 - }), - q(G, { - x: 0, - y: 0, - "xlink:href": F[1] - }), - B.appendChild(G), - function (b) { - a._preload(F[1], function () { - var a = this.offsetWidth, - c = this.offsetHeight; - q(b, { - width: a, - height: c - }), - q(G, { - width: a, - height: c - }) - }) - } - (B), - d.paper.defs.appendChild(B), - q(i, { - fill: "url(#" + B.id + ")" - }), - d.pattern = B, - d.pattern && s(d); - break - } - var H = a.getRGB(p); - if (H.error) { - if (("circle" == d.type || "ellipse" == d.type || "r" != c(p).charAt()) && r(d, p)) { - if ("opacity" in k || "fill-opacity" in k) { - var I = a._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g, l)); - if (I) { - var J = I.getElementsByTagName("stop"); - q(J[J.length - 1], { - "stop-opacity": ("opacity" in k ? k.opacity : 1) * ("fill-opacity" in k ? k["fill-opacity"] : 1) - }) - } - } - k.gradient = p, - k.fill = "none"; - break - } - } else - delete f.gradient, delete k.gradient, !a.is(k.opacity, "undefined") && a.is(f.opacity, "undefined") && q(i, { - opacity: k.opacity - }), !a.is(k["fill-opacity"], "undefined") && a.is(f["fill-opacity"], "undefined") && q(i, { - "fill-opacity": k["fill-opacity"] - }); - H[b]("opacity") && q(i, { - "fill-opacity": H.opacity > 1 ? H.opacity / 100 : H.opacity - }); - case "stroke": - H = a.getRGB(p), - i.setAttribute(o, H.hex), - "stroke" == o && H[b]("opacity") && q(i, { - "stroke-opacity": H.opacity > 1 ? H.opacity / 100 : H.opacity - }), - "stroke" == o && d._.arrows && ("startString" in d._.arrows && t(d, d._.arrows.startString), "endString" in d._.arrows && t(d, d._.arrows.endString, 1)); - break; - case "gradient": - ("circle" == d.type || "ellipse" == d.type || "r" != c(p).charAt()) && r(d, p); - break; - case "opacity": - k.gradient && !k[b]("stroke-opacity") && q(i, { - "stroke-opacity": p > 1 ? p / 100 : p - }); - case "fill-opacity": - if (k.gradient) { - I = a._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g, l)), - I && (J = I.getElementsByTagName("stop"), q(J[J.length - 1], { - "stop-opacity": p - })); - break - } - default: - "font-size" == o && (p = e(p, 10) + "px"); - var K = o.replace(/(\-.)/g, function (a) { - return a.substring(1).toUpperCase() - }); - i.style[K] = p, - d._.dirty = 1, - i.setAttribute(o, p) - } - } - y(d, f), - i.style.visibility = m - }, - x = 1.2, - y = function (d, f) { - if ("text" == d.type && (f[b]("text") || f[b]("font") || f[b]("font-size") || f[b]("x") || f[b]("y"))) { - var g = d.attrs, - h = d.node, - i = h.firstChild ? e(a._g.doc.defaultView.getComputedStyle(h.firstChild, l).getPropertyValue("font-size"), 10) : 10; - if (f[b]("text")) { - for (g.text = f.text; h.firstChild; ) - h.removeChild(h.firstChild); - for (var j, k = c(f.text).split("\n"), m = [], n = 0, o = k.length; o > n; n++) - j = q("tspan"), n && q(j, { - dy: i * x, - x: g.x - }), j.appendChild(a._g.doc.createTextNode(k[n])), h.appendChild(j), m[n] = j - } else - for (m = h.getElementsByTagName("tspan"), n = 0, o = m.length; o > n; n++) - n ? q(m[n], { - dy: i * x, - x: g.x - }) : q(m[0], { - dy: 0 - }); - q(h, { - x: g.x, - y: g.y - }), - d._.dirty = 1; - var p = d._getBBox(), - r = g.y - (p.y + p.height / 2); - r && a.is(r, "finite") && q(m[0], { - dy: r - }) - } - }, - z = function (a) { - return a.parentNode && "a" === a.parentNode.tagName.toLowerCase() ? a.parentNode : a - }, - A = function (b, c) { - this[0] = this.node = b, - b.raphael = !0, - this.id = a._oid++, - b.raphaelid = this.id, - this.matrix = a.matrix(), - this.realPath = null, - this.paper = c, - this.attrs = this.attrs || {}, - this._ = { - transform: [], - sx: 1, - sy: 1, - deg: 0, - dx: 0, - dy: 0, - dirty: 1 - }, - !c.bottom && (c.bottom = this), - this.prev = c.top, - c.top && (c.top.next = this), - c.top = this, - this.next = null - }, - B = a.el; - A.prototype = B, - B.constructor = A, - a._engine.path = function (a, b) { - var c = q("path"); - b.canvas && b.canvas.appendChild(c); - var d = new A(c, b); - return d.type = "path", - w(d, { - fill: "none", - stroke: "#000", - path: a - }), - d - }, - B.rotate = function (a, b, e) { - if (this.removed) - return this; - if (a = c(a).split(j), a.length - 1 && (b = d(a[1]), e = d(a[2])), a = d(a[0]), null == e && (b = e), null == b || null == e) { - var f = this.getBBox(1); - b = f.x + f.width / 2, - e = f.y + f.height / 2 - } - return this.transform(this._.transform.concat([["r", a, b, e]])), - this - }, - B.scale = function (a, b, e, f) { - if (this.removed) - return this; - if (a = c(a).split(j), a.length - 1 && (b = d(a[1]), e = d(a[2]), f = d(a[3])), a = d(a[0]), null == b && (b = a), null == f && (e = f), null == e || null == f) - var g = this.getBBox(1); - return e = null == e ? g.x + g.width / 2 : e, - f = null == f ? g.y + g.height / 2 : f, - this.transform(this._.transform.concat([["s", a, b, e, f]])), - this - }, - B.translate = function (a, b) { - return this.removed ? this : (a = c(a).split(j), a.length - 1 && (b = d(a[1])), a = d(a[0]) || 0, b = +b || 0, this.transform(this._.transform.concat([["t", a, b]])), this) - }, - B.transform = function (c) { - var d = this._; - if (null == c) - return d.transform; - if (a._extractTransform(this, c), this.clip && q(this.clip, { - transform: this.matrix.invert() - }), this.pattern && s(this), this.node && q(this.node, { - transform: this.matrix - }), 1 != d.sx || 1 != d.sy) { - var e = this.attrs[b]("stroke-width") ? this.attrs["stroke-width"] : 1; - this.attr({ - "stroke-width": e - }) - } - return this - }, - B.hide = function () { - return this.removed || (this.node.style.display = "none"), - this - }, - B.show = function () { - return this.removed || (this.node.style.display = ""), - this - }, - B.remove = function () { - var b = z(this.node); - if (!this.removed && b.parentNode) { - var c = this.paper; - c.__set__ && c.__set__.exclude(this), - k.unbind("raphael.*.*." + this.id), - this.gradient && c.defs.removeChild(this.gradient), - a._tear(this, c), - b.parentNode.removeChild(b), - this.removeData(); - for (var d in this) - this[d] = "function" == typeof this[d] ? a._removedFactory(d) : null; - this.removed = !0 - } - }, - B._getBBox = function () { - if ("none" == this.node.style.display) { - this.show(); - var a = !0 - } - var b, - c = !1; - this.paper.canvas.parentElement ? b = this.paper.canvas.parentElement.style : this.paper.canvas.parentNode && (b = this.paper.canvas.parentNode.style), - b && "none" == b.display && (c = !0, b.display = ""); - var d = {}; - try { - d = this.node.getBBox() - } catch (e) { - d = { - x: this.node.clientLeft, - y: this.node.clientTop, - width: this.node.clientWidth, - height: this.node.clientHeight - } - } - finally { - d = d || {}, - c && (b.display = "none") - } - return a && this.hide(), - d - }, - B.attr = function (c, d) { - if (this.removed) - return this; - if (null == c) { - var e = {}; - for (var f in this.attrs) - this.attrs[b](f) && (e[f] = this.attrs[f]); - return e.gradient && "none" == e.fill && (e.fill = e.gradient) && delete e.gradient, - e.transform = this._.transform, - e - } - if (null == d && a.is(c, "string")) { - if ("fill" == c && "none" == this.attrs.fill && this.attrs.gradient) - return this.attrs.gradient; - if ("transform" == c) - return this._.transform; - for (var g = c.split(j), h = {}, i = 0, l = g.length; l > i; i++) - c = g[i], c in this.attrs ? h[c] = this.attrs[c] : a.is(this.paper.customAttributes[c], "function") ? h[c] = this.paper.customAttributes[c].def : h[c] = a._availableAttrs[c]; - return l - 1 ? h : h[g[0]] - } - if (null == d && a.is(c, "array")) { - for (h = {}, i = 0, l = c.length; l > i; i++) - h[c[i]] = this.attr(c[i]); - return h - } - if (null != d) { - var m = {}; - m[c] = d - } else - null != c && a.is(c, "object") && (m = c); - for (var n in m) - k("raphael.attr." + n + "." + this.id, this, m[n]); - for (n in this.paper.customAttributes) - if (this.paper.customAttributes[b](n) && m[b](n) && a.is(this.paper.customAttributes[n], "function")) { - var o = this.paper.customAttributes[n].apply(this, [].concat(m[n])); - this.attrs[n] = m[n]; - for (var p in o) - o[b](p) && (m[p] = o[p]) - } - return w(this, m), - this - }, - B.toFront = function () { - if (this.removed) - return this; - var b = z(this.node); - b.parentNode.appendChild(b); - var c = this.paper; - return c.top != this && a._tofront(this, c), - this - }, - B.toBack = function () { - if (this.removed) - return this; - var b = z(this.node), - c = b.parentNode; - c.insertBefore(b, c.firstChild), - a._toback(this, this.paper); - this.paper; - return this - }, - B.insertAfter = function (b) { - if (this.removed || !b) - return this; - var c = z(this.node), - d = z(b.node || b[b.length - 1].node); - return d.nextSibling ? d.parentNode.insertBefore(c, d.nextSibling) : d.parentNode.appendChild(c), - a._insertafter(this, b, this.paper), - this - }, - B.insertBefore = function (b) { - if (this.removed || !b) - return this; - var c = z(this.node), - d = z(b.node || b[0].node); - return d.parentNode.insertBefore(c, d), - a._insertbefore(this, b, this.paper), - this - }, - B.blur = function (b) { - var c = this; - if (0 !== +b) { - var d = q("filter"), - e = q("feGaussianBlur"); - c.attrs.blur = b, - d.id = a.createUUID(), - q(e, { - stdDeviation: +b || 1.5 - }), - d.appendChild(e), - c.paper.defs.appendChild(d), - c._blur = d, - q(c.node, { - filter: "url(#" + d.id + ")" - }) - } else - c._blur && (c._blur.parentNode.removeChild(c._blur), delete c._blur, delete c.attrs.blur), c.node.removeAttribute("filter"); - return c - }, - a._engine.circle = function (a, b, c, d) { - var e = q("circle"); - a.canvas && a.canvas.appendChild(e); - var f = new A(e, a); - return f.attrs = { - cx: b, - cy: c, - r: d, - fill: "none", - stroke: "#000" - }, - f.type = "circle", - q(e, f.attrs), - f - }, - a._engine.rect = function (a, b, c, d, e, f) { - var g = q("rect"); - a.canvas && a.canvas.appendChild(g); - var h = new A(g, a); - return h.attrs = { - x: b, - y: c, - width: d, - height: e, - rx: f || 0, - ry: f || 0, - fill: "none", - stroke: "#000" - }, - h.type = "rect", - q(g, h.attrs), - h - }, - a._engine.ellipse = function (a, b, c, d, e) { - var f = q("ellipse"); - a.canvas && a.canvas.appendChild(f); - var g = new A(f, a); - return g.attrs = { - cx: b, - cy: c, - rx: d, - ry: e, - fill: "none", - stroke: "#000" - }, - g.type = "ellipse", - q(f, g.attrs), - g - }, - a._engine.image = function (a, b, c, d, e, f) { - var g = q("image"); - q(g, { - x: c, - y: d, - width: e, - height: f, - preserveAspectRatio: "none" - }), - g.setAttributeNS(n, "href", b), - a.canvas && a.canvas.appendChild(g); - var h = new A(g, a); - return h.attrs = { - x: c, - y: d, - width: e, - height: f, - src: b - }, - h.type = "image", - h - }, - a._engine.text = function (b, c, d, e) { - var f = q("text"); - b.canvas && b.canvas.appendChild(f); - var g = new A(f, b); - return g.attrs = { - x: c, - y: d, - "text-anchor": "middle", - text: e, - "font-family": a._availableAttrs["font-family"], - "font-size": a._availableAttrs["font-size"], - stroke: "none", - fill: "#000" - }, - g.type = "text", - w(g, g.attrs), - g - }, - a._engine.setSize = function (a, b) { - return this.width = a || this.width, - this.height = b || this.height, - this.canvas.setAttribute("width", this.width), - this.canvas.setAttribute("height", this.height), - this._viewBox && this.setViewBox.apply(this, this._viewBox), - this - }, - a._engine.create = function () { - var b = a._getContainer.apply(0, arguments), - c = b && b.container, - d = b.x, - e = b.y, - f = b.width, - g = b.height; - if (!c) - throw new Error("SVG container not found."); - var h, - i = q("svg"), - j = "overflow:hidden;"; - return d = d || 0, - e = e || 0, - f = f || 512, - g = g || 342, - q(i, { - height: g, - version: 1.1, - width: f, - xmlns: "http://www.w3.org/2000/svg", - "xmlns:xlink": "http://www.w3.org/1999/xlink" - }), - 1 == c ? (i.style.cssText = j + "position:absolute;left:" + d + "px;top:" + e + "px", a._g.doc.body.appendChild(i), h = 1) : (i.style.cssText = j + "position:relative", c.firstChild ? c.insertBefore(i, c.firstChild) : c.appendChild(i)), - c = new a._Paper, - c.width = f, - c.height = g, - c.canvas = i, - c.clear(), - c._left = c._top = 0, - h && (c.renderfix = function () {}), - c.renderfix(), - c - }, - a._engine.setViewBox = function (a, b, c, d, e) { - k("raphael.setViewBox", this, this._viewBox, [a, b, c, d, e]); - var f, - h, - i = this.getSize(), - j = g(c / i.width, d / i.height), - l = this.top, - n = e ? "xMidYMid meet" : "xMinYMin"; - for (null == a ? (this._vbSize && (j = 1), delete this._vbSize, f = "0 0 " + this.width + m + this.height) : (this._vbSize = j, f = a + m + b + m + c + m + d), q(this.canvas, { - viewBox: f, - preserveAspectRatio: n - }); j && l; ) - h = "stroke-width" in l.attrs ? l.attrs["stroke-width"] : 1, l.attr({ - "stroke-width": h - }), l._.dirty = 1, l._.dirtyT = 1, l = l.prev; - return this._viewBox = [a, b, c, d, !!e], - this - }, - a.prototype.renderfix = function () { - var a, - b = this.canvas, - c = b.style; - try { - a = b.getScreenCTM() || b.createSVGMatrix() - } catch (d) { - a = b.createSVGMatrix() - } - var e = -a.e % 1, - f = -a.f % 1; - (e || f) && (e && (this._left = (this._left + e) % 1, c.left = this._left + "px"), f && (this._top = (this._top + f) % 1, c.top = this._top + "px")) - }, - a.prototype.clear = function () { - a.eve("raphael.clear", this); - for (var b = this.canvas; b.firstChild; ) - b.removeChild(b.firstChild); - this.bottom = this.top = null, - (this.desc = q("desc")).appendChild(a._g.doc.createTextNode("Created with Raphaël " + a.version)), - b.appendChild(this.desc), - b.appendChild(this.defs = q("defs")) - }, - a.prototype.remove = function () { - k("raphael.remove", this), - this.canvas.parentNode && this.canvas.parentNode.removeChild(this.canvas); - for (var b in this) - this[b] = "function" == typeof this[b] ? a._removedFactory(b) : null - }; - var C = a.st; - for (var D in B) - B[b](D) && !C[b](D) && (C[D] = function (a) { - return function () { - var b = arguments; - return this.forEach(function (c) { - c[a].apply(c, b) - }) - } - } - (D)) - } -}), function (a, b) { - "function" == typeof define && define.amd ? define("raphael.vml", ["raphael.core"], function (a) { - return b(a) - }) : b("object" == typeof exports ? require("./raphael.core") : a.Raphael) -} -(this, function (a) { - if (!a || a.vml) { - var b = "hasOwnProperty", - c = String, - d = parseFloat, - e = Math, - f = e.round, - g = e.max, - h = e.min, - i = e.abs, - j = "fill", - k = /[, ]+/, - l = a.eve, - m = " progid:DXImageTransform.Microsoft", - n = " ", - o = "", - p = { - M: "m", - L: "l", - C: "c", - Z: "x", - m: "t", - l: "r", - c: "v", - z: "x" - }, - q = /([clmz]),?([^clmz]*)/gi, - r = / progid:\S+Blur\([^\)]+\)/g, - s = /-?[^,\s-]+/g, - t = "position:absolute;left:0;top:0;width:1px;height:1px;behavior:url(#default#VML)", - u = 21600, - v = { - path: 1, - rect: 1, - image: 1 - }, - w = { - circle: 1, - ellipse: 1 - }, - x = function (b) { - var d = /[ahqstv]/gi, - e = a._pathToAbsolute; - if (c(b).match(d) && (e = a._path2curve), d = /[clmz]/g, e == a._pathToAbsolute && !c(b).match(d)) { - var g = c(b).replace(q, function (a, b, c) { - var d = [], - e = "m" == b.toLowerCase(), - g = p[b]; - return c.replace(s, function (a) { - e && 2 == d.length && (g += d + p["m" == b ? "l" : "L"], d = []), - d.push(f(a * u)) - }), - g + d - }); - return g - } - var h, - i, - j = e(b); - g = []; - for (var k = 0, l = j.length; l > k; k++) { - h = j[k], - i = j[k][0].toLowerCase(), - "z" == i && (i = "x"); - for (var m = 1, r = h.length; r > m; m++) - i += f(h[m] * u) + (m != r - 1 ? "," : o); - g.push(i) - } - return g.join(n) - }, - y = function (b, c, d) { - var e = a.matrix(); - return e.rotate(-b, .5, .5), { - dx: e.x(c, d), - dy: e.y(c, d) - } - }, - z = function (a, b, c, d, e, f) { - var g = a._, - h = a.matrix, - k = g.fillpos, - l = a.node, - m = l.style, - o = 1, - p = "", - q = u / b, - r = u / c; - if (m.visibility = "hidden", b && c) { - if (l.coordsize = i(q) + n + i(r), m.rotation = f * (0 > b * c ? -1 : 1), f) { - var s = y(f, d, e); - d = s.dx, - e = s.dy - } - if (0 > b && (p += "x"), 0 > c && (p += " y") && (o = -1), m.flip = p, l.coordorigin = d * -q + n + e * -r, k || g.fillsize) { - var t = l.getElementsByTagName(j); - t = t && t[0], - l.removeChild(t), - k && (s = y(f, h.x(k[0], k[1]), h.y(k[0], k[1])), t.position = s.dx * o + n + s.dy * o), - g.fillsize && (t.size = g.fillsize[0] * i(b) + n + g.fillsize[1] * i(c)), - l.appendChild(t) - } - m.visibility = "visible" - } - }; - a.toString = function () { - return "Your browser doesn’t support SVG. Falling down to VML.\nYou are running Raphaël " + this.version - }; - var A = function (a, b, d) { - for (var e = c(b).toLowerCase().split("-"), f = d ? "end" : "start", g = e.length, h = "classic", i = "medium", j = "medium"; g--; ) - switch (e[g]) { - case "block": - case "classic": - case "oval": - case "diamond": - case "open": - case "none": - h = e[g]; - break; - case "wide": - case "narrow": - j = e[g]; - break; - case "long": - case "short": - i = e[g] - } - var k = a.node.getElementsByTagName("stroke")[0]; - k[f + "arrow"] = h, - k[f + "arrowlength"] = i, - k[f + "arrowwidth"] = j - }, - B = function (e, i) { - e.attrs = e.attrs || {}; - var l = e.node, - m = e.attrs, - p = l.style, - q = v[e.type] && (i.x != m.x || i.y != m.y || i.width != m.width || i.height != m.height || i.cx != m.cx || i.cy != m.cy || i.rx != m.rx || i.ry != m.ry || i.r != m.r), - r = w[e.type] && (m.cx != i.cx || m.cy != i.cy || m.r != i.r || m.rx != i.rx || m.ry != i.ry), - s = e; - for (var t in i) - i[b](t) && (m[t] = i[t]); - if (q && (m.path = a._getPath[e.type](e), e._.dirty = 1), i.href && (l.href = i.href), i.title && (l.title = i.title), i.target && (l.target = i.target), i.cursor && (p.cursor = i.cursor), "blur" in i && e.blur(i.blur), (i.path && "path" == e.type || q) && (l.path = x(~c(m.path).toLowerCase().indexOf("r") ? a._pathToAbsolute(m.path) : m.path), e._.dirty = 1, "image" == e.type && (e._.fillpos = [m.x, m.y], e._.fillsize = [m.width, m.height], z(e, 1, 1, 0, 0, 0))), "transform" in i && e.transform(i.transform), r) { - var y = +m.cx, - B = +m.cy, - D = +m.rx || +m.r || 0, - E = +m.ry || +m.r || 0; - l.path = a.format("ar{0},{1},{2},{3},{4},{1},{4},{1}x", f((y - D) * u), f((B - E) * u), f((y + D) * u), f((B + E) * u), f(y * u)), - e._.dirty = 1 - } - if ("clip-rect" in i) { - var G = c(i["clip-rect"]).split(k); - if (4 == G.length) { - G[2] = +G[2] + +G[0], - G[3] = +G[3] + +G[1]; - var H = l.clipRect || a._g.doc.createElement("div"), - I = H.style; - I.clip = a.format("rect({1}px {2}px {3}px {0}px)", G), - l.clipRect || (I.position = "absolute", I.top = 0, I.left = 0, I.width = e.paper.width + "px", I.height = e.paper.height + "px", l.parentNode.insertBefore(H, l), H.appendChild(l), l.clipRect = H) - } - i["clip-rect"] || l.clipRect && (l.clipRect.style.clip = "auto") - } - if (e.textpath) { - var J = e.textpath.style; - i.font && (J.font = i.font), - i["font-family"] && (J.fontFamily = '"' + i["font-family"].split(",")[0].replace(/^['"]+|['"]+$/g, o) + '"'), - i["font-size"] && (J.fontSize = i["font-size"]), - i["font-weight"] && (J.fontWeight = i["font-weight"]), - i["font-style"] && (J.fontStyle = i["font-style"]) - } - if ("arrow-start" in i && A(s, i["arrow-start"]), "arrow-end" in i && A(s, i["arrow-end"], 1), null != i.opacity || null != i["stroke-width"] || null != i.fill || null != i.src || null != i.stroke || null != i["stroke-width"] || null != i["stroke-opacity"] || null != i["fill-opacity"] || null != i["stroke-dasharray"] || null != i["stroke-miterlimit"] || null != i["stroke-linejoin"] || null != i["stroke-linecap"]) { - var K = l.getElementsByTagName(j), - L = !1; - if (K = K && K[0], !K && (L = K = F(j)), "image" == e.type && i.src && (K.src = i.src), i.fill && (K.on = !0), (null == K.on || "none" == i.fill || null === i.fill) && (K.on = !1), K.on && i.fill) { - var M = c(i.fill).match(a._ISURL); - if (M) { - K.parentNode == l && l.removeChild(K), - K.rotate = !0, - K.src = M[1], - K.type = "tile"; - var N = e.getBBox(1); - K.position = N.x + n + N.y, - e._.fillpos = [N.x, N.y], - a._preload(M[1], function () { - e._.fillsize = [this.offsetWidth, this.offsetHeight] - }) - } else - K.color = a.getRGB(i.fill).hex, K.src = o, K.type = "solid", a.getRGB(i.fill).error && (s.type in { - circle: 1, - ellipse: 1 - } - || "r" != c(i.fill).charAt()) && C(s, i.fill, K) && (m.fill = "none", m.gradient = i.fill, K.rotate = !1) - } - if ("fill-opacity" in i || "opacity" in i) { - var O = ((+m["fill-opacity"] + 1 || 2) - 1) * ((+m.opacity + 1 || 2) - 1) * ((+a.getRGB(i.fill).o + 1 || 2) - 1); - O = h(g(O, 0), 1), - K.opacity = O, - K.src && (K.color = "none") - } - l.appendChild(K); - var P = l.getElementsByTagName("stroke") && l.getElementsByTagName("stroke")[0], - Q = !1; - !P && (Q = P = F("stroke")), - (i.stroke && "none" != i.stroke || i["stroke-width"] || null != i["stroke-opacity"] || i["stroke-dasharray"] || i["stroke-miterlimit"] || i["stroke-linejoin"] || i["stroke-linecap"]) && (P.on = !0), - ("none" == i.stroke || null === i.stroke || null == P.on || 0 == i.stroke || 0 == i["stroke-width"]) && (P.on = !1); - var R = a.getRGB(i.stroke); - P.on && i.stroke && (P.color = R.hex), - O = ((+m["stroke-opacity"] + 1 || 2) - 1) * ((+m.opacity + 1 || 2) - 1) * ((+R.o + 1 || 2) - 1); - var S = .75 * (d(i["stroke-width"]) || 1); - if (O = h(g(O, 0), 1), null == i["stroke-width"] && (S = m["stroke-width"]), i["stroke-width"] && (P.weight = S), S && 1 > S && (O *= S) && (P.weight = 1), P.opacity = O, i["stroke-linejoin"] && (P.joinstyle = i["stroke-linejoin"] || "miter"), P.miterlimit = i["stroke-miterlimit"] || 8, i["stroke-linecap"] && (P.endcap = "butt" == i["stroke-linecap"] ? "flat" : "square" == i["stroke-linecap"] ? "square" : "round"), "stroke-dasharray" in i) { - var T = { - "-": "shortdash", - ".": "shortdot", - "-.": "shortdashdot", - "-..": "shortdashdotdot", - ". ": "dot", - "- ": "dash", - "--": "longdash", - "- .": "dashdot", - "--.": "longdashdot", - "--..": "longdashdotdot" - }; - P.dashstyle = T[b](i["stroke-dasharray"]) ? T[i["stroke-dasharray"]] : o - } - Q && l.appendChild(P) - } - if ("text" == s.type) { - s.paper.canvas.style.display = o; - var U = s.paper.span, - V = 100, - W = m.font && m.font.match(/\d+(?:\.\d*)?(?=px)/); - p = U.style, - m.font && (p.font = m.font), - m["font-family"] && (p.fontFamily = m["font-family"]), - m["font-weight"] && (p.fontWeight = m["font-weight"]), - m["font-style"] && (p.fontStyle = m["font-style"]), - W = d(m["font-size"] || W && W[0]) || 10, - p.fontSize = W * V + "px", - s.textpath.string && (U.innerHTML = c(s.textpath.string).replace(/")); - var X = U.getBoundingClientRect(); - s.W = m.w = (X.right - X.left) / V, - s.H = m.h = (X.bottom - X.top) / V, - s.X = m.x, - s.Y = m.y + s.H / 2, - ("x" in i || "y" in i) && (s.path.v = a.format("m{0},{1}l{2},{1}", f(m.x * u), f(m.y * u), f(m.x * u) + 1)); - for (var Y = ["x", "y", "text", "font", "font-family", "font-weight", "font-style", "font-size"], Z = 0, $ = Y.length; $ > Z; Z++) - if (Y[Z]in i) { - s._.dirty = 1; - break - } - switch (m["text-anchor"]) { - case "start": - s.textpath.style["v-text-align"] = "left", - s.bbx = s.W / 2; - break; - case "end": - s.textpath.style["v-text-align"] = "right", - s.bbx = -s.W / 2; - break; - default: - s.textpath.style["v-text-align"] = "center", - s.bbx = 0 - } - s.textpath.style["v-text-kern"] = !0 - } - }, - C = function (b, f, g) { - b.attrs = b.attrs || {}; - var h = (b.attrs, Math.pow), - i = "linear", - j = ".5 .5"; - if (b.attrs.gradient = f, f = c(f).replace(a._radial_gradient, function (a, b, c) { - return i = "radial", - b && c && (b = d(b), c = d(c), h(b - .5, 2) + h(c - .5, 2) > .25 && (c = e.sqrt(.25 - h(b - .5, 2)) * (2 * (c > .5) - 1) + .5), j = b + n + c), - o - }), f = f.split(/\s*\-\s*/), "linear" == i) { - var k = f.shift(); - if (k = -d(k), isNaN(k)) - return null - } - var l = a._parseDots(f); - if (!l) - return null; - if (b = b.shape || b.node, l.length) { - b.removeChild(g), - g.on = !0, - g.method = "none", - g.color = l[0].color, - g.color2 = l[l.length - 1].color; - for (var m = [], p = 0, q = l.length; q > p; p++) - l[p].offset && m.push(l[p].offset + n + l[p].color); - g.colors = m.length ? m.join() : "0% " + g.color, - "radial" == i ? (g.type = "gradientTitle", g.focus = "100%", g.focussize = "0 0", g.focusposition = j, g.angle = 0) : (g.type = "gradient", g.angle = (270 - k) % 360), - b.appendChild(g) - } - return 1 - }, - D = function (b, c) { - this[0] = this.node = b, - b.raphael = !0, - this.id = a._oid++, - b.raphaelid = this.id, - this.X = 0, - this.Y = 0, - this.attrs = {}, - this.paper = c, - this.matrix = a.matrix(), - this._ = { - transform: [], - sx: 1, - sy: 1, - dx: 0, - dy: 0, - deg: 0, - dirty: 1, - dirtyT: 1 - }, - !c.bottom && (c.bottom = this), - this.prev = c.top, - c.top && (c.top.next = this), - c.top = this, - this.next = null - }, - E = a.el; - D.prototype = E, - E.constructor = D, - E.transform = function (b) { - if (null == b) - return this._.transform; - var d, - e = this.paper._viewBoxShift, - f = e ? "s" + [e.scale, e.scale] + "-1-1t" + [e.dx, e.dy] : o; - e && (d = b = c(b).replace(/\.{3}|\u2026/g, this._.transform || o)), - a._extractTransform(this, f + b); - var g, - h = this.matrix.clone(), - i = this.skew, - j = this.node, - k = ~c(this.attrs.fill).indexOf("-"), - l = !c(this.attrs.fill).indexOf("url("); - if (h.translate(1, 1), l || k || "image" == this.type) - if (i.matrix = "1 0 0 1", i.offset = "0 0", g = h.split(), k && g.noRotation || !g.isSimple) { - j.style.filter = h.toFilter(); - var m = this.getBBox(), - p = this.getBBox(1), - q = m.x - p.x, - r = m.y - p.y; - j.coordorigin = q * -u + n + r * -u, - z(this, 1, 1, q, r, 0) - } else - j.style.filter = o, z(this, g.scalex, g.scaley, g.dx, g.dy, g.rotate); - else - j.style.filter = o, i.matrix = c(h), i.offset = h.offset(); - return null !== d && (this._.transform = d, a._extractTransform(this, d)), - this - }, - E.rotate = function (a, b, e) { - if (this.removed) - return this; - if (null != a) { - if (a = c(a).split(k), a.length - 1 && (b = d(a[1]), e = d(a[2])), a = d(a[0]), null == e && (b = e), null == b || null == e) { - var f = this.getBBox(1); - b = f.x + f.width / 2, - e = f.y + f.height / 2 - } - return this._.dirtyT = 1, - this.transform(this._.transform.concat([["r", a, b, e]])), - this - } - }, - E.translate = function (a, b) { - return this.removed ? this : (a = c(a).split(k), a.length - 1 && (b = d(a[1])), a = d(a[0]) || 0, b = +b || 0, this._.bbox && (this._.bbox.x += a, this._.bbox.y += b), this.transform(this._.transform.concat([["t", a, b]])), this) - }, - E.scale = function (a, b, e, f) { - if (this.removed) - return this; - if (a = c(a).split(k), a.length - 1 && (b = d(a[1]), e = d(a[2]), f = d(a[3]), isNaN(e) && (e = null), isNaN(f) && (f = null)), a = d(a[0]), null == b && (b = a), null == f && (e = f), null == e || null == f) - var g = this.getBBox(1); - return e = null == e ? g.x + g.width / 2 : e, - f = null == f ? g.y + g.height / 2 : f, - this.transform(this._.transform.concat([["s", a, b, e, f]])), - this._.dirtyT = 1, - this - }, - E.hide = function () { - return !this.removed && (this.node.style.display = "none"), - this - }, - E.show = function () { - return !this.removed && (this.node.style.display = o), - this - }, - E.auxGetBBox = a.el.getBBox, - E.getBBox = function () { - var a = this.auxGetBBox(); - if (this.paper && this.paper._viewBoxShift) { - var b = {}, - c = 1 / this.paper._viewBoxShift.scale; - return b.x = a.x - this.paper._viewBoxShift.dx, - b.x *= c, - b.y = a.y - this.paper._viewBoxShift.dy, - b.y *= c, - b.width = a.width * c, - b.height = a.height * c, - b.x2 = b.x + b.width, - b.y2 = b.y + b.height, - b - } - return a - }, - E._getBBox = function () { - return this.removed ? {} - : { - x: this.X + (this.bbx || 0) - this.W / 2, - y: this.Y - this.H, - width: this.W, - height: this.H - } - }, - E.remove = function () { - if (!this.removed && this.node.parentNode) { - this.paper.__set__ && this.paper.__set__.exclude(this), - a.eve.unbind("raphael.*.*." + this.id), - a._tear(this, this.paper), - this.node.parentNode.removeChild(this.node), - this.shape && this.shape.parentNode.removeChild(this.shape); - for (var b in this) - this[b] = "function" == typeof this[b] ? a._removedFactory(b) : null; - this.removed = !0 - } - }, - E.attr = function (c, d) { - if (this.removed) - return this; - if (null == c) { - var e = {}; - for (var f in this.attrs) - this.attrs[b](f) && (e[f] = this.attrs[f]); - return e.gradient && "none" == e.fill && (e.fill = e.gradient) && delete e.gradient, - e.transform = this._.transform, - e - } - if (null == d && a.is(c, "string")) { - if (c == j && "none" == this.attrs.fill && this.attrs.gradient) - return this.attrs.gradient; - for (var g = c.split(k), h = {}, i = 0, m = g.length; m > i; i++) - c = g[i], c in this.attrs ? h[c] = this.attrs[c] : a.is(this.paper.customAttributes[c], "function") ? h[c] = this.paper.customAttributes[c].def : h[c] = a._availableAttrs[c]; - return m - 1 ? h : h[g[0]] - } - if (this.attrs && null == d && a.is(c, "array")) { - for (h = {}, i = 0, m = c.length; m > i; i++) - h[c[i]] = this.attr(c[i]); - return h - } - var n; - null != d && (n = {}, n[c] = d), - null == d && a.is(c, "object") && (n = c); - for (var o in n) - l("raphael.attr." + o + "." + this.id, this, n[o]); - if (n) { - for (o in this.paper.customAttributes) - if (this.paper.customAttributes[b](o) && n[b](o) && a.is(this.paper.customAttributes[o], "function")) { - var p = this.paper.customAttributes[o].apply(this, [].concat(n[o])); - this.attrs[o] = n[o]; - for (var q in p) - p[b](q) && (n[q] = p[q]) - } - n.text && "text" == this.type && (this.textpath.string = n.text), - B(this, n) - } - return this - }, - E.toFront = function () { - return !this.removed && this.node.parentNode.appendChild(this.node), - this.paper && this.paper.top != this && a._tofront(this, this.paper), - this - }, - E.toBack = function () { - return this.removed ? this : (this.node.parentNode.firstChild != this.node && (this.node.parentNode.insertBefore(this.node, this.node.parentNode.firstChild), a._toback(this, this.paper)), this) - }, - E.insertAfter = function (b) { - return this.removed ? this : (b.constructor == a.st.constructor && (b = b[b.length - 1]), b.node.nextSibling ? b.node.parentNode.insertBefore(this.node, b.node.nextSibling) : b.node.parentNode.appendChild(this.node), a._insertafter(this, b, this.paper), this) - }, - E.insertBefore = function (b) { - return this.removed ? this : (b.constructor == a.st.constructor && (b = b[0]), b.node.parentNode.insertBefore(this.node, b.node), a._insertbefore(this, b, this.paper), this) - }, - E.blur = function (b) { - var c = this.node.runtimeStyle, - d = c.filter; - return d = d.replace(r, o), - 0 !== +b ? (this.attrs.blur = b, c.filter = d + n + m + ".Blur(pixelradius=" + (+b || 1.5) + ")", c.margin = a.format("-{0}px 0 0 -{0}px", f(+b || 1.5))) : (c.filter = d, c.margin = 0, delete this.attrs.blur), - this - }, - a._engine.path = function (a, b) { - var c = F("shape"); - c.style.cssText = t, - c.coordsize = u + n + u, - c.coordorigin = b.coordorigin; - var d = new D(c, b), - e = { - fill: "none", - stroke: "#000" - }; - a && (e.path = a), - d.type = "path", - d.path = [], - d.Path = o, - B(d, e), - b.canvas.appendChild(c); - var f = F("skew"); - return f.on = !0, - c.appendChild(f), - d.skew = f, - d.transform(o), - d - }, - a._engine.rect = function (b, c, d, e, f, g) { - var h = a._rectPath(c, d, e, f, g), - i = b.path(h), - j = i.attrs; - return i.X = j.x = c, - i.Y = j.y = d, - i.W = j.width = e, - i.H = j.height = f, - j.r = g, - j.path = h, - i.type = "rect", - i - }, - a._engine.ellipse = function (a, b, c, d, e) { { - var f = a.path(); - f.attrs - } - return f.X = b - d, - f.Y = c - e, - f.W = 2 * d, - f.H = 2 * e, - f.type = "ellipse", - B(f, { - cx: b, - cy: c, - rx: d, - ry: e - }), - f - }, - a._engine.circle = function (a, b, c, d) { { - var e = a.path(); - e.attrs - } - return e.X = b - d, - e.Y = c - d, - e.W = e.H = 2 * d, - e.type = "circle", - B(e, { - cx: b, - cy: c, - r: d - }), - e - }, - a._engine.image = function (b, c, d, e, f, g) { - var h = a._rectPath(d, e, f, g), - i = b.path(h).attr({ - stroke: "none" - }), - k = i.attrs, - l = i.node, - m = l.getElementsByTagName(j)[0]; - return k.src = c, - i.X = k.x = d, - i.Y = k.y = e, - i.W = k.width = f, - i.H = k.height = g, - k.path = h, - i.type = "image", - m.parentNode == l && l.removeChild(m), - m.rotate = !0, - m.src = c, - m.type = "tile", - i._.fillpos = [d, e], - i._.fillsize = [f, g], - l.appendChild(m), - z(i, 1, 1, 0, 0, 0), - i - }, - a._engine.text = function (b, d, e, g) { - var h = F("shape"), - i = F("path"), - j = F("textpath"); - d = d || 0, - e = e || 0, - g = g || "", - i.v = a.format("m{0},{1}l{2},{1}", f(d * u), f(e * u), f(d * u) + 1), - i.textpathok = !0, - j.string = c(g), - j.on = !0, - h.style.cssText = t, - h.coordsize = u + n + u, - h.coordorigin = "0 0"; - var k = new D(h, b), - l = { - fill: "#000", - stroke: "none", - font: a._availableAttrs.font, - text: g - }; - k.shape = h, - k.path = i, - k.textpath = j, - k.type = "text", - k.attrs.text = c(g), - k.attrs.x = d, - k.attrs.y = e, - k.attrs.w = 1, - k.attrs.h = 1, - B(k, l), - h.appendChild(j), - h.appendChild(i), - b.canvas.appendChild(h); - var m = F("skew"); - return m.on = !0, - h.appendChild(m), - k.skew = m, - k.transform(o), - k - }, - a._engine.setSize = function (b, c) { - var d = this.canvas.style; - return this.width = b, - this.height = c, - b == +b && (b += "px"), - c == +c && (c += "px"), - d.width = b, - d.height = c, - d.clip = "rect(0 " + b + " " + c + " 0)", - this._viewBox && a._engine.setViewBox.apply(this, this._viewBox), - this - }, - a._engine.setViewBox = function (b, c, d, e, f) { - a.eve("raphael.setViewBox", this, this._viewBox, [b, c, d, e, f]); - var g, - h, - i = this.getSize(), - j = i.width, - k = i.height; - return f && (g = k / e, h = j / d, j > d * g && (b -= (j - d * g) / 2 / g), k > e * h && (c -= (k - e * h) / 2 / h)), - this._viewBox = [b, c, d, e, !!f], - this._viewBoxShift = { - dx: -b, - dy: -c, - scale: i - }, - this.forEach(function (a) { - a.transform("...") - }), - this - }; - var F; - a._engine.initWin = function (a) { - var b = a.document; - b.styleSheets.length < 31 ? b.createStyleSheet().addRule(".rvml", "behavior:url(#default#VML)") : b.styleSheets[0].addRule(".rvml", "behavior:url(#default#VML)"); - try { - !b.namespaces.rvml && b.namespaces.add("rvml", "urn:schemas-microsoft-com:vml"), - F = function (a) { - return b.createElement("') - } - } catch (c) { - F = function (a) { - return b.createElement("<" + a + ' xmlns="urn:schemas-microsoft.com:vml" class="rvml">') - } - } - }, - a._engine.initWin(a._g.win), - a._engine.create = function () { - var b = a._getContainer.apply(0, arguments), - c = b.container, - d = b.height, - e = b.width, - f = b.x, - g = b.y; - if (!c) - throw new Error("VML container not found."); - var h = new a._Paper, - i = h.canvas = a._g.doc.createElement("div"), - j = i.style; - return f = f || 0, - g = g || 0, - e = e || 512, - d = d || 342, - h.width = e, - h.height = d, - e == +e && (e += "px"), - d == +d && (d += "px"), - h.coordsize = 1e3 * u + n + 1e3 * u, - h.coordorigin = "0 0", - h.span = a._g.doc.createElement("span"), - h.span.style.cssText = "position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;", - i.appendChild(h.span), - j.cssText = a.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden", e, d), - 1 == c ? (a._g.doc.body.appendChild(i), j.left = f + "px", j.top = g + "px", j.position = "absolute") : c.firstChild ? c.insertBefore(i, c.firstChild) : c.appendChild(i), - h.renderfix = function () {}, - h - }, - a.prototype.clear = function () { - a.eve("raphael.clear", this), - this.canvas.innerHTML = o, - this.span = a._g.doc.createElement("span"), - this.span.style.cssText = "position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;", - this.canvas.appendChild(this.span), - this.bottom = this.top = null - }, - a.prototype.remove = function () { - a.eve("raphael.remove", this), - this.canvas.parentNode.removeChild(this.canvas); - for (var b in this) - this[b] = "function" == typeof this[b] ? a._removedFactory(b) : null; - return !0 - }; - var G = a.st; - for (var H in E) - E[b](H) && !G[b](H) && (G[H] = function (a) { - return function () { - var b = arguments; - return this.forEach(function (c) { - c[a].apply(c, b) - }) - } - } - (H)) - } -}); -JustGage = function (config) { - var obj = this; - if (config === null || config === undefined) { - console.log('* justgage: Make sure to pass options to the constructor!'); - return false; - } - var node; - if (config.id !== null && config.id !== undefined) { - node = document.getElementById(config.id); - if (!node) { - console.log('* justgage: No element with id : %s found', config.id); - return false; - } - } else if (config.parentNode !== null && config.parentNode !== undefined) { - node = config.parentNode; - } else { - console.log('* justgage: Make sure to pass the existing element id or parentNode to the constructor.'); - return false; - } - var dataset = node.dataset ? node.dataset : {}; - var defaults = (config.defaults !== null && config.defaults !== undefined) ? config.defaults : false; - if (defaults !== false) { - config = extend({}, config, defaults); - delete config.defaults; - } - obj.config = { - id: config.id, - value: kvLookup('value', config, dataset, 0, 'float'), - defaults: kvLookup('defaults', config, dataset, 0, false), - parentNode: kvLookup('parentNode', config, dataset, null), - width: kvLookup('width', config, dataset, null), - height: kvLookup('height', config, dataset, null), - title: kvLookup('title', config, dataset, ""), - titleFontColor: kvLookup('titleFontColor', config, dataset, "#999999"), - titleFontFamily: kvLookup('titleFontFamily', config, dataset, "sans-serif"), - titlePosition: kvLookup('titlePosition', config, dataset, "above"), - valueFontColor: kvLookup('valueFontColor', config, dataset, "#010101"), - valueFontFamily: kvLookup('valueFontFamily', config, dataset, "Arial"), - symbol: kvLookup('symbol', config, dataset, ''), - min: kvLookup('min', config, dataset, 0, 'float'), - max: kvLookup('max', config, dataset, 100, 'float'), - reverse: kvLookup('reverse', config, dataset, false), - humanFriendlyDecimal: kvLookup('humanFriendlyDecimal', config, dataset, 0), - textRenderer: kvLookup('textRenderer', config, dataset, null), - gaugeWidthScale: kvLookup('gaugeWidthScale', config, dataset, 1.0), - gaugeColor: kvLookup('gaugeColor', config, dataset, "#edebeb"), - label: kvLookup('label', config, dataset, ''), - labelFontColor: kvLookup('labelFontColor', config, dataset, "#b3b3b3"), - shadowOpacity: kvLookup('shadowOpacity', config, dataset, 0.2), - shadowSize: kvLookup('shadowSize', config, dataset, 5), - shadowVerticalOffset: kvLookup('shadowVerticalOffset', config, dataset, 3), - levelColors: kvLookup('levelColors', config, dataset, ["#a9d70b", "#f9c802", "#ff0000"], 'array', ','), - startAnimationTime: kvLookup('startAnimationTime', config, dataset, 700), - startAnimationType: kvLookup('startAnimationType', config, dataset, '>'), - refreshAnimationTime: kvLookup('refreshAnimationTime', config, dataset, 700), - refreshAnimationType: kvLookup('refreshAnimationType', config, dataset, '>'), - donutStartAngle: kvLookup('donutStartAngle', config, dataset, 90), - valueMinFontSize: kvLookup('valueMinFontSize', config, dataset, 16), - titleMinFontSize: kvLookup('titleMinFontSize', config, dataset, 10), - labelMinFontSize: kvLookup('labelMinFontSize', config, dataset, 10), - minLabelMinFontSize: kvLookup('minLabelMinFontSize', config, dataset, 10), - maxLabelMinFontSize: kvLookup('maxLabelMinFontSize', config, dataset, 10), - hideValue: kvLookup('hideValue', config, dataset, false), - hideMinMax: kvLookup('hideMinMax', config, dataset, false), - hideInnerShadow: kvLookup('hideInnerShadow', config, dataset, false), - humanFriendly: kvLookup('humanFriendly', config, dataset, false), - noGradient: kvLookup('noGradient', config, dataset, false), - donut: kvLookup('donut', config, dataset, false), - relativeGaugeSize: kvLookup('relativeGaugeSize', config, dataset, false), - counter: kvLookup('counter', config, dataset, false), - decimals: kvLookup('decimals', config, dataset, 0), - customSectors: kvLookup('customSectors', config, dataset, []), - formatNumber: kvLookup('formatNumber', config, dataset, false), - pointer: kvLookup('pointer', config, dataset, false), - pointerOptions: kvLookup('pointerOptions', config, dataset, []) - }; - var - canvasW, - canvasH, - widgetW, - widgetH, - aspect, - dx, - dy, - titleFontSize, - titleX, - titleY, - valueFontSize, - valueX, - valueY, - labelFontSize, - labelX, - labelY, - minFontSize, - minX, - minY, - maxFontSize, - maxX, - maxY; - if (obj.config.value > obj.config.max) - obj.config.value = obj.config.max; - if (obj.config.value < obj.config.min) - obj.config.value = obj.config.min; - obj.originalValue = kvLookup('value', config, dataset, -1, 'float'); - if (obj.config.id !== null && (document.getElementById(obj.config.id)) !== null) { - obj.canvas = Raphael(obj.config.id, "100%", "100%"); - } else if (obj.config.parentNode !== null) { - obj.canvas = Raphael(obj.config.parentNode, "100%", "100%"); - } - if (obj.config.relativeGaugeSize === true) { - obj.canvas.setViewBox(0, 0, 200, 150, true); - } - if (obj.config.relativeGaugeSize === true) { - canvasW = 200; - canvasH = 150; - } else if (obj.config.width !== null && obj.config.height !== null) { - canvasW = obj.config.width; - canvasH = obj.config.height; - } else if (obj.config.parentNode !== null) { - obj.canvas.setViewBox(0, 0, 200, 150, true); - canvasW = 200; - canvasH = 150; - } else { - canvasW = getStyle(document.getElementById(obj.config.id), "width").slice(0, -2) * 1; - canvasH = getStyle(document.getElementById(obj.config.id), "height").slice(0, -2) * 1; - } - if (obj.config.donut === true) { - if (canvasW > canvasH) { - widgetH = canvasH; - widgetW = widgetH; - } else if (canvasW < canvasH) { - widgetW = canvasW; - widgetH = widgetW; - if (widgetH > canvasH) { - aspect = widgetH / canvasH; - widgetH = widgetH / aspect; - widgetW = widgetH / aspect; - } - } else { - widgetW = canvasW; - widgetH = widgetW; - } - dx = (canvasW - widgetW) / 2; - dy = (canvasH - widgetH) / 2; - titleFontSize = ((widgetH / 8) > 10) ? (widgetH / 10) : 10; - titleX = dx + widgetW / 2; - titleY = dy + widgetH / 11; - valueFontSize = ((widgetH / 6.4) > 16) ? (widgetH / 5.4) : 18; - valueX = dx + widgetW / 2; - if (obj.config.label !== '') { - valueY = dy + widgetH / 1.85; - } else { - valueY = dy + widgetH / 1.7; - } - labelFontSize = ((widgetH / 16) > 10) ? (widgetH / 16) : 10; - labelX = dx + widgetW / 2; - labelY = valueY + labelFontSize; - minFontSize = ((widgetH / 16) > 10) ? (widgetH / 16) : 10; - minX = dx + (widgetW / 10) + (widgetW / 6.666666666666667 * obj.config.gaugeWidthScale) / 2; - minY = labelY; - maxFontSize = ((widgetH / 16) > 10) ? (widgetH / 16) : 10; - maxX = dx + widgetW - (widgetW / 10) - (widgetW / 6.666666666666667 * obj.config.gaugeWidthScale) / 2; - maxY = labelY; - } else { - if (canvasW > canvasH) { - widgetH = canvasH; - widgetW = widgetH * 1.25; - if (widgetW > canvasW) { - aspect = widgetW / canvasW; - widgetW = widgetW / aspect; - widgetH = widgetH / aspect; - } - } else if (canvasW < canvasH) { - widgetW = canvasW; - widgetH = widgetW / 1.25; - if (widgetH > canvasH) { - aspect = widgetH / canvasH; - widgetH = widgetH / aspect; - widgetW = widgetH / aspect; - } - } else { - widgetW = canvasW; - widgetH = widgetW * 0.75; - } - dx = (canvasW - widgetW) / 2; - dy = (canvasH - widgetH) / 2; - if (obj.config.titlePosition === 'below') { - dy -= (widgetH / 6.4); - } - titleFontSize = ((widgetH / 8) > obj.config.titleMinFontSize) ? (widgetH / 10) : obj.config.titleMinFontSize; - titleX = dx + widgetW / 2; - titleY = dy + (obj.config.titlePosition === 'below' ? (widgetH * 1.07) : (widgetH / 6.4)); - valueFontSize = ((widgetH / 6.5) > obj.config.valueMinFontSize) ? (widgetH / 6.5) : obj.config.valueMinFontSize; - valueX = dx + widgetW / 2; - valueY = dy + widgetH / 1.275; - labelFontSize = ((widgetH / 16) > obj.config.labelMinFontSize) ? (widgetH / 16) : obj.config.labelMinFontSize; - labelX = dx + widgetW / 2; - labelY = valueY + valueFontSize / 2 + 5; - minFontSize = ((widgetH / 16) > obj.config.minLabelMinFontSize) ? (widgetH / 16) : obj.config.minLabelMinFontSize; - minX = dx + (widgetW / 10) + (widgetW / 6.666666666666667 * obj.config.gaugeWidthScale) / 2; - minY = labelY; - maxFontSize = ((widgetH / 16) > obj.config.maxLabelMinFontSize) ? (widgetH / 16) : obj.config.maxLabelMinFontSize; - maxX = dx + widgetW - (widgetW / 10) - (widgetW / 6.666666666666667 * obj.config.gaugeWidthScale) / 2; - maxY = labelY; - } - obj.params = { - canvasW: canvasW, - canvasH: canvasH, - widgetW: widgetW, - widgetH: widgetH, - dx: dx, - dy: dy, - titleFontSize: titleFontSize, - titleX: titleX, - titleY: titleY, - valueFontSize: valueFontSize, - valueX: valueX, - valueY: valueY, - labelFontSize: labelFontSize, - labelX: labelX, - labelY: labelY, - minFontSize: minFontSize, - minX: minX, - minY: minY, - maxFontSize: maxFontSize, - maxX: maxX, - maxY: maxY - }; - canvasW, - canvasH, - widgetW, - widgetH, - aspect, - dx, - dy, - titleFontSize, - titleX, - titleY, - valueFontSize, - valueX, - valueY, - labelFontSize, - labelX, - labelY, - minFontSize, - minX, - minY, - maxFontSize, - maxX, - maxY = null; - obj.canvas.customAttributes.pki = function (value, min, max, w, h, dx, dy, gws, donut, reverse) { - var alpha, - Ro, - Ri, - Cx, - Cy, - Xo, - Yo, - Xi, - Yi, - path; - if (donut) { - alpha = (1 - 2 * (value - min) / (max - min)) * Math.PI; - Ro = w / 2 - w / 7; - Ri = Ro - w / 6.666666666666667 * gws; - Cx = w / 2 + dx; - Cy = h / 1.95 + dy; - Xo = w / 2 + dx + Ro * Math.cos(alpha); - Yo = h - (h - Cy) - Ro * Math.sin(alpha); - Xi = w / 2 + dx + Ri * Math.cos(alpha); - Yi = h - (h - Cy) - Ri * Math.sin(alpha); - path = "M" + (Cx - Ri) + "," + Cy + " "; - path += "L" + (Cx - Ro) + "," + Cy + " "; - if (value > ((max - min) / 2)) { - path += "A" + Ro + "," + Ro + " 0 0 1 " + (Cx + Ro) + "," + Cy + " "; - } - path += "A" + Ro + "," + Ro + " 0 0 1 " + Xo + "," + Yo + " "; - path += "L" + Xi + "," + Yi + " "; - if (value > ((max - min) / 2)) { - path += "A" + Ri + "," + Ri + " 0 0 0 " + (Cx + Ri) + "," + Cy + " "; - } - path += "A" + Ri + "," + Ri + " 0 0 0 " + (Cx - Ri) + "," + Cy + " "; - path += "Z "; - return { - path: path - }; - } else { - alpha = (1 - (value - min) / (max - min)) * Math.PI; - Ro = w / 2 - w / 10; - Ri = Ro - w / 6.666666666666667 * gws; - Cx = w / 2 + dx; - Cy = h / 1.25 + dy; - Xo = w / 2 + dx + Ro * Math.cos(alpha); - Yo = h - (h - Cy) - Ro * Math.sin(alpha); - Xi = w / 2 + dx + Ri * Math.cos(alpha); - Yi = h - (h - Cy) - Ri * Math.sin(alpha); - path = "M" + (Cx - Ri) + "," + Cy + " "; - path += "L" + (Cx - Ro) + "," + Cy + " "; - path += "A" + Ro + "," + Ro + " 0 0 1 " + Xo + "," + Yo + " "; - path += "L" + Xi + "," + Yi + " "; - path += "A" + Ri + "," + Ri + " 0 0 0 " + (Cx - Ri) + "," + Cy + " "; - path += "Z "; - return { - path: path - }; - } - alpha, - Ro, - Ri, - Cx, - Cy, - Xo, - Yo, - Xi, - Yi, - path = null; - }; - obj.canvas.customAttributes.ndl = function (value, min, max, w, h, dx, dy, gws, donut) { - var dlt = w * 3.5 / 100; - var dlb = w / 15; - var dw = w / 100; - if (obj.config.pointerOptions.toplength != null && obj.config.pointerOptions.toplength != undefined) - dlt = obj.config.pointerOptions.toplength; - if (obj.config.pointerOptions.bottomlength != null && obj.config.pointerOptions.bottomlength != undefined) - dlb = obj.config.pointerOptions.bottomlength; - if (obj.config.pointerOptions.bottomwidth != null && obj.config.pointerOptions.bottomwidth != undefined) - dw = obj.config.pointerOptions.bottomwidth; - var alpha, - Ro, - Ri, - Cx, - Cy, - Xo, - Yo, - Xi, - Yi, - Xc, - Yc, - Xz, - Yz, - Xa, - Ya, - Xb, - Yb, - path; - if (donut) { - alpha = (1 - 2 * (value - min) / (max - min)) * Math.PI; - Ro = w / 2 - w / 7; - Ri = Ro - w / 6.666666666666667 * gws; - Cx = w / 2 + dx; - Cy = h / 1.95 + dy; - Xo = w / 2 + dx + Ro * Math.cos(alpha); - Yo = h - (h - Cy) - Ro * Math.sin(alpha); - Xi = w / 2 + dx + Ri * Math.cos(alpha); - Yi = h - (h - Cy) - Ri * Math.sin(alpha); - Xc = Xo + dlt * Math.cos(alpha); - Yc = Yo - dlt * Math.sin(alpha); - Xz = Xi - dlb * Math.cos(alpha); - Yz = Yi + dlb * Math.sin(alpha); - Xa = Xz + dw * Math.sin(alpha); - Ya = Yz + dw * Math.cos(alpha); - Xb = Xz - dw * Math.sin(alpha); - Yb = Yz - dw * Math.cos(alpha); - path = 'M' + Xa + ',' + Ya + ' '; - path += 'L' + Xb + ',' + Yb + ' '; - path += 'L' + Xc + ',' + Yc + ' '; - path += 'Z '; - return { - path: path - }; - } else { - alpha = (1 - (value - min) / (max - min)) * Math.PI; - Ro = w / 2 - w / 10; - Ri = Ro - w / 6.666666666666667 * gws; - Cx = w / 2 + dx; - Cy = h / 1.25 + dy; - Xo = w / 2 + dx + Ro * Math.cos(alpha); - Yo = h - (h - Cy) - Ro * Math.sin(alpha); - Xi = w / 2 + dx + Ri * Math.cos(alpha); - Yi = h - (h - Cy) - Ri * Math.sin(alpha); - Xc = Xo + dlt * Math.cos(alpha); - Yc = Yo - dlt * Math.sin(alpha); - Xz = Xi - dlb * Math.cos(alpha); - Yz = Yi + dlb * Math.sin(alpha); - Xa = Xz + dw * Math.sin(alpha); - Ya = Yz + dw * Math.cos(alpha); - Xb = Xz - dw * Math.sin(alpha); - Yb = Yz - dw * Math.cos(alpha); - path = 'M' + Xa + ',' + Ya + ' '; - path += 'L' + Xb + ',' + Yb + ' '; - path += 'L' + Xc + ',' + Yc + ' '; - path += 'Z '; - return { - path: path - }; - } - alpha, - Ro, - Ri, - Cx, - Cy, - Xo, - Yo, - Xi, - Yi, - Xc, - Yc, - Xz, - Yz, - Xa, - Ya, - Xb, - Yb, - path = null; - }; - obj.gauge = obj.canvas.path().attr({ - "stroke": "none", - "fill": obj.config.gaugeColor, - pki: [obj.config.max, obj.config.min, obj.config.max, obj.params.widgetW, obj.params.widgetH, obj.params.dx, obj.params.dy, obj.config.gaugeWidthScale, obj.config.donut, obj.config.reverse] - }); - obj.level = obj.canvas.path().attr({ - "stroke": "none", - "fill": getColor(obj.config.value, (obj.config.value - obj.config.min) / (obj.config.max - obj.config.min), obj.config.levelColors, obj.config.noGradient, obj.config.customSectors), - pki: [obj.config.min, obj.config.min, obj.config.max, obj.params.widgetW, obj.params.widgetH, obj.params.dx, obj.params.dy, obj.config.gaugeWidthScale, obj.config.donut, obj.config.reverse] - }); - if (obj.config.donut) { - obj.level.transform("r" + obj.config.donutStartAngle + ", " + (obj.params.widgetW / 2 + obj.params.dx) + ", " + (obj.params.widgetH / 1.95 + obj.params.dy)); - } - if (obj.config.pointer) { - obj.needle = obj.canvas.path().attr({ - "stroke": (obj.config.pointerOptions.stroke !== null && obj.config.pointerOptions.stroke !== undefined) ? obj.config.pointerOptions.stroke : "none", - "stroke-width": (obj.config.pointerOptions.stroke_width !== null && obj.config.pointerOptions.stroke_width !== undefined) ? obj.config.pointerOptions.stroke_width : 0, - "stroke-linecap": (obj.config.pointerOptions.stroke_linecap !== null && obj.config.pointerOptions.stroke_linecap !== undefined) ? obj.config.pointerOptions.stroke_linecap : "square", - "fill": (obj.config.pointerOptions.color !== null && obj.config.pointerOptions.color !== undefined) ? obj.config.pointerOptions.color : "#000000", - ndl: [obj.config.min, obj.config.min, obj.config.max, obj.params.widgetW, obj.params.widgetH, obj.params.dx, obj.params.dy, obj.config.gaugeWidthScale, obj.config.donut] - }); - if (obj.config.donut) { - obj.needle.transform("r" + obj.config.donutStartAngle + ", " + (obj.params.widgetW / 2 + obj.params.dx) + ", " + (obj.params.widgetH / 1.95 + obj.params.dy)); - } - } - obj.txtTitle = obj.canvas.text(obj.params.titleX, obj.params.titleY, obj.config.title); - obj.txtTitle.attr({ - "font-size": obj.params.titleFontSize, - "font-weight": "bold", - "font-family": obj.config.titleFontFamily, - "fill": obj.config.titleFontColor, - "fill-opacity": "1" - }); - setDy(obj.txtTitle, obj.params.titleFontSize, obj.params.titleY); - obj.txtValue = obj.canvas.text(obj.params.valueX, obj.params.valueY, 0); - obj.txtValue.attr({ - "font-size": obj.params.valueFontSize, - "font-weight": "bold", - "font-family": obj.config.valueFontFamily, - "fill": obj.config.valueFontColor, - "fill-opacity": "0" - }); - setDy(obj.txtValue, obj.params.valueFontSize, obj.params.valueY); - obj.txtLabel = obj.canvas.text(obj.params.labelX, obj.params.labelY, obj.config.label); - obj.txtLabel.attr({ - "font-size": obj.params.labelFontSize, - "font-weight": "normal", - "font-family": "Arial", - "fill": obj.config.labelFontColor, - "fill-opacity": "0" - }); - setDy(obj.txtLabel, obj.params.labelFontSize, obj.params.labelY); - var min = obj.config.min; - if (obj.config.reverse) { - min = obj.config.max; - } - obj.txtMinimum = min; - if (obj.config.humanFriendly) { - obj.txtMinimum = humanFriendlyNumber(min, obj.config.humanFriendlyDecimal); - } else if (obj.config.formatNumber) { - obj.txtMinimum = formatNumber(min); - } - obj.txtMin = obj.canvas.text(obj.params.minX, obj.params.minY, obj.txtMinimum); - obj.txtMin.attr({ - "font-size": obj.params.minFontSize, - "font-weight": "normal", - "font-family": "Arial", - "fill": obj.config.labelFontColor, - "fill-opacity": (obj.config.hideMinMax || obj.config.donut) ? "0" : "1" - }); - setDy(obj.txtMin, obj.params.minFontSize, obj.params.minY); - var max = obj.config.max; - if (obj.config.reverse) { - max = obj.config.min; - } - obj.txtMaximum = max; - if (obj.config.humanFriendly) { - obj.txtMaximum = humanFriendlyNumber(max, obj.config.humanFriendlyDecimal); - } else if (obj.config.formatNumber) { - obj.txtMaximum = formatNumber(max); - } - obj.txtMax = obj.canvas.text(obj.params.maxX, obj.params.maxY, obj.txtMaximum); - obj.txtMax.attr({ - "font-size": obj.params.maxFontSize, - "font-weight": "normal", - "font-family": "Arial", - "fill": obj.config.labelFontColor, - "fill-opacity": (obj.config.hideMinMax || obj.config.donut) ? "0" : "1" - }); - setDy(obj.txtMax, obj.params.maxFontSize, obj.params.maxY); - var defs = obj.canvas.canvas.childNodes[1]; - var svg = "http://www.w3.org/2000/svg"; - if (ie !== 'undefined' && ie < 9) {} - else if (ie !== 'undefined') { - onCreateElementNsReady(function () { - obj.generateShadow(svg, defs); - }); - } else { - obj.generateShadow(svg, defs); - } - defs, - svg = null; - if (obj.config.textRenderer) { - obj.originalValue = obj.config.textRenderer(obj.originalValue); - } else if (obj.config.humanFriendly) { - obj.originalValue = humanFriendlyNumber(obj.originalValue, obj.config.humanFriendlyDecimal) + obj.config.symbol; - } else if (obj.config.formatNumber) { - obj.originalValue = formatNumber(obj.originalValue) + obj.config.symbol; - } else { - obj.originalValue = (obj.originalValue * 1).toFixed(obj.config.decimals) + obj.config.symbol; - } - if (obj.config.counter === true) { - eve.on("raphael.anim.frame." + (obj.level.id), function () { - var currentValue = obj.level.attr("pki")[0]; - if (obj.config.reverse) { - currentValue = (obj.config.max * 1) + (obj.config.min * 1) - (obj.level.attr("pki")[0] * 1); - } - if (obj.config.textRenderer) { - obj.txtValue.attr("text", obj.config.textRenderer(Math.floor(currentValue))); - } else if (obj.config.humanFriendly) { - obj.txtValue.attr("text", humanFriendlyNumber(Math.floor(currentValue), obj.config.humanFriendlyDecimal) + obj.config.symbol); - } else if (obj.config.formatNumber) { - obj.txtValue.attr("text", formatNumber(Math.floor(currentValue)) + obj.config.symbol); - } else { - obj.txtValue.attr("text", (currentValue * 1).toFixed(obj.config.decimals) + obj.config.symbol); - } - setDy(obj.txtValue, obj.params.valueFontSize, obj.params.valueY); - currentValue = null; - }); - eve.on("raphael.anim.finish." + (obj.level.id), function () { - obj.txtValue.attr({ - "text": obj.originalValue - }); - setDy(obj.txtValue, obj.params.valueFontSize, obj.params.valueY); - }); - } else { - eve.on("raphael.anim.start." + (obj.level.id), function () { - obj.txtValue.attr({ - "text": obj.originalValue - }); - setDy(obj.txtValue, obj.params.valueFontSize, obj.params.valueY); - }); - } - var rvl = obj.config.value; - if (obj.config.reverse) { - rvl = (obj.config.max * 1) + (obj.config.min * 1) - (obj.config.value * 1); - } - obj.level.animate({ - pki: [rvl, obj.config.min, obj.config.max, obj.params.widgetW, obj.params.widgetH, obj.params.dx, obj.params.dy, obj.config.gaugeWidthScale, obj.config.donut, obj.config.reverse] - }, obj.config.startAnimationTime, obj.config.startAnimationType); - if (obj.config.pointer) { - obj.needle.animate({ - ndl: [rvl, obj.config.min, obj.config.max, obj.params.widgetW, obj.params.widgetH, obj.params.dx, obj.params.dy, obj.config.gaugeWidthScale, obj.config.donut] - }, obj.config.startAnimationTime, obj.config.startAnimationType); - } - obj.txtValue.animate({ - "fill-opacity": (obj.config.hideValue) ? "0" : "1" - }, obj.config.startAnimationTime, obj.config.startAnimationType); - obj.txtLabel.animate({ - "fill-opacity": "1" - }, obj.config.startAnimationTime, obj.config.startAnimationType); -}; -JustGage.prototype.refresh = function (val, max) { - var obj = this; - var displayVal, - color, - max = max || null; - if (max !== null) { - obj.config.max = max; - obj.txtMaximum = obj.config.max; - if (obj.config.humanFriendly) { - obj.txtMaximum = humanFriendlyNumber(obj.config.max, obj.config.humanFriendlyDecimal); - } else if (obj.config.formatNumber) { - obj.txtMaximum = formatNumber(obj.config.max); - } - if (!obj.config.reverse) { - obj.txtMax.attr({ - "text": obj.txtMaximum - }); - setDy(obj.txtMax, obj.params.maxFontSize, obj.params.maxY); - } else { - obj.txtMin.attr({ - "text": obj.txtMaximum - }); - setDy(obj.txtMin, obj.params.minFontSize, obj.params.minY); - } - } - displayVal = val; - if ((val * 1) > (obj.config.max * 1)) { - val = (obj.config.max * 1); - } - if ((val * 1) < (obj.config.min * 1)) { - val = (obj.config.min * 1); - } - color = getColor(val, (val - obj.config.min) / (obj.config.max - obj.config.min), obj.config.levelColors, obj.config.noGradient, obj.config.customSectors); - if (obj.config.textRenderer) { - displayVal = obj.config.textRenderer(displayVal); - } else if (obj.config.humanFriendly) { - displayVal = humanFriendlyNumber(displayVal, obj.config.humanFriendlyDecimal) + obj.config.symbol; - } else if (obj.config.formatNumber) { - displayVal = formatNumber((displayVal * 1).toFixed(obj.config.decimals)) + obj.config.symbol; - } else { - displayVal = (displayVal * 1).toFixed(obj.config.decimals) + obj.config.symbol; - } - obj.originalValue = displayVal; - obj.config.value = val * 1; - if (!obj.config.counter) { - obj.txtValue.attr({ - "text": displayVal - }); - setDy(obj.txtValue, obj.params.valueFontSize, obj.params.valueY); - } - var rvl = obj.config.value; - if (obj.config.reverse) { - rvl = (obj.config.max * 1) + (obj.config.min * 1) - (obj.config.value * 1); - } - obj.level.animate({ - pki: [rvl, obj.config.min, obj.config.max, obj.params.widgetW, obj.params.widgetH, obj.params.dx, obj.params.dy, obj.config.gaugeWidthScale, obj.config.donut, obj.config.reverse], - "fill": color - }, obj.config.refreshAnimationTime, obj.config.refreshAnimationType); - if (obj.config.pointer) { - obj.needle.animate({ - ndl: [rvl, obj.config.min, obj.config.max, obj.params.widgetW, obj.params.widgetH, obj.params.dx, obj.params.dy, obj.config.gaugeWidthScale, obj.config.donut] - }, obj.config.refreshAnimationTime, obj.config.refreshAnimationType); - } - obj, - displayVal, - color, - max = null; -}; -JustGage.prototype.generateShadow = function (svg, defs) { - var obj = this; - var sid = "inner-shadow-" + obj.config.id; - var gaussFilter, - feOffset, - feGaussianBlur, - feComposite1, - feFlood, - feComposite2, - feComposite3; - gaussFilter = document.createElementNS(svg, "filter"); - gaussFilter.setAttribute("id", sid); - defs.appendChild(gaussFilter); - feOffset = document.createElementNS(svg, "feOffset"); - feOffset.setAttribute("dx", 0); - feOffset.setAttribute("dy", obj.config.shadowVerticalOffset); - gaussFilter.appendChild(feOffset); - feGaussianBlur = document.createElementNS(svg, "feGaussianBlur"); - feGaussianBlur.setAttribute("result", "offset-blur"); - feGaussianBlur.setAttribute("stdDeviation", obj.config.shadowSize); - gaussFilter.appendChild(feGaussianBlur); - feComposite1 = document.createElementNS(svg, "feComposite"); - feComposite1.setAttribute("operator", "out"); - feComposite1.setAttribute("in", "SourceGraphic"); - feComposite1.setAttribute("in2", "offset-blur"); - feComposite1.setAttribute("result", "inverse"); - gaussFilter.appendChild(feComposite1); - feFlood = document.createElementNS(svg, "feFlood"); - feFlood.setAttribute("flood-color", "black"); - feFlood.setAttribute("flood-opacity", obj.config.shadowOpacity); - feFlood.setAttribute("result", "color"); - gaussFilter.appendChild(feFlood); - feComposite2 = document.createElementNS(svg, "feComposite"); - feComposite2.setAttribute("operator", "in"); - feComposite2.setAttribute("in", "color"); - feComposite2.setAttribute("in2", "inverse"); - feComposite2.setAttribute("result", "shadow"); - gaussFilter.appendChild(feComposite2); - feComposite3 = document.createElementNS(svg, "feComposite"); - feComposite3.setAttribute("operator", "over"); - feComposite3.setAttribute("in", "shadow"); - feComposite3.setAttribute("in2", "SourceGraphic"); - gaussFilter.appendChild(feComposite3); - if (!obj.config.hideInnerShadow) { - obj.canvas.canvas.childNodes[2].setAttribute("filter", "url(#" + sid + ")"); - obj.canvas.canvas.childNodes[3].setAttribute("filter", "url(#" + sid + ")"); - } - gaussFilter, - feOffset, - feGaussianBlur, - feComposite1, - feFlood, - feComposite2, - feComposite3 = null; -}; -function kvLookup(key, tablea, tableb, defval, datatype, delimiter) { - var val = defval; - var canConvert = false; - if (!(key === null || key === undefined)) { - if (tableb !== null && tableb !== undefined && typeof tableb === "object" && key in tableb) { - val = tableb[key]; - canConvert = true; - } else if (tablea !== null && tablea !== undefined && typeof tablea === "object" && key in tablea) { - val = tablea[key]; - canConvert = true; - } else { - val = defval; - } - if (canConvert === true) { - if (datatype !== null && datatype !== undefined) { - switch (datatype) { - case 'int': - val = parseInt(val, 10); - break; - case 'float': - val = parseFloat(val); - break; - default: - break; - } - } - } - } - return val; -}; -function getColor(val, pct, col, noGradient, custSec) { - var no, - inc, - colors, - percentage, - rval, - gval, - bval, - lower, - upper, - range, - rangePct, - pctLower, - pctUpper, - color; - var noGradient = noGradient || custSec.length > 0; - if (custSec.length > 0) { - for (var i = 0; i < custSec.length; i++) { - if (val > custSec[i].lo && val <= custSec[i].hi) { - return custSec[i].color; - } - } - } - no = col.length; - if (no === 1) - return col[0]; - inc = (noGradient) ? (1 / no) : (1 / (no - 1)); - colors = []; - for (i = 0; i < col.length; i++) { - percentage = (noGradient) ? (inc * (i + 1)) : (inc * i); - rval = parseInt((cutHex(col[i])).substring(0, 2), 16); - gval = parseInt((cutHex(col[i])).substring(2, 4), 16); - bval = parseInt((cutHex(col[i])).substring(4, 6), 16); - colors[i] = { - pct: percentage, - color: { - r: rval, - g: gval, - b: bval - } - }; - } - if (pct === 0) { - return 'rgb(' + [colors[0].color.r, colors[0].color.g, colors[0].color.b].join(',') + ')'; - } - for (var j = 0; j < colors.length; j++) { - if (pct <= colors[j].pct) { - if (noGradient) { - return 'rgb(' + [colors[j].color.r, colors[j].color.g, colors[j].color.b].join(',') + ')'; - } else { - lower = colors[j - 1]; - upper = colors[j]; - range = upper.pct - lower.pct; - rangePct = (pct - lower.pct) / range; - pctLower = 1 - rangePct; - pctUpper = rangePct; - color = { - r: Math.floor(lower.color.r * pctLower + upper.color.r * pctUpper), - g: Math.floor(lower.color.g * pctLower + upper.color.g * pctUpper), - b: Math.floor(lower.color.b * pctLower + upper.color.b * pctUpper) - }; - return 'rgb(' + [color.r, color.g, color.b].join(',') + ')'; - } - } - } -} -function setDy(elem, fontSize, txtYpos) { - if ((!ie || ie > 9) && elem.node.firstChild.attributes.dy) { - elem.node.firstChild.attributes.dy.value = 0; - } -} -function getRandomInt(min, max) { - return Math.floor(Math.random() * (max - min + 1)) + min; -} -function cutHex(str) { - return (str.charAt(0) == "#") ? str.substring(1, 7) : str; -} -function humanFriendlyNumber(n, d) { - var p, - d2, - i, - s; - p = Math.pow; - d2 = p(10, d); - i = 7; - while (i) { - s = p(10, i-- * 3); - if (s <= n) { - n = Math.round(n * d2 / s) / d2 + "KMGTPE"[i]; - } - } - return n; -} -function formatNumber(x) { - var parts = x.toString().split("."); - parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ","); - return parts.join("."); -} -function getStyle(oElm, strCssRule) { - var strValue = ""; - if (document.defaultView && document.defaultView.getComputedStyle) { - strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule); - } else if (oElm.currentStyle) { - strCssRule = strCssRule.replace(/\-(\w)/g, function (strMatch, p1) { - return p1.toUpperCase(); - }); - strValue = oElm.currentStyle[strCssRule]; - } - return strValue; -} -function onCreateElementNsReady(func) { - if (document.createElementNS !== undefined) { - func(); - } else { - setTimeout(function () { - onCreateElementNsReady(func); - }, 100); - } -} -var ie = (function () { - var undef, - v = 3, - div = document.createElement('div'), - all = div.getElementsByTagName('i'); - while (div.innerHTML = '', all[0]); - return v > 4 ? v : undef; -} - ()); -function extend(out) { - out = out || {}; - for (var i = 1; i < arguments.length; i++) { - if (!arguments[i]) - continue; - for (var key in arguments[i]) { - if (arguments[i].hasOwnProperty(key)) - out[key] = arguments[i][key]; - } - } - return out; -}; diff --git a/examples/SmartSwitch/data_src/js_css_src/js-time-picker/1-inline.html b/examples/SmartSwitch/data_src/js_css_src/js-time-picker/1-inline.html deleted file mode 100644 index 22160e9..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/js-time-picker/1-inline.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - Inline Timepicker Example - - - - - - -

Inline Time Picker

- -
TIME ON
-
-
TIME OFF
- - - - - \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/js_css_src/js-time-picker/2-popup.html b/examples/SmartSwitch/data_src/js_css_src/js-time-picker/2-popup.html deleted file mode 100644 index 162339a..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/js-time-picker/2-popup.html +++ /dev/null @@ -1,27 +0,0 @@ - - - - Popup Timeicker Example - - - - - - -

Popup Time Picker

- - - ON/OFF -

Line

- - - - - \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/js_css_src/js-time-picker/README.txt b/examples/SmartSwitch/data_src/js_css_src/js-time-picker/README.txt deleted file mode 100644 index b09dd21..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/js-time-picker/README.txt +++ /dev/null @@ -1,29 +0,0 @@ -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -LICENSE -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= - -Copyright 2018 by Code Boxx - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. - - -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -MORE -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-= -Please visit https://code-boxx.com/ for more! \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/js_css_src/js-time-picker/tpick-light-pop.css b/examples/SmartSwitch/data_src/js_css_src/js-time-picker/tpick-light-pop.css deleted file mode 100644 index cacbdb3..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/js-time-picker/tpick-light-pop.css +++ /dev/null @@ -1,65 +0,0 @@ -/* [CONTAINER] */ -.tpop { - position: fixed; - top: 0; - left: 0; - width: 100%; - height: 100vh; - background: rgba(0, 0, 0, 0.7); - transition: all 0.5s; - visibility: hidden; - opacity: 0; -} -.tpop.show { - visibility: visible; - opacity: 1; -} -.tpicker { - background: #f2f2f2; - padding: 10px; - width: 100%; - max-width: 320px; - white-space: nowrap; - font-size: 32px; - font-weight: bold; - text-align: center; -} -.tpop .tpicker { - margin: 20px auto 0 auto; -} - -/* [HR + MIN + AM/PM] */ -.tpicker-h, .tpicker-m, .tpicker-ap { - display: inline-block; - width: 30%; -} -.tpicker input[type=text] { - box-sizing: border-box; - width: 70%; - padding: 10px; - margin: 5px 0; - border: 0; - background: #fff; - color: #888; - text-align: center; - font-size: 28px; -} -.tpicker-up, .tpicker-down { - text-align: center; - color: #ff853f; - cursor: pointer; -} - -/* [CANCEL + OK BUTTON] */ -.tpicker-btn { - margin-top: 10px; -} -.tpicker-btn input[type=button] { - width: 50%; - padding: 10px 0; - border: 0; - background: #a83a0b; - color: #fff; - font-size: 20px; - cursor: pointer; -} \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/js_css_src/js-time-picker/tpick-light.css b/examples/SmartSwitch/data_src/js_css_src/js-time-picker/tpick-light.css deleted file mode 100644 index 58676b4..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/js-time-picker/tpick-light.css +++ /dev/null @@ -1,47 +0,0 @@ -/* [CONTAINER] */ -.tpicker { - background: #f2f2f2; - padding: 10px; - width: 100%; - max-width: 320px; - white-space: nowrap; - font-size: 32px; - font-weight: bold; - text-align: center; -} - -/* [HR + MIN + AM/PM] */ -.tpicker-h, .tpicker-m, .tpicker-ap { - display: inline-block; - width: 30%; -} -.tpicker input[type=text] { - box-sizing: border-box; - width: 70%; - padding: 10px; - margin: 5px 0; - border: 0; - background: #fff; - color: #888; - text-align: center; - font-size: 28px; -} -.tpicker-up, .tpicker-down { - text-align: center; - color: #ff853f; - cursor: pointer; -} - -/* [CANCEL + OK BUTTON] */ -.tpicker-btn { - margin-top: 10px; -} -.tpicker-btn input[type=button] { - width: 50%; - padding: 10px 0; - border: 0; - background: #a83a0b; - color: #fff; - font-size: 20px; - cursor: pointer; -} \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/js_css_src/js-time-picker/tpick-pop.js b/examples/SmartSwitch/data_src/js_css_src/js-time-picker/tpick-pop.js deleted file mode 100644 index c52a2da..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/js-time-picker/tpick-pop.js +++ /dev/null @@ -1,136 +0,0 @@ -var tpick = { - attach : function (target) { - // attach() : attach time picker to target - - // Generate a unique random ID for the time picker - var uniqueID = 0; - while (document.getElementById("tpick-" + uniqueID) != null) { - uniqueID = Math.floor(Math.random() * (100 - 2)) + 1; - } - - // Create wrapper - var tw = document.createElement("div"); - tw.id = "tpick-" + uniqueID; - tw.classList.add("tpop"); - tw.dataset.target = target; - tw.addEventListener("click", function (evt) { - if (evt.target.classList.contains("tpop")) { - this.classList.remove("show"); - } - }); - - // Create new time picker - var tp = document.createElement("div"); - tp.classList.add("tpicker"); - - // Create hour picker - tp.appendChild(this.draw("h")); - tp.appendChild(this.draw("m")); - tp.appendChild(this.draw("ap")); - - // OK button - var bottom = document.createElement("div"), - ok = document.createElement("input"); - ok.setAttribute("type", "button"); - ok.value = "OK"; - ok.addEventListener("click", function(){ tpick.set(this); }); - bottom.classList.add("tpicker-btn"); - bottom.appendChild(ok); - tp.appendChild(bottom); - - // Attach time picker to body - tw.appendChild(tp); - document.body.appendChild(tw); - - // Attach on focus event - var target = document.getElementById(target); - target.dataset.dp = uniqueID; - target.onfocus = function () { - document.getElementById("tpick-" + this.dataset.dp).classList.add("show"); - }; - }, - - draw : function (type) { - // draw() : support function to create the hr, min, am/pm selector - - // Create the controls - var docket = document.createElement("div"), - up = document.createElement("div"), - down = document.createElement("div"), - text = document.createElement("input"); - docket.classList.add("tpicker-" + type); - up.classList.add("tpicker-up"); - down.classList.add("tpicker-down"); - up.innerHTML = "︿"; - down.innerHTML = "﹀"; - text.readOnly = true; - text.setAttribute("type", "text"); - - // Default values + click event - // You can do your own modifications here - if (type=="h") { - text.value = "12"; - up.addEventListener("click", function(){ tpick.spin("h", 1, this); }); - down.addEventListener("click", function(){ tpick.spin("h", 0, this); }); - } else if (type=="m") { - text.value = "10"; - up.addEventListener("click", function(){ tpick.spin("m", 1, this); }); - down.addEventListener("click", function(){ tpick.spin("m", 0, this); }); - } else { - text.value = "AM"; - up.addEventListener("click", function(){ tpick.spin("ap", 1, this); }); - down.addEventListener("click", function(){ tpick.spin("ap", 0, this); }); - } - - // Complete + return the docket - docket.appendChild(up); - docket.appendChild(text); - docket.appendChild(down); - return docket; - }, - - spin : function (type, direction, el) { - // spin() : when the up/down button is pressed - - // Get current field + value - var parent = el.parentElement, - field = parent.getElementsByTagName("input")[0], - value = field.value; - - // Spin it - if (type=="h") { - value = parseInt(value); - if (direction) { value++; } else { value--; } - if (value==0) { value = 12; } - else if (value>12) { value = 1; } - } else if (type=="m") { - value = parseInt(value); - if (direction) { value+=5; } else { value-=5; } - if (value<0) { value = 55; } - else if (value>60) { value = 0; } - if (value<10) { value = "0" + value; } - } - else { - value = value=="PM" ? "AM" : "PM"; - } - field.value = value; - }, - - set : function (el) { - // set() : set the selected time on the target - - // Get the parent container - var parent = el.parentElement; - while (parent.classList.contains("tpop") == false) { - parent = parent.parentElement; - } - - // Formulate + set selected time - var input = parent.querySelectorAll("input[type=text]"); - var time = input[0].value + ":" + input[1].value + " " + input[2].value; - document.getElementById(parent.dataset.target).value = time; - - // Close popup - parent.classList.remove("show"); - } -}; \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/js_css_src/js-time-picker/tpick.js b/examples/SmartSwitch/data_src/js_css_src/js-time-picker/tpick.js deleted file mode 100644 index 799142c..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/js-time-picker/tpick.js +++ /dev/null @@ -1,116 +0,0 @@ -var tpick = { - attach : function (container, target) { - // attach() : attach time picker to target - - // Generate a unique random ID for the time picker - var uniqueID = 0; - while (document.getElementById("tpick-" + uniqueID) != null) { - uniqueID = Math.floor(Math.random() * (100 - 2)) + 1; - } - - // Create new time picker - var tp = document.createElement("div"); - tp.id = "tpick-" + uniqueID; - tp.dataset.target = target; - tp.classList.add("tpicker"); - - // Create hour picker - tp.appendChild(this.draw("h")); - tp.appendChild(this.draw("m")); - tp.appendChild(this.draw("ap")); - - // OK button - var bottom = document.createElement("div"), - ok = document.createElement("input"); - ok.setAttribute("type", "button"); - ok.value = "OK"; - ok.addEventListener("click", function(){ tpick.set(this); }); - bottom.classList.add("tpicker-btn"); - bottom.appendChild(ok); - tp.appendChild(bottom); - - // Attach time picker to target container - document.getElementById(container).appendChild(tp); - }, - - draw : function (type) { - // draw() : support function to create the hr, min, am/pm selector - - // Create the controls - var docket = document.createElement("div"), - up = document.createElement("div"), - down = document.createElement("div"), - text = document.createElement("input"); - docket.classList.add("tpicker-" + type); - up.classList.add("tpicker-up"); - down.classList.add("tpicker-down"); - up.innerHTML = "︿"; - down.innerHTML = "﹀"; - text.readOnly = true; - text.setAttribute("type", "text"); - - // Default values + click event - // You can do your own modifications here - if (type=="h") { - text.value = "12"; - up.addEventListener("click", function(){ tpick.spin("h", 1, this); }); - down.addEventListener("click", function(){ tpick.spin("h", 0, this); }); - } else if (type=="m") { - text.value = "10"; - up.addEventListener("click", function(){ tpick.spin("m", 1, this); }); - down.addEventListener("click", function(){ tpick.spin("m", 0, this); }); - } else { - text.value = "AM"; - up.addEventListener("click", function(){ tpick.spin("ap", 1, this); }); - down.addEventListener("click", function(){ tpick.spin("ap", 0, this); }); - } - - // Complete + return the docket - docket.appendChild(up); - docket.appendChild(text); - docket.appendChild(down); - return docket; - }, - - spin : function (type, direction, el) { - // spin() : when the up/down button is pressed - - // Get current field + value - var parent = el.parentElement, - field = parent.getElementsByTagName("input")[0], - value = field.value; - - // Spin it - if (type=="h") { - value = parseInt(value); - if (direction) { value++; } else { value--; } - if (value==0) { value = 12; } - else if (value>12) { value = 1; } - } else if (type=="m") { - value = parseInt(value); - if (direction) { value+=5; } else { value-=5; } - if (value<0) { value = 55; } - else if (value>60) { value = 0; } - if (value<10) { value = "0" + value; } - } - else { - value = value=="PM" ? "AM" : "PM"; - } - field.value = value; - }, - - set : function (el) { - // set() : set the selected time on the target - - // Get the parent container - var parent = el.parentElement; - while (parent.classList.contains("tpicker") == false) { - parent = parent.parentElement; - } - - // Formulate + set selected time - var input = parent.querySelectorAll("input[type=text]"); - var time = input[0].value + ":" + input[1].value + " " + input[2].value; - document.getElementById(parent.dataset.target).value = time; - } -}; \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/auto-adjust.htm b/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/auto-adjust.htm deleted file mode 100644 index 28903cf..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/auto-adjust.htm +++ /dev/null @@ -1,94 +0,0 @@ - - - - - Auto-adjust - - - - - - -
-
-
-
-

- JustGage auto-adjusts to the size of containing element. And to the screen zoom level. And screen density. Nice. This means you’ll get clean, sharp and nice looking gauge at all times. Try zooming the page to see the results. -

- - - - - - diff --git a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/counter.html b/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/counter.html deleted file mode 100644 index 4069593..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/counter.html +++ /dev/null @@ -1,58 +0,0 @@ - - - - - - Counter - - - - - -
- - - - - - diff --git a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/custom-interval.htm b/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/custom-interval.htm deleted file mode 100644 index 6c58bda..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/custom-interval.htm +++ /dev/null @@ -1,82 +0,0 @@ - - - - - Custom interval - - - - - -
-
-
-

- You need to measure, say, between 350 and 980? No problem, just tell it to justGage. Displayed value and color are calculated as a percentage in defined range, with optional min and max labels shown. -

-

- Also, if displayed value is out of range, relax and kick your feet up - justGage will take care of it for you. -

- - - - - - diff --git a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/custom-node.html b/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/custom-node.html deleted file mode 100644 index 98964e1..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/custom-node.html +++ /dev/null @@ -1,130 +0,0 @@ - - - - - Custom Node - - - - - - -
-
-
-
-
- - -
-
- - - - -
- - - - - - diff --git a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/custom-sectors.html b/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/custom-sectors.html deleted file mode 100644 index a868de6..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/custom-sectors.html +++ /dev/null @@ -1,88 +0,0 @@ - - - - - - Custom Sectors - - - - - - - - - -
-
-

0-50 is green, 51-100 is red

- Random Refresh - Update Sectors -
- - - - - - \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/custom-value-renderer.html b/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/custom-value-renderer.html deleted file mode 100644 index 2e5b0f3..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/custom-value-renderer.html +++ /dev/null @@ -1,116 +0,0 @@ - - - - - - Custom Render Function - - - - -
- Random Refresh - - - - - - diff --git a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/customize-style.htm b/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/customize-style.htm deleted file mode 100644 index 9be11d1..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/customize-style.htm +++ /dev/null @@ -1,137 +0,0 @@ - - - - - Customize style - - - - - - -
-
-
-
-
-
-

- Not digging default style? Then mock your own, Picasso! JustGage features bunch of styling options including gauge width, gauge color and shadow, gauge level colors, colors for title, value, min & max etc. -

-

- Check non-minified version of justgage.js for list of all setup parameters. -

- - - - - - diff --git a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/defaults.html b/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/defaults.html deleted file mode 100644 index 99f8827..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/defaults.html +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - Defaults - - - - - -
-
-
-
- - - - - - diff --git a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/font-options.html b/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/font-options.html deleted file mode 100644 index 11063c7..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/font-options.html +++ /dev/null @@ -1,62 +0,0 @@ - - - - - - Counter - - - - - - - - - - - - diff --git a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/format-number.html b/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/format-number.html deleted file mode 100644 index 4bf2c36..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/format-number.html +++ /dev/null @@ -1,56 +0,0 @@ - - - - - - Counter - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/html5-data-attribute-config.html b/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/html5-data-attribute-config.html deleted file mode 100644 index 3c2ab0b..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/html5-data-attribute-config.html +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - html5 data-attribute setup - - - - - - - - - -
-
- -
- - - - - - \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/human-friendly-numbers.html b/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/human-friendly-numbers.html deleted file mode 100644 index f0e7ddc..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/human-friendly-numbers.html +++ /dev/null @@ -1,109 +0,0 @@ - - - - - - Guage - - - - -
- Random Refresh - - - - - - diff --git a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/pointer.html b/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/pointer.html deleted file mode 100644 index b20ae5f..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/pointer.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - Pointer - - - - - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
- - - - - - diff --git a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/refresh-maximum.html b/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/refresh-maximum.html deleted file mode 100644 index e1502a1..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/refresh-maximum.html +++ /dev/null @@ -1,91 +0,0 @@ - - - - - - Donuts, baby! - - - - - - - - - - - - diff --git a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/responsive-gauges.htm b/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/responsive-gauges.htm deleted file mode 100644 index 68680c6..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/responsive-gauges.htm +++ /dev/null @@ -1,71 +0,0 @@ - - - - - Dynamic Resize - - - - - -
-
-
-
-
- - - - - - diff --git a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/reverse.html b/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/reverse.html deleted file mode 100644 index e17b675..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/examples/reverse.html +++ /dev/null @@ -1,144 +0,0 @@ - - - - - - Reverse - - - - - -
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- -
- - - - - - diff --git a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/justgage.js b/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/justgage.js deleted file mode 100644 index c852491..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/justgage.js +++ /dev/null @@ -1,1220 +0,0 @@ -/** - * JustGage - animated gauges using RaphaelJS - * Check http://www.justgage.com for official releases - * Licensed under MIT. - * @author Bojan Djuricic (@Toorshia) - **/ - -JustGage = function(config) { - - var obj = this; - - // Helps in case developer wants to debug it. unobtrusive - if (config === null || config === undefined) { - console.log('* justgage: Make sure to pass options to the constructor!'); - return false; - } - - var node; - - if (config.id !== null && config.id !== undefined) { - node = document.getElementById(config.id); - if (!node) { - console.log('* justgage: No element with id : %s found', config.id); - return false; - } - } else if (config.parentNode !== null && config.parentNode !== undefined) { - node = config.parentNode; - } else { - console.log('* justgage: Make sure to pass the existing element id or parentNode to the constructor.'); - return false; - } - - var dataset = node.dataset ? node.dataset : {}; - - // check for defaults - var defaults = (config.defaults !== null && config.defaults !== undefined) ? config.defaults : false; - if (defaults !== false) { - config = extend({}, config, defaults); - delete config.defaults; - } - - // configurable parameters - obj.config = { - // id : string - // this is container element id - id: config.id, - - // value : float - // value gauge is showing - value: kvLookup('value', config, dataset, 0, 'float'), - - // defaults : bool - // defaults parameter to use - defaults: kvLookup('defaults', config, dataset, 0, false), - - // parentNode : node object - // this is container element - parentNode: kvLookup('parentNode', config, dataset, null), - - // width : int - // gauge width - width: kvLookup('width', config, dataset, null), - - // height : int - // gauge height - height: kvLookup('height', config, dataset, null), - - // title : string - // gauge title - title: kvLookup('title', config, dataset, ""), - - // titleFontColor : string - // color of gauge title - titleFontColor: kvLookup('titleFontColor', config, dataset, "#999999"), - - // titleFontFamily : string - // color of gauge title - titleFontFamily: kvLookup('titleFontFamily', config, dataset, "sans-serif"), - - // titlePosition : string - // 'above' or 'below' - titlePosition: kvLookup('titlePosition', config, dataset, "above"), - - // valueFontColor : string - // color of label showing current value - valueFontColor: kvLookup('valueFontColor', config, dataset, "#010101"), - - // valueFontFamily : string - // color of label showing current value - valueFontFamily: kvLookup('valueFontFamily', config, dataset, "Arial"), - - // symbol : string - // special symbol to show next to value - symbol: kvLookup('symbol', config, dataset, ''), - - // min : float - // min value - min: kvLookup('min', config, dataset, 0, 'float'), - - // max : float - // max value - max: kvLookup('max', config, dataset, 100, 'float'), - - // reverse : bool - // reverse min and max - reverse: kvLookup('reverse', config, dataset, false), - - // humanFriendlyDecimal : int - // number of decimal places for our human friendly number to contain - humanFriendlyDecimal: kvLookup('humanFriendlyDecimal', config, dataset, 0), - - - // textRenderer: func - // function applied before rendering text - textRenderer: kvLookup('textRenderer', config, dataset, null), - - // gaugeWidthScale : float - // width of the gauge element - gaugeWidthScale: kvLookup('gaugeWidthScale', config, dataset, 1.0), - - // gaugeColor : string - // background color of gauge element - gaugeColor: kvLookup('gaugeColor', config, dataset, "#edebeb"), - - // label : string - // text to show below value - label: kvLookup('label', config, dataset, ''), - - // labelFontColor : string - // color of label showing label under value - labelFontColor: kvLookup('labelFontColor', config, dataset, "#b3b3b3"), - - // shadowOpacity : int - // 0 ~ 1 - shadowOpacity: kvLookup('shadowOpacity', config, dataset, 0.2), - - // shadowSize: int - // inner shadow size - shadowSize: kvLookup('shadowSize', config, dataset, 5), - - // shadowVerticalOffset : int - // how much shadow is offset from top - shadowVerticalOffset: kvLookup('shadowVerticalOffset', config, dataset, 3), - - // levelColors : string[] - // colors of indicator, from lower to upper, in RGB format - levelColors: kvLookup('levelColors', config, dataset, ["#a9d70b", "#f9c802", "#ff0000"], 'array', ','), - - // startAnimationTime : int - // length of initial animation - startAnimationTime: kvLookup('startAnimationTime', config, dataset, 700), - - // startAnimationType : string - // type of initial animation (linear, >, <, <>, bounce) - startAnimationType: kvLookup('startAnimationType', config, dataset, '>'), - - // refreshAnimationTime : int - // length of refresh animation - refreshAnimationTime: kvLookup('refreshAnimationTime', config, dataset, 700), - - // refreshAnimationType : string - // type of refresh animation (linear, >, <, <>, bounce) - refreshAnimationType: kvLookup('refreshAnimationType', config, dataset, '>'), - - // donutStartAngle : int - // angle to start from when in donut mode - donutStartAngle: kvLookup('donutStartAngle', config, dataset, 90), - - // valueMinFontSize : int - // absolute minimum font size for the value - valueMinFontSize: kvLookup('valueMinFontSize', config, dataset, 16), - - // titleMinFontSize - // absolute minimum font size for the title - titleMinFontSize: kvLookup('titleMinFontSize', config, dataset, 10), - - // labelMinFontSize - // absolute minimum font size for the label - labelMinFontSize: kvLookup('labelMinFontSize', config, dataset, 10), - - // minLabelMinFontSize - // absolute minimum font size for the minimum label - minLabelMinFontSize: kvLookup('minLabelMinFontSize', config, dataset, 10), - - // maxLabelMinFontSize - // absolute minimum font size for the maximum label - maxLabelMinFontSize: kvLookup('maxLabelMinFontSize', config, dataset, 10), - - // hideValue : bool - // hide value text - hideValue: kvLookup('hideValue', config, dataset, false), - - // hideMinMax : bool - // hide min and max values - hideMinMax: kvLookup('hideMinMax', config, dataset, false), - - // hideInnerShadow : bool - // hide inner shadow - hideInnerShadow: kvLookup('hideInnerShadow', config, dataset, false), - - // humanFriendly : bool - // convert large numbers for min, max, value to human friendly (e.g. 1234567 -> 1.23M) - humanFriendly: kvLookup('humanFriendly', config, dataset, false), - - // noGradient : bool - // whether to use gradual color change for value, or sector-based - noGradient: kvLookup('noGradient', config, dataset, false), - - // donut : bool - // show full donut gauge - donut: kvLookup('donut', config, dataset, false), - - // relativeGaugeSize : bool - // whether gauge size should follow changes in container element size - relativeGaugeSize: kvLookup('relativeGaugeSize', config, dataset, false), - - // counter : bool - // animate level number change - counter: kvLookup('counter', config, dataset, false), - - // decimals : int - // number of digits after floating point - decimals: kvLookup('decimals', config, dataset, 0), - - // customSectors : [] of objects - // number of digits after floating point - customSectors: kvLookup('customSectors', config, dataset, []), - - // formatNumber: boolean - // formats numbers with commas where appropriate - formatNumber: kvLookup('formatNumber', config, dataset, false), - - // pointer : bool - // show value pointer - pointer: kvLookup('pointer', config, dataset, false), - - // pointerOptions : object - // define pointer look - pointerOptions: kvLookup('pointerOptions', config, dataset, []) - }; - - // variables - var - canvasW, - canvasH, - widgetW, - widgetH, - aspect, - dx, - dy, - titleFontSize, - titleX, - titleY, - valueFontSize, - valueX, - valueY, - labelFontSize, - labelX, - labelY, - minFontSize, - minX, - minY, - maxFontSize, - maxX, - maxY; - - // overflow values - if (obj.config.value > obj.config.max) obj.config.value = obj.config.max; - if (obj.config.value < obj.config.min) obj.config.value = obj.config.min; - obj.originalValue = kvLookup('value', config, dataset, -1, 'float'); - - // create canvas - if (obj.config.id !== null && (document.getElementById(obj.config.id)) !== null) { - obj.canvas = Raphael(obj.config.id, "100%", "100%"); - } else if (obj.config.parentNode !== null) { - obj.canvas = Raphael(obj.config.parentNode, "100%", "100%"); - } - - if (obj.config.relativeGaugeSize === true) { - obj.canvas.setViewBox(0, 0, 200, 150, true); - } - - // canvas dimensions - if (obj.config.relativeGaugeSize === true) { - canvasW = 200; - canvasH = 150; - } else if (obj.config.width !== null && obj.config.height !== null) { - canvasW = obj.config.width; - canvasH = obj.config.height; - } else if (obj.config.parentNode !== null) { - obj.canvas.setViewBox(0, 0, 200, 150, true); - canvasW = 200; - canvasH = 150; - } else { - canvasW = getStyle(document.getElementById(obj.config.id), "width").slice(0, -2) * 1; - canvasH = getStyle(document.getElementById(obj.config.id), "height").slice(0, -2) * 1; - } - - // widget dimensions - if (obj.config.donut === true) { - - // DONUT ******************************* - - // width more than height - if (canvasW > canvasH) { - widgetH = canvasH; - widgetW = widgetH; - // width less than height - } else if (canvasW < canvasH) { - widgetW = canvasW; - widgetH = widgetW; - // if height don't fit, rescale both - if (widgetH > canvasH) { - aspect = widgetH / canvasH; - widgetH = widgetH / aspect; - widgetW = widgetH / aspect; - } - // equal - } else { - widgetW = canvasW; - widgetH = widgetW; - } - - // delta - dx = (canvasW - widgetW) / 2; - dy = (canvasH - widgetH) / 2; - - // title - titleFontSize = ((widgetH / 8) > 10) ? (widgetH / 10) : 10; - titleX = dx + widgetW / 2; - titleY = dy + widgetH / 11; - - // value - valueFontSize = ((widgetH / 6.4) > 16) ? (widgetH / 5.4) : 18; - valueX = dx + widgetW / 2; - if (obj.config.label !== '') { - valueY = dy + widgetH / 1.85; - } else { - valueY = dy + widgetH / 1.7; - } - - // label - labelFontSize = ((widgetH / 16) > 10) ? (widgetH / 16) : 10; - labelX = dx + widgetW / 2; - labelY = valueY + labelFontSize; - - // min - minFontSize = ((widgetH / 16) > 10) ? (widgetH / 16) : 10; - minX = dx + (widgetW / 10) + (widgetW / 6.666666666666667 * obj.config.gaugeWidthScale) / 2; - minY = labelY; - - // max - maxFontSize = ((widgetH / 16) > 10) ? (widgetH / 16) : 10; - maxX = dx + widgetW - (widgetW / 10) - (widgetW / 6.666666666666667 * obj.config.gaugeWidthScale) / 2; - maxY = labelY; - - } else { - // HALF ******************************* - - // width more than height - if (canvasW > canvasH) { - widgetH = canvasH; - widgetW = widgetH * 1.25; - //if width doesn't fit, rescale both - if (widgetW > canvasW) { - aspect = widgetW / canvasW; - widgetW = widgetW / aspect; - widgetH = widgetH / aspect; - } - // width less than height - } else if (canvasW < canvasH) { - widgetW = canvasW; - widgetH = widgetW / 1.25; - // if height don't fit, rescale both - if (widgetH > canvasH) { - aspect = widgetH / canvasH; - widgetH = widgetH / aspect; - widgetW = widgetH / aspect; - } - // equal - } else { - widgetW = canvasW; - widgetH = widgetW * 0.75; - } - - // delta - dx = (canvasW - widgetW) / 2; - dy = (canvasH - widgetH) / 2; - if (obj.config.titlePosition === 'below') { - // shift whole thing down - dy -= (widgetH / 6.4); - } - - // title - titleFontSize = ((widgetH / 8) > obj.config.titleMinFontSize) ? (widgetH / 10) : obj.config.titleMinFontSize; - titleX = dx + widgetW / 2; - titleY = dy + (obj.config.titlePosition === 'below' ? (widgetH * 1.07) : (widgetH / 6.4)); - - // value - valueFontSize = ((widgetH / 6.5) > obj.config.valueMinFontSize) ? (widgetH / 6.5) : obj.config.valueMinFontSize; - valueX = dx + widgetW / 2; - valueY = dy + widgetH / 1.275; - - // label - labelFontSize = ((widgetH / 16) > obj.config.labelMinFontSize) ? (widgetH / 16) : obj.config.labelMinFontSize; - labelX = dx + widgetW / 2; - labelY = valueY + valueFontSize / 2 + 5; - - // min - minFontSize = ((widgetH / 16) > obj.config.minLabelMinFontSize) ? (widgetH / 16) : obj.config.minLabelMinFontSize; - minX = dx + (widgetW / 10) + (widgetW / 6.666666666666667 * obj.config.gaugeWidthScale) / 2; - minY = labelY; - - // max - maxFontSize = ((widgetH / 16) > obj.config.maxLabelMinFontSize) ? (widgetH / 16) : obj.config.maxLabelMinFontSize; - maxX = dx + widgetW - (widgetW / 10) - (widgetW / 6.666666666666667 * obj.config.gaugeWidthScale) / 2; - maxY = labelY; - } - - // parameters - obj.params = { - canvasW: canvasW, - canvasH: canvasH, - widgetW: widgetW, - widgetH: widgetH, - dx: dx, - dy: dy, - titleFontSize: titleFontSize, - titleX: titleX, - titleY: titleY, - valueFontSize: valueFontSize, - valueX: valueX, - valueY: valueY, - labelFontSize: labelFontSize, - labelX: labelX, - labelY: labelY, - minFontSize: minFontSize, - minX: minX, - minY: minY, - maxFontSize: maxFontSize, - maxX: maxX, - maxY: maxY - }; - - // var clear - canvasW, canvasH, widgetW, widgetH, aspect, dx, dy, titleFontSize, titleX, titleY, valueFontSize, valueX, valueY, labelFontSize, labelX, labelY, minFontSize, minX, minY, maxFontSize, maxX, maxY = null; - - // pki - custom attribute for generating gauge paths - obj.canvas.customAttributes.pki = function(value, min, max, w, h, dx, dy, gws, donut, reverse) { - - var alpha, Ro, Ri, Cx, Cy, Xo, Yo, Xi, Yi, path; - - if (donut) { - alpha = (1 - 2 * (value - min) / (max - min)) * Math.PI; - Ro = w / 2 - w / 7; - Ri = Ro - w / 6.666666666666667 * gws; - - Cx = w / 2 + dx; - Cy = h / 1.95 + dy; - - Xo = w / 2 + dx + Ro * Math.cos(alpha); - Yo = h - (h - Cy) - Ro * Math.sin(alpha); - Xi = w / 2 + dx + Ri * Math.cos(alpha); - Yi = h - (h - Cy) - Ri * Math.sin(alpha); - - path = "M" + (Cx - Ri) + "," + Cy + " "; - path += "L" + (Cx - Ro) + "," + Cy + " "; - if (value > ((max - min) / 2)) { - path += "A" + Ro + "," + Ro + " 0 0 1 " + (Cx + Ro) + "," + Cy + " "; - } - path += "A" + Ro + "," + Ro + " 0 0 1 " + Xo + "," + Yo + " "; - path += "L" + Xi + "," + Yi + " "; - if (value > ((max - min) / 2)) { - path += "A" + Ri + "," + Ri + " 0 0 0 " + (Cx + Ri) + "," + Cy + " "; - } - path += "A" + Ri + "," + Ri + " 0 0 0 " + (Cx - Ri) + "," + Cy + " "; - path += "Z "; - - return { - path: path - }; - - } else { - alpha = (1 - (value - min) / (max - min)) * Math.PI; - Ro = w / 2 - w / 10; - Ri = Ro - w / 6.666666666666667 * gws; - - Cx = w / 2 + dx; - Cy = h / 1.25 + dy; - - Xo = w / 2 + dx + Ro * Math.cos(alpha); - Yo = h - (h - Cy) - Ro * Math.sin(alpha); - Xi = w / 2 + dx + Ri * Math.cos(alpha); - Yi = h - (h - Cy) - Ri * Math.sin(alpha); - - path = "M" + (Cx - Ri) + "," + Cy + " "; - path += "L" + (Cx - Ro) + "," + Cy + " "; - path += "A" + Ro + "," + Ro + " 0 0 1 " + Xo + "," + Yo + " "; - path += "L" + Xi + "," + Yi + " "; - path += "A" + Ri + "," + Ri + " 0 0 0 " + (Cx - Ri) + "," + Cy + " "; - path += "Z "; - - return { - path: path - }; - } - - // var clear - alpha, Ro, Ri, Cx, Cy, Xo, Yo, Xi, Yi, path = null; - }; - - // ndl - custom attribute for generating needle path - obj.canvas.customAttributes.ndl = function(value, min, max, w, h, dx, dy, gws, donut) { - - var dlt = w * 3.5 / 100; - var dlb = w / 15; - var dw = w / 100; - - if (obj.config.pointerOptions.toplength != null && obj.config.pointerOptions.toplength != undefined) dlt = obj.config.pointerOptions.toplength; - if (obj.config.pointerOptions.bottomlength != null && obj.config.pointerOptions.bottomlength != undefined) dlb = obj.config.pointerOptions.bottomlength; - if (obj.config.pointerOptions.bottomwidth != null && obj.config.pointerOptions.bottomwidth != undefined) dw = obj.config.pointerOptions.bottomwidth; - - var alpha, Ro, Ri, Cx, Cy, Xo, Yo, Xi, Yi, Xc, Yc, Xz, Yz, Xa, Ya, Xb, Yb, path; - - if (donut) { - - alpha = (1 - 2 * (value - min) / (max - min)) * Math.PI; - Ro = w / 2 - w / 7; - Ri = Ro - w / 6.666666666666667 * gws; - - Cx = w / 2 + dx; - Cy = h / 1.95 + dy; - - Xo = w / 2 + dx + Ro * Math.cos(alpha); - Yo = h - (h - Cy) - Ro * Math.sin(alpha); - Xi = w / 2 + dx + Ri * Math.cos(alpha); - Yi = h - (h - Cy) - Ri * Math.sin(alpha); - - Xc = Xo + dlt * Math.cos(alpha); - Yc = Yo - dlt * Math.sin(alpha); - Xz = Xi - dlb * Math.cos(alpha); - Yz = Yi + dlb * Math.sin(alpha); - - Xa = Xz + dw * Math.sin(alpha); - Ya = Yz + dw * Math.cos(alpha); - Xb = Xz - dw * Math.sin(alpha); - Yb = Yz - dw * Math.cos(alpha); - - path = 'M' + Xa + ',' + Ya + ' '; - path += 'L' + Xb + ',' + Yb + ' '; - path += 'L' + Xc + ',' + Yc + ' '; - path += 'Z '; - - return { - path: path - }; - - } else { - alpha = (1 - (value - min) / (max - min)) * Math.PI; - Ro = w / 2 - w / 10; - Ri = Ro - w / 6.666666666666667 * gws; - - Cx = w / 2 + dx; - Cy = h / 1.25 + dy; - - Xo = w / 2 + dx + Ro * Math.cos(alpha); - Yo = h - (h - Cy) - Ro * Math.sin(alpha); - Xi = w / 2 + dx + Ri * Math.cos(alpha); - Yi = h - (h - Cy) - Ri * Math.sin(alpha); - - Xc = Xo + dlt * Math.cos(alpha); - Yc = Yo - dlt * Math.sin(alpha); - Xz = Xi - dlb * Math.cos(alpha); - Yz = Yi + dlb * Math.sin(alpha); - - Xa = Xz + dw * Math.sin(alpha); - Ya = Yz + dw * Math.cos(alpha); - Xb = Xz - dw * Math.sin(alpha); - Yb = Yz - dw * Math.cos(alpha); - - path = 'M' + Xa + ',' + Ya + ' '; - path += 'L' + Xb + ',' + Yb + ' '; - path += 'L' + Xc + ',' + Yc + ' '; - path += 'Z '; - - return { - path: path - }; - } - - // var clear - alpha, Ro, Ri, Cx, Cy, Xo, Yo, Xi, Yi, Xc, Yc, Xz, Yz, Xa, Ya, Xb, Yb, path = null; - }; - - // gauge - obj.gauge = obj.canvas.path().attr({ - "stroke": "none", - "fill": obj.config.gaugeColor, - pki: [ - obj.config.max, - obj.config.min, - obj.config.max, - obj.params.widgetW, - obj.params.widgetH, - obj.params.dx, - obj.params.dy, - obj.config.gaugeWidthScale, - obj.config.donut, - obj.config.reverse - ] - }); - - // level - obj.level = obj.canvas.path().attr({ - "stroke": "none", - "fill": getColor(obj.config.value, (obj.config.value - obj.config.min) / (obj.config.max - obj.config.min), obj.config.levelColors, obj.config.noGradient, obj.config.customSectors), - pki: [ - obj.config.min, - obj.config.min, - obj.config.max, - obj.params.widgetW, - obj.params.widgetH, - obj.params.dx, - obj.params.dy, - obj.config.gaugeWidthScale, - obj.config.donut, - obj.config.reverse - ] - }); - if (obj.config.donut) { - obj.level.transform("r" + obj.config.donutStartAngle + ", " + (obj.params.widgetW / 2 + obj.params.dx) + ", " + (obj.params.widgetH / 1.95 + obj.params.dy)); - } - - if (obj.config.pointer) { - // needle - obj.needle = obj.canvas.path().attr({ - "stroke": (obj.config.pointerOptions.stroke !== null && obj.config.pointerOptions.stroke !== undefined) ? obj.config.pointerOptions.stroke : "none", - "stroke-width": (obj.config.pointerOptions.stroke_width !== null && obj.config.pointerOptions.stroke_width !== undefined) ? obj.config.pointerOptions.stroke_width : 0, - "stroke-linecap": (obj.config.pointerOptions.stroke_linecap !== null && obj.config.pointerOptions.stroke_linecap !== undefined) ? obj.config.pointerOptions.stroke_linecap : "square", - "fill": (obj.config.pointerOptions.color !== null && obj.config.pointerOptions.color !== undefined) ? obj.config.pointerOptions.color : "#000000", - ndl: [ - obj.config.min, - obj.config.min, - obj.config.max, - obj.params.widgetW, - obj.params.widgetH, - obj.params.dx, - obj.params.dy, - obj.config.gaugeWidthScale, - obj.config.donut - ] - }); - - if (obj.config.donut) { - obj.needle.transform("r" + obj.config.donutStartAngle + ", " + (obj.params.widgetW / 2 + obj.params.dx) + ", " + (obj.params.widgetH / 1.95 + obj.params.dy)); - } - - } - - // title - obj.txtTitle = obj.canvas.text(obj.params.titleX, obj.params.titleY, obj.config.title); - obj.txtTitle.attr({ - "font-size": obj.params.titleFontSize, - "font-weight": "bold", - "font-family": obj.config.titleFontFamily, - "fill": obj.config.titleFontColor, - "fill-opacity": "1" - }); - setDy(obj.txtTitle, obj.params.titleFontSize, obj.params.titleY); - - // value - obj.txtValue = obj.canvas.text(obj.params.valueX, obj.params.valueY, 0); - obj.txtValue.attr({ - "font-size": obj.params.valueFontSize, - "font-weight": "bold", - "font-family": obj.config.valueFontFamily, - "fill": obj.config.valueFontColor, - "fill-opacity": "0" - }); - setDy(obj.txtValue, obj.params.valueFontSize, obj.params.valueY); - - // label - obj.txtLabel = obj.canvas.text(obj.params.labelX, obj.params.labelY, obj.config.label); - obj.txtLabel.attr({ - "font-size": obj.params.labelFontSize, - "font-weight": "normal", - "font-family": "Arial", - "fill": obj.config.labelFontColor, - "fill-opacity": "0" - }); - setDy(obj.txtLabel, obj.params.labelFontSize, obj.params.labelY); - - // min - var min = obj.config.min; - if (obj.config.reverse) { - min = obj.config.max; - } - - obj.txtMinimum = min; - if (obj.config.humanFriendly) { - obj.txtMinimum = humanFriendlyNumber(min, obj.config.humanFriendlyDecimal); - } else if (obj.config.formatNumber) { - obj.txtMinimum = formatNumber(min); - } - obj.txtMin = obj.canvas.text(obj.params.minX, obj.params.minY, obj.txtMinimum); - obj.txtMin.attr({ - "font-size": obj.params.minFontSize, - "font-weight": "normal", - "font-family": "Arial", - "fill": obj.config.labelFontColor, - "fill-opacity": (obj.config.hideMinMax || obj.config.donut) ? "0" : "1" - }); - setDy(obj.txtMin, obj.params.minFontSize, obj.params.minY); - - // max - var max = obj.config.max; - if (obj.config.reverse) { - max = obj.config.min; - } - obj.txtMaximum = max; - if (obj.config.humanFriendly) { - obj.txtMaximum = humanFriendlyNumber(max, obj.config.humanFriendlyDecimal); - } else if (obj.config.formatNumber) { - obj.txtMaximum = formatNumber(max); - } - obj.txtMax = obj.canvas.text(obj.params.maxX, obj.params.maxY, obj.txtMaximum); - obj.txtMax.attr({ - "font-size": obj.params.maxFontSize, - "font-weight": "normal", - "font-family": "Arial", - "fill": obj.config.labelFontColor, - "fill-opacity": (obj.config.hideMinMax || obj.config.donut) ? "0" : "1" - }); - setDy(obj.txtMax, obj.params.maxFontSize, obj.params.maxY); - - var defs = obj.canvas.canvas.childNodes[1]; - var svg = "http://www.w3.org/2000/svg"; - - if (ie !== 'undefined' && ie < 9) { - // VML mode - no SVG & SVG filter support - } else if (ie !== 'undefined') { - onCreateElementNsReady(function() { - obj.generateShadow(svg, defs); - }); - } else { - obj.generateShadow(svg, defs); - } - - // var clear - defs, svg = null; - - // set value to display - if (obj.config.textRenderer) { - obj.originalValue = obj.config.textRenderer(obj.originalValue); - } else if (obj.config.humanFriendly) { - obj.originalValue = humanFriendlyNumber(obj.originalValue, obj.config.humanFriendlyDecimal) + obj.config.symbol; - } else if (obj.config.formatNumber) { - obj.originalValue = formatNumber(obj.originalValue) + obj.config.symbol; - } else { - obj.originalValue = (obj.originalValue * 1).toFixed(obj.config.decimals) + obj.config.symbol; - } - - if (obj.config.counter === true) { - //on each animation frame - eve.on("raphael.anim.frame." + (obj.level.id), function() { - var currentValue = obj.level.attr("pki")[0]; - if (obj.config.reverse) { - currentValue = (obj.config.max * 1) + (obj.config.min * 1) - (obj.level.attr("pki")[0] * 1); - } - if (obj.config.textRenderer) { - obj.txtValue.attr("text", obj.config.textRenderer(Math.floor(currentValue))); - } else if (obj.config.humanFriendly) { - obj.txtValue.attr("text", humanFriendlyNumber(Math.floor(currentValue), obj.config.humanFriendlyDecimal) + obj.config.symbol); - } else if (obj.config.formatNumber) { - obj.txtValue.attr("text", formatNumber(Math.floor(currentValue)) + obj.config.symbol); - } else { - obj.txtValue.attr("text", (currentValue * 1).toFixed(obj.config.decimals) + obj.config.symbol); - } - setDy(obj.txtValue, obj.params.valueFontSize, obj.params.valueY); - currentValue = null; - }); - //on animation end - eve.on("raphael.anim.finish." + (obj.level.id), function() { - obj.txtValue.attr({ - "text": obj.originalValue - }); - setDy(obj.txtValue, obj.params.valueFontSize, obj.params.valueY); - }); - } else { - //on animation start - eve.on("raphael.anim.start." + (obj.level.id), function() { - obj.txtValue.attr({ - "text": obj.originalValue - }); - setDy(obj.txtValue, obj.params.valueFontSize, obj.params.valueY); - }); - } - - // animate gauge level, value & label - var rvl = obj.config.value; - if (obj.config.reverse) { - rvl = (obj.config.max * 1) + (obj.config.min * 1) - (obj.config.value * 1); - } - obj.level.animate({ - pki: [ - rvl, - obj.config.min, - obj.config.max, - obj.params.widgetW, - obj.params.widgetH, - obj.params.dx, - obj.params.dy, - obj.config.gaugeWidthScale, - obj.config.donut, - obj.config.reverse - ] - }, obj.config.startAnimationTime, obj.config.startAnimationType); - - if (obj.config.pointer) { - obj.needle.animate({ - ndl: [ - rvl, - obj.config.min, - obj.config.max, - obj.params.widgetW, - obj.params.widgetH, - obj.params.dx, - obj.params.dy, - obj.config.gaugeWidthScale, - obj.config.donut - ] - }, obj.config.startAnimationTime, obj.config.startAnimationType); - } - - obj.txtValue.animate({ - "fill-opacity": (obj.config.hideValue) ? "0" : "1" - }, obj.config.startAnimationTime, obj.config.startAnimationType); - obj.txtLabel.animate({ - "fill-opacity": "1" - }, obj.config.startAnimationTime, obj.config.startAnimationType); -}; - -/** Refresh gauge level */ -JustGage.prototype.refresh = function(val, max) { - - var obj = this; - var displayVal, color, max = max || null; - - // set new max - if (max !== null) { - obj.config.max = max; - // TODO: update customSectors - - obj.txtMaximum = obj.config.max; - if (obj.config.humanFriendly) { - obj.txtMaximum = humanFriendlyNumber(obj.config.max, obj.config.humanFriendlyDecimal); - } else if (obj.config.formatNumber) { - obj.txtMaximum = formatNumber(obj.config.max); - } - if (!obj.config.reverse) { - obj.txtMax.attr({ - "text": obj.txtMaximum - }); - setDy(obj.txtMax, obj.params.maxFontSize, obj.params.maxY); - } else { - obj.txtMin.attr({ - "text": obj.txtMaximum - }); - setDy(obj.txtMin, obj.params.minFontSize, obj.params.minY); - } - } - - // overflow values - displayVal = val; - if ((val * 1) > (obj.config.max * 1)) { - val = (obj.config.max * 1); - } - if ((val * 1) < (obj.config.min * 1)) { - val = (obj.config.min * 1); - } - - color = getColor(val, (val - obj.config.min) / (obj.config.max - obj.config.min), obj.config.levelColors, obj.config.noGradient, obj.config.customSectors); - - if (obj.config.textRenderer) { - displayVal = obj.config.textRenderer(displayVal); - } else if (obj.config.humanFriendly) { - displayVal = humanFriendlyNumber(displayVal, obj.config.humanFriendlyDecimal) + obj.config.symbol; - } else if (obj.config.formatNumber) { - displayVal = formatNumber((displayVal * 1).toFixed(obj.config.decimals)) + obj.config.symbol; - } else { - displayVal = (displayVal * 1).toFixed(obj.config.decimals) + obj.config.symbol; - } - obj.originalValue = displayVal; - obj.config.value = val * 1; - - if (!obj.config.counter) { - obj.txtValue.attr({ - "text": displayVal - }); - setDy(obj.txtValue, obj.params.valueFontSize, obj.params.valueY); - } - - var rvl = obj.config.value; - if (obj.config.reverse) { - rvl = (obj.config.max * 1) + (obj.config.min * 1) - (obj.config.value * 1); - } - obj.level.animate({ - pki: [ - rvl, - obj.config.min, - obj.config.max, - obj.params.widgetW, - obj.params.widgetH, - obj.params.dx, - obj.params.dy, - obj.config.gaugeWidthScale, - obj.config.donut, - obj.config.reverse - ], - "fill": color - }, obj.config.refreshAnimationTime, obj.config.refreshAnimationType); - - if (obj.config.pointer) { - obj.needle.animate({ - ndl: [ - rvl, - obj.config.min, - obj.config.max, - obj.params.widgetW, - obj.params.widgetH, - obj.params.dx, - obj.params.dy, - obj.config.gaugeWidthScale, - obj.config.donut - ] - }, obj.config.refreshAnimationTime, obj.config.refreshAnimationType); - } - - // var clear - obj, displayVal, color, max = null; -}; - -/** Generate shadow */ -JustGage.prototype.generateShadow = function(svg, defs) { - - var obj = this; - var sid = "inner-shadow-" + obj.config.id; - var gaussFilter, feOffset, feGaussianBlur, feComposite1, feFlood, feComposite2, feComposite3; - - // FILTER - gaussFilter = document.createElementNS(svg, "filter"); - gaussFilter.setAttribute("id", sid); - defs.appendChild(gaussFilter); - - // offset - feOffset = document.createElementNS(svg, "feOffset"); - feOffset.setAttribute("dx", 0); - feOffset.setAttribute("dy", obj.config.shadowVerticalOffset); - gaussFilter.appendChild(feOffset); - - // blur - feGaussianBlur = document.createElementNS(svg, "feGaussianBlur"); - feGaussianBlur.setAttribute("result", "offset-blur"); - feGaussianBlur.setAttribute("stdDeviation", obj.config.shadowSize); - gaussFilter.appendChild(feGaussianBlur); - - // composite 1 - feComposite1 = document.createElementNS(svg, "feComposite"); - feComposite1.setAttribute("operator", "out"); - feComposite1.setAttribute("in", "SourceGraphic"); - feComposite1.setAttribute("in2", "offset-blur"); - feComposite1.setAttribute("result", "inverse"); - gaussFilter.appendChild(feComposite1); - - // flood - feFlood = document.createElementNS(svg, "feFlood"); - feFlood.setAttribute("flood-color", "black"); - feFlood.setAttribute("flood-opacity", obj.config.shadowOpacity); - feFlood.setAttribute("result", "color"); - gaussFilter.appendChild(feFlood); - - // composite 2 - feComposite2 = document.createElementNS(svg, "feComposite"); - feComposite2.setAttribute("operator", "in"); - feComposite2.setAttribute("in", "color"); - feComposite2.setAttribute("in2", "inverse"); - feComposite2.setAttribute("result", "shadow"); - gaussFilter.appendChild(feComposite2); - - // composite 3 - feComposite3 = document.createElementNS(svg, "feComposite"); - feComposite3.setAttribute("operator", "over"); - feComposite3.setAttribute("in", "shadow"); - feComposite3.setAttribute("in2", "SourceGraphic"); - gaussFilter.appendChild(feComposite3); - - // set shadow - if (!obj.config.hideInnerShadow) { - obj.canvas.canvas.childNodes[2].setAttribute("filter", "url(#" + sid + ")"); - obj.canvas.canvas.childNodes[3].setAttribute("filter", "url(#" + sid + ")"); - } - - // var clear - gaussFilter, feOffset, feGaussianBlur, feComposite1, feFlood, feComposite2, feComposite3 = null; -}; - -// -// tiny helper function to lookup value of a key from two hash tables -// if none found, return defaultvalue -// -// key: string -// tablea: object -// tableb: DOMStringMap|object -// defval: string|integer|float|null -// datatype: return datatype -// delimiter: delimiter to be used in conjunction with datatype formatting -// -function kvLookup(key, tablea, tableb, defval, datatype, delimiter) { - var val = defval; - var canConvert = false; - if (!(key === null || key === undefined)) { - if (tableb !== null && tableb !== undefined && typeof tableb === "object" && key in tableb) { - val = tableb[key]; - canConvert = true; - } else if (tablea !== null && tablea !== undefined && typeof tablea === "object" && key in tablea) { - val = tablea[key]; - canConvert = true; - } else { - val = defval; - } - if (canConvert === true) { - if (datatype !== null && datatype !== undefined) { - switch (datatype) { - case 'int': - val = parseInt(val, 10); - break; - case 'float': - val = parseFloat(val); - break; - default: - break; - } - } - } - } - return val; -}; - -/** Get color for value */ -function getColor(val, pct, col, noGradient, custSec) { - - var no, inc, colors, percentage, rval, gval, bval, lower, upper, range, rangePct, pctLower, pctUpper, color; - var noGradient = noGradient || custSec.length > 0; - - if (custSec.length > 0) { - for (var i = 0; i < custSec.length; i++) { - if (val > custSec[i].lo && val <= custSec[i].hi) { - return custSec[i].color; - } - } - } - - no = col.length; - if (no === 1) return col[0]; - inc = (noGradient) ? (1 / no) : (1 / (no - 1)); - colors = []; - for (i = 0; i < col.length; i++) { - percentage = (noGradient) ? (inc * (i + 1)) : (inc * i); - rval = parseInt((cutHex(col[i])).substring(0, 2), 16); - gval = parseInt((cutHex(col[i])).substring(2, 4), 16); - bval = parseInt((cutHex(col[i])).substring(4, 6), 16); - colors[i] = { - pct: percentage, - color: { - r: rval, - g: gval, - b: bval - } - }; - } - - if (pct === 0) { - return 'rgb(' + [colors[0].color.r, colors[0].color.g, colors[0].color.b].join(',') + ')'; - } - - for (var j = 0; j < colors.length; j++) { - if (pct <= colors[j].pct) { - if (noGradient) { - return 'rgb(' + [colors[j].color.r, colors[j].color.g, colors[j].color.b].join(',') + ')'; - } else { - lower = colors[j - 1]; - upper = colors[j]; - range = upper.pct - lower.pct; - rangePct = (pct - lower.pct) / range; - pctLower = 1 - rangePct; - pctUpper = rangePct; - color = { - r: Math.floor(lower.color.r * pctLower + upper.color.r * pctUpper), - g: Math.floor(lower.color.g * pctLower + upper.color.g * pctUpper), - b: Math.floor(lower.color.b * pctLower + upper.color.b * pctUpper) - }; - return 'rgb(' + [color.r, color.g, color.b].join(',') + ')'; - } - } - } - -} - -/** Fix Raphael display:none tspan dy attribute bug */ -function setDy(elem, fontSize, txtYpos) { - if ((!ie || ie > 9) && elem.node.firstChild.attributes.dy) { - elem.node.firstChild.attributes.dy.value = 0; - } -} - -/** Random integer */ -function getRandomInt(min, max) { - return Math.floor(Math.random() * (max - min + 1)) + min; -} - -/** Cut hex */ -function cutHex(str) { - return (str.charAt(0) == "#") ? str.substring(1, 7) : str; -} - -/** Human friendly number suffix - From: http://stackoverflow.com/questions/2692323/code-golf-friendly-number-abbreviator */ -function humanFriendlyNumber(n, d) { - var p, d2, i, s; - - p = Math.pow; - d2 = p(10, d); - i = 7; - while (i) { - s = p(10, i-- * 3); - if (s <= n) { - n = Math.round(n * d2 / s) / d2 + "KMGTPE" [i]; - } - } - return n; -} - -/** Format numbers with commas - From: http://stackoverflow.com/questions/2901102/how-to-print-a-number-with-commas-as-thousands-separators-in-javascript */ -function formatNumber(x) { - var parts = x.toString().split("."); - parts[0] = parts[0].replace(/\B(?=(\d{3})+(?!\d))/g, ","); - return parts.join("."); -} - -/** Get style */ -function getStyle(oElm, strCssRule) { - var strValue = ""; - if (document.defaultView && document.defaultView.getComputedStyle) { - strValue = document.defaultView.getComputedStyle(oElm, "").getPropertyValue(strCssRule); - } else if (oElm.currentStyle) { - strCssRule = strCssRule.replace(/\-(\w)/g, function(strMatch, p1) { - return p1.toUpperCase(); - }); - strValue = oElm.currentStyle[strCssRule]; - } - return strValue; -} - -/** Create Element NS Ready */ -function onCreateElementNsReady(func) { - if (document.createElementNS !== undefined) { - func(); - } else { - setTimeout(function() { - onCreateElementNsReady(func); - }, 100); - } -} - -/** Get IE version */ -// ---------------------------------------------------------- -// A short snippet for detecting versions of IE in JavaScript -// without resorting to user-agent sniffing -// ---------------------------------------------------------- -// If you're not in IE (or IE version is less than 5) then: -// ie === undefined -// If you're in IE (>=5) then you can determine which version: -// ie === 7; // IE7 -// Thus, to detect IE: -// if (ie) {} -// And to detect the version: -// ie === 6 // IE6 -// ie > 7 // IE8, IE9 ... -// ie < 9 // Anything less than IE9 -// ---------------------------------------------------------- -// UPDATE: Now using Live NodeList idea from @jdalton -var ie = (function() { - - var undef, - v = 3, - div = document.createElement('div'), - all = div.getElementsByTagName('i'); - - while ( - div.innerHTML = '', - all[0] - ); - return v > 4 ? v : undef; -}()); - -// extend target object with second object -function extend(out) { - out = out || {}; - - for (var i = 1; i < arguments.length; i++) { - if (!arguments[i]) - continue; - - for (var key in arguments[i]) { - if (arguments[i].hasOwnProperty(key)) - out[key] = arguments[i][key]; - } - } - - return out; -}; diff --git a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/raphael-2.1.4.min.js b/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/raphael-2.1.4.min.js deleted file mode 100644 index b907338..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/justgage-1.2.2/raphael-2.1.4.min.js +++ /dev/null @@ -1,12 +0,0 @@ -// ┌────────────────────────────────────────────────────────────────────┐ \\ -// │ Raphaël 2.1.4 - JavaScript Vector Library │ \\ -// ├────────────────────────────────────────────────────────────────────┤ \\ -// │ Copyright © 2008-2012 Dmitry Baranovskiy (http://raphaeljs.com) │ \\ -// │ Copyright © 2008-2012 Sencha Labs (http://sencha.com) │ \\ -// ├────────────────────────────────────────────────────────────────────┤ \\ -// │ Licensed under the MIT (http://raphaeljs.com/license.html) license.│ \\ -// └────────────────────────────────────────────────────────────────────┘ \\ -!function(a,b){"function"==typeof define&&define.amd?define("eve",function(){return b()}):"object"==typeof exports?module.exports=b():a.eve=b()}(this,function(){var a,b,c="0.4.2",d="hasOwnProperty",e=/[\.\/]/,f="*",g=function(){},h=function(a,b){return a-b},i={n:{}},j=function(c,d){c=String(c);var e,f=b,g=Array.prototype.slice.call(arguments,2),i=j.listeners(c),k=0,l=[],m={},n=[],o=a;a=c,b=0;for(var p=0,q=i.length;q>p;p++)"zIndex"in i[p]&&(l.push(i[p].zIndex),i[p].zIndex<0&&(m[i[p].zIndex]=i[p]));for(l.sort(h);l[k]<0;)if(e=m[l[k++]],n.push(e.apply(d,g)),b)return b=f,n;for(p=0;q>p;p++)if(e=i[p],"zIndex"in e)if(e.zIndex==l[k]){if(n.push(e.apply(d,g)),b)break;do if(k++,e=m[l[k]],e&&n.push(e.apply(d,g)),b)break;while(e)}else m[e.zIndex]=e;else if(n.push(e.apply(d,g)),b)break;return b=f,a=o,n.length?n:null};return j._events=i,j.listeners=function(a){var b,c,d,g,h,j,k,l,m=a.split(e),n=i,o=[n],p=[];for(g=0,h=m.length;h>g;g++){for(l=[],j=0,k=o.length;k>j;j++)for(n=o[j].n,c=[n[m[g]],n[f]],d=2;d--;)b=c[d],b&&(l.push(b),p=p.concat(b.f||[]));o=l}return p},j.on=function(a,b){if(a=String(a),"function"!=typeof b)return function(){};for(var c=a.split(e),d=i,f=0,h=c.length;h>f;f++)d=d.n,d=d.hasOwnProperty(c[f])&&d[c[f]]||(d[c[f]]={n:{}});for(d.f=d.f||[],f=0,h=d.f.length;h>f;f++)if(d.f[f]==b)return g;return d.f.push(b),function(a){+a==+a&&(b.zIndex=+a)}},j.f=function(a){var b=[].slice.call(arguments,1);return function(){j.apply(null,[a,null].concat(b).concat([].slice.call(arguments,0)))}},j.stop=function(){b=1},j.nt=function(b){return b?new RegExp("(?:\\.|\\/|^)"+b+"(?:\\.|\\/|$)").test(a):a},j.nts=function(){return a.split(e)},j.off=j.unbind=function(a,b){if(!a)return void(j._events=i={n:{}});var c,g,h,k,l,m,n,o=a.split(e),p=[i];for(k=0,l=o.length;l>k;k++)for(m=0;mk;k++)for(c=p[k];c.n;){if(b){if(c.f){for(m=0,n=c.f.length;n>m;m++)if(c.f[m]==b){c.f.splice(m,1);break}!c.f.length&&delete c.f}for(g in c.n)if(c.n[d](g)&&c.n[g].f){var q=c.n[g].f;for(m=0,n=q.length;n>m;m++)if(q[m]==b){q.splice(m,1);break}!q.length&&delete c.n[g].f}}else{delete c.f;for(g in c.n)c.n[d](g)&&c.n[g].f&&delete c.n[g].f}c=c.n}},j.once=function(a,b){var c=function(){return j.unbind(a,c),b.apply(this,arguments)};return j.on(a,c)},j.version=c,j.toString=function(){return"You are running Eve "+c},j}),function(a,b){"function"==typeof define&&define.amd?define("raphael.core",["eve"],function(a){return b(a)}):"object"==typeof exports?module.exports=b(require("eve")):a.Raphael=b(a.eve)}(this,function(a){function b(c){if(b.is(c,"function"))return t?c():a.on("raphael.DOMload",c);if(b.is(c,U))return b._engine.create[C](b,c.splice(0,3+b.is(c[0],S))).add(c);var d=Array.prototype.slice.call(arguments,0);if(b.is(d[d.length-1],"function")){var e=d.pop();return t?e.call(b._engine.create[C](b,d)):a.on("raphael.DOMload",function(){e.call(b._engine.create[C](b,d))})}return b._engine.create[C](b,arguments)}function c(a){if("function"==typeof a||Object(a)!==a)return a;var b=new a.constructor;for(var d in a)a[y](d)&&(b[d]=c(a[d]));return b}function d(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return a.push(a.splice(c,1)[0])}function e(a,b,c){function e(){var f=Array.prototype.slice.call(arguments,0),g=f.join("␀"),h=e.cache=e.cache||{},i=e.count=e.count||[];return h[y](g)?(d(i,g),c?c(h[g]):h[g]):(i.length>=1e3&&delete h[i.shift()],i.push(g),h[g]=a[C](b,f),c?c(h[g]):h[g])}return e}function f(){return this.hex}function g(a,b){for(var c=[],d=0,e=a.length;e-2*!b>d;d+=2){var f=[{x:+a[d-2],y:+a[d-1]},{x:+a[d],y:+a[d+1]},{x:+a[d+2],y:+a[d+3]},{x:+a[d+4],y:+a[d+5]}];b?d?e-4==d?f[3]={x:+a[0],y:+a[1]}:e-2==d&&(f[2]={x:+a[0],y:+a[1]},f[3]={x:+a[2],y:+a[3]}):f[0]={x:+a[e-2],y:+a[e-1]}:e-4==d?f[3]=f[2]:d||(f[0]={x:+a[d],y:+a[d+1]}),c.push(["C",(-f[0].x+6*f[1].x+f[2].x)/6,(-f[0].y+6*f[1].y+f[2].y)/6,(f[1].x+6*f[2].x-f[3].x)/6,(f[1].y+6*f[2].y-f[3].y)/6,f[2].x,f[2].y])}return c}function h(a,b,c,d,e){var f=-3*b+9*c-9*d+3*e,g=a*f+6*b-12*c+6*d;return a*g-3*b+3*c}function i(a,b,c,d,e,f,g,i,j){null==j&&(j=1),j=j>1?1:0>j?0:j;for(var k=j/2,l=12,m=[-.1252,.1252,-.3678,.3678,-.5873,.5873,-.7699,.7699,-.9041,.9041,-.9816,.9816],n=[.2491,.2491,.2335,.2335,.2032,.2032,.1601,.1601,.1069,.1069,.0472,.0472],o=0,p=0;l>p;p++){var q=k*m[p]+k,r=h(q,a,c,e,g),s=h(q,b,d,f,i),t=r*r+s*s;o+=n[p]*M.sqrt(t)}return k*o}function j(a,b,c,d,e,f,g,h,j){if(!(0>j||i(a,b,c,d,e,f,g,h)o;)m/=2,n+=(j>k?1:-1)*m,k=i(a,b,c,d,e,f,g,h,n);return n}}function k(a,b,c,d,e,f,g,h){if(!(N(a,c)N(e,g)||N(b,d)N(f,h))){var i=(a*d-b*c)*(e-g)-(a-c)*(e*h-f*g),j=(a*d-b*c)*(f-h)-(b-d)*(e*h-f*g),k=(a-c)*(f-h)-(b-d)*(e-g);if(k){var l=i/k,m=j/k,n=+l.toFixed(2),o=+m.toFixed(2);if(!(n<+O(a,c).toFixed(2)||n>+N(a,c).toFixed(2)||n<+O(e,g).toFixed(2)||n>+N(e,g).toFixed(2)||o<+O(b,d).toFixed(2)||o>+N(b,d).toFixed(2)||o<+O(f,h).toFixed(2)||o>+N(f,h).toFixed(2)))return{x:l,y:m}}}}function l(a,c,d){var e=b.bezierBBox(a),f=b.bezierBBox(c);if(!b.isBBoxIntersect(e,f))return d?0:[];for(var g=i.apply(0,a),h=i.apply(0,c),j=N(~~(g/5),1),l=N(~~(h/5),1),m=[],n=[],o={},p=d?0:[],q=0;j+1>q;q++){var r=b.findDotsAtSegment.apply(b,a.concat(q/j));m.push({x:r.x,y:r.y,t:q/j})}for(q=0;l+1>q;q++)r=b.findDotsAtSegment.apply(b,c.concat(q/l)),n.push({x:r.x,y:r.y,t:q/l});for(q=0;j>q;q++)for(var s=0;l>s;s++){var t=m[q],u=m[q+1],v=n[s],w=n[s+1],x=P(u.x-t.x)<.001?"y":"x",y=P(w.x-v.x)<.001?"y":"x",z=k(t.x,t.y,u.x,u.y,v.x,v.y,w.x,w.y);if(z){if(o[z.x.toFixed(4)]==z.y.toFixed(4))continue;o[z.x.toFixed(4)]=z.y.toFixed(4);var A=t.t+P((z[x]-t[x])/(u[x]-t[x]))*(u.t-t.t),B=v.t+P((z[y]-v[y])/(w[y]-v[y]))*(w.t-v.t);A>=0&&1.001>=A&&B>=0&&1.001>=B&&(d?p++:p.push({x:z.x,y:z.y,t1:O(A,1),t2:O(B,1)}))}}return p}function m(a,c,d){a=b._path2curve(a),c=b._path2curve(c);for(var e,f,g,h,i,j,k,m,n,o,p=d?0:[],q=0,r=a.length;r>q;q++){var s=a[q];if("M"==s[0])e=i=s[1],f=j=s[2];else{"C"==s[0]?(n=[e,f].concat(s.slice(1)),e=n[6],f=n[7]):(n=[e,f,e,f,i,j,i,j],e=i,f=j);for(var t=0,u=c.length;u>t;t++){var v=c[t];if("M"==v[0])g=k=v[1],h=m=v[2];else{"C"==v[0]?(o=[g,h].concat(v.slice(1)),g=o[6],h=o[7]):(o=[g,h,g,h,k,m,k,m],g=k,h=m);var w=l(n,o,d);if(d)p+=w;else{for(var x=0,y=w.length;y>x;x++)w[x].segment1=q,w[x].segment2=t,w[x].bez1=n,w[x].bez2=o;p=p.concat(w)}}}}}return p}function n(a,b,c,d,e,f){null!=a?(this.a=+a,this.b=+b,this.c=+c,this.d=+d,this.e=+e,this.f=+f):(this.a=1,this.b=0,this.c=0,this.d=1,this.e=0,this.f=0)}function o(){return this.x+G+this.y+G+this.width+" × "+this.height}function p(a,b,c,d,e,f){function g(a){return((l*a+k)*a+j)*a}function h(a,b){var c=i(a,b);return((o*c+n)*c+m)*c}function i(a,b){var c,d,e,f,h,i;for(e=a,i=0;8>i;i++){if(f=g(e)-a,P(f)e)return c;if(e>d)return d;for(;d>c;){if(f=g(e),P(f-a)f?c=e:d=e,e=(d-c)/2+c}return e}var j=3*b,k=3*(d-b)-j,l=1-j-k,m=3*c,n=3*(e-c)-m,o=1-m-n;return h(a,1/(200*f))}function q(a,b){var c=[],d={};if(this.ms=b,this.times=1,a){for(var e in a)a[y](e)&&(d[$(e)]=a[e],c.push($(e)));c.sort(ka)}this.anim=d,this.top=c[c.length-1],this.percents=c}function r(c,d,e,f,g,h){e=$(e);var i,j,k,l,m,o,q=c.ms,r={},s={},t={};if(f)for(w=0,x=fb.length;x>w;w++){var u=fb[w];if(u.el.id==d.id&&u.anim==c){u.percent!=e?(fb.splice(w,1),k=1):j=u,d.attr(u.totalOrigin);break}}else f=+s;for(var w=0,x=c.percents.length;x>w;w++){if(c.percents[w]==e||c.percents[w]>f*c.top){e=c.percents[w],m=c.percents[w-1]||0,q=q/c.top*(e-m),l=c.percents[w+1],i=c.anim[e];break}f&&d.attr(c.anim[c.percents[w]])}if(i){if(j)j.initstatus=f,j.start=new Date-j.ms*f;else{for(var z in i)if(i[y](z)&&(ca[y](z)||d.paper.customAttributes[y](z)))switch(r[z]=d.attr(z),null==r[z]&&(r[z]=ba[z]),s[z]=i[z],ca[z]){case S:t[z]=(s[z]-r[z])/q;break;case"colour":r[z]=b.getRGB(r[z]);var A=b.getRGB(s[z]);t[z]={r:(A.r-r[z].r)/q,g:(A.g-r[z].g)/q,b:(A.b-r[z].b)/q};break;case"path":var B=Ia(r[z],s[z]),C=B[1];for(r[z]=B[0],t[z]=[],w=0,x=r[z].length;x>w;w++){t[z][w]=[0];for(var E=1,F=r[z][w].length;F>E;E++)t[z][w][E]=(C[w][E]-r[z][w][E])/q}break;case"transform":var G=d._,J=Na(G[z],s[z]);if(J)for(r[z]=J.from,s[z]=J.to,t[z]=[],t[z].real=!0,w=0,x=r[z].length;x>w;w++)for(t[z][w]=[r[z][w][0]],E=1,F=r[z][w].length;F>E;E++)t[z][w][E]=(s[z][w][E]-r[z][w][E])/q;else{var K=d.matrix||new n,L={_:{transform:G.transform},getBBox:function(){return d.getBBox(1)}};r[z]=[K.a,K.b,K.c,K.d,K.e,K.f],La(L,s[z]),s[z]=L._.transform,t[z]=[(L.matrix.a-K.a)/q,(L.matrix.b-K.b)/q,(L.matrix.c-K.c)/q,(L.matrix.d-K.d)/q,(L.matrix.e-K.e)/q,(L.matrix.f-K.f)/q]}break;case"csv":var M=H(i[z])[I](v),N=H(r[z])[I](v);if("clip-rect"==z)for(r[z]=N,t[z]=[],w=N.length;w--;)t[z][w]=(M[w]-r[z][w])/q;s[z]=M;break;default:for(M=[][D](i[z]),N=[][D](r[z]),t[z]=[],w=d.paper.customAttributes[z].length;w--;)t[z][w]=((M[w]||0)-(N[w]||0))/q}var O=i.easing,P=b.easing_formulas[O];if(!P)if(P=H(O).match(Y),P&&5==P.length){var Q=P;P=function(a){return p(a,+Q[1],+Q[2],+Q[3],+Q[4],q)}}else P=la;if(o=i.start||c.start||+new Date,u={anim:c,percent:e,timestamp:o,start:o+(c.del||0),status:0,initstatus:f||0,stop:!1,ms:q,easing:P,from:r,diff:t,to:s,el:d,callback:i.callback,prev:m,next:l,repeat:h||c.times,origin:d.attr(),totalOrigin:g},fb.push(u),f&&!j&&!k&&(u.stop=!0,u.start=new Date-q*f,1==fb.length))return hb();k&&(u.start=new Date-u.ms*f),1==fb.length&&gb(hb)}a("raphael.anim.start."+d.id,d,c)}}function s(a){for(var b=0;be;e++)for(i=a[e],f=1,h=i.length;h>f;f+=2)c=b.x(i[f],i[f+1]),d=b.y(i[f],i[f+1]),i[f]=c,i[f+1]=d;return a};if(b._g=z,b.type=z.win.SVGAngle||z.doc.implementation.hasFeature("http://www.w3.org/TR/SVG11/feature#BasicStructure","1.1")?"SVG":"VML","VML"==b.type){var qa,ra=z.doc.createElement("div");if(ra.innerHTML='',qa=ra.firstChild,qa.style.behavior="url(#default#VML)",!qa||"object"!=typeof qa.adj)return b.type=F;ra=null}b.svg=!(b.vml="VML"==b.type),b._Paper=B,b.fn=u=B.prototype=b.prototype,b._id=0,b._oid=0,b.is=function(a,b){return b=L.call(b),"finite"==b?!X[y](+a):"array"==b?a instanceof Array:"null"==b&&null===a||b==typeof a&&null!==a||"object"==b&&a===Object(a)||"array"==b&&Array.isArray&&Array.isArray(a)||V.call(a).slice(8,-1).toLowerCase()==b},b.angle=function(a,c,d,e,f,g){if(null==f){var h=a-d,i=c-e;return h||i?(180+180*M.atan2(-i,-h)/R+360)%360:0}return b.angle(a,c,f,g)-b.angle(d,e,f,g)},b.rad=function(a){return a%360*R/180},b.deg=function(a){return Math.round(180*a/R%360*1e3)/1e3},b.snapTo=function(a,c,d){if(d=b.is(d,"finite")?d:10,b.is(a,U)){for(var e=a.length;e--;)if(P(a[e]-c)<=d)return a[e]}else{a=+a;var f=c%a;if(d>f)return c-f;if(f>a-d)return c-f+a}return c};b.createUUID=function(a,b){return function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(a,b).toUpperCase()}}(/[xy]/g,function(a){var b=16*M.random()|0,c="x"==a?b:3&b|8;return c.toString(16)});b.setWindow=function(c){a("raphael.setWindow",b,z.win,c),z.win=c,z.doc=z.win.document,b._engine.initWin&&b._engine.initWin(z.win)};var sa=function(a){if(b.vml){var c,d=/^\s+|\s+$/g;try{var f=new ActiveXObject("htmlfile");f.write(""),f.close(),c=f.body}catch(g){c=createPopup().document.body}var h=c.createTextRange();sa=e(function(a){try{c.style.color=H(a).replace(d,F);var b=h.queryCommandValue("ForeColor");return b=(255&b)<<16|65280&b|(16711680&b)>>>16,"#"+("000000"+b.toString(16)).slice(-6)}catch(e){return"none"}})}else{var i=z.doc.createElement("i");i.title="Raphaël Colour Picker",i.style.display="none",z.doc.body.appendChild(i),sa=e(function(a){return i.style.color=a,z.doc.defaultView.getComputedStyle(i,F).getPropertyValue("color")})}return sa(a)},ta=function(){return"hsb("+[this.h,this.s,this.b]+")"},ua=function(){return"hsl("+[this.h,this.s,this.l]+")"},va=function(){return this.hex},wa=function(a,c,d){if(null==c&&b.is(a,"object")&&"r"in a&&"g"in a&&"b"in a&&(d=a.b,c=a.g,a=a.r),null==c&&b.is(a,T)){var e=b.getRGB(a);a=e.r,c=e.g,d=e.b}return(a>1||c>1||d>1)&&(a/=255,c/=255,d/=255),[a,c,d]},xa=function(a,c,d,e){a*=255,c*=255,d*=255;var f={r:a,g:c,b:d,hex:b.rgb(a,c,d),toString:va};return b.is(e,"finite")&&(f.opacity=e),f};b.color=function(a){var c;return b.is(a,"object")&&"h"in a&&"s"in a&&"b"in a?(c=b.hsb2rgb(a),a.r=c.r,a.g=c.g,a.b=c.b,a.hex=c.hex):b.is(a,"object")&&"h"in a&&"s"in a&&"l"in a?(c=b.hsl2rgb(a),a.r=c.r,a.g=c.g,a.b=c.b,a.hex=c.hex):(b.is(a,"string")&&(a=b.getRGB(a)),b.is(a,"object")&&"r"in a&&"g"in a&&"b"in a?(c=b.rgb2hsl(a),a.h=c.h,a.s=c.s,a.l=c.l,c=b.rgb2hsb(a),a.v=c.b):(a={hex:"none"},a.r=a.g=a.b=a.h=a.s=a.v=a.l=-1)),a.toString=va,a},b.hsb2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"b"in a&&(c=a.b,b=a.s,d=a.o,a=a.h),a*=360;var e,f,g,h,i;return a=a%360/60,i=c*b,h=i*(1-P(a%2-1)),e=f=g=c-i,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a],xa(e,f,g,d)},b.hsl2rgb=function(a,b,c,d){this.is(a,"object")&&"h"in a&&"s"in a&&"l"in a&&(c=a.l,b=a.s,a=a.h),(a>1||b>1||c>1)&&(a/=360,b/=100,c/=100),a*=360;var e,f,g,h,i;return a=a%360/60,i=2*b*(.5>c?c:1-c),h=i*(1-P(a%2-1)),e=f=g=c-i/2,a=~~a,e+=[i,h,0,0,h,i][a],f+=[h,i,i,h,0,0][a],g+=[0,0,h,i,i,h][a],xa(e,f,g,d)},b.rgb2hsb=function(a,b,c){c=wa(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g;return f=N(a,b,c),g=f-O(a,b,c),d=0==g?null:f==a?(b-c)/g:f==b?(c-a)/g+2:(a-b)/g+4,d=(d+360)%6*60/360,e=0==g?0:g/f,{h:d,s:e,b:f,toString:ta}},b.rgb2hsl=function(a,b,c){c=wa(a,b,c),a=c[0],b=c[1],c=c[2];var d,e,f,g,h,i;return g=N(a,b,c),h=O(a,b,c),i=g-h,d=0==i?null:g==a?(b-c)/i:g==b?(c-a)/i+2:(a-b)/i+4,d=(d+360)%6*60/360,f=(g+h)/2,e=0==i?0:.5>f?i/(2*f):i/(2-2*f),{h:d,s:e,l:f,toString:ua}},b._path2string=function(){return this.join(",").replace(fa,"$1")};b._preload=function(a,b){var c=z.doc.createElement("img");c.style.cssText="position:absolute;left:-9999em;top:-9999em",c.onload=function(){b.call(this),this.onload=null,z.doc.body.removeChild(this)},c.onerror=function(){z.doc.body.removeChild(this)},z.doc.body.appendChild(c),c.src=a};b.getRGB=e(function(a){if(!a||(a=H(a)).indexOf("-")+1)return{r:-1,g:-1,b:-1,hex:"none",error:1,toString:f};if("none"==a)return{r:-1,g:-1,b:-1,hex:"none",toString:f};!(ea[y](a.toLowerCase().substring(0,2))||"#"==a.charAt())&&(a=sa(a));var c,d,e,g,h,i,j=a.match(W);return j?(j[2]&&(e=_(j[2].substring(5),16),d=_(j[2].substring(3,5),16),c=_(j[2].substring(1,3),16)),j[3]&&(e=_((h=j[3].charAt(3))+h,16),d=_((h=j[3].charAt(2))+h,16),c=_((h=j[3].charAt(1))+h,16)),j[4]&&(i=j[4][I](da),c=$(i[0]),"%"==i[0].slice(-1)&&(c*=2.55),d=$(i[1]),"%"==i[1].slice(-1)&&(d*=2.55),e=$(i[2]),"%"==i[2].slice(-1)&&(e*=2.55),"rgba"==j[1].toLowerCase().slice(0,4)&&(g=$(i[3])),i[3]&&"%"==i[3].slice(-1)&&(g/=100)),j[5]?(i=j[5][I](da),c=$(i[0]),"%"==i[0].slice(-1)&&(c*=2.55),d=$(i[1]),"%"==i[1].slice(-1)&&(d*=2.55),e=$(i[2]),"%"==i[2].slice(-1)&&(e*=2.55),("deg"==i[0].slice(-3)||"°"==i[0].slice(-1))&&(c/=360),"hsba"==j[1].toLowerCase().slice(0,4)&&(g=$(i[3])),i[3]&&"%"==i[3].slice(-1)&&(g/=100),b.hsb2rgb(c,d,e,g)):j[6]?(i=j[6][I](da),c=$(i[0]),"%"==i[0].slice(-1)&&(c*=2.55),d=$(i[1]),"%"==i[1].slice(-1)&&(d*=2.55),e=$(i[2]),"%"==i[2].slice(-1)&&(e*=2.55),("deg"==i[0].slice(-3)||"°"==i[0].slice(-1))&&(c/=360),"hsla"==j[1].toLowerCase().slice(0,4)&&(g=$(i[3])),i[3]&&"%"==i[3].slice(-1)&&(g/=100),b.hsl2rgb(c,d,e,g)):(j={r:c,g:d,b:e,toString:f},j.hex="#"+(16777216|e|d<<8|c<<16).toString(16).slice(1),b.is(g,"finite")&&(j.opacity=g),j)):{r:-1,g:-1,b:-1,hex:"none",error:1,toString:f}},b),b.hsb=e(function(a,c,d){return b.hsb2rgb(a,c,d).hex}),b.hsl=e(function(a,c,d){return b.hsl2rgb(a,c,d).hex}),b.rgb=e(function(a,b,c){function d(a){return a+.5|0}return"#"+(16777216|d(c)|d(b)<<8|d(a)<<16).toString(16).slice(1)}),b.getColor=function(a){var b=this.getColor.start=this.getColor.start||{h:0,s:1,b:a||.75},c=this.hsb2rgb(b.h,b.s,b.b);return b.h+=.075,b.h>1&&(b.h=0,b.s-=.2,b.s<=0&&(this.getColor.start={h:0,s:1,b:b.b})),c.hex},b.getColor.reset=function(){delete this.start},b.parsePathString=function(a){if(!a)return null;var c=ya(a);if(c.arr)return Aa(c.arr);var d={a:7,c:6,h:1,l:2,m:2,r:4,q:4,s:4,t:2,v:1,z:0},e=[];return b.is(a,U)&&b.is(a[0],U)&&(e=Aa(a)),e.length||H(a).replace(ga,function(a,b,c){var f=[],g=b.toLowerCase();if(c.replace(ia,function(a,b){b&&f.push(+b)}),"m"==g&&f.length>2&&(e.push([b][D](f.splice(0,2))),g="l",b="m"==b?"l":"L"),"r"==g)e.push([b][D](f));else for(;f.length>=d[g]&&(e.push([b][D](f.splice(0,d[g]))),d[g]););}),e.toString=b._path2string,c.arr=Aa(e),e},b.parseTransformString=e(function(a){if(!a)return null;var c=[];return b.is(a,U)&&b.is(a[0],U)&&(c=Aa(a)),c.length||H(a).replace(ha,function(a,b,d){{var e=[];L.call(b)}d.replace(ia,function(a,b){b&&e.push(+b)}),c.push([b][D](e))}),c.toString=b._path2string,c});var ya=function(a){var b=ya.ps=ya.ps||{};return b[a]?b[a].sleep=100:b[a]={sleep:100},setTimeout(function(){for(var c in b)b[y](c)&&c!=a&&(b[c].sleep--,!b[c].sleep&&delete b[c])}),b[a]};b.findDotsAtSegment=function(a,b,c,d,e,f,g,h,i){var j=1-i,k=Q(j,3),l=Q(j,2),m=i*i,n=m*i,o=k*a+3*l*i*c+3*j*i*i*e+n*g,p=k*b+3*l*i*d+3*j*i*i*f+n*h,q=a+2*i*(c-a)+m*(e-2*c+a),r=b+2*i*(d-b)+m*(f-2*d+b),s=c+2*i*(e-c)+m*(g-2*e+c),t=d+2*i*(f-d)+m*(h-2*f+d),u=j*a+i*c,v=j*b+i*d,w=j*e+i*g,x=j*f+i*h,y=90-180*M.atan2(q-s,r-t)/R;return(q>s||t>r)&&(y+=180),{x:o,y:p,m:{x:q,y:r},n:{x:s,y:t},start:{x:u,y:v},end:{x:w,y:x},alpha:y}},b.bezierBBox=function(a,c,d,e,f,g,h,i){b.is(a,"array")||(a=[a,c,d,e,f,g,h,i]);var j=Ha.apply(null,a);return{x:j.min.x,y:j.min.y,x2:j.max.x,y2:j.max.y,width:j.max.x-j.min.x,height:j.max.y-j.min.y}},b.isPointInsideBBox=function(a,b,c){return b>=a.x&&b<=a.x2&&c>=a.y&&c<=a.y2},b.isBBoxIntersect=function(a,c){var d=b.isPointInsideBBox;return d(c,a.x,a.y)||d(c,a.x2,a.y)||d(c,a.x,a.y2)||d(c,a.x2,a.y2)||d(a,c.x,c.y)||d(a,c.x2,c.y)||d(a,c.x,c.y2)||d(a,c.x2,c.y2)||(a.xc.x||c.xa.x)&&(a.yc.y||c.ya.y)},b.pathIntersection=function(a,b){return m(a,b)},b.pathIntersectionNumber=function(a,b){return m(a,b,1)},b.isPointInsidePath=function(a,c,d){var e=b.pathBBox(a);return b.isPointInsideBBox(e,c,d)&&m(a,[["M",c,d],["H",e.x2+10]],1)%2==1},b._removedFactory=function(b){return function(){a("raphael.log",null,"Raphaël: you are calling to method “"+b+"” of removed object",b)}};var za=b.pathBBox=function(a){var b=ya(a);if(b.bbox)return c(b.bbox);if(!a)return{x:0,y:0,width:0,height:0,x2:0,y2:0};a=Ia(a);for(var d,e=0,f=0,g=[],h=[],i=0,j=a.length;j>i;i++)if(d=a[i],"M"==d[0])e=d[1],f=d[2],g.push(e),h.push(f);else{var k=Ha(e,f,d[1],d[2],d[3],d[4],d[5],d[6]);g=g[D](k.min.x,k.max.x),h=h[D](k.min.y,k.max.y),e=d[5],f=d[6]}var l=O[C](0,g),m=O[C](0,h),n=N[C](0,g),o=N[C](0,h),p=n-l,q=o-m,r={x:l,y:m,x2:n,y2:o,width:p,height:q,cx:l+p/2,cy:m+q/2};return b.bbox=c(r),r},Aa=function(a){var d=c(a);return d.toString=b._path2string,d},Ba=b._pathToRelative=function(a){var c=ya(a);if(c.rel)return Aa(c.rel);b.is(a,U)&&b.is(a&&a[0],U)||(a=b.parsePathString(a));var d=[],e=0,f=0,g=0,h=0,i=0;"M"==a[0][0]&&(e=a[0][1],f=a[0][2],g=e,h=f,i++,d.push(["M",e,f]));for(var j=i,k=a.length;k>j;j++){var l=d[j]=[],m=a[j];if(m[0]!=L.call(m[0]))switch(l[0]=L.call(m[0]),l[0]){case"a":l[1]=m[1],l[2]=m[2],l[3]=m[3],l[4]=m[4],l[5]=m[5],l[6]=+(m[6]-e).toFixed(3),l[7]=+(m[7]-f).toFixed(3);break;case"v":l[1]=+(m[1]-f).toFixed(3);break;case"m":g=m[1],h=m[2];default:for(var n=1,o=m.length;o>n;n++)l[n]=+(m[n]-(n%2?e:f)).toFixed(3)}else{l=d[j]=[],"m"==m[0]&&(g=m[1]+e,h=m[2]+f);for(var p=0,q=m.length;q>p;p++)d[j][p]=m[p]}var r=d[j].length;switch(d[j][0]){case"z":e=g,f=h;break;case"h":e+=+d[j][r-1];break;case"v":f+=+d[j][r-1];break;default:e+=+d[j][r-2],f+=+d[j][r-1]}}return d.toString=b._path2string,c.rel=Aa(d),d},Ca=b._pathToAbsolute=function(a){var c=ya(a);if(c.abs)return Aa(c.abs);if(b.is(a,U)&&b.is(a&&a[0],U)||(a=b.parsePathString(a)),!a||!a.length)return[["M",0,0]];var d=[],e=0,f=0,h=0,i=0,j=0;"M"==a[0][0]&&(e=+a[0][1],f=+a[0][2],h=e,i=f,j++,d[0]=["M",e,f]);for(var k,l,m=3==a.length&&"M"==a[0][0]&&"R"==a[1][0].toUpperCase()&&"Z"==a[2][0].toUpperCase(),n=j,o=a.length;o>n;n++){if(d.push(k=[]),l=a[n],l[0]!=aa.call(l[0]))switch(k[0]=aa.call(l[0]),k[0]){case"A":k[1]=l[1],k[2]=l[2],k[3]=l[3],k[4]=l[4],k[5]=l[5],k[6]=+(l[6]+e),k[7]=+(l[7]+f);break;case"V":k[1]=+l[1]+f;break;case"H":k[1]=+l[1]+e;break;case"R":for(var p=[e,f][D](l.slice(1)),q=2,r=p.length;r>q;q++)p[q]=+p[q]+e,p[++q]=+p[q]+f;d.pop(),d=d[D](g(p,m));break;case"M":h=+l[1]+e,i=+l[2]+f;default:for(q=1,r=l.length;r>q;q++)k[q]=+l[q]+(q%2?e:f)}else if("R"==l[0])p=[e,f][D](l.slice(1)),d.pop(),d=d[D](g(p,m)),k=["R"][D](l.slice(-2));else for(var s=0,t=l.length;t>s;s++)k[s]=l[s];switch(k[0]){case"Z":e=h,f=i;break;case"H":e=k[1];break;case"V":f=k[1];break;case"M":h=k[k.length-2],i=k[k.length-1];default:e=k[k.length-2],f=k[k.length-1]}}return d.toString=b._path2string,c.abs=Aa(d),d},Da=function(a,b,c,d){return[a,b,c,d,c,d]},Ea=function(a,b,c,d,e,f){var g=1/3,h=2/3;return[g*a+h*c,g*b+h*d,g*e+h*c,g*f+h*d,e,f]},Fa=function(a,b,c,d,f,g,h,i,j,k){var l,m=120*R/180,n=R/180*(+f||0),o=[],p=e(function(a,b,c){var d=a*M.cos(c)-b*M.sin(c),e=a*M.sin(c)+b*M.cos(c);return{x:d,y:e}});if(k)y=k[0],z=k[1],w=k[2],x=k[3];else{l=p(a,b,-n),a=l.x,b=l.y,l=p(i,j,-n),i=l.x,j=l.y;var q=(M.cos(R/180*f),M.sin(R/180*f),(a-i)/2),r=(b-j)/2,s=q*q/(c*c)+r*r/(d*d);s>1&&(s=M.sqrt(s),c=s*c,d=s*d);var t=c*c,u=d*d,v=(g==h?-1:1)*M.sqrt(P((t*u-t*r*r-u*q*q)/(t*r*r+u*q*q))),w=v*c*r/d+(a+i)/2,x=v*-d*q/c+(b+j)/2,y=M.asin(((b-x)/d).toFixed(9)),z=M.asin(((j-x)/d).toFixed(9));y=w>a?R-y:y,z=w>i?R-z:z,0>y&&(y=2*R+y),0>z&&(z=2*R+z),h&&y>z&&(y-=2*R),!h&&z>y&&(z-=2*R)}var A=z-y;if(P(A)>m){var B=z,C=i,E=j;z=y+m*(h&&z>y?1:-1),i=w+c*M.cos(z),j=x+d*M.sin(z),o=Fa(i,j,c,d,f,0,h,C,E,[z,B,w,x])}A=z-y;var F=M.cos(y),G=M.sin(y),H=M.cos(z),J=M.sin(z),K=M.tan(A/4),L=4/3*c*K,N=4/3*d*K,O=[a,b],Q=[a+L*G,b-N*F],S=[i+L*J,j-N*H],T=[i,j];if(Q[0]=2*O[0]-Q[0],Q[1]=2*O[1]-Q[1],k)return[Q,S,T][D](o);o=[Q,S,T][D](o).join()[I](",");for(var U=[],V=0,W=o.length;W>V;V++)U[V]=V%2?p(o[V-1],o[V],n).y:p(o[V],o[V+1],n).x;return U},Ga=function(a,b,c,d,e,f,g,h,i){var j=1-i;return{x:Q(j,3)*a+3*Q(j,2)*i*c+3*j*i*i*e+Q(i,3)*g,y:Q(j,3)*b+3*Q(j,2)*i*d+3*j*i*i*f+Q(i,3)*h}},Ha=e(function(a,b,c,d,e,f,g,h){var i,j=e-2*c+a-(g-2*e+c),k=2*(c-a)-2*(e-c),l=a-c,m=(-k+M.sqrt(k*k-4*j*l))/2/j,n=(-k-M.sqrt(k*k-4*j*l))/2/j,o=[b,h],p=[a,g];return P(m)>"1e12"&&(m=.5),P(n)>"1e12"&&(n=.5),m>0&&1>m&&(i=Ga(a,b,c,d,e,f,g,h,m),p.push(i.x),o.push(i.y)),n>0&&1>n&&(i=Ga(a,b,c,d,e,f,g,h,n),p.push(i.x),o.push(i.y)),j=f-2*d+b-(h-2*f+d),k=2*(d-b)-2*(f-d),l=b-d,m=(-k+M.sqrt(k*k-4*j*l))/2/j,n=(-k-M.sqrt(k*k-4*j*l))/2/j,P(m)>"1e12"&&(m=.5),P(n)>"1e12"&&(n=.5),m>0&&1>m&&(i=Ga(a,b,c,d,e,f,g,h,m),p.push(i.x),o.push(i.y)),n>0&&1>n&&(i=Ga(a,b,c,d,e,f,g,h,n),p.push(i.x),o.push(i.y)),{min:{x:O[C](0,p),y:O[C](0,o)},max:{x:N[C](0,p),y:N[C](0,o)}}}),Ia=b._path2curve=e(function(a,b){var c=!b&&ya(a);if(!b&&c.curve)return Aa(c.curve);for(var d=Ca(a),e=b&&Ca(b),f={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},g={x:0,y:0,bx:0,by:0,X:0,Y:0,qx:null,qy:null},h=(function(a,b,c){var d,e,f={T:1,Q:1};if(!a)return["C",b.x,b.y,b.x,b.y,b.x,b.y];switch(!(a[0]in f)&&(b.qx=b.qy=null),a[0]){case"M":b.X=a[1],b.Y=a[2];break;case"A":a=["C"][D](Fa[C](0,[b.x,b.y][D](a.slice(1))));break;case"S":"C"==c||"S"==c?(d=2*b.x-b.bx,e=2*b.y-b.by):(d=b.x,e=b.y),a=["C",d,e][D](a.slice(1));break;case"T":"Q"==c||"T"==c?(b.qx=2*b.x-b.qx,b.qy=2*b.y-b.qy):(b.qx=b.x,b.qy=b.y),a=["C"][D](Ea(b.x,b.y,b.qx,b.qy,a[1],a[2]));break;case"Q":b.qx=a[1],b.qy=a[2],a=["C"][D](Ea(b.x,b.y,a[1],a[2],a[3],a[4]));break;case"L":a=["C"][D](Da(b.x,b.y,a[1],a[2]));break;case"H":a=["C"][D](Da(b.x,b.y,a[1],b.y));break;case"V":a=["C"][D](Da(b.x,b.y,b.x,a[1]));break;case"Z":a=["C"][D](Da(b.x,b.y,b.X,b.Y))}return a}),i=function(a,b){if(a[b].length>7){a[b].shift();for(var c=a[b];c.length;)k[b]="A",e&&(l[b]="A"),a.splice(b++,0,["C"][D](c.splice(0,6)));a.splice(b,1),p=N(d.length,e&&e.length||0)}},j=function(a,b,c,f,g){a&&b&&"M"==a[g][0]&&"M"!=b[g][0]&&(b.splice(g,0,["M",f.x,f.y]),c.bx=0,c.by=0,c.x=a[g][1],c.y=a[g][2],p=N(d.length,e&&e.length||0))},k=[],l=[],m="",n="",o=0,p=N(d.length,e&&e.length||0);p>o;o++){d[o]&&(m=d[o][0]),"C"!=m&&(k[o]=m,o&&(n=k[o-1])),d[o]=h(d[o],f,n),"A"!=k[o]&&"C"==m&&(k[o]="C"),i(d,o),e&&(e[o]&&(m=e[o][0]),"C"!=m&&(l[o]=m,o&&(n=l[o-1])),e[o]=h(e[o],g,n),"A"!=l[o]&&"C"==m&&(l[o]="C"),i(e,o)),j(d,e,f,g,o),j(e,d,g,f,o);var q=d[o],r=e&&e[o],s=q.length,t=e&&r.length;f.x=q[s-2],f.y=q[s-1],f.bx=$(q[s-4])||f.x,f.by=$(q[s-3])||f.y,g.bx=e&&($(r[t-4])||g.x),g.by=e&&($(r[t-3])||g.y),g.x=e&&r[t-2],g.y=e&&r[t-1]}return e||(c.curve=Aa(d)),e?[d,e]:d},null,Aa),Ja=(b._parseDots=e(function(a){for(var c=[],d=0,e=a.length;e>d;d++){var f={},g=a[d].match(/^([^:]*):?([\d\.]*)/);if(f.color=b.getRGB(g[1]),f.color.error)return null;f.opacity=f.color.opacity,f.color=f.color.hex,g[2]&&(f.offset=g[2]+"%"),c.push(f)}for(d=1,e=c.length-1;e>d;d++)if(!c[d].offset){for(var h=$(c[d-1].offset||0),i=0,j=d+1;e>j;j++)if(c[j].offset){i=c[j].offset;break}i||(i=100,j=e),i=$(i);for(var k=(i-h)/(j-d+1);j>d;d++)h+=k,c[d].offset=h+"%"}return c}),b._tear=function(a,b){a==b.top&&(b.top=a.prev),a==b.bottom&&(b.bottom=a.next),a.next&&(a.next.prev=a.prev),a.prev&&(a.prev.next=a.next)}),Ka=(b._tofront=function(a,b){b.top!==a&&(Ja(a,b),a.next=null,a.prev=b.top,b.top.next=a,b.top=a)},b._toback=function(a,b){b.bottom!==a&&(Ja(a,b),a.next=b.bottom,a.prev=null,b.bottom.prev=a,b.bottom=a)},b._insertafter=function(a,b,c){Ja(a,c),b==c.top&&(c.top=a),b.next&&(b.next.prev=a),a.next=b.next,a.prev=b,b.next=a},b._insertbefore=function(a,b,c){Ja(a,c),b==c.bottom&&(c.bottom=a),b.prev&&(b.prev.next=a),a.prev=b.prev,b.prev=a,a.next=b},b.toMatrix=function(a,b){var c=za(a),d={_:{transform:F},getBBox:function(){return c}};return La(d,b),d.matrix}),La=(b.transformPath=function(a,b){return pa(a,Ka(a,b))},b._extractTransform=function(a,c){if(null==c)return a._.transform;c=H(c).replace(/\.{3}|\u2026/g,a._.transform||F);var d=b.parseTransformString(c),e=0,f=0,g=0,h=1,i=1,j=a._,k=new n;if(j.transform=d||[],d)for(var l=0,m=d.length;m>l;l++){var o,p,q,r,s,t=d[l],u=t.length,v=H(t[0]).toLowerCase(),w=t[0]!=v,x=w?k.invert():0;"t"==v&&3==u?w?(o=x.x(0,0),p=x.y(0,0),q=x.x(t[1],t[2]),r=x.y(t[1],t[2]),k.translate(q-o,r-p)):k.translate(t[1],t[2]):"r"==v?2==u?(s=s||a.getBBox(1),k.rotate(t[1],s.x+s.width/2,s.y+s.height/2),e+=t[1]):4==u&&(w?(q=x.x(t[2],t[3]),r=x.y(t[2],t[3]),k.rotate(t[1],q,r)):k.rotate(t[1],t[2],t[3]),e+=t[1]):"s"==v?2==u||3==u?(s=s||a.getBBox(1),k.scale(t[1],t[u-1],s.x+s.width/2,s.y+s.height/2),h*=t[1],i*=t[u-1]):5==u&&(w?(q=x.x(t[3],t[4]),r=x.y(t[3],t[4]),k.scale(t[1],t[2],q,r)):k.scale(t[1],t[2],t[3],t[4]),h*=t[1],i*=t[2]):"m"==v&&7==u&&k.add(t[1],t[2],t[3],t[4],t[5],t[6]),j.dirtyT=1,a.matrix=k}a.matrix=k,j.sx=h,j.sy=i,j.deg=e,j.dx=f=k.e,j.dy=g=k.f,1==h&&1==i&&!e&&j.bbox?(j.bbox.x+=+f,j.bbox.y+=+g):j.dirtyT=1}),Ma=function(a){var b=a[0];switch(b.toLowerCase()){case"t":return[b,0,0];case"m":return[b,1,0,0,1,0,0];case"r":return 4==a.length?[b,0,a[2],a[3]]:[b,0];case"s":return 5==a.length?[b,1,1,a[3],a[4]]:3==a.length?[b,1,1]:[b,1]}},Na=b._equaliseTransform=function(a,c){ -c=H(c).replace(/\.{3}|\u2026/g,a),a=b.parseTransformString(a)||[],c=b.parseTransformString(c)||[];for(var d,e,f,g,h=N(a.length,c.length),i=[],j=[],k=0;h>k;k++){if(f=a[k]||Ma(c[k]),g=c[k]||Ma(f),f[0]!=g[0]||"r"==f[0].toLowerCase()&&(f[2]!=g[2]||f[3]!=g[3])||"s"==f[0].toLowerCase()&&(f[3]!=g[3]||f[4]!=g[4]))return;for(i[k]=[],j[k]=[],d=0,e=N(f.length,g.length);e>d;d++)d in f&&(i[k][d]=f[d]),d in g&&(j[k][d]=g[d])}return{from:i,to:j}};b._getContainer=function(a,c,d,e){var f;return f=null!=e||b.is(a,"object")?a:z.doc.getElementById(a),null!=f?f.tagName?null==c?{container:f,width:f.style.pixelWidth||f.offsetWidth,height:f.style.pixelHeight||f.offsetHeight}:{container:f,width:c,height:d}:{container:1,x:a,y:c,width:d,height:e}:void 0},b.pathToRelative=Ba,b._engine={},b.path2curve=Ia,b.matrix=function(a,b,c,d,e,f){return new n(a,b,c,d,e,f)},function(a){function c(a){return a[0]*a[0]+a[1]*a[1]}function d(a){var b=M.sqrt(c(a));a[0]&&(a[0]/=b),a[1]&&(a[1]/=b)}a.add=function(a,b,c,d,e,f){var g,h,i,j,k=[[],[],[]],l=[[this.a,this.c,this.e],[this.b,this.d,this.f],[0,0,1]],m=[[a,c,e],[b,d,f],[0,0,1]];for(a&&a instanceof n&&(m=[[a.a,a.c,a.e],[a.b,a.d,a.f],[0,0,1]]),g=0;3>g;g++)for(h=0;3>h;h++){for(j=0,i=0;3>i;i++)j+=l[g][i]*m[i][h];k[g][h]=j}this.a=k[0][0],this.b=k[1][0],this.c=k[0][1],this.d=k[1][1],this.e=k[0][2],this.f=k[1][2]},a.invert=function(){var a=this,b=a.a*a.d-a.b*a.c;return new n(a.d/b,-a.b/b,-a.c/b,a.a/b,(a.c*a.f-a.d*a.e)/b,(a.b*a.e-a.a*a.f)/b)},a.clone=function(){return new n(this.a,this.b,this.c,this.d,this.e,this.f)},a.translate=function(a,b){this.add(1,0,0,1,a,b)},a.scale=function(a,b,c,d){null==b&&(b=a),(c||d)&&this.add(1,0,0,1,c,d),this.add(a,0,0,b,0,0),(c||d)&&this.add(1,0,0,1,-c,-d)},a.rotate=function(a,c,d){a=b.rad(a),c=c||0,d=d||0;var e=+M.cos(a).toFixed(9),f=+M.sin(a).toFixed(9);this.add(e,f,-f,e,c,d),this.add(1,0,0,1,-c,-d)},a.x=function(a,b){return a*this.a+b*this.c+this.e},a.y=function(a,b){return a*this.b+b*this.d+this.f},a.get=function(a){return+this[H.fromCharCode(97+a)].toFixed(4)},a.toString=function(){return b.svg?"matrix("+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)].join()+")":[this.get(0),this.get(2),this.get(1),this.get(3),0,0].join()},a.toFilter=function(){return"progid:DXImageTransform.Microsoft.Matrix(M11="+this.get(0)+", M12="+this.get(2)+", M21="+this.get(1)+", M22="+this.get(3)+", Dx="+this.get(4)+", Dy="+this.get(5)+", sizingmethod='auto expand')"},a.offset=function(){return[this.e.toFixed(4),this.f.toFixed(4)]},a.split=function(){var a={};a.dx=this.e,a.dy=this.f;var e=[[this.a,this.c],[this.b,this.d]];a.scalex=M.sqrt(c(e[0])),d(e[0]),a.shear=e[0][0]*e[1][0]+e[0][1]*e[1][1],e[1]=[e[1][0]-e[0][0]*a.shear,e[1][1]-e[0][1]*a.shear],a.scaley=M.sqrt(c(e[1])),d(e[1]),a.shear/=a.scaley;var f=-e[0][1],g=e[1][1];return 0>g?(a.rotate=b.deg(M.acos(g)),0>f&&(a.rotate=360-a.rotate)):a.rotate=b.deg(M.asin(f)),a.isSimple=!(+a.shear.toFixed(9)||a.scalex.toFixed(9)!=a.scaley.toFixed(9)&&a.rotate),a.isSuperSimple=!+a.shear.toFixed(9)&&a.scalex.toFixed(9)==a.scaley.toFixed(9)&&!a.rotate,a.noRotation=!+a.shear.toFixed(9)&&!a.rotate,a},a.toTransformString=function(a){var b=a||this[I]();return b.isSimple?(b.scalex=+b.scalex.toFixed(4),b.scaley=+b.scaley.toFixed(4),b.rotate=+b.rotate.toFixed(4),(b.dx||b.dy?"t"+[b.dx,b.dy]:F)+(1!=b.scalex||1!=b.scaley?"s"+[b.scalex,b.scaley,0,0]:F)+(b.rotate?"r"+[b.rotate,0,0]:F)):"m"+[this.get(0),this.get(1),this.get(2),this.get(3),this.get(4),this.get(5)]}}(n.prototype);for(var Oa=function(){this.returnValue=!1},Pa=function(){return this.originalEvent.preventDefault()},Qa=function(){this.cancelBubble=!0},Ra=function(){return this.originalEvent.stopPropagation()},Sa=function(a){var b=z.doc.documentElement.scrollTop||z.doc.body.scrollTop,c=z.doc.documentElement.scrollLeft||z.doc.body.scrollLeft;return{x:a.clientX+c,y:a.clientY+b}},Ta=function(){return z.doc.addEventListener?function(a,b,c,d){var e=function(a){var b=Sa(a);return c.call(d,a,b.x,b.y)};if(a.addEventListener(b,e,!1),E&&K[b]){var f=function(b){for(var e=Sa(b),f=b,g=0,h=b.targetTouches&&b.targetTouches.length;h>g;g++)if(b.targetTouches[g].target==a){b=b.targetTouches[g],b.originalEvent=f,b.preventDefault=Pa,b.stopPropagation=Ra;break}return c.call(d,b,e.x,e.y)};a.addEventListener(K[b],f,!1)}return function(){return a.removeEventListener(b,e,!1),E&&K[b]&&a.removeEventListener(K[b],f,!1),!0}}:z.doc.attachEvent?function(a,b,c,d){var e=function(a){a=a||z.win.event;var b=z.doc.documentElement.scrollTop||z.doc.body.scrollTop,e=z.doc.documentElement.scrollLeft||z.doc.body.scrollLeft,f=a.clientX+e,g=a.clientY+b;return a.preventDefault=a.preventDefault||Oa,a.stopPropagation=a.stopPropagation||Qa,c.call(d,a,f,g)};a.attachEvent("on"+b,e);var f=function(){return a.detachEvent("on"+b,e),!0};return f}:void 0}(),Ua=[],Va=function(b){for(var c,d=b.clientX,e=b.clientY,f=z.doc.documentElement.scrollTop||z.doc.body.scrollTop,g=z.doc.documentElement.scrollLeft||z.doc.body.scrollLeft,h=Ua.length;h--;){if(c=Ua[h],E&&b.touches){for(var i,j=b.touches.length;j--;)if(i=b.touches[j],i.identifier==c.el._drag.id){d=i.clientX,e=i.clientY,(b.originalEvent?b.originalEvent:b).preventDefault();break}}else b.preventDefault();var k,l=c.el.node,m=l.nextSibling,n=l.parentNode,o=l.style.display;z.win.opera&&n.removeChild(l),l.style.display="none",k=c.el.paper.getElementByPoint(d,e),l.style.display=o,z.win.opera&&(m?n.insertBefore(l,m):n.appendChild(l)),k&&a("raphael.drag.over."+c.el.id,c.el,k),d+=g,e+=f,a("raphael.drag.move."+c.el.id,c.move_scope||c.el,d-c.el._drag.x,e-c.el._drag.y,d,e,b)}},Wa=function(c){b.unmousemove(Va).unmouseup(Wa);for(var d,e=Ua.length;e--;)d=Ua[e],d.el._drag={},a("raphael.drag.end."+d.el.id,d.end_scope||d.start_scope||d.move_scope||d.el,c);Ua=[]},Xa=b.el={},Ya=J.length;Ya--;)!function(a){b[a]=Xa[a]=function(c,d){return b.is(c,"function")&&(this.events=this.events||[],this.events.push({name:a,f:c,unbind:Ta(this.shape||this.node||z.doc,a,c,d||this)})),this},b["un"+a]=Xa["un"+a]=function(c){for(var d=this.events||[],e=d.length;e--;)d[e].name!=a||!b.is(c,"undefined")&&d[e].f!=c||(d[e].unbind(),d.splice(e,1),!d.length&&delete this.events);return this}}(J[Ya]);Xa.data=function(c,d){var e=ja[this.id]=ja[this.id]||{};if(0==arguments.length)return e;if(1==arguments.length){if(b.is(c,"object")){for(var f in c)c[y](f)&&this.data(f,c[f]);return this}return a("raphael.data.get."+this.id,this,e[c],c),e[c]}return e[c]=d,a("raphael.data.set."+this.id,this,d,c),this},Xa.removeData=function(a){return null==a?ja[this.id]={}:ja[this.id]&&delete ja[this.id][a],this},Xa.getData=function(){return c(ja[this.id]||{})},Xa.hover=function(a,b,c,d){return this.mouseover(a,c).mouseout(b,d||c)},Xa.unhover=function(a,b){return this.unmouseover(a).unmouseout(b)};var Za=[];Xa.drag=function(c,d,e,f,g,h){function i(i){(i.originalEvent||i).preventDefault();var j=i.clientX,k=i.clientY,l=z.doc.documentElement.scrollTop||z.doc.body.scrollTop,m=z.doc.documentElement.scrollLeft||z.doc.body.scrollLeft;if(this._drag.id=i.identifier,E&&i.touches)for(var n,o=i.touches.length;o--;)if(n=i.touches[o],this._drag.id=n.identifier,n.identifier==this._drag.id){j=n.clientX,k=n.clientY;break}this._drag.x=j+m,this._drag.y=k+l,!Ua.length&&b.mousemove(Va).mouseup(Wa),Ua.push({el:this,move_scope:f,start_scope:g,end_scope:h}),d&&a.on("raphael.drag.start."+this.id,d),c&&a.on("raphael.drag.move."+this.id,c),e&&a.on("raphael.drag.end."+this.id,e),a("raphael.drag.start."+this.id,g||f||this,i.clientX+m,i.clientY+l,i)}return this._drag={},Za.push({el:this,start:i}),this.mousedown(i),this},Xa.onDragOver=function(b){b?a.on("raphael.drag.over."+this.id,b):a.unbind("raphael.drag.over."+this.id)},Xa.undrag=function(){for(var c=Za.length;c--;)Za[c].el==this&&(this.unmousedown(Za[c].start),Za.splice(c,1),a.unbind("raphael.drag.*."+this.id));!Za.length&&b.unmousemove(Va).unmouseup(Wa),Ua=[]},u.circle=function(a,c,d){var e=b._engine.circle(this,a||0,c||0,d||0);return this.__set__&&this.__set__.push(e),e},u.rect=function(a,c,d,e,f){var g=b._engine.rect(this,a||0,c||0,d||0,e||0,f||0);return this.__set__&&this.__set__.push(g),g},u.ellipse=function(a,c,d,e){var f=b._engine.ellipse(this,a||0,c||0,d||0,e||0);return this.__set__&&this.__set__.push(f),f},u.path=function(a){a&&!b.is(a,T)&&!b.is(a[0],U)&&(a+=F);var c=b._engine.path(b.format[C](b,arguments),this);return this.__set__&&this.__set__.push(c),c},u.image=function(a,c,d,e,f){var g=b._engine.image(this,a||"about:blank",c||0,d||0,e||0,f||0);return this.__set__&&this.__set__.push(g),g},u.text=function(a,c,d){var e=b._engine.text(this,a||0,c||0,H(d));return this.__set__&&this.__set__.push(e),e},u.set=function(a){!b.is(a,"array")&&(a=Array.prototype.splice.call(arguments,0,arguments.length));var c=new jb(a);return this.__set__&&this.__set__.push(c),c.paper=this,c.type="set",c},u.setStart=function(a){this.__set__=a||this.set()},u.setFinish=function(a){var b=this.__set__;return delete this.__set__,b},u.getSize=function(){var a=this.canvas.parentNode;return{width:a.offsetWidth,height:a.offsetHeight}},u.setSize=function(a,c){return b._engine.setSize.call(this,a,c)},u.setViewBox=function(a,c,d,e,f){return b._engine.setViewBox.call(this,a,c,d,e,f)},u.top=u.bottom=null,u.raphael=b;var $a=function(a){var b=a.getBoundingClientRect(),c=a.ownerDocument,d=c.body,e=c.documentElement,f=e.clientTop||d.clientTop||0,g=e.clientLeft||d.clientLeft||0,h=b.top+(z.win.pageYOffset||e.scrollTop||d.scrollTop)-f,i=b.left+(z.win.pageXOffset||e.scrollLeft||d.scrollLeft)-g;return{y:h,x:i}};u.getElementByPoint=function(a,b){var c=this,d=c.canvas,e=z.doc.elementFromPoint(a,b);if(z.win.opera&&"svg"==e.tagName){var f=$a(d),g=d.createSVGRect();g.x=a-f.x,g.y=b-f.y,g.width=g.height=1;var h=d.getIntersectionList(g,null);h.length&&(e=h[h.length-1])}if(!e)return null;for(;e.parentNode&&e!=d.parentNode&&!e.raphael;)e=e.parentNode;return e==c.canvas.parentNode&&(e=d),e=e&&e.raphael?c.getById(e.raphaelid):null},u.getElementsByBBox=function(a){var c=this.set();return this.forEach(function(d){b.isBBoxIntersect(d.getBBox(),a)&&c.push(d)}),c},u.getById=function(a){for(var b=this.bottom;b;){if(b.id==a)return b;b=b.next}return null},u.forEach=function(a,b){for(var c=this.bottom;c;){if(a.call(b,c)===!1)return this;c=c.next}return this},u.getElementsByPoint=function(a,b){var c=this.set();return this.forEach(function(d){d.isPointInside(a,b)&&c.push(d)}),c},Xa.isPointInside=function(a,c){var d=this.realPath=oa[this.type](this);return this.attr("transform")&&this.attr("transform").length&&(d=b.transformPath(d,this.attr("transform"))),b.isPointInsidePath(d,a,c)},Xa.getBBox=function(a){if(this.removed)return{};var b=this._;return a?((b.dirty||!b.bboxwt)&&(this.realPath=oa[this.type](this),b.bboxwt=za(this.realPath),b.bboxwt.toString=o,b.dirty=0),b.bboxwt):((b.dirty||b.dirtyT||!b.bbox)&&((b.dirty||!this.realPath)&&(b.bboxwt=0,this.realPath=oa[this.type](this)),b.bbox=za(pa(this.realPath,this.matrix)),b.bbox.toString=o,b.dirty=b.dirtyT=0),b.bbox)},Xa.clone=function(){if(this.removed)return null;var a=this.paper[this.type]().attr(this.attr());return this.__set__&&this.__set__.push(a),a},Xa.glow=function(a){if("text"==this.type)return null;a=a||{};var b={width:(a.width||10)+(+this.attr("stroke-width")||1),fill:a.fill||!1,opacity:null==a.opacity?.5:a.opacity,offsetx:a.offsetx||0,offsety:a.offsety||0,color:a.color||"#000"},c=b.width/2,d=this.paper,e=d.set(),f=this.realPath||oa[this.type](this);f=this.matrix?pa(f,this.matrix):f;for(var g=1;c+1>g;g++)e.push(d.path(f).attr({stroke:b.color,fill:b.fill?b.color:"none","stroke-linejoin":"round","stroke-linecap":"round","stroke-width":+(b.width/c*g).toFixed(3),opacity:+(b.opacity/c).toFixed(3)}));return e.insertBefore(this).translate(b.offsetx,b.offsety)};var _a=function(a,c,d,e,f,g,h,k,l){return null==l?i(a,c,d,e,f,g,h,k):b.findDotsAtSegment(a,c,d,e,f,g,h,k,j(a,c,d,e,f,g,h,k,l))},ab=function(a,c){return function(d,e,f){d=Ia(d);for(var g,h,i,j,k,l="",m={},n=0,o=0,p=d.length;p>o;o++){if(i=d[o],"M"==i[0])g=+i[1],h=+i[2];else{if(j=_a(g,h,i[1],i[2],i[3],i[4],i[5],i[6]),n+j>e){if(c&&!m.start){if(k=_a(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n),l+=["C"+k.start.x,k.start.y,k.m.x,k.m.y,k.x,k.y],f)return l;m.start=l,l=["M"+k.x,k.y+"C"+k.n.x,k.n.y,k.end.x,k.end.y,i[5],i[6]].join(),n+=j,g=+i[5],h=+i[6];continue}if(!a&&!c)return k=_a(g,h,i[1],i[2],i[3],i[4],i[5],i[6],e-n),{x:k.x,y:k.y,alpha:k.alpha}}n+=j,g=+i[5],h=+i[6]}l+=i.shift()+i}return m.end=l,k=a?n:c?m:b.findDotsAtSegment(g,h,i[0],i[1],i[2],i[3],i[4],i[5],1),k.alpha&&(k={x:k.x,y:k.y,alpha:k.alpha}),k}},bb=ab(1),cb=ab(),db=ab(0,1);b.getTotalLength=bb,b.getPointAtLength=cb,b.getSubpath=function(a,b,c){if(this.getTotalLength(a)-c<1e-6)return db(a,b).end;var d=db(a,c,1);return b?db(d,b).end:d},Xa.getTotalLength=function(){var a=this.getPath();if(a)return this.node.getTotalLength?this.node.getTotalLength():bb(a)},Xa.getPointAtLength=function(a){var b=this.getPath();if(b)return cb(b,a)},Xa.getPath=function(){var a,c=b._getPath[this.type];if("text"!=this.type&&"set"!=this.type)return c&&(a=c(this)),a},Xa.getSubpath=function(a,c){var d=this.getPath();if(d)return b.getSubpath(d,a,c)};var eb=b.easing_formulas={linear:function(a){return a},"<":function(a){return Q(a,1.7)},">":function(a){return Q(a,.48)},"<>":function(a){var b=.48-a/1.04,c=M.sqrt(.1734+b*b),d=c-b,e=Q(P(d),1/3)*(0>d?-1:1),f=-c-b,g=Q(P(f),1/3)*(0>f?-1:1),h=e+g+.5;return 3*(1-h)*h*h+h*h*h},backIn:function(a){var b=1.70158;return a*a*((b+1)*a-b)},backOut:function(a){a-=1;var b=1.70158;return a*a*((b+1)*a+b)+1},elastic:function(a){return a==!!a?a:Q(2,-10*a)*M.sin(2*(a-.075)*R/.3)+1},bounce:function(a){var b,c=7.5625,d=2.75;return 1/d>a?b=c*a*a:2/d>a?(a-=1.5/d,b=c*a*a+.75):2.5/d>a?(a-=2.25/d,b=c*a*a+.9375):(a-=2.625/d,b=c*a*a+.984375),b}};eb.easeIn=eb["ease-in"]=eb["<"],eb.easeOut=eb["ease-out"]=eb[">"],eb.easeInOut=eb["ease-in-out"]=eb["<>"],eb["back-in"]=eb.backIn,eb["back-out"]=eb.backOut;var fb=[],gb=window.requestAnimationFrame||window.webkitRequestAnimationFrame||window.mozRequestAnimationFrame||window.oRequestAnimationFrame||window.msRequestAnimationFrame||function(a){setTimeout(a,16)},hb=function(){for(var c=+new Date,d=0;dh))if(i>h){var q=j(h/i);for(var s in k)if(k[y](s)){switch(ca[s]){case S:f=+k[s]+q*i*l[s];break;case"colour":f="rgb("+[ib(Z(k[s].r+q*i*l[s].r)),ib(Z(k[s].g+q*i*l[s].g)),ib(Z(k[s].b+q*i*l[s].b))].join(",")+")";break;case"path":f=[];for(var t=0,u=k[s].length;u>t;t++){f[t]=[k[s][t][0]];for(var v=1,w=k[s][t].length;w>v;v++)f[t][v]=+k[s][t][v]+q*i*l[s][t][v];f[t]=f[t].join(G)}f=f.join(G);break;case"transform":if(l[s].real)for(f=[],t=0,u=k[s].length;u>t;t++)for(f[t]=[k[s][t][0]],v=1,w=k[s][t].length;w>v;v++)f[t][v]=k[s][t][v]+q*i*l[s][t][v];else{var x=function(a){return+k[s][a]+q*i*l[s][a]};f=[["m",x(0),x(1),x(2),x(3),x(4),x(5)]]}break;case"csv":if("clip-rect"==s)for(f=[],t=4;t--;)f[t]=+k[s][t]+q*i*l[s][t];break;default:var z=[][D](k[s]);for(f=[],t=n.paper.customAttributes[s].length;t--;)f[t]=+z[t]+q*i*l[s][t]}o[s]=f}n.attr(o),function(b,c,d){setTimeout(function(){a("raphael.anim.frame."+b,c,d)})}(n.id,n,e.anim)}else{if(function(c,d,e){setTimeout(function(){a("raphael.anim.frame."+d.id,d,e),a("raphael.anim.finish."+d.id,d,e),b.is(c,"function")&&c.call(d)})}(e.callback,n,e.anim),n.attr(m),fb.splice(d--,1),e.repeat>1&&!e.next){for(g in m)m[y](g)&&(p[g]=e.totalOrigin[g]);e.el.attr(p),r(e.anim,e.el,e.anim.percents[0],null,e.totalOrigin,e.repeat-1)}e.next&&!e.stop&&r(e.anim,e.el,e.next,null,e.totalOrigin,e.repeat)}}}fb.length&&gb(hb)},ib=function(a){return a>255?255:0>a?0:a};Xa.animateWith=function(a,c,d,e,f,g){var h=this;if(h.removed)return g&&g.call(h),h;var i=d instanceof q?d:b.animation(d,e,f,g);r(i,h,i.percents[0],null,h.attr());for(var j=0,k=fb.length;k>j;j++)if(fb[j].anim==c&&fb[j].el==a){fb[k-1].start=fb[j].start;break}return h},Xa.onAnimation=function(b){return b?a.on("raphael.anim.frame."+this.id,b):a.unbind("raphael.anim.frame."+this.id),this},q.prototype.delay=function(a){var b=new q(this.anim,this.ms);return b.times=this.times,b.del=+a||0,b},q.prototype.repeat=function(a){var b=new q(this.anim,this.ms);return b.del=this.del,b.times=M.floor(N(a,0))||1,b},b.animation=function(a,c,d,e){if(a instanceof q)return a;(b.is(d,"function")||!d)&&(e=e||d||null,d=null),a=Object(a),c=+c||0;var f,g,h={};for(g in a)a[y](g)&&$(g)!=g&&$(g)+"%"!=g&&(f=!0,h[g]=a[g]);if(f)return d&&(h.easing=d),e&&(h.callback=e),new q({100:h},c);if(e){var i=0;for(var j in a){var k=_(j);a[y](j)&&k>i&&(i=k)}i+="%",!a[i].callback&&(a[i].callback=e)}return new q(a,c)},Xa.animate=function(a,c,d,e){var f=this;if(f.removed)return e&&e.call(f),f;var g=a instanceof q?a:b.animation(a,c,d,e);return r(g,f,g.percents[0],null,f.attr()),f},Xa.setTime=function(a,b){return a&&null!=b&&this.status(a,O(b,a.ms)/a.ms),this},Xa.status=function(a,b){var c,d,e=[],f=0;if(null!=b)return r(a,this,-1,O(b,1)),this;for(c=fb.length;c>f;f++)if(d=fb[f],d.el.id==this.id&&(!a||d.anim==a)){if(a)return d.status;e.push({anim:d.anim,status:d.status})}return a?0:e},Xa.pause=function(b){for(var c=0;cb;b++)!a[b]||a[b].constructor!=Xa.constructor&&a[b].constructor!=jb||(this[this.items.length]=this.items[this.items.length]=a[b],this.length++)},kb=jb.prototype;kb.push=function(){for(var a,b,c=0,d=arguments.length;d>c;c++)a=arguments[c],!a||a.constructor!=Xa.constructor&&a.constructor!=jb||(b=this.items.length,this[b]=this.items[b]=a,this.length++);return this},kb.pop=function(){return this.length&&delete this[this.length--],this.items.pop()},kb.forEach=function(a,b){for(var c=0,d=this.items.length;d>c;c++)if(a.call(b,this.items[c],c)===!1)return this;return this};for(var lb in Xa)Xa[y](lb)&&(kb[lb]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a][C](c,b)})}}(lb));return kb.attr=function(a,c){if(a&&b.is(a,U)&&b.is(a[0],"object"))for(var d=0,e=a.length;e>d;d++)this.items[d].attr(a[d]);else for(var f=0,g=this.items.length;g>f;f++)this.items[f].attr(a,c);return this},kb.clear=function(){for(;this.length;)this.pop()},kb.splice=function(a,b,c){a=0>a?N(this.length+a,0):a,b=N(0,O(this.length-a,b));var d,e=[],f=[],g=[];for(d=2;dd;d++)f.push(this[a+d]);for(;dd?g[d]:e[d-h];for(d=this.items.length=this.length-=b-h;this[d];)delete this[d++];return new jb(f)},kb.exclude=function(a){for(var b=0,c=this.length;c>b;b++)if(this[b]==a)return this.splice(b,1),!0},kb.animate=function(a,c,d,e){(b.is(d,"function")||!d)&&(e=d||null);var f,g,h=this.items.length,i=h,j=this;if(!h)return this;e&&(g=function(){!--h&&e.call(j)}),d=b.is(d,T)?d:g;var k=b.animation(a,c,d,g);for(f=this.items[--i].animate(k);i--;)this.items[i]&&!this.items[i].removed&&this.items[i].animateWith(f,k,k),this.items[i]&&!this.items[i].removed||h--;return this},kb.insertAfter=function(a){for(var b=this.items.length;b--;)this.items[b].insertAfter(a);return this},kb.getBBox=function(){for(var a=[],b=[],c=[],d=[],e=this.items.length;e--;)if(!this.items[e].removed){var f=this.items[e].getBBox();a.push(f.x),b.push(f.y),c.push(f.x+f.width),d.push(f.y+f.height)}return a=O[C](0,a),b=O[C](0,b),c=N[C](0,c),d=N[C](0,d),{x:a,y:b,x2:c,y2:d,width:c-a,height:d-b}},kb.clone=function(a){a=this.paper.set();for(var b=0,c=this.items.length;c>b;b++)a.push(this.items[b].clone());return a},kb.toString=function(){return"Raphaël‘s set"},kb.glow=function(a){var b=this.paper.set();return this.forEach(function(c,d){var e=c.glow(a);null!=e&&e.forEach(function(a,c){b.push(a)})}),b},kb.isPointInside=function(a,b){var c=!1;return this.forEach(function(d){return d.isPointInside(a,b)?(c=!0,!1):void 0}),c},b.registerFont=function(a){if(!a.face)return a;this.fonts=this.fonts||{};var b={w:a.w,face:{},glyphs:{}},c=a.face["font-family"];for(var d in a.face)a.face[y](d)&&(b.face[d]=a.face[d]);if(this.fonts[c]?this.fonts[c].push(b):this.fonts[c]=[b],!a.svg){b.face["units-per-em"]=_(a.face["units-per-em"],10);for(var e in a.glyphs)if(a.glyphs[y](e)){var f=a.glyphs[e];if(b.glyphs[e]={w:f.w,k:{},d:f.d&&"M"+f.d.replace(/[mlcxtrv]/g,function(a){return{l:"L",c:"C",x:"z",t:"m",r:"l",v:"c"}[a]||"M"})+"z"},f.k)for(var g in f.k)f[y](g)&&(b.glyphs[e].k[g]=f.k[g])}}return a},u.getFont=function(a,c,d,e){if(e=e||"normal",d=d||"normal",c=+c||{normal:400,bold:700,lighter:300,bolder:800}[c]||400,b.fonts){var f=b.fonts[a];if(!f){var g=new RegExp("(^|\\s)"+a.replace(/[^\w\d\s+!~.:_-]/g,F)+"(\\s|$)","i");for(var h in b.fonts)if(b.fonts[y](h)&&g.test(h)){f=b.fonts[h];break}}var i;if(f)for(var j=0,k=f.length;k>j&&(i=f[j],i.face["font-weight"]!=c||i.face["font-style"]!=d&&i.face["font-style"]||i.face["font-stretch"]!=e);j++);return i}},u.print=function(a,c,d,e,f,g,h,i){g=g||"middle",h=N(O(h||0,1),-1),i=N(O(i||1,3),1);var j,k=H(d)[I](F),l=0,m=0,n=F;if(b.is(e,"string")&&(e=this.getFont(e)),e){j=(f||16)/e.face["units-per-em"];for(var o=e.face.bbox[I](v),p=+o[0],q=o[3]-o[1],r=0,s=+o[1]+("baseline"==g?q+ +e.face.descent:q/2),t=0,u=k.length;u>t;t++){if("\n"==k[t])l=0,x=0,m=0,r+=q*i;else{var w=m&&e.glyphs[k[t-1]]||{},x=e.glyphs[k[t]];l+=m?(w.w||e.w)+(w.k&&w.k[k[t]]||0)+e.w*h:0,m=1}x&&x.d&&(n+=b.transformPath(x.d,["t",l*j,r*j,"s",j,j,p,s,"t",(a-p)/j,(c-s)/j]))}}return this.path(n).attr({fill:"#000",stroke:"none"})},u.add=function(a){if(b.is(a,"array"))for(var c,d=this.set(),e=0,f=a.length;f>e;e++)c=a[e]||{},w[y](c.type)&&d.push(this[c.type]().attr(c));return d},b.format=function(a,c){var d=b.is(c,U)?[0][D](c):arguments;return a&&b.is(a,T)&&d.length-1&&(a=a.replace(x,function(a,b){return null==d[++b]?F:d[b]})),a||F},b.fullfill=function(){var a=/\{([^\}]+)\}/g,b=/(?:(?:^|\.)(.+?)(?=\[|\.|$|\()|\[('|")(.+?)\2\])(\(\))?/g,c=function(a,c,d){var e=d;return c.replace(b,function(a,b,c,d,f){b=b||d,e&&(b in e&&(e=e[b]),"function"==typeof e&&f&&(e=e()))}),e=(null==e||e==d?a:e)+""};return function(b,d){return String(b).replace(a,function(a,b){return c(a,b,d)})}}(),b.ninja=function(){return A.was?z.win.Raphael=A.is:delete Raphael,b},b.st=kb,a.on("raphael.DOMload",function(){t=!0}),function(a,c,d){function e(){/in/.test(a.readyState)?setTimeout(e,9):b.eve("raphael.DOMload")}null==a.readyState&&a.addEventListener&&(a.addEventListener(c,d=function(){a.removeEventListener(c,d,!1),a.readyState="complete"},!1),a.readyState="loading"),e()}(document,"DOMContentLoaded"),b}),function(a,b){"function"==typeof define&&define.amd?define("raphael.svg",["raphael.core"],function(a){return b(a)}):b("object"==typeof exports?require("./raphael.core"):a.Raphael)}(this,function(a){if(!a||a.svg){var b="hasOwnProperty",c=String,d=parseFloat,e=parseInt,f=Math,g=f.max,h=f.abs,i=f.pow,j=/[, ]+/,k=a.eve,l="",m=" ",n="http://www.w3.org/1999/xlink",o={block:"M5,0 0,2.5 5,5z",classic:"M5,0 0,2.5 5,5 3.5,3 3.5,2z",diamond:"M2.5,0 5,2.5 2.5,5 0,2.5z",open:"M6,1 1,3.5 6,6",oval:"M2.5,0A2.5,2.5,0,0,1,2.5,5 2.5,2.5,0,0,1,2.5,0z"},p={};a.toString=function(){return"Your browser supports SVG.\nYou are running Raphaël "+this.version};var q=function(d,e){if(e){"string"==typeof d&&(d=q(d));for(var f in e)e[b](f)&&("xlink:"==f.substring(0,6)?d.setAttributeNS(n,f.substring(6),c(e[f])):d.setAttribute(f,c(e[f])))}else d=a._g.doc.createElementNS("http://www.w3.org/2000/svg",d),d.style&&(d.style.webkitTapHighlightColor="rgba(0,0,0,0)");return d},r=function(b,e){var j="linear",k=b.id+e,m=.5,n=.5,o=b.node,p=b.paper,r=o.style,s=a._g.doc.getElementById(k);if(!s){if(e=c(e).replace(a._radial_gradient,function(a,b,c){if(j="radial",b&&c){m=d(b),n=d(c);var e=2*(n>.5)-1;i(m-.5,2)+i(n-.5,2)>.25&&(n=f.sqrt(.25-i(m-.5,2))*e+.5)&&.5!=n&&(n=n.toFixed(5)-1e-5*e)}return l}),e=e.split(/\s*\-\s*/),"linear"==j){var t=e.shift();if(t=-d(t),isNaN(t))return null;var u=[0,0,f.cos(a.rad(t)),f.sin(a.rad(t))],v=1/(g(h(u[2]),h(u[3]))||1);u[2]*=v,u[3]*=v,u[2]<0&&(u[0]=-u[2],u[2]=0),u[3]<0&&(u[1]=-u[3],u[3]=0)}var w=a._parseDots(e);if(!w)return null;if(k=k.replace(/[\(\)\s,\xb0#]/g,"_"),b.gradient&&k!=b.gradient.id&&(p.defs.removeChild(b.gradient),delete b.gradient),!b.gradient){s=q(j+"Gradient",{id:k}),b.gradient=s,q(s,"radial"==j?{fx:m,fy:n}:{x1:u[0],y1:u[1],x2:u[2],y2:u[3],gradientTransform:b.matrix.invert()}),p.defs.appendChild(s);for(var x=0,y=w.length;y>x;x++)s.appendChild(q("stop",{offset:w[x].offset?w[x].offset:x?"100%":"0%","stop-color":w[x].color||"#fff","stop-opacity":isFinite(w[x].opacity)?w[x].opacity:1}))}}return q(o,{fill:"url('"+document.location.origin+document.location.pathname+"#"+k+"')",opacity:1,"fill-opacity":1}),r.fill=l,r.opacity=1,r.fillOpacity=1,1},s=function(a){var b=a.getBBox(1);q(a.pattern,{patternTransform:a.matrix.invert()+" translate("+b.x+","+b.y+")"})},t=function(d,e,f){if("path"==d.type){for(var g,h,i,j,k,m=c(e).toLowerCase().split("-"),n=d.paper,r=f?"end":"start",s=d.node,t=d.attrs,u=t["stroke-width"],v=m.length,w="classic",x=3,y=3,z=5;v--;)switch(m[v]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":w=m[v];break;case"wide":y=5;break;case"narrow":y=2;break;case"long":x=5;break;case"short":x=2}if("open"==w?(x+=2,y+=2,z+=2,i=1,j=f?4:1,k={fill:"none",stroke:t.stroke}):(j=i=x/2,k={fill:t.stroke,stroke:"none"}),d._.arrows?f?(d._.arrows.endPath&&p[d._.arrows.endPath]--,d._.arrows.endMarker&&p[d._.arrows.endMarker]--):(d._.arrows.startPath&&p[d._.arrows.startPath]--,d._.arrows.startMarker&&p[d._.arrows.startMarker]--):d._.arrows={},"none"!=w){var A="raphael-marker-"+w,B="raphael-marker-"+r+w+x+y+"-obj"+d.id;a._g.doc.getElementById(A)?p[A]++:(n.defs.appendChild(q(q("path"),{"stroke-linecap":"round",d:o[w],id:A})),p[A]=1);var C,D=a._g.doc.getElementById(B);D?(p[B]++,C=D.getElementsByTagName("use")[0]):(D=q(q("marker"),{id:B,markerHeight:y,markerWidth:x,orient:"auto",refX:j,refY:y/2}),C=q(q("use"),{"xlink:href":"#"+A,transform:(f?"rotate(180 "+x/2+" "+y/2+") ":l)+"scale("+x/z+","+y/z+")","stroke-width":(1/((x/z+y/z)/2)).toFixed(4)}),D.appendChild(C),n.defs.appendChild(D),p[B]=1),q(C,k);var E=i*("diamond"!=w&&"oval"!=w);f?(g=d._.arrows.startdx*u||0,h=a.getTotalLength(t.path)-E*u):(g=E*u,h=a.getTotalLength(t.path)-(d._.arrows.enddx*u||0)),k={},k["marker-"+r]="url(#"+B+")",(h||g)&&(k.d=a.getSubpath(t.path,g,h)),q(s,k),d._.arrows[r+"Path"]=A,d._.arrows[r+"Marker"]=B,d._.arrows[r+"dx"]=E,d._.arrows[r+"Type"]=w,d._.arrows[r+"String"]=e}else f?(g=d._.arrows.startdx*u||0,h=a.getTotalLength(t.path)-g):(g=0,h=a.getTotalLength(t.path)-(d._.arrows.enddx*u||0)),d._.arrows[r+"Path"]&&q(s,{d:a.getSubpath(t.path,g,h)}),delete d._.arrows[r+"Path"],delete d._.arrows[r+"Marker"],delete d._.arrows[r+"dx"],delete d._.arrows[r+"Type"],delete d._.arrows[r+"String"];for(k in p)if(p[b](k)&&!p[k]){var F=a._g.doc.getElementById(k);F&&F.parentNode.removeChild(F)}}},u={"-":[3,1],".":[1,1],"-.":[3,1,1,1],"-..":[3,1,1,1,1,1],". ":[1,3],"- ":[4,3],"--":[8,3],"- .":[4,3,1,3],"--.":[8,3,1,3],"--..":[8,3,1,3,1,3]},v=function(a,b,d){if(b=u[c(b).toLowerCase()]){for(var e=a.attrs["stroke-width"]||"1",f={round:e,square:e,butt:0}[a.attrs["stroke-linecap"]||d["stroke-linecap"]]||0,g=[],h=b.length;h--;)g[h]=b[h]*e+(h%2?1:-1)*f;q(a.node,{"stroke-dasharray":g.join(",")})}else q(a.node,{"stroke-dasharray":"none"})},w=function(d,f){var i=d.node,k=d.attrs,m=i.style.visibility;i.style.visibility="hidden";for(var o in f)if(f[b](o)){if(!a._availableAttrs[b](o))continue;var p=f[o];switch(k[o]=p,o){case"blur":d.blur(p);break;case"title":var u=i.getElementsByTagName("title");if(u.length&&(u=u[0]))u.firstChild.nodeValue=p;else{u=q("title");var w=a._g.doc.createTextNode(p);u.appendChild(w),i.appendChild(u)}break;case"href":case"target":var x=i.parentNode;if("a"!=x.tagName.toLowerCase()){var z=q("a");x.insertBefore(z,i),z.appendChild(i),x=z}"target"==o?x.setAttributeNS(n,"show","blank"==p?"new":p):x.setAttributeNS(n,o,p);break;case"cursor":i.style.cursor=p;break;case"transform":d.transform(p);break;case"arrow-start":t(d,p);break;case"arrow-end":t(d,p,1);break;case"clip-rect":var A=c(p).split(j);if(4==A.length){d.clip&&d.clip.parentNode.parentNode.removeChild(d.clip.parentNode);var B=q("clipPath"),C=q("rect");B.id=a.createUUID(),q(C,{x:A[0],y:A[1],width:A[2],height:A[3]}),B.appendChild(C),d.paper.defs.appendChild(B),q(i,{"clip-path":"url(#"+B.id+")"}),d.clip=C}if(!p){var D=i.getAttribute("clip-path");if(D){var E=a._g.doc.getElementById(D.replace(/(^url\(#|\)$)/g,l));E&&E.parentNode.removeChild(E),q(i,{"clip-path":l}),delete d.clip}}break;case"path":"path"==d.type&&(q(i,{d:p?k.path=a._pathToAbsolute(p):"M0,0"}),d._.dirty=1,d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1)));break;case"width":if(i.setAttribute(o,p),d._.dirty=1,!k.fx)break;o="x",p=k.x;case"x":k.fx&&(p=-k.x-(k.width||0));case"rx":if("rx"==o&&"rect"==d.type)break;case"cx":i.setAttribute(o,p),d.pattern&&s(d),d._.dirty=1;break;case"height":if(i.setAttribute(o,p),d._.dirty=1,!k.fy)break;o="y",p=k.y;case"y":k.fy&&(p=-k.y-(k.height||0));case"ry":if("ry"==o&&"rect"==d.type)break;case"cy":i.setAttribute(o,p),d.pattern&&s(d),d._.dirty=1;break;case"r":"rect"==d.type?q(i,{rx:p,ry:p}):i.setAttribute(o,p),d._.dirty=1;break;case"src":"image"==d.type&&i.setAttributeNS(n,"href",p);break;case"stroke-width":(1!=d._.sx||1!=d._.sy)&&(p/=g(h(d._.sx),h(d._.sy))||1),i.setAttribute(o,p),k["stroke-dasharray"]&&v(d,k["stroke-dasharray"],f),d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1));break;case"stroke-dasharray":v(d,p,f);break;case"fill":var F=c(p).match(a._ISURL);if(F){B=q("pattern");var G=q("image");B.id=a.createUUID(),q(B,{x:0,y:0,patternUnits:"userSpaceOnUse",height:1,width:1}),q(G,{x:0,y:0,"xlink:href":F[1]}),B.appendChild(G),function(b){a._preload(F[1],function(){var a=this.offsetWidth,c=this.offsetHeight;q(b,{width:a,height:c}),q(G,{width:a,height:c})})}(B),d.paper.defs.appendChild(B),q(i,{fill:"url(#"+B.id+")"}),d.pattern=B,d.pattern&&s(d);break}var H=a.getRGB(p);if(H.error){if(("circle"==d.type||"ellipse"==d.type||"r"!=c(p).charAt())&&r(d,p)){if("opacity"in k||"fill-opacity"in k){var I=a._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g,l));if(I){var J=I.getElementsByTagName("stop");q(J[J.length-1],{"stop-opacity":("opacity"in k?k.opacity:1)*("fill-opacity"in k?k["fill-opacity"]:1)})}}k.gradient=p,k.fill="none";break}}else delete f.gradient,delete k.gradient,!a.is(k.opacity,"undefined")&&a.is(f.opacity,"undefined")&&q(i,{opacity:k.opacity}),!a.is(k["fill-opacity"],"undefined")&&a.is(f["fill-opacity"],"undefined")&&q(i,{"fill-opacity":k["fill-opacity"]});H[b]("opacity")&&q(i,{"fill-opacity":H.opacity>1?H.opacity/100:H.opacity});case"stroke":H=a.getRGB(p),i.setAttribute(o,H.hex),"stroke"==o&&H[b]("opacity")&&q(i,{"stroke-opacity":H.opacity>1?H.opacity/100:H.opacity}),"stroke"==o&&d._.arrows&&("startString"in d._.arrows&&t(d,d._.arrows.startString),"endString"in d._.arrows&&t(d,d._.arrows.endString,1));break;case"gradient":("circle"==d.type||"ellipse"==d.type||"r"!=c(p).charAt())&&r(d,p); - -break;case"opacity":k.gradient&&!k[b]("stroke-opacity")&&q(i,{"stroke-opacity":p>1?p/100:p});case"fill-opacity":if(k.gradient){I=a._g.doc.getElementById(i.getAttribute("fill").replace(/^url\(#|\)$/g,l)),I&&(J=I.getElementsByTagName("stop"),q(J[J.length-1],{"stop-opacity":p}));break}default:"font-size"==o&&(p=e(p,10)+"px");var K=o.replace(/(\-.)/g,function(a){return a.substring(1).toUpperCase()});i.style[K]=p,d._.dirty=1,i.setAttribute(o,p)}}y(d,f),i.style.visibility=m},x=1.2,y=function(d,f){if("text"==d.type&&(f[b]("text")||f[b]("font")||f[b]("font-size")||f[b]("x")||f[b]("y"))){var g=d.attrs,h=d.node,i=h.firstChild?e(a._g.doc.defaultView.getComputedStyle(h.firstChild,l).getPropertyValue("font-size"),10):10;if(f[b]("text")){for(g.text=f.text;h.firstChild;)h.removeChild(h.firstChild);for(var j,k=c(f.text).split("\n"),m=[],n=0,o=k.length;o>n;n++)j=q("tspan"),n&&q(j,{dy:i*x,x:g.x}),j.appendChild(a._g.doc.createTextNode(k[n])),h.appendChild(j),m[n]=j}else for(m=h.getElementsByTagName("tspan"),n=0,o=m.length;o>n;n++)n?q(m[n],{dy:i*x,x:g.x}):q(m[0],{dy:0});q(h,{x:g.x,y:g.y}),d._.dirty=1;var p=d._getBBox(),r=g.y-(p.y+p.height/2);r&&a.is(r,"finite")&&q(m[0],{dy:r})}},z=function(a){return a.parentNode&&"a"===a.parentNode.tagName.toLowerCase()?a.parentNode:a},A=function(b,c){this[0]=this.node=b,b.raphael=!0,this.id=a._oid++,b.raphaelid=this.id,this.matrix=a.matrix(),this.realPath=null,this.paper=c,this.attrs=this.attrs||{},this._={transform:[],sx:1,sy:1,deg:0,dx:0,dy:0,dirty:1},!c.bottom&&(c.bottom=this),this.prev=c.top,c.top&&(c.top.next=this),c.top=this,this.next=null},B=a.el;A.prototype=B,B.constructor=A,a._engine.path=function(a,b){var c=q("path");b.canvas&&b.canvas.appendChild(c);var d=new A(c,b);return d.type="path",w(d,{fill:"none",stroke:"#000",path:a}),d},B.rotate=function(a,b,e){if(this.removed)return this;if(a=c(a).split(j),a.length-1&&(b=d(a[1]),e=d(a[2])),a=d(a[0]),null==e&&(b=e),null==b||null==e){var f=this.getBBox(1);b=f.x+f.width/2,e=f.y+f.height/2}return this.transform(this._.transform.concat([["r",a,b,e]])),this},B.scale=function(a,b,e,f){if(this.removed)return this;if(a=c(a).split(j),a.length-1&&(b=d(a[1]),e=d(a[2]),f=d(a[3])),a=d(a[0]),null==b&&(b=a),null==f&&(e=f),null==e||null==f)var g=this.getBBox(1);return e=null==e?g.x+g.width/2:e,f=null==f?g.y+g.height/2:f,this.transform(this._.transform.concat([["s",a,b,e,f]])),this},B.translate=function(a,b){return this.removed?this:(a=c(a).split(j),a.length-1&&(b=d(a[1])),a=d(a[0])||0,b=+b||0,this.transform(this._.transform.concat([["t",a,b]])),this)},B.transform=function(c){var d=this._;if(null==c)return d.transform;if(a._extractTransform(this,c),this.clip&&q(this.clip,{transform:this.matrix.invert()}),this.pattern&&s(this),this.node&&q(this.node,{transform:this.matrix}),1!=d.sx||1!=d.sy){var e=this.attrs[b]("stroke-width")?this.attrs["stroke-width"]:1;this.attr({"stroke-width":e})}return this},B.hide=function(){return this.removed||(this.node.style.display="none"),this},B.show=function(){return this.removed||(this.node.style.display=""),this},B.remove=function(){var b=z(this.node);if(!this.removed&&b.parentNode){var c=this.paper;c.__set__&&c.__set__.exclude(this),k.unbind("raphael.*.*."+this.id),this.gradient&&c.defs.removeChild(this.gradient),a._tear(this,c),b.parentNode.removeChild(b),this.removeData();for(var d in this)this[d]="function"==typeof this[d]?a._removedFactory(d):null;this.removed=!0}},B._getBBox=function(){if("none"==this.node.style.display){this.show();var a=!0}var b,c=!1;this.paper.canvas.parentElement?b=this.paper.canvas.parentElement.style:this.paper.canvas.parentNode&&(b=this.paper.canvas.parentNode.style),b&&"none"==b.display&&(c=!0,b.display="");var d={};try{d=this.node.getBBox()}catch(e){d={x:this.node.clientLeft,y:this.node.clientTop,width:this.node.clientWidth,height:this.node.clientHeight}}finally{d=d||{},c&&(b.display="none")}return a&&this.hide(),d},B.attr=function(c,d){if(this.removed)return this;if(null==c){var e={};for(var f in this.attrs)this.attrs[b](f)&&(e[f]=this.attrs[f]);return e.gradient&&"none"==e.fill&&(e.fill=e.gradient)&&delete e.gradient,e.transform=this._.transform,e}if(null==d&&a.is(c,"string")){if("fill"==c&&"none"==this.attrs.fill&&this.attrs.gradient)return this.attrs.gradient;if("transform"==c)return this._.transform;for(var g=c.split(j),h={},i=0,l=g.length;l>i;i++)c=g[i],c in this.attrs?h[c]=this.attrs[c]:a.is(this.paper.customAttributes[c],"function")?h[c]=this.paper.customAttributes[c].def:h[c]=a._availableAttrs[c];return l-1?h:h[g[0]]}if(null==d&&a.is(c,"array")){for(h={},i=0,l=c.length;l>i;i++)h[c[i]]=this.attr(c[i]);return h}if(null!=d){var m={};m[c]=d}else null!=c&&a.is(c,"object")&&(m=c);for(var n in m)k("raphael.attr."+n+"."+this.id,this,m[n]);for(n in this.paper.customAttributes)if(this.paper.customAttributes[b](n)&&m[b](n)&&a.is(this.paper.customAttributes[n],"function")){var o=this.paper.customAttributes[n].apply(this,[].concat(m[n]));this.attrs[n]=m[n];for(var p in o)o[b](p)&&(m[p]=o[p])}return w(this,m),this},B.toFront=function(){if(this.removed)return this;var b=z(this.node);b.parentNode.appendChild(b);var c=this.paper;return c.top!=this&&a._tofront(this,c),this},B.toBack=function(){if(this.removed)return this;var b=z(this.node),c=b.parentNode;c.insertBefore(b,c.firstChild),a._toback(this,this.paper);this.paper;return this},B.insertAfter=function(b){if(this.removed||!b)return this;var c=z(this.node),d=z(b.node||b[b.length-1].node);return d.nextSibling?d.parentNode.insertBefore(c,d.nextSibling):d.parentNode.appendChild(c),a._insertafter(this,b,this.paper),this},B.insertBefore=function(b){if(this.removed||!b)return this;var c=z(this.node),d=z(b.node||b[0].node);return d.parentNode.insertBefore(c,d),a._insertbefore(this,b,this.paper),this},B.blur=function(b){var c=this;if(0!==+b){var d=q("filter"),e=q("feGaussianBlur");c.attrs.blur=b,d.id=a.createUUID(),q(e,{stdDeviation:+b||1.5}),d.appendChild(e),c.paper.defs.appendChild(d),c._blur=d,q(c.node,{filter:"url(#"+d.id+")"})}else c._blur&&(c._blur.parentNode.removeChild(c._blur),delete c._blur,delete c.attrs.blur),c.node.removeAttribute("filter");return c},a._engine.circle=function(a,b,c,d){var e=q("circle");a.canvas&&a.canvas.appendChild(e);var f=new A(e,a);return f.attrs={cx:b,cy:c,r:d,fill:"none",stroke:"#000"},f.type="circle",q(e,f.attrs),f},a._engine.rect=function(a,b,c,d,e,f){var g=q("rect");a.canvas&&a.canvas.appendChild(g);var h=new A(g,a);return h.attrs={x:b,y:c,width:d,height:e,rx:f||0,ry:f||0,fill:"none",stroke:"#000"},h.type="rect",q(g,h.attrs),h},a._engine.ellipse=function(a,b,c,d,e){var f=q("ellipse");a.canvas&&a.canvas.appendChild(f);var g=new A(f,a);return g.attrs={cx:b,cy:c,rx:d,ry:e,fill:"none",stroke:"#000"},g.type="ellipse",q(f,g.attrs),g},a._engine.image=function(a,b,c,d,e,f){var g=q("image");q(g,{x:c,y:d,width:e,height:f,preserveAspectRatio:"none"}),g.setAttributeNS(n,"href",b),a.canvas&&a.canvas.appendChild(g);var h=new A(g,a);return h.attrs={x:c,y:d,width:e,height:f,src:b},h.type="image",h},a._engine.text=function(b,c,d,e){var f=q("text");b.canvas&&b.canvas.appendChild(f);var g=new A(f,b);return g.attrs={x:c,y:d,"text-anchor":"middle",text:e,"font-family":a._availableAttrs["font-family"],"font-size":a._availableAttrs["font-size"],stroke:"none",fill:"#000"},g.type="text",w(g,g.attrs),g},a._engine.setSize=function(a,b){return this.width=a||this.width,this.height=b||this.height,this.canvas.setAttribute("width",this.width),this.canvas.setAttribute("height",this.height),this._viewBox&&this.setViewBox.apply(this,this._viewBox),this},a._engine.create=function(){var b=a._getContainer.apply(0,arguments),c=b&&b.container,d=b.x,e=b.y,f=b.width,g=b.height;if(!c)throw new Error("SVG container not found.");var h,i=q("svg"),j="overflow:hidden;";return d=d||0,e=e||0,f=f||512,g=g||342,q(i,{height:g,version:1.1,width:f,xmlns:"http://www.w3.org/2000/svg","xmlns:xlink":"http://www.w3.org/1999/xlink"}),1==c?(i.style.cssText=j+"position:absolute;left:"+d+"px;top:"+e+"px",a._g.doc.body.appendChild(i),h=1):(i.style.cssText=j+"position:relative",c.firstChild?c.insertBefore(i,c.firstChild):c.appendChild(i)),c=new a._Paper,c.width=f,c.height=g,c.canvas=i,c.clear(),c._left=c._top=0,h&&(c.renderfix=function(){}),c.renderfix(),c},a._engine.setViewBox=function(a,b,c,d,e){k("raphael.setViewBox",this,this._viewBox,[a,b,c,d,e]);var f,h,i=this.getSize(),j=g(c/i.width,d/i.height),l=this.top,n=e?"xMidYMid meet":"xMinYMin";for(null==a?(this._vbSize&&(j=1),delete this._vbSize,f="0 0 "+this.width+m+this.height):(this._vbSize=j,f=a+m+b+m+c+m+d),q(this.canvas,{viewBox:f,preserveAspectRatio:n});j&&l;)h="stroke-width"in l.attrs?l.attrs["stroke-width"]:1,l.attr({"stroke-width":h}),l._.dirty=1,l._.dirtyT=1,l=l.prev;return this._viewBox=[a,b,c,d,!!e],this},a.prototype.renderfix=function(){var a,b=this.canvas,c=b.style;try{a=b.getScreenCTM()||b.createSVGMatrix()}catch(d){a=b.createSVGMatrix()}var e=-a.e%1,f=-a.f%1;(e||f)&&(e&&(this._left=(this._left+e)%1,c.left=this._left+"px"),f&&(this._top=(this._top+f)%1,c.top=this._top+"px"))},a.prototype.clear=function(){a.eve("raphael.clear",this);for(var b=this.canvas;b.firstChild;)b.removeChild(b.firstChild);this.bottom=this.top=null,(this.desc=q("desc")).appendChild(a._g.doc.createTextNode("Created with Raphaël "+a.version)),b.appendChild(this.desc),b.appendChild(this.defs=q("defs"))},a.prototype.remove=function(){k("raphael.remove",this),this.canvas.parentNode&&this.canvas.parentNode.removeChild(this.canvas);for(var b in this)this[b]="function"==typeof this[b]?a._removedFactory(b):null};var C=a.st;for(var D in B)B[b](D)&&!C[b](D)&&(C[D]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(D))}}),function(a,b){"function"==typeof define&&define.amd?define("raphael.vml",["raphael.core"],function(a){return b(a)}):b("object"==typeof exports?require("./raphael.core"):a.Raphael)}(this,function(a){if(!a||a.vml){var b="hasOwnProperty",c=String,d=parseFloat,e=Math,f=e.round,g=e.max,h=e.min,i=e.abs,j="fill",k=/[, ]+/,l=a.eve,m=" progid:DXImageTransform.Microsoft",n=" ",o="",p={M:"m",L:"l",C:"c",Z:"x",m:"t",l:"r",c:"v",z:"x"},q=/([clmz]),?([^clmz]*)/gi,r=/ progid:\S+Blur\([^\)]+\)/g,s=/-?[^,\s-]+/g,t="position:absolute;left:0;top:0;width:1px;height:1px;behavior:url(#default#VML)",u=21600,v={path:1,rect:1,image:1},w={circle:1,ellipse:1},x=function(b){var d=/[ahqstv]/gi,e=a._pathToAbsolute;if(c(b).match(d)&&(e=a._path2curve),d=/[clmz]/g,e==a._pathToAbsolute&&!c(b).match(d)){var g=c(b).replace(q,function(a,b,c){var d=[],e="m"==b.toLowerCase(),g=p[b];return c.replace(s,function(a){e&&2==d.length&&(g+=d+p["m"==b?"l":"L"],d=[]),d.push(f(a*u))}),g+d});return g}var h,i,j=e(b);g=[];for(var k=0,l=j.length;l>k;k++){h=j[k],i=j[k][0].toLowerCase(),"z"==i&&(i="x");for(var m=1,r=h.length;r>m;m++)i+=f(h[m]*u)+(m!=r-1?",":o);g.push(i)}return g.join(n)},y=function(b,c,d){var e=a.matrix();return e.rotate(-b,.5,.5),{dx:e.x(c,d),dy:e.y(c,d)}},z=function(a,b,c,d,e,f){var g=a._,h=a.matrix,k=g.fillpos,l=a.node,m=l.style,o=1,p="",q=u/b,r=u/c;if(m.visibility="hidden",b&&c){if(l.coordsize=i(q)+n+i(r),m.rotation=f*(0>b*c?-1:1),f){var s=y(f,d,e);d=s.dx,e=s.dy}if(0>b&&(p+="x"),0>c&&(p+=" y")&&(o=-1),m.flip=p,l.coordorigin=d*-q+n+e*-r,k||g.fillsize){var t=l.getElementsByTagName(j);t=t&&t[0],l.removeChild(t),k&&(s=y(f,h.x(k[0],k[1]),h.y(k[0],k[1])),t.position=s.dx*o+n+s.dy*o),g.fillsize&&(t.size=g.fillsize[0]*i(b)+n+g.fillsize[1]*i(c)),l.appendChild(t)}m.visibility="visible"}};a.toString=function(){return"Your browser doesn’t support SVG. Falling down to VML.\nYou are running Raphaël "+this.version};var A=function(a,b,d){for(var e=c(b).toLowerCase().split("-"),f=d?"end":"start",g=e.length,h="classic",i="medium",j="medium";g--;)switch(e[g]){case"block":case"classic":case"oval":case"diamond":case"open":case"none":h=e[g];break;case"wide":case"narrow":j=e[g];break;case"long":case"short":i=e[g]}var k=a.node.getElementsByTagName("stroke")[0];k[f+"arrow"]=h,k[f+"arrowlength"]=i,k[f+"arrowwidth"]=j},B=function(e,i){e.attrs=e.attrs||{};var l=e.node,m=e.attrs,p=l.style,q=v[e.type]&&(i.x!=m.x||i.y!=m.y||i.width!=m.width||i.height!=m.height||i.cx!=m.cx||i.cy!=m.cy||i.rx!=m.rx||i.ry!=m.ry||i.r!=m.r),r=w[e.type]&&(m.cx!=i.cx||m.cy!=i.cy||m.r!=i.r||m.rx!=i.rx||m.ry!=i.ry),s=e;for(var t in i)i[b](t)&&(m[t]=i[t]);if(q&&(m.path=a._getPath[e.type](e),e._.dirty=1),i.href&&(l.href=i.href),i.title&&(l.title=i.title),i.target&&(l.target=i.target),i.cursor&&(p.cursor=i.cursor),"blur"in i&&e.blur(i.blur),(i.path&&"path"==e.type||q)&&(l.path=x(~c(m.path).toLowerCase().indexOf("r")?a._pathToAbsolute(m.path):m.path),e._.dirty=1,"image"==e.type&&(e._.fillpos=[m.x,m.y],e._.fillsize=[m.width,m.height],z(e,1,1,0,0,0))),"transform"in i&&e.transform(i.transform),r){var y=+m.cx,B=+m.cy,D=+m.rx||+m.r||0,E=+m.ry||+m.r||0;l.path=a.format("ar{0},{1},{2},{3},{4},{1},{4},{1}x",f((y-D)*u),f((B-E)*u),f((y+D)*u),f((B+E)*u),f(y*u)),e._.dirty=1}if("clip-rect"in i){var G=c(i["clip-rect"]).split(k);if(4==G.length){G[2]=+G[2]+ +G[0],G[3]=+G[3]+ +G[1];var H=l.clipRect||a._g.doc.createElement("div"),I=H.style;I.clip=a.format("rect({1}px {2}px {3}px {0}px)",G),l.clipRect||(I.position="absolute",I.top=0,I.left=0,I.width=e.paper.width+"px",I.height=e.paper.height+"px",l.parentNode.insertBefore(H,l),H.appendChild(l),l.clipRect=H)}i["clip-rect"]||l.clipRect&&(l.clipRect.style.clip="auto")}if(e.textpath){var J=e.textpath.style;i.font&&(J.font=i.font),i["font-family"]&&(J.fontFamily='"'+i["font-family"].split(",")[0].replace(/^['"]+|['"]+$/g,o)+'"'),i["font-size"]&&(J.fontSize=i["font-size"]),i["font-weight"]&&(J.fontWeight=i["font-weight"]),i["font-style"]&&(J.fontStyle=i["font-style"])}if("arrow-start"in i&&A(s,i["arrow-start"]),"arrow-end"in i&&A(s,i["arrow-end"],1),null!=i.opacity||null!=i["stroke-width"]||null!=i.fill||null!=i.src||null!=i.stroke||null!=i["stroke-width"]||null!=i["stroke-opacity"]||null!=i["fill-opacity"]||null!=i["stroke-dasharray"]||null!=i["stroke-miterlimit"]||null!=i["stroke-linejoin"]||null!=i["stroke-linecap"]){var K=l.getElementsByTagName(j),L=!1;if(K=K&&K[0],!K&&(L=K=F(j)),"image"==e.type&&i.src&&(K.src=i.src),i.fill&&(K.on=!0),(null==K.on||"none"==i.fill||null===i.fill)&&(K.on=!1),K.on&&i.fill){var M=c(i.fill).match(a._ISURL);if(M){K.parentNode==l&&l.removeChild(K),K.rotate=!0,K.src=M[1],K.type="tile";var N=e.getBBox(1);K.position=N.x+n+N.y,e._.fillpos=[N.x,N.y],a._preload(M[1],function(){e._.fillsize=[this.offsetWidth,this.offsetHeight]})}else K.color=a.getRGB(i.fill).hex,K.src=o,K.type="solid",a.getRGB(i.fill).error&&(s.type in{circle:1,ellipse:1}||"r"!=c(i.fill).charAt())&&C(s,i.fill,K)&&(m.fill="none",m.gradient=i.fill,K.rotate=!1)}if("fill-opacity"in i||"opacity"in i){var O=((+m["fill-opacity"]+1||2)-1)*((+m.opacity+1||2)-1)*((+a.getRGB(i.fill).o+1||2)-1);O=h(g(O,0),1),K.opacity=O,K.src&&(K.color="none")}l.appendChild(K);var P=l.getElementsByTagName("stroke")&&l.getElementsByTagName("stroke")[0],Q=!1;!P&&(Q=P=F("stroke")),(i.stroke&&"none"!=i.stroke||i["stroke-width"]||null!=i["stroke-opacity"]||i["stroke-dasharray"]||i["stroke-miterlimit"]||i["stroke-linejoin"]||i["stroke-linecap"])&&(P.on=!0),("none"==i.stroke||null===i.stroke||null==P.on||0==i.stroke||0==i["stroke-width"])&&(P.on=!1);var R=a.getRGB(i.stroke);P.on&&i.stroke&&(P.color=R.hex),O=((+m["stroke-opacity"]+1||2)-1)*((+m.opacity+1||2)-1)*((+R.o+1||2)-1);var S=.75*(d(i["stroke-width"])||1);if(O=h(g(O,0),1),null==i["stroke-width"]&&(S=m["stroke-width"]),i["stroke-width"]&&(P.weight=S),S&&1>S&&(O*=S)&&(P.weight=1),P.opacity=O,i["stroke-linejoin"]&&(P.joinstyle=i["stroke-linejoin"]||"miter"),P.miterlimit=i["stroke-miterlimit"]||8,i["stroke-linecap"]&&(P.endcap="butt"==i["stroke-linecap"]?"flat":"square"==i["stroke-linecap"]?"square":"round"),"stroke-dasharray"in i){var T={"-":"shortdash",".":"shortdot","-.":"shortdashdot","-..":"shortdashdotdot",". ":"dot","- ":"dash","--":"longdash","- .":"dashdot","--.":"longdashdot","--..":"longdashdotdot"};P.dashstyle=T[b](i["stroke-dasharray"])?T[i["stroke-dasharray"]]:o}Q&&l.appendChild(P)}if("text"==s.type){s.paper.canvas.style.display=o;var U=s.paper.span,V=100,W=m.font&&m.font.match(/\d+(?:\.\d*)?(?=px)/);p=U.style,m.font&&(p.font=m.font),m["font-family"]&&(p.fontFamily=m["font-family"]),m["font-weight"]&&(p.fontWeight=m["font-weight"]),m["font-style"]&&(p.fontStyle=m["font-style"]),W=d(m["font-size"]||W&&W[0])||10,p.fontSize=W*V+"px",s.textpath.string&&(U.innerHTML=c(s.textpath.string).replace(/"));var X=U.getBoundingClientRect();s.W=m.w=(X.right-X.left)/V,s.H=m.h=(X.bottom-X.top)/V,s.X=m.x,s.Y=m.y+s.H/2,("x"in i||"y"in i)&&(s.path.v=a.format("m{0},{1}l{2},{1}",f(m.x*u),f(m.y*u),f(m.x*u)+1));for(var Y=["x","y","text","font","font-family","font-weight","font-style","font-size"],Z=0,$=Y.length;$>Z;Z++)if(Y[Z]in i){s._.dirty=1;break}switch(m["text-anchor"]){case"start":s.textpath.style["v-text-align"]="left",s.bbx=s.W/2;break;case"end":s.textpath.style["v-text-align"]="right",s.bbx=-s.W/2;break;default:s.textpath.style["v-text-align"]="center",s.bbx=0}s.textpath.style["v-text-kern"]=!0}},C=function(b,f,g){b.attrs=b.attrs||{};var h=(b.attrs,Math.pow),i="linear",j=".5 .5";if(b.attrs.gradient=f,f=c(f).replace(a._radial_gradient,function(a,b,c){return i="radial",b&&c&&(b=d(b),c=d(c),h(b-.5,2)+h(c-.5,2)>.25&&(c=e.sqrt(.25-h(b-.5,2))*(2*(c>.5)-1)+.5),j=b+n+c),o}),f=f.split(/\s*\-\s*/),"linear"==i){var k=f.shift();if(k=-d(k),isNaN(k))return null}var l=a._parseDots(f);if(!l)return null;if(b=b.shape||b.node,l.length){b.removeChild(g),g.on=!0,g.method="none",g.color=l[0].color,g.color2=l[l.length-1].color;for(var m=[],p=0,q=l.length;q>p;p++)l[p].offset&&m.push(l[p].offset+n+l[p].color);g.colors=m.length?m.join():"0% "+g.color,"radial"==i?(g.type="gradientTitle",g.focus="100%",g.focussize="0 0",g.focusposition=j,g.angle=0):(g.type="gradient",g.angle=(270-k)%360),b.appendChild(g)}return 1},D=function(b,c){this[0]=this.node=b,b.raphael=!0,this.id=a._oid++,b.raphaelid=this.id,this.X=0,this.Y=0,this.attrs={},this.paper=c,this.matrix=a.matrix(),this._={transform:[],sx:1,sy:1,dx:0,dy:0,deg:0,dirty:1,dirtyT:1},!c.bottom&&(c.bottom=this),this.prev=c.top,c.top&&(c.top.next=this),c.top=this,this.next=null},E=a.el;D.prototype=E,E.constructor=D,E.transform=function(b){if(null==b)return this._.transform;var d,e=this.paper._viewBoxShift,f=e?"s"+[e.scale,e.scale]+"-1-1t"+[e.dx,e.dy]:o;e&&(d=b=c(b).replace(/\.{3}|\u2026/g,this._.transform||o)),a._extractTransform(this,f+b);var g,h=this.matrix.clone(),i=this.skew,j=this.node,k=~c(this.attrs.fill).indexOf("-"),l=!c(this.attrs.fill).indexOf("url(");if(h.translate(1,1),l||k||"image"==this.type)if(i.matrix="1 0 0 1",i.offset="0 0",g=h.split(),k&&g.noRotation||!g.isSimple){j.style.filter=h.toFilter();var m=this.getBBox(),p=this.getBBox(1),q=m.x-p.x,r=m.y-p.y;j.coordorigin=q*-u+n+r*-u,z(this,1,1,q,r,0)}else j.style.filter=o,z(this,g.scalex,g.scaley,g.dx,g.dy,g.rotate);else j.style.filter=o,i.matrix=c(h),i.offset=h.offset();return null!==d&&(this._.transform=d,a._extractTransform(this,d)),this},E.rotate=function(a,b,e){if(this.removed)return this;if(null!=a){if(a=c(a).split(k),a.length-1&&(b=d(a[1]),e=d(a[2])),a=d(a[0]),null==e&&(b=e),null==b||null==e){var f=this.getBBox(1);b=f.x+f.width/2,e=f.y+f.height/2}return this._.dirtyT=1,this.transform(this._.transform.concat([["r",a,b,e]])),this}},E.translate=function(a,b){return this.removed?this:(a=c(a).split(k),a.length-1&&(b=d(a[1])),a=d(a[0])||0,b=+b||0,this._.bbox&&(this._.bbox.x+=a,this._.bbox.y+=b),this.transform(this._.transform.concat([["t",a,b]])),this)},E.scale=function(a,b,e,f){if(this.removed)return this;if(a=c(a).split(k),a.length-1&&(b=d(a[1]),e=d(a[2]),f=d(a[3]),isNaN(e)&&(e=null),isNaN(f)&&(f=null)),a=d(a[0]),null==b&&(b=a),null==f&&(e=f),null==e||null==f)var g=this.getBBox(1);return e=null==e?g.x+g.width/2:e,f=null==f?g.y+g.height/2:f,this.transform(this._.transform.concat([["s",a,b,e,f]])),this._.dirtyT=1,this},E.hide=function(){return!this.removed&&(this.node.style.display="none"),this},E.show=function(){return!this.removed&&(this.node.style.display=o),this},E.auxGetBBox=a.el.getBBox,E.getBBox=function(){var a=this.auxGetBBox();if(this.paper&&this.paper._viewBoxShift){var b={},c=1/this.paper._viewBoxShift.scale;return b.x=a.x-this.paper._viewBoxShift.dx,b.x*=c,b.y=a.y-this.paper._viewBoxShift.dy,b.y*=c,b.width=a.width*c,b.height=a.height*c,b.x2=b.x+b.width,b.y2=b.y+b.height,b}return a},E._getBBox=function(){return this.removed?{}:{x:this.X+(this.bbx||0)-this.W/2,y:this.Y-this.H,width:this.W,height:this.H}},E.remove=function(){if(!this.removed&&this.node.parentNode){this.paper.__set__&&this.paper.__set__.exclude(this),a.eve.unbind("raphael.*.*."+this.id),a._tear(this,this.paper),this.node.parentNode.removeChild(this.node),this.shape&&this.shape.parentNode.removeChild(this.shape);for(var b in this)this[b]="function"==typeof this[b]?a._removedFactory(b):null;this.removed=!0}},E.attr=function(c,d){if(this.removed)return this;if(null==c){var e={};for(var f in this.attrs)this.attrs[b](f)&&(e[f]=this.attrs[f]);return e.gradient&&"none"==e.fill&&(e.fill=e.gradient)&&delete e.gradient,e.transform=this._.transform,e}if(null==d&&a.is(c,"string")){if(c==j&&"none"==this.attrs.fill&&this.attrs.gradient)return this.attrs.gradient;for(var g=c.split(k),h={},i=0,m=g.length;m>i;i++)c=g[i],c in this.attrs?h[c]=this.attrs[c]:a.is(this.paper.customAttributes[c],"function")?h[c]=this.paper.customAttributes[c].def:h[c]=a._availableAttrs[c];return m-1?h:h[g[0]]}if(this.attrs&&null==d&&a.is(c,"array")){for(h={},i=0,m=c.length;m>i;i++)h[c[i]]=this.attr(c[i]);return h}var n;null!=d&&(n={},n[c]=d),null==d&&a.is(c,"object")&&(n=c);for(var o in n)l("raphael.attr."+o+"."+this.id,this,n[o]);if(n){for(o in this.paper.customAttributes)if(this.paper.customAttributes[b](o)&&n[b](o)&&a.is(this.paper.customAttributes[o],"function")){var p=this.paper.customAttributes[o].apply(this,[].concat(n[o]));this.attrs[o]=n[o];for(var q in p)p[b](q)&&(n[q]=p[q])}n.text&&"text"==this.type&&(this.textpath.string=n.text),B(this,n)}return this},E.toFront=function(){return!this.removed&&this.node.parentNode.appendChild(this.node),this.paper&&this.paper.top!=this&&a._tofront(this,this.paper),this},E.toBack=function(){return this.removed?this:(this.node.parentNode.firstChild!=this.node&&(this.node.parentNode.insertBefore(this.node,this.node.parentNode.firstChild),a._toback(this,this.paper)),this)},E.insertAfter=function(b){return this.removed?this:(b.constructor==a.st.constructor&&(b=b[b.length-1]),b.node.nextSibling?b.node.parentNode.insertBefore(this.node,b.node.nextSibling):b.node.parentNode.appendChild(this.node),a._insertafter(this,b,this.paper),this)},E.insertBefore=function(b){return this.removed?this:(b.constructor==a.st.constructor&&(b=b[0]),b.node.parentNode.insertBefore(this.node,b.node),a._insertbefore(this,b,this.paper),this)},E.blur=function(b){var c=this.node.runtimeStyle,d=c.filter;return d=d.replace(r,o),0!==+b?(this.attrs.blur=b,c.filter=d+n+m+".Blur(pixelradius="+(+b||1.5)+")",c.margin=a.format("-{0}px 0 0 -{0}px",f(+b||1.5))):(c.filter=d,c.margin=0,delete this.attrs.blur),this},a._engine.path=function(a,b){var c=F("shape");c.style.cssText=t,c.coordsize=u+n+u,c.coordorigin=b.coordorigin;var d=new D(c,b),e={fill:"none",stroke:"#000"};a&&(e.path=a),d.type="path",d.path=[],d.Path=o,B(d,e),b.canvas.appendChild(c);var f=F("skew");return f.on=!0,c.appendChild(f),d.skew=f,d.transform(o),d},a._engine.rect=function(b,c,d,e,f,g){var h=a._rectPath(c,d,e,f,g),i=b.path(h),j=i.attrs;return i.X=j.x=c,i.Y=j.y=d,i.W=j.width=e,i.H=j.height=f,j.r=g,j.path=h,i.type="rect",i},a._engine.ellipse=function(a,b,c,d,e){{var f=a.path();f.attrs}return f.X=b-d,f.Y=c-e,f.W=2*d,f.H=2*e,f.type="ellipse",B(f,{cx:b,cy:c,rx:d,ry:e}),f},a._engine.circle=function(a,b,c,d){{var e=a.path();e.attrs}return e.X=b-d,e.Y=c-d,e.W=e.H=2*d,e.type="circle",B(e,{cx:b,cy:c,r:d}),e},a._engine.image=function(b,c,d,e,f,g){var h=a._rectPath(d,e,f,g),i=b.path(h).attr({stroke:"none"}),k=i.attrs,l=i.node,m=l.getElementsByTagName(j)[0];return k.src=c,i.X=k.x=d,i.Y=k.y=e,i.W=k.width=f,i.H=k.height=g,k.path=h,i.type="image",m.parentNode==l&&l.removeChild(m),m.rotate=!0,m.src=c,m.type="tile",i._.fillpos=[d,e],i._.fillsize=[f,g],l.appendChild(m),z(i,1,1,0,0,0),i},a._engine.text=function(b,d,e,g){var h=F("shape"),i=F("path"),j=F("textpath");d=d||0,e=e||0,g=g||"",i.v=a.format("m{0},{1}l{2},{1}",f(d*u),f(e*u),f(d*u)+1),i.textpathok=!0,j.string=c(g),j.on=!0,h.style.cssText=t,h.coordsize=u+n+u,h.coordorigin="0 0";var k=new D(h,b),l={fill:"#000",stroke:"none",font:a._availableAttrs.font,text:g};k.shape=h,k.path=i,k.textpath=j,k.type="text",k.attrs.text=c(g),k.attrs.x=d,k.attrs.y=e,k.attrs.w=1,k.attrs.h=1,B(k,l),h.appendChild(j),h.appendChild(i),b.canvas.appendChild(h);var m=F("skew");return m.on=!0,h.appendChild(m),k.skew=m,k.transform(o),k},a._engine.setSize=function(b,c){var d=this.canvas.style;return this.width=b,this.height=c,b==+b&&(b+="px"),c==+c&&(c+="px"),d.width=b,d.height=c,d.clip="rect(0 "+b+" "+c+" 0)",this._viewBox&&a._engine.setViewBox.apply(this,this._viewBox),this},a._engine.setViewBox=function(b,c,d,e,f){a.eve("raphael.setViewBox",this,this._viewBox,[b,c,d,e,f]);var g,h,i=this.getSize(),j=i.width,k=i.height;return f&&(g=k/e,h=j/d,j>d*g&&(b-=(j-d*g)/2/g),k>e*h&&(c-=(k-e*h)/2/h)),this._viewBox=[b,c,d,e,!!f],this._viewBoxShift={dx:-b,dy:-c,scale:i},this.forEach(function(a){a.transform("...")}),this};var F;a._engine.initWin=function(a){var b=a.document;b.styleSheets.length<31?b.createStyleSheet().addRule(".rvml","behavior:url(#default#VML)"):b.styleSheets[0].addRule(".rvml","behavior:url(#default#VML)");try{!b.namespaces.rvml&&b.namespaces.add("rvml","urn:schemas-microsoft-com:vml"),F=function(a){return b.createElement("')}}catch(c){F=function(a){return b.createElement("<"+a+' xmlns="urn:schemas-microsoft.com:vml" class="rvml">')}}},a._engine.initWin(a._g.win),a._engine.create=function(){var b=a._getContainer.apply(0,arguments),c=b.container,d=b.height,e=b.width,f=b.x,g=b.y;if(!c)throw new Error("VML container not found.");var h=new a._Paper,i=h.canvas=a._g.doc.createElement("div"),j=i.style;return f=f||0,g=g||0,e=e||512,d=d||342,h.width=e,h.height=d,e==+e&&(e+="px"),d==+d&&(d+="px"),h.coordsize=1e3*u+n+1e3*u,h.coordorigin="0 0",h.span=a._g.doc.createElement("span"),h.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;",i.appendChild(h.span),j.cssText=a.format("top:0;left:0;width:{0};height:{1};display:inline-block;position:relative;clip:rect(0 {0} {1} 0);overflow:hidden",e,d),1==c?(a._g.doc.body.appendChild(i),j.left=f+"px",j.top=g+"px",j.position="absolute"):c.firstChild?c.insertBefore(i,c.firstChild):c.appendChild(i),h.renderfix=function(){},h},a.prototype.clear=function(){a.eve("raphael.clear",this),this.canvas.innerHTML=o,this.span=a._g.doc.createElement("span"),this.span.style.cssText="position:absolute;left:-9999em;top:-9999em;padding:0;margin:0;line-height:1;display:inline;",this.canvas.appendChild(this.span),this.bottom=this.top=null},a.prototype.remove=function(){a.eve("raphael.remove",this),this.canvas.parentNode.removeChild(this.canvas);for(var b in this)this[b]="function"==typeof this[b]?a._removedFactory(b):null;return!0};var G=a.st;for(var H in E)E[b](H)&&!G[b](H)&&(G[H]=function(a){return function(){var b=arguments;return this.forEach(function(c){c[a].apply(c,b)})}}(H))}}); \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/.babelrc b/examples/SmartSwitch/data_src/js_css_src/styled-notifications/.babelrc deleted file mode 100644 index 377ca70..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/.babelrc +++ /dev/null @@ -1,3 +0,0 @@ -{ - "presets": ["es2015"] -} \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/.eslintrc.js b/examples/SmartSwitch/data_src/js_css_src/styled-notifications/.eslintrc.js deleted file mode 100644 index 5bebe58..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/.eslintrc.js +++ /dev/null @@ -1,31 +0,0 @@ -module.exports = { - "env": { - "browser": true, - "commonjs": true, - "es6": true - }, - "extends": "eslint:recommended", - "parserOptions": { - "sourceType": "module" - }, - "rules": { - "indent": [ - "error", - "tab" - ], - "linebreak-style": [ - "error", - "windows" - ], - "quotes": [ - "error", - "single" - ], - "semi": [ - "error", - "always" - ], - "no-console": 0, - "no-undef": 0 - } -}; \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/.gitignore b/examples/SmartSwitch/data_src/js_css_src/styled-notifications/.gitignore deleted file mode 100644 index f949f35..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/.gitignore +++ /dev/null @@ -1,30 +0,0 @@ -# IDE files -.idea/ -.DS_Store - -# Build directories -build/ - -# Dependency directories -node_modules/ -jspm_packages/ - -# Lock files -yarn.lock -package-lock.json - -# Logs -logs -*.log -npm-debug.log* -yarn-debug.log* -yarn-error.log* - -# Optional npm cache directory -.npm - -# Optional eslint cache -.eslintcache - -# Yarn Integrity file -.yarn-integrity diff --git a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/.travis.yml b/examples/SmartSwitch/data_src/js_css_src/styled-notifications/.travis.yml deleted file mode 100644 index 0fe294a..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/.travis.yml +++ /dev/null @@ -1,3 +0,0 @@ -language: node_js -node_js: - - "7" diff --git a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/LICENSE.md b/examples/SmartSwitch/data_src/js_css_src/styled-notifications/LICENSE.md deleted file mode 100644 index 5506c2d..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/LICENSE.md +++ /dev/null @@ -1,7 +0,0 @@ -# Notifications license - -Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/__tests__/helpers.test.js b/examples/SmartSwitch/data_src/js_css_src/styled-notifications/__tests__/helpers.test.js deleted file mode 100644 index b97ad75..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/__tests__/helpers.test.js +++ /dev/null @@ -1,104 +0,0 @@ -const { partial, append, isString, createElement, createParagraph } = require('../src/helpers'); - -const addNumbers = (x, y) => x + y; - -const sum = (...numbers) => numbers.reduce((total, current) => total + current, 0); - -describe('Helpers', () => { - beforeEach(() => { - document.body.innerHTML = ''; - }); - - describe('Partial', () => { - it('should return a partially applied function', () => { - expect(typeof partial(addNumbers, 10)).toEqual('function'); - }); - - it('should execute function when partially applied function is called', () => { - expect(partial(addNumbers, 20)(10)).toEqual(30); - }); - - it('should gather argument', () => { - expect(partial(sum, 5, 10)(15, 20, 25)).toEqual(75); - }); - }); - - describe('Append', () => { - const container = document.createElement('div'); - document.body.appendChild(container); - - const elementToAppend = document.createElement('h1'); - elementToAppend.classList.add('heading'); - elementToAppend.innerText = 'working'; - - append(container, elementToAppend); - - const element = document.querySelector('.heading'); - expect(element); - - expect(element.innerText).toEqual('working'); - }); - - describe('Is string', () => { - expect(isString(1)).toEqual(false); - expect(isString(null)).toEqual(false); - expect(isString(undefined)).toEqual(false); - expect(isString({})).toEqual(false); - - expect(isString('')).toEqual(true); - expect(isString('a')).toEqual(true); - expect(isString('1')).toEqual(true); - expect(isString('some string')).toEqual(true); - }); - - describe('Create element', () => { - it('should create an element', () => { - expect(createElement('p')).toEqual(document.createElement('p')); - expect(createElement('h1')).toEqual(document.createElement('h1')); - expect(createElement('ul')).toEqual(document.createElement('ul')); - expect(createElement('li')).toEqual(document.createElement('li')); - expect(createElement('div')).toEqual(document.createElement('div')); - expect(createElement('span')).toEqual(document.createElement('span')); - }); - - it('should add class names', () => { - expect(createElement('div', 'someclass1', 'someclass2').classList.contains('someclass2')); - expect(createElement('p', 'para', 'test').classList.contains('para')); - - const mockUl = document.createElement('ul'); - mockUl.classList.add('nav'); - mockUl.classList.add('foo'); - - expect(createElement('ul', 'nav', 'foo').classList).toEqual(mockUl.classList); - }); - }); - - describe('Create paragraph', () => { - it('should create a paragraph', () => { - const p = document.createElement('p'); - p.innerText = 'Some text'; - expect(createParagraph()('Some text')).toEqual(p); - }); - - it('should add class names', () => { - const p = document.createElement('p'); - p.classList.add('body-text'); - p.classList.add('para'); - - expect(createParagraph('body-text', 'para')('')).toEqual(p); - }); - - it('should set inner text', () => { - const p = document.createElement('p'); - p.innerText = 'Hello world!'; - p.classList.add('text'); - - expect(createParagraph('text')('Hello world!')).toEqual(p); - }); - - it('should append to DOM', () => { - append(document.body, createParagraph('text')('hello')); - expect(document.querySelector('.text').innerText).toEqual('hello'); - }); - }); -}); diff --git a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/__tests__/index.tests.js b/examples/SmartSwitch/data_src/js_css_src/styled-notifications/__tests__/index.tests.js deleted file mode 100644 index 9a69d16..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/__tests__/index.tests.js +++ /dev/null @@ -1,144 +0,0 @@ -require('../src/index'); - -describe('Notifications', () => { - beforeEach(() => { - document.body.innerHTML = ''; - }); - - it('should display a console warning if no title or message is passed', () => { - jest.spyOn(global.console, 'warn'); - window.createNotification()(); - expect(console.warn).toBeCalled(); - }); - - it('should render a default notification', () => { - const notification = window.createNotification(); - - const title = 'I am a title'; - - // Should initially not contain any notifications - expect(document.querySelectorAll('.ncf').length).toEqual(0); - - // Create a notification instance with a title - notification({ title }); - - // Should be one notification with the title passed in - expect(document.querySelectorAll('.ncf').length).toEqual(1); - expect(document.querySelector('.ncf-title').innerText).toEqual(title); - - // Create a second instance so there should now be two instances - notification({ title }); - expect(document.querySelectorAll('.ncf').length).toEqual(2); - }); - - it('should close on click if the option is enabled', () => { - const notification = window.createNotification({ - closeOnClick: true - }); - - // Create a notification with a generic body - notification({ message: 'some text' }); - - // Should be one notification instance - expect(document.querySelectorAll('.ncf').length).toEqual(1); - - // Click the notification - document.querySelector('.ncf').click(); - - expect(document.querySelectorAll('.ncf').length).toEqual(0); - }); - - it('should not close on click if the option is disabled', () => { - const notification = window.createNotification({ - closeOnClick: false - }); - - // Create a notification with a generic body - notification({ message: 'some text' }); - - // Should be one notification instance - expect(document.querySelectorAll('.ncf').length).toEqual(1); - - // Click the notification - document.querySelector('.ncf').click(); - - expect(document.querySelectorAll('.ncf').length).toEqual(1); - }); - - it('should set position class if valid', () => { - const validPositions = [ - 'nfc-top-left', - 'nfc-top-right', - 'nfc-bottom-left', - 'nfc-bottom-right' - ]; - - validPositions.forEach(position => { - const notification = window.createNotification({ - positionClass: position - }); - - notification({ title: 'title here' }); - - const className = `.${position}`; - - expect(document.querySelectorAll(className).length).toEqual(1); - - const container = document.querySelector(className); - expect(container.querySelectorAll('.ncf').length).toEqual(1); - }); - }); - - it('should revert to default to default position and warn if class is invalid', () => { - const notification = window.createNotification({ - positionClass: 'invalid-name' - }); - - jest.spyOn(global.console, 'warn'); - - notification({ message: 'test' }); - - expect(console.warn).toBeCalled(); - - expect(document.querySelectorAll('.nfc-top-right').length).toEqual(1); - }); - - it('should allow a custom onclick callback', () => { - let a = 'not clicked'; - - const notification = window.createNotification({ - onclick: () => { - a = 'clicked'; - } - }); - - notification({ message: 'click test' }); - - expect(a).toEqual('not clicked'); - - // Click the notification - document.querySelector('.ncf').click(); - - expect(a).toEqual('clicked'); - }); - - it('should show for correct duration', () => { - const notification = window.createNotification({ - showDuration: 500 - }); - - notification({ message: 'test' }); - - expect(document.querySelectorAll('.ncf').length).toEqual(1); - - // Should exist after 400ms - setTimeout(() => { - expect(document.querySelectorAll('.ncf').length).toEqual(1); - }, 400); - - // Should delete after 500ms - setTimeout(() => { - expect(document.querySelectorAll('.ncf').length).toEqual(0); - }); - }, 501); -}); diff --git a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/demo/demo.js b/examples/SmartSwitch/data_src/js_css_src/styled-notifications/demo/demo.js deleted file mode 100644 index d2f0fad..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/demo/demo.js +++ /dev/null @@ -1,34 +0,0 @@ -'use strict'; - -// Written using ES5 JS for browser support -window.addEventListener('DOMContentLoaded', function () { - var form = document.querySelector('form'); - - form.addEventListener('submit', function (e) { - e.preventDefault(); - - // Form elements - var title = form.querySelector('#title').value; - var message = form.querySelector('#message').value; - var position = form.querySelector('#position').value; - var duration = form.querySelector('#duration').value; - var theme = form.querySelector('#theme').value; - var closeOnClick = form.querySelector('#close').checked; - var displayClose = form.querySelector('#closeButton').checked; - - if(!message) { - message = 'You did not enter a message...'; - } - - window.createNotification({ - closeOnClick: closeOnClick, - displayCloseButton: displayClose, - positionClass: position, - showDuration: duration, - theme: theme - })({ - title: title, - message: message - }); - }); -}); \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/demo/index.html b/examples/SmartSwitch/data_src/js_css_src/styled-notifications/demo/index.html deleted file mode 100644 index d5dd6a6..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/demo/index.html +++ /dev/null @@ -1,101 +0,0 @@ - - - - -Notifications - - - - - - - - - -

Notifications

-
- -
- - - -
- - - -
- - - -
- - - -
- - - - - -
- - - - - -
- - - - - \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/demo/index_my.html b/examples/SmartSwitch/data_src/js_css_src/styled-notifications/demo/index_my.html deleted file mode 100644 index 412e25d..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/demo/index_my.html +++ /dev/null @@ -1,37 +0,0 @@ - - - - -Notifications - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/dist/notifications.css b/examples/SmartSwitch/data_src/js_css_src/styled-notifications/dist/notifications.css deleted file mode 100644 index 90d9e61..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/dist/notifications.css +++ /dev/null @@ -1 +0,0 @@ -.ncf-container{font-size:14px;box-sizing:border-box;position:fixed;z-index:999999}.ncf-container.nfc-top-left{top:12px;left:12px}.ncf-container.nfc-top-right{top:12px;right:12px}.ncf-container.nfc-bottom-right{bottom:12px;right:12px}.ncf-container.nfc-bottom-left{bottom:12px;left:12px}@media (max-width:767px){.ncf-container{left:0;right:0}}.ncf-container .ncf{background:#fff;transition:.3s ease;position:relative;pointer-events:auto;overflow:hidden;margin:0 0 6px;padding:30px;width:300px;border-radius:3px 3px 3px 3px;box-shadow:0 0 12px #999;color:#000;opacity:.9;-ms-filter:progid:DXImageTransform.Microsoft.Alpha(Opacity=90);filter:alpha(opacity=90);background-position:15px!important;background-repeat:no-repeat!important;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.ncf-container .ncf:hover{box-shadow:0 0 12px #000;opacity:1;cursor:pointer}.ncf-container .ncf .ncf-title{font-weight:700;font-size:16px;text-align:left;margin-top:0;margin-bottom:6px;word-wrap:break-word}.ncf-container .ncf .nfc-message{margin:0;text-align:left;word-wrap:break-word}.ncf-container .success{background:#51a351;color:#fff;padding:15px 15px 15px 50px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg==")}.ncf-container .info{background:#2f96b4;color:#fff;padding:15px 15px 15px 50px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII=")}.ncf-container .warning{background:#f87400;color:#fff;padding:15px 15px 15px 50px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII=")}.ncf-container .error{background:#bd362f;color:#fff;padding:15px 15px 15px 50px;background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=")!important}.ncf-container button{position:relative;right:-.3em;top:-.3em;float:right;font-weight:700;color:#fff;text-shadow:0 1px 0 #fff;opacity:.8;line-height:1;font-size:16px;padding:0;cursor:pointer;background:transparent;border:0}.ncf-container button:hover{opacity:1} \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/dist/notifications.css.gz b/examples/SmartSwitch/data_src/js_css_src/styled-notifications/dist/notifications.css.gz deleted file mode 100644 index b1e1ecb19e475a9932e331065120ac6a1bdbbc3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2487 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 diff --git a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/dist/notifications.js b/examples/SmartSwitch/data_src/js_css_src/styled-notifications/dist/notifications.js deleted file mode 100644 index 34b339e..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/dist/notifications.js +++ /dev/null @@ -1 +0,0 @@ -!function(t){function n(i){if(e[i])return e[i].exports;var o=e[i]={i:i,l:!1,exports:{}};return t[i].call(o.exports,o,o.exports,n),o.l=!0,o.exports}var e={};n.m=t,n.c=e,n.d=function(t,e,i){n.o(t,e)||Object.defineProperty(t,e,{configurable:!1,enumerable:!0,get:i})},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,n){return Object.prototype.hasOwnProperty.call(t,n)},n.p="",n(n.s=0)}([function(t,n,e){e(1),t.exports=e(4)},function(t,n,e){"use strict";var i=Object.assign||function(t){for(var n=1;n-1}(t.positionClass)||(console.warn("An invalid notification position class has been specified."),t.positionClass=c.positionClass),t.onclick&&"function"!=typeof t.onclick&&(console.warn("Notification on click must be a function."),t.onclick=c.onclick),"number"!=typeof t.showDuration&&(t.showDuration=c.showDuration),(0,o.isString)(t.theme)&&0!==t.theme.length||(console.warn("Notification theme must be a string with length"),t.theme=c.theme),t}function e(t){return t=n(t),function(){var n=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},e=n.title,i=n.message,c=r(t.positionClass);if(!e&&!i)return console.warn("Notification must contain a title or a message!");var a=(0,o.createElement)("div","ncf",t.theme);if(!0===t.closeOnClick&&a.addEventListener("click",function(){return c.removeChild(a)}),t.onclick&&a.addEventListener("click",function(n){return t.onclick(n)}),t.displayCloseButton){var s=(0,o.createElement)("button");s.innerText="X",!1===t.closeOnClick&&s.addEventListener("click",function(){return c.removeChild(a)}),(0,o.append)(a,s)}if((0,o.isString)(e)&&e.length&&(0,o.append)(a,(0,o.createParagraph)("ncf-title")(e)),(0,o.isString)(i)&&i.length&&(0,o.append)(a,(0,o.createParagraph)("nfc-message")(i)),(0,o.append)(c,a),t.showDuration&&t.showDuration>0){var l=setTimeout(function(){c.removeChild(a),0===c.querySelectorAll(".ncf").length&&document.body.removeChild(c)},t.showDuration);(t.closeOnClick||t.displayCloseButton)&&a.addEventListener("click",function(){return clearTimeout(l)})}}}function r(t){var n=document.querySelector("."+t);return n||(n=(0,o.createElement)("div","ncf-container",t),(0,o.append)(document.body,n)),n}var c={closeOnClick:!0,displayCloseButton:!1,positionClass:"nfc-top-right",onclick:!1,showDuration:3500,theme:"success"};t.createNotification?console.warn("Window already contains a create notification function. Have you included the script twice?"):t.createNotification=e}(window)},function(t,n,e){"use strict";!function(){function t(t){this.el=t;for(var n=t.className.replace(/^\s+|\s+$/g,"").split(/\s+/),i=0;i1?n-1:0),i=1;i1?n-1:0),i=1;i1?n-1:0),i=1;i1?n-1:0),c=1;c5Vq>IZAtX}(HR(-Gc&Xx)Hls%K5Z~S|s@SNGwK)+~bS?g_&PXwIp zt8#w0weECLL290oec!{|2cNC;*muHa(;@xN#c|p5)}9aB^K*w?Sm-4VOZ_D&(*kdw zDmwjpW1_{$BR4n2uildY{ zo$c%=?pEF?3%Qo_W!ssj?L15#!S5E%)cq-TCn|i6(_c59*udt3?$+-6``aIF^gYd! zS89D@qoIL}*6A~$uV?npl^3vM^;2=&A@irOETiwGi@-2~? zm#j=rniX24vmQC=M7qZFn?7=MU!Z*~_H_i~7pX2^^NE`pRut?E>ucGOb+KWB>%#5N zN~8jhJiC%_lr(jQw9)-V=DpgFc+OmVD^&b3>Gke+x3fQ+WgabAGSTx*|C%p`aXKqL zt8lxlsoKu8_fVA3rPVq=C3|D#xfj0N_^8YJ+Rg?4|IC`vyX(oDhe2%8?iJ=|zm{D; zXCLwW&As;$>rH0gJ9cZyhqo`;uHM_TWtE0h2KQV3U9%VJPh2i?GvWr%qxDASQ|_3( z=+ig4oSCxbvh>=N19!VzPn~vsG3NzyLuVJW#vRs7ABp)H;#oG|rPl<`44W^;eJRT4 zT+8?EcU_v-3y1i(1$lc(S-#o=D%#`I^C|0h`PYk0Lkw6k>WL(Y#$e4PwGv71Y13eQqk?Q=d| zJOA_Ir~AaEuFm-S_6`gdBjF`MAglnhMsw1XmJlYr67EY{M>6^9R z&FFCN%gX45Tx-0yzIY+@X8p_;3;!@(+^MVF+i^-HDE|6lr>DOjD18sr-r;(qim#!e ztB!a1zjYs9N_RN^e^BFa*H7Fq<&bLa`^S$8jO`~@JIF0c7rk)${XG$J{~y&4KTQ)} zqFWVXT_qW=XT0vH(M5Bg+v=HbCNIc*7GQ6_aQ{cwY1hKr1s1W%nJ=-J>tS(u@{|nW z(u4Wzx|LB}_s$hp-rFAWaFgYfqkIczH25-ZxA>E>)iY*)pp2pXuC#5R9i(+*9B%P# zRMwT2{~9Nlc=YBjfxxzR`J!v;-|W*{d+rFo)~`IS)~(HddlH^3joZC_`DD$_YaW&Q zO60oC_xs4d`-W=S#(&k}DNSyl#TZ-D%q||*_;^+RMpWpYxo7rpzHyN6c8Ib zt9$#teVM-VvXSs*_Omte#}}Sc%*tDrr|5p&d;T%)`NvBC?YlNTEWg^&=i#iF9W!)|Am?)#Mf+_&|?gTrf=ES~iZLQx+uTSle@AP}MZ%)U%gAGiNtv}k&dSZI>-7z_N@87p~<)2OKDR2Js zZpXbPX{`^B-mm$0@IBkxRW{v F7yw8IWkdh~ diff --git a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/package.json b/examples/SmartSwitch/data_src/js_css_src/styled-notifications/package.json deleted file mode 100644 index c9de18d..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/package.json +++ /dev/null @@ -1,58 +0,0 @@ -{ - "name": "styled-notifications", - "version": "1.0.1", - "description": "A simple JavaScript notifications library", - "main": "dist/notifications.js", - "scripts": { - "start": "webpack --watch", - "build": "webpack -p", - "test": "jest", - "prepare": "yarn run test && yarn run build" - }, - "pre-commit": [ - "prepare" - ], - "files": [ - "dist" - ], - "repository": { - "type": "git", - "url": "git+https://github.com/JamieLivingstone/Notifications.git" - }, - "keywords": [ - "notification", - "popup", - "alert", - "toast" - ], - "author": "Jamie Livingstone", - "contributors": [ - { - "name": "Jamie Livingstone (https://github.com/JamieLivingstone)" - }, - { - "name": "cavebeavis (https://github.com/cavebeavis)" - } - ], - "license": "ISC", - "bugs": { - "url": "https://github.com/JamieLivingstone/Notifications/issues" - }, - "homepage": "https://github.com/JamieLivingstone/Notifications#readme", - "devDependencies": { - "babel-core": "^6.26.0", - "babel-jest": "^21.0.2", - "babel-loader": "^7.1.2", - "babel-preset-es2015": "^6.24.1", - "babel-preset-es2015-ie": "^6.7.0", - "css-loader": "^0.28.7", - "eslint": "^4.6.1", - "extract-text-webpack-plugin": "^3.0.0", - "jest": "^21.0.2", - "node-sass": "^4.5.3", - "pre-commit": "^1.2.2", - "sass-loader": "^6.0.6", - "style-loader": "^0.18.2", - "webpack": "^3.5.6" - } -} diff --git a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/readme.md b/examples/SmartSwitch/data_src/js_css_src/styled-notifications/readme.md deleted file mode 100644 index 2bb4235..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/readme.md +++ /dev/null @@ -1,82 +0,0 @@ -[![Build Status](https://travis-ci.org/JamieLivingstone/Notifications.svg?branch=master)](https://travis-ci.org/JamieLivingstone/Notifications) - -# Notifications -**Notifications** is a Javascript library for notifications heavily inspired by toastr but does not require any dependencies such as jQuery. - -Works on browsers: IE9+, Safari, Chrome, FireFox, opera, edge - -## npm Installation -Do either -``` -npm i styled-notifications -``` -or add the following to your `package.json`: -``` -"dependencies": { - "styled-notifications": "^1.0.1" -}, -``` - -## Installation -Download files from the dist folder and then: -1. Link to notifications.css `` - -2. Link to notifications.js `` - -## Usage -### Custom options -- closeOnClick - Close the notification dialog when a click is invoked. -- displayCloseButton - Display a close button in the top right hand corner of the notification. -- positionClass - Set the position of the notification dialog. Accepted positions: ('nfc-top-right', 'nfc-bottom-right', 'nfc-bottom-left', 'nfc-top-left'). -- onClick - Call a callback function when a click is invoked on a notification. -- showDuration - Milliseconds the notification should be visible (0 for a notification that will remain open until clicked) -- theme - Set the position of the notification dialog. Accepted positions: ('success', 'info', 'warning', 'error', 'A custom clasName'). -``` -const defaultOptions = { - closeOnClick: true, - displayCloseButton: false, - positionClass: 'nfc-top-right', - onclick: false, - showDuration: 3500, - theme: 'success' -}; -``` - -## Example - -### Success notification -``` -// Create a success notification instance -const successNotification = window.createNotification({ - theme: 'success', - showDuration: 5000 -}); - -// Invoke success notification -successNotification({ - message: 'Simple success notification' -}); - -// Use the same instance but pass a title -successNotification({ - title: 'Working', - message: 'Simple success notification' -}); -``` - -### Information notification -``` -// Only running it once? Invoke immediately like this -window.createNotification({ - theme: 'success', - showDuration: 5000 -})({ - message: 'I have some information for you...' -}); -``` - -### Todo -~~1. Add to NPM~~ -2. Improve documentation -3. Further device testing -4. Add contributor instructions \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/src/helpers.js b/examples/SmartSwitch/data_src/js_css_src/styled-notifications/src/helpers.js deleted file mode 100644 index 5a7de2b..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/src/helpers.js +++ /dev/null @@ -1,24 +0,0 @@ -export const partial = (fn, ...presetArgs) => (...laterArgs) => fn(...presetArgs, ...laterArgs); - -export const append = (el, ...children) => children.forEach(child => el.appendChild(child)); - -export const isString = input => typeof input === 'string'; - -export const createElement = (elementType, ...classNames) => { - const element = document.createElement(elementType); - - if(classNames.length) { - classNames.forEach(currentClass => element.classList.add(currentClass)); - } - - return element; -}; - -const setInnerText = (element, text) => { - element.innerText = text; - return element; -}; - -const createTextElement = (elementType, ...classNames) => partial(setInnerText, createElement(elementType, ...classNames)); - -export const createParagraph = (...classNames) => createTextElement('p', ...classNames); \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/src/index.js b/examples/SmartSwitch/data_src/js_css_src/styled-notifications/src/index.js deleted file mode 100644 index 51512ba..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/src/index.js +++ /dev/null @@ -1,148 +0,0 @@ -'use strict'; - -// Polyfills -import './polyfills/classList'; - -import { - append, - createElement, - createParagraph, - isString -} from './helpers'; - -(function Notifications(window) { - // Default notification options - const defaultOptions = { - closeOnClick: true, - displayCloseButton: false, - positionClass: 'nfc-top-right', - onclick: false, - showDuration: 3500, - theme: 'success' - }; - - function configureOptions(options) { - // Create a copy of options and merge with defaults - options = Object.assign({}, defaultOptions, options); - - // Validate position class - function validatePositionClass(className) { - const validPositions = [ - 'nfc-top-left', - 'nfc-top-right', - 'nfc-bottom-left', - 'nfc-bottom-right' - ]; - - return validPositions.indexOf(className) > -1; - } - - // Verify position, if invalid reset to default - if (!validatePositionClass(options.positionClass)) { - console.warn('An invalid notification position class has been specified.'); - options.positionClass = defaultOptions.positionClass; - } - - // Verify onClick is a function - if (options.onclick && typeof options.onclick !== 'function') { - console.warn('Notification on click must be a function.'); - options.onclick = defaultOptions.onclick; - } - - // Verify show duration - if(typeof options.showDuration !== 'number') { - options.showDuration = defaultOptions.showDuration; - } - - // Verify theme - if(!isString(options.theme) || options.theme.length === 0) { - console.warn('Notification theme must be a string with length'); - options.theme = defaultOptions.theme; - } - - return options; - } - - // Create a new notification instance - function createNotification(options) { - // Validate options and set defaults - options = configureOptions(options); - - // Return a notification function - return function notification({ title, message } = {}) { - const container = createNotificationContainer(options.positionClass); - - if(!title && !message) { - return console.warn('Notification must contain a title or a message!'); - } - - // Create the notification wrapper - const notificationEl = createElement('div', 'ncf', options.theme); - - // Close on click - if(options.closeOnClick === true) { - notificationEl.addEventListener('click', () => container.removeChild(notificationEl)); - } - - // Custom click callback - if(options.onclick) { - notificationEl.addEventListener('click', (e) => options.onclick(e)); - } - - // Display close button - if(options.displayCloseButton) { - const closeButton = createElement('button'); - closeButton.innerText = 'X'; - - // Use the wrappers close on click to avoid useless event listeners - if(options.closeOnClick === false){ - closeButton.addEventListener('click', () =>container.removeChild(notificationEl)); - } - - append(notificationEl, closeButton); - } - - // Append title and message - isString(title) && title.length && append(notificationEl, createParagraph('ncf-title')(title)); - isString(message) && message.length && append(notificationEl, createParagraph('nfc-message')(message)); - - // Append to container - append(container, notificationEl); - - // Remove element after duration - if(options.showDuration && options.showDuration > 0) { - const timeout = setTimeout(() => { - container.removeChild(notificationEl); - - // Remove container if empty - if(container.querySelectorAll('.ncf').length === 0) { - document.body.removeChild(container); - } - }, options.showDuration); - - // If close on click is enabled and the user clicks, cancel timeout - if(options.closeOnClick || options.displayCloseButton) { - notificationEl.addEventListener('click', () => clearTimeout(timeout)); - } - } - }; - } - - function createNotificationContainer(position) { - let container = document.querySelector(`.${position}`); - - if(!container) { - container = createElement('div', 'ncf-container', position); - append(document.body, container); - } - - return container; - } - - // Add Notifications to window to make globally accessible - if (window.createNotification) { - console.warn('Window already contains a create notification function. Have you included the script twice?'); - } else { - window.createNotification = createNotification; - } -})(window); diff --git a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/src/polyfills/classList.js b/examples/SmartSwitch/data_src/js_css_src/styled-notifications/src/polyfills/classList.js deleted file mode 100644 index e040d70..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/src/polyfills/classList.js +++ /dev/null @@ -1,68 +0,0 @@ -(function () { - if (typeof window.Element === 'undefined' || 'classList' in document.documentElement) return; - - var prototype = Array.prototype, - push = prototype.push, - splice = prototype.splice, - join = prototype.join; - - function DOMTokenList(el) { - this.el = el; - // The className needs to be trimmed and split on whitespace - // to retrieve a list of classes. - var classes = el.className.replace(/^\s+|\s+$/g,'').split(/\s+/); - for (var i = 0; i < classes.length; i++) { - push.call(this, classes[i]); - } - } - - DOMTokenList.prototype = { - add: function(token) { - if(this.contains(token)) return; - push.call(this, token); - this.el.className = this.toString(); - }, - contains: function(token) { - return this.el.className.indexOf(token) != -1; - }, - item: function(index) { - return this[index] || null; - }, - remove: function(token) { - if (!this.contains(token)) return; - for (var i = 0; i < this.length; i++) { - if (this[i] == token) break; - } - splice.call(this, i, 1); - this.el.className = this.toString(); - }, - toString: function() { - return join.call(this, ' '); - }, - toggle: function(token) { - if (!this.contains(token)) { - this.add(token); - } else { - this.remove(token); - } - - return this.contains(token); - } - }; - - window.DOMTokenList = DOMTokenList; - - function defineElementGetter (obj, prop, getter) { - if (Object.defineProperty) { - Object.defineProperty(obj, prop,{ - get : getter - }); - } else { - obj.__defineGetter__(prop, getter); - } - } - - defineElementGetter(Element.prototype, 'classList', function () { - return new DOMTokenList(this); - }); -})(); \ No newline at end of file diff --git a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/src/style.scss b/examples/SmartSwitch/data_src/js_css_src/styled-notifications/src/style.scss deleted file mode 100644 index 733bfd5..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/src/style.scss +++ /dev/null @@ -1,134 +0,0 @@ -// Base colors -$success: #51A351; -$info: #2F96B4; -$warning: #f87400; -$error: #BD362F; -$grey: #999999; - -.ncf-container { - font-size: 14px; - box-sizing: border-box; - position: fixed; - z-index: 999999; - - &.nfc-top-left { - top: 12px; - left: 12px; - } - - &.nfc-top-right { - top: 12px; - right: 12px; - } - - &.nfc-bottom-right { - bottom: 12px; - right: 12px; - } - - &.nfc-bottom-left { - bottom: 12px; - left: 12px; - } - - @media (max-width: 767px) { - left: 0; - right: 0; - } - - .ncf { - background: #ffffff; - transition: .3s ease; - position: relative; - pointer-events: auto; - overflow: hidden; - margin: 0 0 6px; - padding: 30px; - width: 300px; - border-radius: 3px 3px 3px 3px; - box-shadow: 0 0 12px $grey; - color: #000000; - opacity: 0.9; - -ms-filter: progid:DXImageTransform.Microsoft.Alpha(Opacity=90); - filter: alpha(opacity=90); - background-position: 15px center !important; - background-repeat: no-repeat !important; - - // Prevent annoying text selection - -webkit-user-select: none; /* Chrome all / Safari all */ - -moz-user-select: none; /* Firefox all */ - -ms-user-select: none; /* IE 10+ */ - user-select: none; /* Likely future */ - - &:hover { - box-shadow: 0 0 12px #000000; - opacity: 1; - cursor: pointer; - } - - .ncf-title { - font-weight: bold; - font-size: 16px; - text-align: left; - margin-top: 0; - margin-bottom: 6px; - word-wrap: break-word; - } - - .nfc-message { - margin: 0; - text-align: left; - word-wrap: break-word; - } - } - - // Themes - .success { - background: $success; - color: #ffffff; - padding: 15px 15px 15px 50px; - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAADsSURBVEhLY2AYBfQMgf///3P8+/evAIgvA/FsIF+BavYDDWMBGroaSMMBiE8VC7AZDrIFaMFnii3AZTjUgsUUWUDA8OdAH6iQbQEhw4HyGsPEcKBXBIC4ARhex4G4BsjmweU1soIFaGg/WtoFZRIZdEvIMhxkCCjXIVsATV6gFGACs4Rsw0EGgIIH3QJYJgHSARQZDrWAB+jawzgs+Q2UO49D7jnRSRGoEFRILcdmEMWGI0cm0JJ2QpYA1RDvcmzJEWhABhD/pqrL0S0CWuABKgnRki9lLseS7g2AlqwHWQSKH4oKLrILpRGhEQCw2LiRUIa4lwAAAABJRU5ErkJggg=="); - } - - .info { - background: $info; - color: #ffffff; - padding: 15px 15px 15px 50px; - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGwSURBVEhLtZa9SgNBEMc9sUxxRcoUKSzSWIhXpFMhhYWFhaBg4yPYiWCXZxBLERsLRS3EQkEfwCKdjWJAwSKCgoKCcudv4O5YLrt7EzgXhiU3/4+b2ckmwVjJSpKkQ6wAi4gwhT+z3wRBcEz0yjSseUTrcRyfsHsXmD0AmbHOC9Ii8VImnuXBPglHpQ5wwSVM7sNnTG7Za4JwDdCjxyAiH3nyA2mtaTJufiDZ5dCaqlItILh1NHatfN5skvjx9Z38m69CgzuXmZgVrPIGE763Jx9qKsRozWYw6xOHdER+nn2KkO+Bb+UV5CBN6WC6QtBgbRVozrahAbmm6HtUsgtPC19tFdxXZYBOfkbmFJ1VaHA1VAHjd0pp70oTZzvR+EVrx2Ygfdsq6eu55BHYR8hlcki+n+kERUFG8BrA0BwjeAv2M8WLQBtcy+SD6fNsmnB3AlBLrgTtVW1c2QN4bVWLATaIS60J2Du5y1TiJgjSBvFVZgTmwCU+dAZFoPxGEEs8nyHC9Bwe2GvEJv2WXZb0vjdyFT4Cxk3e/kIqlOGoVLwwPevpYHT+00T+hWwXDf4AJAOUqWcDhbwAAAAASUVORK5CYII="); - } - - .warning { - background: $warning; - color: #ffffff; - padding: 15px 15px 15px 50px; - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAGYSURBVEhL5ZSvTsNQFMbXZGICMYGYmJhAQIJAICYQPAACiSDB8AiICQQJT4CqQEwgJvYASAQCiZiYmJhAIBATCARJy+9rTsldd8sKu1M0+dLb057v6/lbq/2rK0mS/TRNj9cWNAKPYIJII7gIxCcQ51cvqID+GIEX8ASG4B1bK5gIZFeQfoJdEXOfgX4QAQg7kH2A65yQ87lyxb27sggkAzAuFhbbg1K2kgCkB1bVwyIR9m2L7PRPIhDUIXgGtyKw575yz3lTNs6X4JXnjV+LKM/m3MydnTbtOKIjtz6VhCBq4vSm3ncdrD2lk0VgUXSVKjVDJXJzijW1RQdsU7F77He8u68koNZTz8Oz5yGa6J3H3lZ0xYgXBK2QymlWWA+RWnYhskLBv2vmE+hBMCtbA7KX5drWyRT/2JsqZ2IvfB9Y4bWDNMFbJRFmC9E74SoS0CqulwjkC0+5bpcV1CZ8NMej4pjy0U+doDQsGyo1hzVJttIjhQ7GnBtRFN1UarUlH8F3xict+HY07rEzoUGPlWcjRFRr4/gChZgc3ZL2d8oAAAAASUVORK5CYII="); - } - - .error { - background: $error; - color: #ffffff; - padding: 15px 15px 15px 50px; - background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABgAAAAYCAYAAADgdz34AAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAHOSURBVEhLrZa/SgNBEMZzh0WKCClSCKaIYOED+AAKeQQLG8HWztLCImBrYadgIdY+gIKNYkBFSwu7CAoqCgkkoGBI/E28PdbLZmeDLgzZzcx83/zZ2SSXC1j9fr+I1Hq93g2yxH4iwM1vkoBWAdxCmpzTxfkN2RcyZNaHFIkSo10+8kgxkXIURV5HGxTmFuc75B2RfQkpxHG8aAgaAFa0tAHqYFfQ7Iwe2yhODk8+J4C7yAoRTWI3w/4klGRgR4lO7Rpn9+gvMyWp+uxFh8+H+ARlgN1nJuJuQAYvNkEnwGFck18Er4q3egEc/oO+mhLdKgRyhdNFiacC0rlOCbhNVz4H9FnAYgDBvU3QIioZlJFLJtsoHYRDfiZoUyIxqCtRpVlANq0EU4dApjrtgezPFad5S19Wgjkc0hNVnuF4HjVA6C7QrSIbylB+oZe3aHgBsqlNqKYH48jXyJKMuAbiyVJ8KzaB3eRc0pg9VwQ4niFryI68qiOi3AbjwdsfnAtk0bCjTLJKr6mrD9g8iq/S/B81hguOMlQTnVyG40wAcjnmgsCNESDrjme7wfftP4P7SP4N3CJZdvzoNyGq2c/HWOXJGsvVg+RA/k2MC/wN6I2YA2Pt8GkAAAAASUVORK5CYII=") !important; - } - - button { - position: relative; - right: -0.3em; - top: -0.3em; - float: right; - font-weight: bold; - color: #FFFFFF; - text-shadow: 0 1px 0 #ffffff; - opacity: 0.8; - line-height: 1; - font-size: 16px; - padding: 0; - cursor: pointer; - background: transparent; - border: 0; - - &:hover { - opacity: 1; - } - } -} diff --git a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/webpack.config.js b/examples/SmartSwitch/data_src/js_css_src/styled-notifications/webpack.config.js deleted file mode 100644 index 36a4ca3..0000000 --- a/examples/SmartSwitch/data_src/js_css_src/styled-notifications/webpack.config.js +++ /dev/null @@ -1,41 +0,0 @@ -const webpack = require('webpack'); -const ExtractTextPlugin = require('extract-text-webpack-plugin'); - -const extractSass = new ExtractTextPlugin({ - filename: 'notifications.css', - disable: process.env.NODE_ENV === 'development' -}); - -module.exports = { - entry: ['./src/index.js', './src/style.scss'], - output: { - path: __dirname + '/dist', - filename: 'notifications.js' - }, - module: { - rules: [ - { - test: /\.js$/, - loader: 'babel-loader', - query: { - presets: ['babel-preset-es2015', 'es2015-ie'] - } - }, - { - test: /\.scss$/, - use: extractSass.extract({ - use: [{ - loader: 'css-loader' - }, { - loader: 'sass-loader' - }], - // use style-loader in development - fallback: 'style-loader' - }) - } - ], - }, - plugins: [ - extractSass - ] -}; \ No newline at end of file diff --git a/examples/regex_patterns/.test.build_flags b/examples/regex_patterns/.test.build_flags deleted file mode 100644 index 9ea3bb7..0000000 --- a/examples/regex_patterns/.test.build_flags +++ /dev/null @@ -1 +0,0 @@ --DASYNCWEBSERVER_REGEX=1 diff --git a/examples/regex_patterns/regex_patterns.ino b/examples/regex_patterns/regex_patterns.ino deleted file mode 100644 index fb01306..0000000 --- a/examples/regex_patterns/regex_patterns.ino +++ /dev/null @@ -1,77 +0,0 @@ -// -// A simple server implementation with regex routes: -// * serve static messages -// * read GET and POST parameters -// * handle missing pages / 404s -// - -// Add buildflag ASYNCWEBSERVER_REGEX to enable the regex support - -// For platformio: platformio.ini: -// build_flags = -// -DASYNCWEBSERVER_REGEX - -// For arduino IDE: create/update platform.local.txt -// Windows: C:\Users\(username)\AppData\Local\Arduino15\packages\espxxxx\hardware\espxxxx\{version}\platform.local.txt -// Linux: ~/.arduino15/packages/espxxxx/hardware/espxxxx/{version}/platform.local.txt -// -// compiler.cpp.extra_flags=-DASYNCWEBSERVER_REGEX=1 - -#include -#ifdef ESP32 -#include -#include -#elif defined(ESP8266) -#include -#include -#endif -#include - -AsyncWebServer server(80); - -const char* ssid = "YOUR_SSID"; -const char* password = "YOUR_PASSWORD"; - -const char* PARAM_MESSAGE = "message"; - -void notFound(AsyncWebServerRequest *request) { - request->send(404, "text/plain", "Not found"); -} - -void setup() { - - Serial.begin(115200); - WiFi.mode(WIFI_STA); - WiFi.begin(ssid, password); - if (WiFi.waitForConnectResult() != WL_CONNECTED) { - Serial.printf("WiFi Failed!\n"); - return; - } - - Serial.print("IP Address: "); - Serial.println(WiFi.localIP()); - - server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){ - request->send(200, "text/plain", "Hello, world"); - }); - - // Send a GET request to /sensor/ - server.on("^\\/sensor\\/([0-9]+)$", HTTP_GET, [] (AsyncWebServerRequest *request) { - String sensorNumber = request->pathArg(0); - request->send(200, "text/plain", "Hello, sensor: " + sensorNumber); - }); - - // Send a GET request to /sensor//action/ - server.on("^\\/sensor\\/([0-9]+)\\/action\\/([a-zA-Z0-9]+)$", HTTP_GET, [] (AsyncWebServerRequest *request) { - String sensorNumber = request->pathArg(0); - String action = request->pathArg(1); - request->send(200, "text/plain", "Hello, sensor: " + sensorNumber + ", with action: " + action); - }); - - server.onNotFound(notFound); - - server.begin(); -} - -void loop() { -} diff --git a/examples/simple_server/simple_server.ino b/examples/simple_server/simple_server.ino deleted file mode 100644 index bdbcf60..0000000 --- a/examples/simple_server/simple_server.ino +++ /dev/null @@ -1,74 +0,0 @@ -// -// A simple server implementation showing how to: -// * serve static messages -// * read GET and POST parameters -// * handle missing pages / 404s -// - -#include -#ifdef ESP32 -#include -#include -#elif defined(ESP8266) -#include -#include -#endif -#include - -AsyncWebServer server(80); - -const char* ssid = "YOUR_SSID"; -const char* password = "YOUR_PASSWORD"; - -const char* PARAM_MESSAGE = "message"; - -void notFound(AsyncWebServerRequest *request) { - request->send(404, "text/plain", "Not found"); -} - -void setup() { - - Serial.begin(115200); - WiFi.mode(WIFI_STA); - WiFi.begin(ssid, password); - if (WiFi.waitForConnectResult() != WL_CONNECTED) { - Serial.printf("WiFi Failed!\n"); - return; - } - - Serial.print("IP Address: "); - Serial.println(WiFi.localIP()); - - server.on("/", HTTP_GET, [](AsyncWebServerRequest *request){ - request->send(200, "text/plain", "Hello, world"); - }); - - // Send a GET request to /get?message= - server.on("/get", HTTP_GET, [] (AsyncWebServerRequest *request) { - String message; - if (request->hasParam(PARAM_MESSAGE)) { - message = request->getParam(PARAM_MESSAGE)->value(); - } else { - message = "No message sent"; - } - request->send(200, "text/plain", "Hello, GET: " + message); - }); - - // Send a POST request to /post with a form field message set to - server.on("/post", HTTP_POST, [](AsyncWebServerRequest *request){ - String message; - if (request->hasParam(PARAM_MESSAGE, true)) { - message = request->getParam(PARAM_MESSAGE, true)->value(); - } else { - message = "No message sent"; - } - request->send(200, "text/plain", "Hello, POST: " + message); - }); - - server.onNotFound(notFound); - - server.begin(); -} - -void loop() { -} \ No newline at end of file diff --git a/extras/README.md b/extras/README.md deleted file mode 100644 index ac24572..0000000 --- a/extras/README.md +++ /dev/null @@ -1,25 +0,0 @@ -### Extras -Additions to facilitate code modifications (for MS Win, similar can be done on Linux) - -- **ehg.c (ehg.exe):** Tool to generate C-code array from file' bytes -Based on [bin2array](https://github.com/TheLivingOne/bin2array/) PROGMEM keyword can optionally be added. - -- **rehg.c (rehg.exe):** Tool to reverse C-code array generated by **ehg.exe** back to a file -Based on [c2bin](https://github.com/birkett/cbintools/tree/master/c2bin) -First 4 lines of source are ignored, then parses the 0xHH - formated bytes -until a } is found on separate new line. - -### Tools -- [TCC : Tiny C Compiler](https://bellard.org/tcc/) for **ehg** and **rehg** compiling on MS Win -- [7-Zip](https://www.7-zip.org) Install 7z and use the included gzip as command line tool -- [Node.js](https://nodejs.org) Install Node with default settings, then run: - - ``` npm install html-minifier-terser -g, npm install -g github-files-fetcher ``` - -### Batch files provided -- **do_emb.bat:** Generates **edit.htm.gz.h** file for embedding to **SPIFFSEditor.cpp** as binary C array - -You need to comment **#define EDFS** at **SPIFFSEditor.cpp** for this choice -- **do_ed_fs.bat:** Alternatively, makes a gzip-ed **edit.htm** file for fs - -uncomment **#define EDFS** for this choice. Saves about 4k of program flash storage. -- **undo.bat:** Reverts **edit.htm** from C array header to file (still minified!) -- **update_ace.bat:** Updates **acefull.js.gz** file from latest GitHub Ace sources diff --git a/extras/do_ed_fs.bat b/extras/do_ed_fs.bat deleted file mode 100644 index c88b646..0000000 --- a/extras/do_ed_fs.bat +++ /dev/null @@ -1,9 +0,0 @@ -copy ..\src\edit.htm edit_src.htm -call html-minifier-terser --collapse-whitespace --remove-comments --remove-optional-tags --remove-redundant-attributes --remove-script-type-attributes --minify-css true --minify-js true -o edit.htm edit_src.htm -"C:\Program Files\7-Zip\7z.exe" a -tgzip -mx9 edit.htm.gz edit.htm -copy edit.htm.gz ..\examples\SmartSwitch\data\edit_gz -copy edit.htm.gz ..\examples\ESP_AsyncFSBrowser\data\edit_gz -ehg edit.htm.gz PROGMEM -copy edit.htm.gz.h ..\src\edit.htm.gz.h -pause -del edit.htm edit.htm.gz edit.htm.gz.h edit_src.htm \ No newline at end of file diff --git a/extras/do_emb.bat b/extras/do_emb.bat deleted file mode 100644 index cb116dc..0000000 --- a/extras/do_emb.bat +++ /dev/null @@ -1,9 +0,0 @@ -copy ..\src\edit.htm edit_src.htm -call html-minifier-terser --collapse-whitespace --remove-comments --remove-optional-tags --remove-redundant-attributes --remove-script-type-attributes --minify-css true --minify-js true -o edit.htm edit_src.htm -"C:\Program Files\7-Zip\7z.exe" a -tgzip -mx9 edit.htm.gz edit.htm -del ..\examples\SmartSwitch\data\edit.htm -del ..\examples\ESP_AsyncFSBrowser\data\edit.htm -ehg edit.htm.gz PROGMEM -copy edit.htm.gz.h ..\src\edit.htm.gz.h -pause -del edit.htm edit.htm.gz edit.htm.gz.h edit_src.htm \ No newline at end of file diff --git a/extras/ehg.c b/extras/ehg.c deleted file mode 100644 index 0816c44..0000000 --- a/extras/ehg.c +++ /dev/null @@ -1,124 +0,0 @@ -/* - * Simple, but very fast converter of file to C++ array; written in old school C. - * ehg.c (ehg.exe) - * Based on https://github.com/TheLivingOne/bin2array/ - * by (C) Sergey A. Galin, 2019, sergey.galin@gmail.com, sergey.galin@yandex.ru - * and compiled with TynyCC https://bellard.org/tcc/ - * This file is a Public Domain. - */ - -#include -#include -#include - -char* replace_char(char* str, char find, char replace){ - char *current_pos = strchr(str,find); - for (char* p = current_pos; (current_pos = strchr(str, find)) != NULL; *current_pos = replace); - return str; -} - -int main(int argc, char * argv[]) -{ - if ((argc > 3)||(argc < 2)) { - printf("USAGE: %s [PROGMEM]\n", argv[0]); - return 1; - } - - const char * in = argv[1]; - const char * pr = argv[2]; - char pr_o[8] = " "; - - if (argv[2]) sprintf(pr_o, "%s", pr); - - // Hello stack overflow :) - char out_cpp[4096]; - char usname[4096]; - sprintf(usname, "%s", in); - sprintf(out_cpp, "%s.h", in); - - replace_char(usname,'.', '_'); - - printf("Input: %s, output: %s\n", in, out_cpp); - - // - // Working with the input file - // - FILE * fin = fopen(in, "rb"); - if (!fin) { - printf("Error opening input file!\n"); - return 2; - } - fseek(fin, 0, SEEK_END); - size_t size = (size_t)ftell(fin); - fseek(fin, 0, SEEK_SET); - printf("Input data size: %ld\n", (long)size); - - unsigned char * data = malloc(size); - if (fread(data, size, 1, fin) != 1) { - printf("Failed to read input file!\n"); - free(data); - fclose(fin); - return 2; - } - fclose(fin); - - unsigned char arr[] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'}; - unsigned char * text = malloc(size * 6); - unsigned char * out_ptr = text; - unsigned char * in_ptr = data; - for (size_t i = 1, col = 1; i <= size; i++, in_ptr++) { - unsigned char x = *in_ptr; - unsigned char y = (x & 0xF0) >> 4; - unsigned char z = (x & 0x0F); - - *out_ptr++ = '0'; - *out_ptr++ = 'x'; - - *out_ptr++ = arr[y]; - *out_ptr++ = arr[z]; - - if (i != size) { - *out_ptr++ = ','; - } - if (col == 20) { - *out_ptr++ = '\n'; - col = 1; - } else - col++; - } - free(data); - // *out_ptr = 0; not necessary as we're using fwrite() - - // - // Writing output file - // - - FILE * fout = fopen(out_cpp, "wb"); - if (!fout) { - printf("Error opening output file!\n"); - free(text); - return 2; - } - fprintf( - fout, - "\n//File: %s, Size: %ld\n" - "#define %s_len %ld\n" - "const uint8_t %s[] %s = {\n", - in, - (long)size, - usname, - (long)size, - usname, - pr_o); - if (fwrite(text, out_ptr - text, 1, fout) != 1) { - printf("Error writing output file!"); - free(text); - fclose(fout); - return 2; - } - fprintf(fout, "\n};\n"); - fclose(fout); - free(text); - return 0; -} - diff --git a/extras/ehg.exe b/extras/ehg.exe deleted file mode 100644 index 945f7a3942713850e106da8766db790b5d8a8f40..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4096 zcmeZ`n!v!!z`(%5z`*eTKLf)K1_*F~PCs6muEC{sJom z=>us7(_j&>QV^k_$iSchVo(`-C^9f4;4xFLB(M|n^Uc3@yQfGR>fFSPS%;~S70Ch+fbz{7d zKb@{W5Hic)GR;32_*;Y+7#Lo1GcYi8yZ+(d=PS^`@%r-X&)u#ZClBxNP+(wqaf}Tl z$I<+QnZI8Utd67k2NQn}D@dapSb(RSBX9?Uf&)XqivWn}I~YN-&8#4;Jk1AKx;Z+1 z|8%?ZG#}sqF@Nj;1w)7H2XIpDaQ(Q0je&t70L%;Mb^R3ZLI7+I4@^t*PX_)LQ1a<^ z{SmN331n5T>xY0BAK5_O% zy-+<{{{8>oe1xaB^#e#H*i2oJ))&=KJuV;~Nc=@3ScIdq_09eN|GU8?I5fe5BEi7G zu)`gs_Jt!@9m@_-s(4w#!oUD#K|Ko57x2OctcVB3H3f57I$K}d|NkEnBoGp&fCsFA zryHywU`G5P?}M1m zVCDl5(*?|Y2x7W|nU6qBH!$-tIDkN5y%UrO`PUx|c(IEG6qqcXtrx(OAhNUd444fH z&(78pApM{;-r0Ht!8`y~0TSr$1sQ00g1_CKk%8eQD7ANkRdyb9fN1Fkn*rv6410YX zBEY|mqoa5K{r~^@x3z+(#s?o57#I%zVCiVxhY)Rkz~9lj7i=5IRbW#y^z_{{YF5D~*2p3#%oIK3H0InlI750Q)*B1dVk{Cgu z#sZe^bbSJjg@6~I;iAmo!kCdE;Kg&W7)Lj2i=qQVH*W`s6zx%TVCZyx(ChjnpqrIJ z*?}P-D6rf0LBNZHVAUenRNv`l3g~7G=ytu+%@FWn!B22m8}MQ}SO?3=!(bPJYQ_mr z-M$>19Nny73w?PyId*^=1E7)<sZ;ooBi^{wJ_>yS_R6;`{&q|GOEw84kaA`yW(yyatnR z89-sjakxA6#fzI@k;jm_`v3p`|C7WW7|O*R7+zjyU|D4hbOGoW-1lrDhMB~ZEoO4mT?1}HrNN>72(GobVwD7^qogB>|a40s5H20OaD zS}CX&E7)Y_6_l1Jq-Ex$+9^Z_1o^xBy86a)F{lx{bnwOcEu7EH}kqe?p0o06DD9)@(wNg;cN#SB}OU%qkO;ISxS13wN zOhMIAj&2^rGO*JWxfrlANDcT%u5# znO9;FU!tH|932btsI5XZ7u3P!MVTca2P0d+z*TDvs$U>cvqBLhk+ z!b%JbGD-{#s!9wDdP)oo7D@~Z4j}bP3=9EE3=EM<3=D}%3=A1c3=D-z3=Gvu3=Azw z3=C717#J2QF)*xFVqn;!#K5p$iGks~5(C3EB?g8kN(>Bdlpr?I+Wg$&vgD!?y_B3B z1_p-WlA`2{A_fMAf}+g4k~9VehTPQL;#5$7r5G-h28wM428Oia)YNPcU6KmcoST@F zlb;L{0L3hXP6biPIr+t42EqtX_=AMvr#z336wAL~=oiTV_s4D##!4 cFwxYC9E7l$_KeP(u -#include -#include - -#define BUFFER_SIZE 500 - -int main(int argc, char *argv[]) -{ - FILE *inputFile = NULL; - FILE *outputFile = NULL; - char sBuffer[BUFFER_SIZE]; - char *pch; - char *newline, *endBracket; - int i; - - if (argc != 3) - { - printf("%s %s %s\n", "Usage:", argv[0], "
"); - return 1; - } - - inputFile = fopen(argv[1], "r"); - - if (inputFile == NULL) - { - printf("%s %s\n", "Unable to open input header:", argv[1]); - return 1; - } - - outputFile = fopen(argv[2], "wb"); - - if (outputFile == NULL) - { - printf("%s %s\n", "Unable to open output file:", argv[2]); - return 1; - } - - // Skip the first 4 lines. - for (i = 0; i < 4; i++) - { - fgets(sBuffer, BUFFER_SIZE, inputFile); - } - - // Get the contents of each line of the array. - while (fgets(sBuffer, BUFFER_SIZE, inputFile)) - { - // Get rid of the new line character. - newline = strchr(sBuffer, '\n'); - if (newline) - { - *newline = 0; - } - - // Skip this line if its the closing "};". - endBracket = strchr(sBuffer, '}'); - if (endBracket) - { - continue; - } - - // Write out each character. - pch = strtok(sBuffer, ","); - while (pch != NULL) - { - fprintf(outputFile, "%c", strtol(pch, NULL, 0)); // autodetect - pch = strtok(NULL, ","); - } - } - - return 0; -} diff --git a/extras/rehg.exe b/extras/rehg.exe deleted file mode 100644 index cec482fe7d5c3d892dd43747973ac8bbbd6f5919..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2560 zcmeZ`n!v!!z`(%5z`*eTKLf)K1_*F~P3u)fMdSX^$(Q((e297{DYalMT>!fq1%;b zr=WrZLtr;Y;0`VY2Zn$h3?TBwT4n}@<|6_-7#SECUcP1ot86~NvQrtV_{9{k0*+4C zKi#f>ntw3xx2i+TYd*jNGE4_#%nnr$`62noU2TOm>)H?`bnU|`t6#ek%7K3JBcv-JmHdc_EEB^ogzat;yRhaV}Vagf)fxHMJ z!OFcr?g5z}0FK&#?pBagzza#RdY*tCg&6dM=;pluB1Nw#I52d&KInCQ641^1N6~>HASkfg^+CXkUa)ErY^v{cGX-=r z26VgL>1GIcq4W3u|K=k+0WXrlI#^B~2D=cH%O*f|`*L)0bhCmj^yTT~*a0diKtTg? zl`L2nR#*Lj+4Bcv&yhc1d%$7PuA>s#o1?-K*!i;YC8(TfWz+>xwjiSRjpo5t#?A+w zXSzB5C$Mz8zB&Bj`~Uy{yBWF}4!?N&AC$0OgGo>tXgz&y#Y#Zfzmsm^d2aE07@T$(kGzw4JdsFN7sfj76MRp1{`K2WVr6qO@MGP<%d5K9msR||e z3i$=8pc=iPv_t`-+=`(*35PO>F$!s!IjL3*It;4G3_3``@c~q)LHQPn3=E)p6Us%Q zoD~@ud=wcNLKGPoViXw|QWY5(@)Q{u$`u(H8WkBBCMhy7%m?XLWMJ5+$iT2ik%8fi zA_K!^MFxh4iVO@d6(Pn^%beWevgD!?y_B3B1_p+LqRhOKGzJESG*G~R==9W*Vg?3= z;*z4|j3Nl5BtIL*0O?7CYl@FAPA!Q~EGURCsVqokU|@((&d)0;%FjtF0CD0Ii_()} zj4}`-HLonQC_fLxj89K3$xY16ODswU*_T?832IctM acefull.js -"C:\Program Files\7-Zip\7z.exe" a -tgzip -mx9 acefull.js.gz acefull.js -"C:\Program Files\7-Zip\7z.exe" a -tgzip -mx9 worker-html.js.gz worker-html.js -"C:\Program Files\7-Zip\7z.exe" a -tgzip -mx9 worker-javascript.js.gz worker-javascript.js -"C:\Program Files\7-Zip\7z.exe" a -tgzip -mx9 worker-json.js.gz worker-json.js -"C:\Program Files\7-Zip\7z.exe" a -tgzip -mx9 worker-css.js.gz worker-css.js - -REM update SmartSwitch /data: -pause -copy acefull.js.gz ..\..\examples\SmartSwitch\data\acefull.js.gz -copy worker-html.js.gz ..\..\examples\SmartSwitch\data\worker-html.js.gz -copy worker-javascript.js.gz ..\..\examples\SmartSwitch\data\worker-javascript.js.gz -copy worker-json.js.gz ..\..\examples\SmartSwitch\data\worker-json.js.gz -copy worker-css.js.gz ..\..\examples\SmartSwitch\data\worker-css.js.gz - -REM update ESP_AsyncFSBrowser /data: -pause -copy acefull.js.gz ..\..\examples\ESP_AsyncFSBrowser\data\acefull.js.gz -copy worker-html.js.gz ..\..\examples\ESP_AsyncFSBrowser\data\worker-html.js.gz -copy worker-javascript.js.gz ..\..\examples\ESP_AsyncFSBrowser\data\worker-javascript.js.gz -copy worker-json.js.gz ..\..\examples\ESP_AsyncFSBrowser\data\worker-json.js.gz -copy worker-css.js.gz ..\..\examples\ESP_AsyncFSBrowser\data\worker-css.js.gz - -REM delete temporary stuff -pause -del *.js *.gz diff --git a/library.json b/library.json index c5cfbbd..5aab55d 100644 --- a/library.json +++ b/library.json @@ -10,7 +10,7 @@ "type": "git", "url": "https://github.com/mathieucarbou/ESPAsyncWebServer.git" }, - "version": "2.0.0", + "version": "2.1.0", "license": "LGPL-3.0", "frameworks": "arduino", "platforms": [ diff --git a/library.properties b/library.properties index 0d3959e..cb58f1b 100644 --- a/library.properties +++ b/library.properties @@ -1,7 +1,7 @@ name=ESP Async WebServer -version=2.0.0 +version=2.1.0 author=Me-No-Dev -maintainer=lorol +maintainer=mathieucarbou sentence=Async Web Server for ESP8266 and ESP31B paragraph=Async Web Server for ESP8266 and ESP31B category=Other