rubyfox-server 2.13.4.1 → 2.16.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/lib/rubyfox/server/data/config/UploadsLock.txt +3 -0
- data/lib/rubyfox/server/data/config/admin/admintool.xml +2 -0
- data/lib/rubyfox/server/data/config/admin/descriptors/config_room.txt +97 -43
- data/lib/rubyfox/server/data/config/admin/descriptors/config_server.txt +307 -93
- data/lib/rubyfox/server/data/config/admin/descriptors/config_zone.txt +311 -95
- data/lib/rubyfox/server/data/config/admin/descriptors/runtime_game.txt +5 -5
- data/lib/rubyfox/server/data/config/admin/descriptors/runtime_mmo.txt +6 -6
- data/lib/rubyfox/server/data/config/admin/descriptors/runtime_room.txt +69 -44
- data/lib/rubyfox/server/data/config/admin/descriptors/runtime_user.txt +55 -43
- data/lib/rubyfox/server/data/config/admin/descriptors/runtime_zone.txt +81 -36
- data/lib/rubyfox/server/data/config/admin/gmc/gmc.py +55 -18
- data/lib/rubyfox/server/data/config/admin/icons/Analytics.png +0 -0
- data/lib/rubyfox/server/data/config/admin/icons/Analytics.svg +1 -0
- data/lib/rubyfox/server/data/config/admin/icons/BanManager.png +0 -0
- data/lib/rubyfox/server/data/config/admin/icons/BanManager.svg +1 -0
- data/lib/rubyfox/server/data/config/admin/icons/BlueBoxMonitor.png +0 -0
- data/lib/rubyfox/server/data/config/admin/icons/BlueBoxMonitor.svg +1 -0
- data/lib/rubyfox/server/data/config/admin/icons/Console.png +0 -0
- data/lib/rubyfox/server/data/config/admin/icons/Console.svg +9 -0
- data/lib/rubyfox/server/data/config/admin/icons/Dashboard.png +0 -0
- data/lib/rubyfox/server/data/config/admin/icons/Dashboard.svg +1 -0
- data/lib/rubyfox/server/data/config/admin/icons/ExtensionManager.png +0 -0
- data/lib/rubyfox/server/data/config/admin/icons/ExtensionManager.svg +1 -0
- data/lib/rubyfox/server/data/config/admin/icons/LicenseManager.png +0 -0
- data/lib/rubyfox/server/data/config/admin/icons/LicenseManager.svg +1 -0
- data/lib/rubyfox/server/data/config/admin/icons/LogViewer.png +0 -0
- data/lib/rubyfox/server/data/config/admin/icons/LogViewer.svg +1 -0
- data/lib/rubyfox/server/data/config/admin/icons/ServerConfigurator.png +0 -0
- data/lib/rubyfox/server/data/config/admin/icons/ServerConfigurator.svg +1 -0
- data/lib/rubyfox/server/data/config/admin/icons/ServletManager.png +0 -0
- data/lib/rubyfox/server/data/config/admin/icons/ServletManager.svg +1 -0
- data/lib/rubyfox/server/data/config/admin/icons/ZoneConfigurator.png +0 -0
- data/lib/rubyfox/server/data/config/admin/icons/ZoneConfigurator.svg +1 -0
- data/lib/rubyfox/server/data/config/admin/icons/ZoneMonitor.png +0 -0
- data/lib/rubyfox/server/data/config/admin/icons/ZoneMonitor.svg +1 -0
- data/lib/rubyfox/server/data/config/core.xml +2 -2
- data/lib/rubyfox/server/data/config/log4j.properties +7 -7
- data/lib/rubyfox/server/data/config/server.xml +9 -10
- data/lib/rubyfox/server/data/config/wordsFile.txt +0 -2
- data/lib/rubyfox/server/data/data/GeoLite2-Country.mmdb +0 -0
- data/lib/rubyfox/server/data/{config → data/buddylists/BasicExamples}/.keep +0 -0
- data/lib/rubyfox/server/data/data/{buddylists → uploads}/.keep +0 -0
- data/lib/rubyfox/server/data/lib/BlueBox.war +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/LICENSE +1061 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/NOTICE +68 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/README.md +79 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/RELEASE-NOTES +173 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/bin/bootstrap.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/bin/catalina-tasks.xml +39 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/bin/catalina.bat +372 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/bin/catalina.sh +648 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/bin/ciphers.bat +58 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/bin/ciphers.sh +60 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/bin/commons-daemon-native.tar.gz +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/bin/commons-daemon.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/bin/configtest.bat +58 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/bin/configtest.sh +60 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/bin/daemon.sh +275 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/bin/digest.bat +58 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/bin/digest.sh +60 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/bin/makebase.bat +114 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/bin/makebase.sh +115 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/bin/setclasspath.bat +94 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/bin/setclasspath.sh +98 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/bin/shutdown.bat +58 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/bin/shutdown.sh +60 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/bin/startup.bat +58 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/bin/startup.sh +60 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/bin/tomcat-juli.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/bin/tomcat-native.tar.gz +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/bin/tool-wrapper.bat +110 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/bin/tool-wrapper.sh +153 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/bin/version.bat +58 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/bin/version.sh +60 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/conf/Catalina/localhost/rewrite.config +1 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/conf/catalina.policy +260 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/conf/catalina.properties +205 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/conf/context.xml +31 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/conf/jaspic-providers.xml +23 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/conf/jaspic-providers.xsd +53 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/conf/keystore.jks +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/conf/logging.properties +79 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/conf/server.xml +161 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/conf/tomcat-users.xml +41 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/conf/tomcat-users.xsd +59 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/conf/web.xml +4737 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/annotations-api.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/catalina-ant.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/catalina-ha.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/catalina-storeconfig.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/catalina-tribes.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/catalina.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/ecj-4.12.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/el-api.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/jasper-el.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/jasper.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/jaspic-api.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/jsp-api.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/servlet-api.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/sfs2x-ws-helper.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/tomcat-api.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/tomcat-coyote.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/tomcat-dbcp.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/tomcat-i18n-cs.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/tomcat-i18n-de.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/tomcat-i18n-es.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/tomcat-i18n-fr.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/tomcat-i18n-ja.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/tomcat-i18n-ko.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/tomcat-i18n-pt-BR.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/tomcat-i18n-ru.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/tomcat-i18n-zh-CN.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/tomcat-jdbc.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/tomcat-jni.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/tomcat-util-scan.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/tomcat-util.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/tomcat-websocket.jar +0 -0
- data/lib/rubyfox/server/data/lib/apache-tomcat/lib/websocket-api.jar +0 -0
- data/lib/rubyfox/server/data/{extensions → lib/apache-tomcat/logs}/.keep +0 -0
- data/lib/rubyfox/server/data/lib/{jetty/lib/ext/.donotdelete → apache-tomcat/temp/safeToDelete.tmp} +0 -0
- data/lib/rubyfox/server/data/lib/{jetty/resources → apache-tomcat/work}/.keep +0 -0
- data/lib/rubyfox/server/data/lib/commons-collections-3.2.2.jar +0 -0
- data/lib/rubyfox/server/data/lib/commons-compress-1.19.jar +0 -0
- data/lib/rubyfox/server/data/lib/js/LibApi.js +48 -181
- data/lib/rubyfox/server/data/lib/sfs2x-admin.jar +0 -0
- data/lib/rubyfox/server/data/lib/sfs2x-core.jar +0 -0
- data/lib/rubyfox/server/data/lib/sfs2x-lib.jar +0 -0
- data/lib/rubyfox/server/data/lib/sfs2x-util.jar +0 -0
- data/lib/rubyfox/server/data/lib/sfs2x.jar +0 -0
- data/lib/rubyfox/server/data/sfs2x-service +6 -6
- data/lib/rubyfox/server/data/sfs2x-service.vmoptions +1 -1
- data/lib/rubyfox/server/data/sfs2x.sh +1 -1
- data/lib/rubyfox/server/data/www/BlueBox.war +0 -0
- data/lib/rubyfox/server/data/www/HelloServlet/index.jsp +1 -1
- data/lib/rubyfox/server/data/www/{root → ROOT}/_css_/default.css +0 -0
- data/lib/rubyfox/server/data/www/{root → ROOT}/_css_/reset.css +0 -0
- data/lib/rubyfox/server/data/www/{root → ROOT}/_images_/background_gradient.png +0 -0
- data/lib/rubyfox/server/data/www/{root → ROOT}/_images_/background_logo.png +0 -0
- data/lib/rubyfox/server/data/www/{root → ROOT}/_images_/favicon.png +0 -0
- data/lib/rubyfox/server/data/www/{root → ROOT}/_images_/logo_smartfoxserver.png +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/css/_changes-to-default-themes_.txt +15 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/css/bootstrap.min.css +7 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/css/custom-bootstrap.min.css +1 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/css/fontawesome/css/all.min.css +5 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/css/fontawesome/webfonts/fa-brands-400.eot +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/css/fontawesome/webfonts/fa-brands-400.svg +3459 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/css/fontawesome/webfonts/fa-brands-400.ttf +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/css/fontawesome/webfonts/fa-brands-400.woff +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/css/fontawesome/webfonts/fa-brands-400.woff2 +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/css/fontawesome/webfonts/fa-regular-400.eot +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/css/fontawesome/webfonts/fa-regular-400.svg +803 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/css/fontawesome/webfonts/fa-regular-400.ttf +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/css/fontawesome/webfonts/fa-regular-400.woff +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/css/fontawesome/webfonts/fa-regular-400.woff2 +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/css/fontawesome/webfonts/fa-solid-900.eot +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/css/fontawesome/webfonts/fa-solid-900.svg +4527 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/css/fontawesome/webfonts/fa-solid-900.ttf +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/css/fontawesome/webfonts/fa-solid-900.woff +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/css/fontawesome/webfonts/fa-solid-900.woff2 +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/css/fonts.css +175 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/css/jquery.scrolling-tabs.min.css +8 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/css/kendo.custom-bootstrap-v4.css +15280 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/css/reset.css +54 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/css/style.css +1428 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/data/countries.geo.json +178 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/FreeMono.otf +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/FreeMono.ttf +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/FreeMono.woff +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/FreeMono.woff2 +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-300.ttf +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-300.woff +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-300.woff2 +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-300italic.ttf +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-300italic.woff +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-300italic.woff2 +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-600.ttf +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-600.woff +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-600.woff2 +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-600italic.ttf +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-600italic.woff +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-600italic.woff2 +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-700.ttf +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-700.woff +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-700.woff2 +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-700italic.ttf +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-700italic.woff +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-700italic.woff2 +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-800.ttf +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-800.woff +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-800.woff2 +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-800italic.ttf +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-800italic.woff +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-800italic.woff2 +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-italic.ttf +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-italic.woff +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-italic.woff2 +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-regular.ttf +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-regular.woff +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/open-sans-v15-cyrillic_greek_cyrillic-ext_vietnamese_latin_latin-ext_greek-ext-regular.woff2 +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/roboto-condensed-v16-latin-300.ttf +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/roboto-condensed-v16-latin-300.woff +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/roboto-condensed-v16-latin-300.woff2 +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/roboto-condensed-v16-latin-700.ttf +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/roboto-condensed-v16-latin-700.woff +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/fonts/roboto-condensed-v16-latin-700.woff2 +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/images/analytics-adv/compare.png +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/images/analytics-adv/demographicsChart.png +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/images/analytics-adv/demographicsCompare.png +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/images/analytics-adv/demographicsFilter.png +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/images/analytics-adv/demographicsMap.png +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/images/analytics-adv/demographicsTable.png +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/images/analytics-adv/technologyChart.png +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/images/analytics-adv/technologyCompare.png +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/images/analytics-adv/technologyFilter.png +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/images/analytics-adv/technologyTable.png +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/images/apple-touch-icon-180x180.png +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/images/favicon-16x16.png +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/images/favicon-32x32.png +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/images/favicon-64x64.png +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/images/logo.png +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/js/core/application.bundle.js +2208 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/js/core/modules/module-0.bundle.js +7662 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/js/core/modules/module-1.bundle.js +929 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/js/core/modules/module-10.bundle.js +766 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/js/core/modules/module-11.bundle.js +71 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/js/core/modules/module-12.bundle.js +1184 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/js/core/modules/module-12~module-13~module-9.bundle.js +2618 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/js/core/modules/module-13.bundle.js +3315 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/js/core/modules/module-3.bundle.js +280 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/js/core/modules/module-4.bundle.js +1122 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/js/core/modules/module-5.bundle.js +2624 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/js/core/modules/module-6.bundle.js +801 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/js/core/modules/module-7.bundle.js +607 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/js/core/modules/module-8.bundle.js +1221 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/js/core/modules/module-9.bundle.js +847 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/js/core/modules/vendors~module-0.bundle.js +3240 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/js/core/modules/vendors~module-0~module-1~module-13~module-4~module-5~module-7~module-8.bundle.js +17357 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/js/core/modules/vendors~module-9.bundle.js +807 -0
- data/lib/rubyfox/server/data/{lib/jetty/webapps → www/ROOT/admin/assets/js/custom-modules}/.keep +0 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/js/libs/bootstrap.min.js +7 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/js/libs/jquery-3.3.1.min.js +2 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/js/libs/jquery.scrolling-tabs.min.js +8 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/js/libs/js.cookie.min.js +8 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/js/libs/kendo.all.min.js +136 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/js/libs/popper.min.js +5 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/js/libs/sfs2x-api-1.7.15.js +8 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/assets/js/libs/versions-readme.txt +16 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/index.html +244 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/manifest.json +25 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/modules/analytics.html +328 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/modules/ban-manager.html +160 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/modules/blue-box-monitor.html +37 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/modules/console.html +135 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/modules/dashboard.html +368 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/modules/extension-manager.html +98 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/modules/license-manager.html +117 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/modules/log-viewer.html +194 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/modules/server-configurator.html +55 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/modules/servlet-manager.html +98 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/modules/zone-configurator.html +62 -0
- data/lib/rubyfox/server/data/www/ROOT/admin/modules/zone-monitor.html +346 -0
- data/lib/rubyfox/server/data/www/{root → ROOT}/crossdomain.xml +0 -0
- data/lib/rubyfox/server/data/www/{root → ROOT}/examples/index.html +0 -0
- data/lib/rubyfox/server/data/www/{root → ROOT}/favicon.ico +0 -0
- data/lib/rubyfox/server/data/www/{root → ROOT}/favicon.png +0 -0
- data/lib/rubyfox/server/data/www/{root → ROOT}/index.html +0 -0
- data/lib/rubyfox/server/data/www/host-manager/META-INF/context.xml +24 -0
- data/lib/rubyfox/server/data/www/host-manager/WEB-INF/jsp/401.jsp +71 -0
- data/lib/rubyfox/server/data/www/host-manager/WEB-INF/jsp/403.jsp +90 -0
- data/lib/rubyfox/server/data/www/host-manager/WEB-INF/jsp/404.jsp +62 -0
- data/lib/rubyfox/server/data/www/host-manager/WEB-INF/web.xml +131 -0
- data/lib/rubyfox/server/data/www/host-manager/images/asf-logo.svg +226 -0
- data/lib/rubyfox/server/data/www/host-manager/images/tomcat.gif +0 -0
- data/lib/rubyfox/server/data/www/host-manager/index.jsp +18 -0
- data/lib/rubyfox/server/data/www/host-manager/manager.xml +26 -0
- data/lib/rubyfox/server/data/{logs → www/logsBackup}/.keep +0 -0
- data/lib/rubyfox/server/data/www/manager/META-INF/context.xml +24 -0
- data/lib/rubyfox/server/data/www/manager/WEB-INF/jsp/401.jsp +80 -0
- data/lib/rubyfox/server/data/www/manager/WEB-INF/jsp/403.jsp +100 -0
- data/lib/rubyfox/server/data/www/manager/WEB-INF/jsp/404.jsp +63 -0
- data/lib/rubyfox/server/data/www/manager/WEB-INF/jsp/connectorCerts.jsp +92 -0
- data/lib/rubyfox/server/data/www/manager/WEB-INF/jsp/connectorCiphers.jsp +92 -0
- data/lib/rubyfox/server/data/www/manager/WEB-INF/jsp/connectorTrustedCerts.jsp +92 -0
- data/lib/rubyfox/server/data/www/manager/WEB-INF/jsp/sessionDetail.jsp +197 -0
- data/lib/rubyfox/server/data/www/manager/WEB-INF/jsp/sessionsList.jsp +170 -0
- data/lib/rubyfox/server/data/www/manager/WEB-INF/web.xml +195 -0
- data/lib/rubyfox/server/data/www/manager/images/asf-logo.svg +226 -0
- data/lib/rubyfox/server/data/www/manager/images/tomcat.gif +0 -0
- data/lib/rubyfox/server/data/www/manager/index.jsp +18 -0
- data/lib/rubyfox/server/data/www/manager/status.xsd +84 -0
- data/lib/rubyfox/server/data/www/manager/xform.xsl +125 -0
- data/lib/rubyfox/server/version.rb +1 -1
- metadata +257 -333
- data/lib/rubyfox/server/data/config/ExtensionManagerLock.txt +0 -2
- data/lib/rubyfox/server/data/data/bannedusers/users.bin +0 -0
- data/lib/rubyfox/server/data/lib/Lib/reindex$py.class +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/charsets.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/cldrdata.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/dnsns.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/jaccess.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/javax.mail.glassfish-1.4.1.v201005082020.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/javax.transaction-api-1.2.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/jce.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/jetty-annotations-9.3.11.v20160721.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/jetty-deploy-9.3.11.v20160721.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/jetty-http-9.3.11.v20160721.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/jetty-io-9.3.11.v20160721.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/jetty-jndi-9.3.11.v20160721.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/jetty-plus-9.3.11.v20160721.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/jetty-schemas-3.1.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/jetty-security-9.3.11.v20160721.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/jetty-server-9.3.11.v20160721.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/jetty-servlet-9.3.11.v20160721.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/jetty-util-9.3.11.v20160721.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/jetty-webapp-9.3.11.v20160721.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/jetty-xml-9.3.11.v20160721.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/jfr.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/jfxrt.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/jsse.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/localedata.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/nashorn.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/packages.idx +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/resources.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/rt.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/servlet-api-3.1.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/sunec.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/sunjce_provider.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/sunpkcs11.pkc +0 -0
- data/lib/rubyfox/server/data/lib/cachedir/packages/zipfs.pkc +0 -0
- data/lib/rubyfox/server/data/lib/jetty/VERSION.txt +0 -9320
- data/lib/rubyfox/server/data/lib/jetty/etc/README.spnego +0 -62
- data/lib/rubyfox/server/data/lib/jetty/etc/jamon.xml +0 -32
- data/lib/rubyfox/server/data/lib/jetty/etc/jdbcRealm.properties +0 -72
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-alpn.xml +0 -32
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-annotations.xml +0 -20
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-cdi.xml +0 -19
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-debug.xml +0 -36
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-debuglog.xml +0 -25
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-deploy.xml +0 -76
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-gcloud-memcached-sessions.xml +0 -27
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-gcloud-session-idmgr.xml +0 -19
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-gcloud-sessions.xml +0 -27
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-gzip.xml +0 -67
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-http-forwarded.xml +0 -17
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-http.xml +0 -47
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-http2.xml +0 -26
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-http2c.xml +0 -18
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-https.xml +0 -29
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-infinispan.xml +0 -39
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-ipaccess.xml +0 -28
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-jaas.xml +0 -16
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-jdbc-sessions.xml +0 -34
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-jmx-remote.xml +0 -40
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-jmx.xml +0 -32
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-logging.xml +0 -36
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-lowresources.xml +0 -22
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-monitor.xml +0 -30
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-nosql.xml +0 -19
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-plus.xml +0 -26
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-proxy-protocol-ssl.xml +0 -10
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-proxy-protocol.xml +0 -10
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-proxy.xml +0 -35
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-requestlog.xml +0 -30
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-rewrite-customizer.xml +0 -17
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-rewrite.xml +0 -31
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-setuid.xml +0 -30
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-spring.xml +0 -61
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-ssl-context.xml +0 -29
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-ssl.xml +0 -58
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-started.xml +0 -15
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty-stats.xml +0 -18
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty.conf +0 -12
- data/lib/rubyfox/server/data/lib/jetty/etc/jetty.xml +0 -195
- data/lib/rubyfox/server/data/lib/jetty/etc/jminix.xml +0 -12
- data/lib/rubyfox/server/data/lib/jetty/etc/jolokia.xml +0 -16
- data/lib/rubyfox/server/data/lib/jetty/etc/keystore +0 -0
- data/lib/rubyfox/server/data/lib/jetty/etc/krb5.ini +0 -23
- data/lib/rubyfox/server/data/lib/jetty/etc/rewrite-compactpath.xml +0 -10
- data/lib/rubyfox/server/data/lib/jetty/etc/spnego.conf +0 -19
- data/lib/rubyfox/server/data/lib/jetty/etc/spnego.properties +0 -1
- data/lib/rubyfox/server/data/lib/jetty/etc/webdefault.xml +0 -539
- data/lib/rubyfox/server/data/lib/jetty/lib/asm-5.0.1.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/asm-commons-5.0.1.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/fcgi/fcgi-client-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/fcgi/fcgi-server-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/http2-common-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/http2-hpack-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/http2-server-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jaspi/javax.security.auth.message-1.0.0.v201108011116.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/javax-websocket-client-impl-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/javax-websocket-server-impl-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/javax.annotation-api-1.2.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/javax.websocket-api-1.0.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-alpn-server-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-annotations-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-client-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-continuation-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-deploy-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-gcloud-memcached-session-manager-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-gcloud-session-manager-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-http-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-infinispan-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-io-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-jaas-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-jaspi-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-jmx-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-jndi-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-nosql-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-plus-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-proxy-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-quickstart-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-rewrite-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-schemas-3.1.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-security-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-server-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-servlet-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-servlets-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-util-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-webapp-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jetty-xml-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jndi/javax.mail.glassfish-1.4.1.v201005082020.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/jndi/javax.transaction-api-1.2.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/monitor/jetty-monitor-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/org.apache.taglibs.taglibs-standard-impl-1.2.5.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/org.apache.taglibs.taglibs-standard-spec-1.2.5.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/org.eclipse.jdt.core.compiler.ecj-4.4.2.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/org.eclipse.jetty.apache-jsp-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/org.mortbay.jasper.apache-el-8.0.33.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/org.mortbay.jasper.apache-jsp-8.0.33.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/servlet-api-3.1.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/setuid/jetty-setuid-java-1.0.3.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/setuid/libsetuid-linux.so +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/setuid/libsetuid-osx.so +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/spring/jetty-spring-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/start.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/websocket-api-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/websocket-client-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/websocket-common-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/websocket-server-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/lib/websocket-servlet-9.3.11.v20160721.jar +0 -0
- data/lib/rubyfox/server/data/lib/jetty/license-eplv10-aslv20.html +0 -576
- data/lib/rubyfox/server/data/lib/jetty/modules/.donotdelete +0 -0
- data/lib/rubyfox/server/data/lib/jetty/modules/alpn-impl/alpn-1.8.0.mod +0 -8
- data/lib/rubyfox/server/data/lib/jetty/modules/alpn-impl/alpn-1.8.0_05.mod +0 -8
- data/lib/rubyfox/server/data/lib/jetty/modules/alpn-impl/alpn-1.8.0_101.mod +0 -8
- data/lib/rubyfox/server/data/lib/jetty/modules/alpn-impl/alpn-1.8.0_102.mod +0 -8
- data/lib/rubyfox/server/data/lib/jetty/modules/alpn-impl/alpn-1.8.0_11.mod +0 -8
- data/lib/rubyfox/server/data/lib/jetty/modules/alpn-impl/alpn-1.8.0_20.mod +0 -8
- data/lib/rubyfox/server/data/lib/jetty/modules/alpn-impl/alpn-1.8.0_25.mod +0 -8
- data/lib/rubyfox/server/data/lib/jetty/modules/alpn-impl/alpn-1.8.0_31.mod +0 -8
- data/lib/rubyfox/server/data/lib/jetty/modules/alpn-impl/alpn-1.8.0_40.mod +0 -8
- data/lib/rubyfox/server/data/lib/jetty/modules/alpn-impl/alpn-1.8.0_45.mod +0 -8
- data/lib/rubyfox/server/data/lib/jetty/modules/alpn-impl/alpn-1.8.0_51.mod +0 -8
- data/lib/rubyfox/server/data/lib/jetty/modules/alpn-impl/alpn-1.8.0_60.mod +0 -8
- data/lib/rubyfox/server/data/lib/jetty/modules/alpn-impl/alpn-1.8.0_65.mod +0 -8
- data/lib/rubyfox/server/data/lib/jetty/modules/alpn-impl/alpn-1.8.0_66.mod +0 -8
- data/lib/rubyfox/server/data/lib/jetty/modules/alpn-impl/alpn-1.8.0_71.mod +0 -8
- data/lib/rubyfox/server/data/lib/jetty/modules/alpn-impl/alpn-1.8.0_72.mod +0 -8
- data/lib/rubyfox/server/data/lib/jetty/modules/alpn-impl/alpn-1.8.0_73.mod +0 -8
- data/lib/rubyfox/server/data/lib/jetty/modules/alpn-impl/alpn-1.8.0_74.mod +0 -8
- data/lib/rubyfox/server/data/lib/jetty/modules/alpn-impl/alpn-1.8.0_77.mod +0 -8
- data/lib/rubyfox/server/data/lib/jetty/modules/alpn-impl/alpn-1.8.0_91.mod +0 -8
- data/lib/rubyfox/server/data/lib/jetty/modules/alpn-impl/alpn-1.8.0_92.mod +0 -8
- data/lib/rubyfox/server/data/lib/jetty/modules/alpn.mod +0 -53
- data/lib/rubyfox/server/data/lib/jetty/modules/annotations.mod +0 -17
- data/lib/rubyfox/server/data/lib/jetty/modules/apache-jsp.mod +0 -10
- data/lib/rubyfox/server/data/lib/jetty/modules/apache-jstl.mod +0 -9
- data/lib/rubyfox/server/data/lib/jetty/modules/cdi.mod +0 -39
- data/lib/rubyfox/server/data/lib/jetty/modules/client.mod +0 -6
- data/lib/rubyfox/server/data/lib/jetty/modules/continuation.mod +0 -6
- data/lib/rubyfox/server/data/lib/jetty/modules/debug.mod +0 -29
- data/lib/rubyfox/server/data/lib/jetty/modules/debuglog.mod +0 -25
- data/lib/rubyfox/server/data/lib/jetty/modules/deploy.mod +0 -31
- data/lib/rubyfox/server/data/lib/jetty/modules/ext.mod +0 -11
- data/lib/rubyfox/server/data/lib/jetty/modules/fcgi.mod +0 -15
- data/lib/rubyfox/server/data/lib/jetty/modules/gcloud-memcached-sessions.mod +0 -26
- data/lib/rubyfox/server/data/lib/jetty/modules/gcloud-session-idmgr.mod +0 -63
- data/lib/rubyfox/server/data/lib/jetty/modules/gcloud-sessions.mod +0 -11
- data/lib/rubyfox/server/data/lib/jetty/modules/gzip.mod +0 -23
- data/lib/rubyfox/server/data/lib/jetty/modules/hawtio.mod +0 -28
- data/lib/rubyfox/server/data/lib/jetty/modules/home-base-warning.mod +0 -7
- data/lib/rubyfox/server/data/lib/jetty/modules/http-forwarded.mod +0 -20
- data/lib/rubyfox/server/data/lib/jetty/modules/http.mod +0 -39
- data/lib/rubyfox/server/data/lib/jetty/modules/http2.mod +0 -20
- data/lib/rubyfox/server/data/lib/jetty/modules/http2c.mod +0 -22
- data/lib/rubyfox/server/data/lib/jetty/modules/https.mod +0 -14
- data/lib/rubyfox/server/data/lib/jetty/modules/infinispan.mod +0 -33
- data/lib/rubyfox/server/data/lib/jetty/modules/ipaccess.mod +0 -9
- data/lib/rubyfox/server/data/lib/jetty/modules/jaas.mod +0 -17
- data/lib/rubyfox/server/data/lib/jetty/modules/jamon.mod +0 -31
- data/lib/rubyfox/server/data/lib/jetty/modules/jaspi.mod +0 -10
- data/lib/rubyfox/server/data/lib/jetty/modules/jdbc-sessions.mod +0 -27
- data/lib/rubyfox/server/data/lib/jetty/modules/jminix.mod +0 -41
- data/lib/rubyfox/server/data/lib/jetty/modules/jmx-remote.mod +0 -16
- data/lib/rubyfox/server/data/lib/jetty/modules/jmx.mod +0 -13
- data/lib/rubyfox/server/data/lib/jetty/modules/jndi.mod +0 -11
- data/lib/rubyfox/server/data/lib/jetty/modules/jolokia.mod +0 -19
- data/lib/rubyfox/server/data/lib/jetty/modules/jsp.mod +0 -9
- data/lib/rubyfox/server/data/lib/jetty/modules/jstl.mod +0 -8
- data/lib/rubyfox/server/data/lib/jetty/modules/jvm.mod +0 -22
- data/lib/rubyfox/server/data/lib/jetty/modules/logging.mod +0 -36
- data/lib/rubyfox/server/data/lib/jetty/modules/lowresources.mod +0 -28
- data/lib/rubyfox/server/data/lib/jetty/modules/monitor.mod +0 -13
- data/lib/rubyfox/server/data/lib/jetty/modules/nosql.mod +0 -31
- data/lib/rubyfox/server/data/lib/jetty/modules/plus.mod +0 -15
- data/lib/rubyfox/server/data/lib/jetty/modules/proxy-protocol-ssl.mod +0 -9
- data/lib/rubyfox/server/data/lib/jetty/modules/proxy-protocol.mod +0 -9
- data/lib/rubyfox/server/data/lib/jetty/modules/proxy.mod +0 -22
- data/lib/rubyfox/server/data/lib/jetty/modules/quickstart.mod +0 -11
- data/lib/rubyfox/server/data/lib/jetty/modules/requestlog.mod +0 -40
- data/lib/rubyfox/server/data/lib/jetty/modules/resources.mod +0 -10
- data/lib/rubyfox/server/data/lib/jetty/modules/rewrite-compactpath.mod +0 -10
- data/lib/rubyfox/server/data/lib/jetty/modules/rewrite-customizer.mod +0 -24
- data/lib/rubyfox/server/data/lib/jetty/modules/rewrite.mod +0 -23
- data/lib/rubyfox/server/data/lib/jetty/modules/security.mod +0 -9
- data/lib/rubyfox/server/data/lib/jetty/modules/server.mod +0 -79
- data/lib/rubyfox/server/data/lib/jetty/modules/servlet.mod +0 -9
- data/lib/rubyfox/server/data/lib/jetty/modules/servlets.mod +0 -11
- data/lib/rubyfox/server/data/lib/jetty/modules/setuid.mod +0 -19
- data/lib/rubyfox/server/data/lib/jetty/modules/spring.mod +0 -17
- data/lib/rubyfox/server/data/lib/jetty/modules/ssl.mod +0 -97
- data/lib/rubyfox/server/data/lib/jetty/modules/stats.mod +0 -9
- data/lib/rubyfox/server/data/lib/jetty/modules/webapp.mod +0 -10
- data/lib/rubyfox/server/data/lib/jetty/modules/websocket.mod +0 -12
- data/lib/rubyfox/server/data/lib/jetty/notice.html +0 -111
- data/lib/rubyfox/server/data/lib/jetty/start.d/README.TXT +0 -24
- data/lib/rubyfox/server/data/lib/jetty/start.d/http.ini +0 -7
- data/lib/rubyfox/server/data/lib/jetty/start.d/https.ini +0 -10
- data/lib/rubyfox/server/data/lib/jetty/start.d/ssl.ini +0 -19
- data/lib/rubyfox/server/data/lib/jetty/start.ini +0 -83
- data/lib/rubyfox/server/data/www/.keep +0 -0
- data/lib/rubyfox/server/data/www/HelloServlet/META-INF/context.xml +0 -2
- data/lib/rubyfox/server/data/www/PyServletExample/MyModule$py.class +0 -0
- data/lib/rubyfox/server/data/www/PyServletExample/MyModule.py +0 -5
- data/lib/rubyfox/server/data/www/PyServletExample/WEB-INF/web.xml +0 -37
- data/lib/rubyfox/server/data/www/PyServletExample/errors/404.htm +0 -20
- data/lib/rubyfox/server/data/www/PyServletExample/index.py +0 -42
- data/lib/rubyfox/server/data/www/root/admin/.keep +0 -0
- data/lib/rubyfox/server/data/www/root/admin/AdminTool.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/ReleaseNotes.txt +0 -192
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/adobeFlashPlayer.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/advanced.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/analytics.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/banManager.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/bannedIPs.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/bannedUsernames.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/bookmarks.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/bootLog.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/buddyList.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/buddyProperties.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/connection.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/databaseManager.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/floodFilter.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/gameSettings.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/general.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/globalServerStatus.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/hTML5WebSockets.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/iPDiscovery.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/iPFilter.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/jVMSettings.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/logsDownload.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/mMOSettings.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/mailer.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/permissionsAndEvents.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/privilegeManager.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/remoteAdmin.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/roomExtension.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/roomVariables.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/roomsAndGroups.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/runtimeLog.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/runtimeRoomSettings.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/runtimeUserSettings.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/runtimeZoneSettings.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/statsApplication.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/statsDemographics.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/statsExceptions.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/statsOverview.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/statsTechnology.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/systemQueueStatus.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/threadPools.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/userManagement.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/userVariables.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/webServer.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/wordsFilter.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/zoneExtension.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/assets/icons/tabs/zoneTraffic.png +0 -0
- data/lib/rubyfox/server/data/www/root/admin/expressInstall.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/index.html +0 -124
- data/lib/rubyfox/server/data/www/root/admin/modules/Analytics.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/BanManager.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/BlueBoxMonitor.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/Console.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/Dashboard.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/ExtensionManager.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/LicenseManager.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/LogViewer.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/ServerConfigurator.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/ZoneConfigurator.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/modules/ZoneMonitor.swf +0 -0
- data/lib/rubyfox/server/data/www/root/admin/swfobject.js +0 -4
- data/lib/rubyfox/server/data/www/root/examples/.keep +0 -0
- data/lib/rubyfox/server/data/www/sfs2x-ws.war +0 -0
- data/lib/rubyfox/server/data/www/sfs2x-ws.xml +0 -30
- data/lib/rubyfox/server/data/zones/BasicExamples.zone.xml +0 -147
@@ -0,0 +1,929 @@
|
|
1
|
+
/*! (c) gotoAndPlay | All rights reserved */
|
2
|
+
(window["webpackJsonpapplication"] = window["webpackJsonpapplication"] || []).push([["module-1"],{
|
3
|
+
|
4
|
+
/***/ "./node_modules/moment/locale sync recursive ^\\.\\/.*$":
|
5
|
+
/*!**************************************************!*\
|
6
|
+
!*** ./node_modules/moment/locale sync ^\.\/.*$ ***!
|
7
|
+
\**************************************************/
|
8
|
+
/*! no static exports found */
|
9
|
+
/***/ (function(module, exports, __webpack_require__) {
|
10
|
+
|
11
|
+
var map = {
|
12
|
+
"./af": "./node_modules/moment/locale/af.js",
|
13
|
+
"./af.js": "./node_modules/moment/locale/af.js",
|
14
|
+
"./ar": "./node_modules/moment/locale/ar.js",
|
15
|
+
"./ar-dz": "./node_modules/moment/locale/ar-dz.js",
|
16
|
+
"./ar-dz.js": "./node_modules/moment/locale/ar-dz.js",
|
17
|
+
"./ar-kw": "./node_modules/moment/locale/ar-kw.js",
|
18
|
+
"./ar-kw.js": "./node_modules/moment/locale/ar-kw.js",
|
19
|
+
"./ar-ly": "./node_modules/moment/locale/ar-ly.js",
|
20
|
+
"./ar-ly.js": "./node_modules/moment/locale/ar-ly.js",
|
21
|
+
"./ar-ma": "./node_modules/moment/locale/ar-ma.js",
|
22
|
+
"./ar-ma.js": "./node_modules/moment/locale/ar-ma.js",
|
23
|
+
"./ar-sa": "./node_modules/moment/locale/ar-sa.js",
|
24
|
+
"./ar-sa.js": "./node_modules/moment/locale/ar-sa.js",
|
25
|
+
"./ar-tn": "./node_modules/moment/locale/ar-tn.js",
|
26
|
+
"./ar-tn.js": "./node_modules/moment/locale/ar-tn.js",
|
27
|
+
"./ar.js": "./node_modules/moment/locale/ar.js",
|
28
|
+
"./az": "./node_modules/moment/locale/az.js",
|
29
|
+
"./az.js": "./node_modules/moment/locale/az.js",
|
30
|
+
"./be": "./node_modules/moment/locale/be.js",
|
31
|
+
"./be.js": "./node_modules/moment/locale/be.js",
|
32
|
+
"./bg": "./node_modules/moment/locale/bg.js",
|
33
|
+
"./bg.js": "./node_modules/moment/locale/bg.js",
|
34
|
+
"./bm": "./node_modules/moment/locale/bm.js",
|
35
|
+
"./bm.js": "./node_modules/moment/locale/bm.js",
|
36
|
+
"./bn": "./node_modules/moment/locale/bn.js",
|
37
|
+
"./bn.js": "./node_modules/moment/locale/bn.js",
|
38
|
+
"./bo": "./node_modules/moment/locale/bo.js",
|
39
|
+
"./bo.js": "./node_modules/moment/locale/bo.js",
|
40
|
+
"./br": "./node_modules/moment/locale/br.js",
|
41
|
+
"./br.js": "./node_modules/moment/locale/br.js",
|
42
|
+
"./bs": "./node_modules/moment/locale/bs.js",
|
43
|
+
"./bs.js": "./node_modules/moment/locale/bs.js",
|
44
|
+
"./ca": "./node_modules/moment/locale/ca.js",
|
45
|
+
"./ca.js": "./node_modules/moment/locale/ca.js",
|
46
|
+
"./cs": "./node_modules/moment/locale/cs.js",
|
47
|
+
"./cs.js": "./node_modules/moment/locale/cs.js",
|
48
|
+
"./cv": "./node_modules/moment/locale/cv.js",
|
49
|
+
"./cv.js": "./node_modules/moment/locale/cv.js",
|
50
|
+
"./cy": "./node_modules/moment/locale/cy.js",
|
51
|
+
"./cy.js": "./node_modules/moment/locale/cy.js",
|
52
|
+
"./da": "./node_modules/moment/locale/da.js",
|
53
|
+
"./da.js": "./node_modules/moment/locale/da.js",
|
54
|
+
"./de": "./node_modules/moment/locale/de.js",
|
55
|
+
"./de-at": "./node_modules/moment/locale/de-at.js",
|
56
|
+
"./de-at.js": "./node_modules/moment/locale/de-at.js",
|
57
|
+
"./de-ch": "./node_modules/moment/locale/de-ch.js",
|
58
|
+
"./de-ch.js": "./node_modules/moment/locale/de-ch.js",
|
59
|
+
"./de.js": "./node_modules/moment/locale/de.js",
|
60
|
+
"./dv": "./node_modules/moment/locale/dv.js",
|
61
|
+
"./dv.js": "./node_modules/moment/locale/dv.js",
|
62
|
+
"./el": "./node_modules/moment/locale/el.js",
|
63
|
+
"./el.js": "./node_modules/moment/locale/el.js",
|
64
|
+
"./en-SG": "./node_modules/moment/locale/en-SG.js",
|
65
|
+
"./en-SG.js": "./node_modules/moment/locale/en-SG.js",
|
66
|
+
"./en-au": "./node_modules/moment/locale/en-au.js",
|
67
|
+
"./en-au.js": "./node_modules/moment/locale/en-au.js",
|
68
|
+
"./en-ca": "./node_modules/moment/locale/en-ca.js",
|
69
|
+
"./en-ca.js": "./node_modules/moment/locale/en-ca.js",
|
70
|
+
"./en-gb": "./node_modules/moment/locale/en-gb.js",
|
71
|
+
"./en-gb.js": "./node_modules/moment/locale/en-gb.js",
|
72
|
+
"./en-ie": "./node_modules/moment/locale/en-ie.js",
|
73
|
+
"./en-ie.js": "./node_modules/moment/locale/en-ie.js",
|
74
|
+
"./en-il": "./node_modules/moment/locale/en-il.js",
|
75
|
+
"./en-il.js": "./node_modules/moment/locale/en-il.js",
|
76
|
+
"./en-nz": "./node_modules/moment/locale/en-nz.js",
|
77
|
+
"./en-nz.js": "./node_modules/moment/locale/en-nz.js",
|
78
|
+
"./eo": "./node_modules/moment/locale/eo.js",
|
79
|
+
"./eo.js": "./node_modules/moment/locale/eo.js",
|
80
|
+
"./es": "./node_modules/moment/locale/es.js",
|
81
|
+
"./es-do": "./node_modules/moment/locale/es-do.js",
|
82
|
+
"./es-do.js": "./node_modules/moment/locale/es-do.js",
|
83
|
+
"./es-us": "./node_modules/moment/locale/es-us.js",
|
84
|
+
"./es-us.js": "./node_modules/moment/locale/es-us.js",
|
85
|
+
"./es.js": "./node_modules/moment/locale/es.js",
|
86
|
+
"./et": "./node_modules/moment/locale/et.js",
|
87
|
+
"./et.js": "./node_modules/moment/locale/et.js",
|
88
|
+
"./eu": "./node_modules/moment/locale/eu.js",
|
89
|
+
"./eu.js": "./node_modules/moment/locale/eu.js",
|
90
|
+
"./fa": "./node_modules/moment/locale/fa.js",
|
91
|
+
"./fa.js": "./node_modules/moment/locale/fa.js",
|
92
|
+
"./fi": "./node_modules/moment/locale/fi.js",
|
93
|
+
"./fi.js": "./node_modules/moment/locale/fi.js",
|
94
|
+
"./fo": "./node_modules/moment/locale/fo.js",
|
95
|
+
"./fo.js": "./node_modules/moment/locale/fo.js",
|
96
|
+
"./fr": "./node_modules/moment/locale/fr.js",
|
97
|
+
"./fr-ca": "./node_modules/moment/locale/fr-ca.js",
|
98
|
+
"./fr-ca.js": "./node_modules/moment/locale/fr-ca.js",
|
99
|
+
"./fr-ch": "./node_modules/moment/locale/fr-ch.js",
|
100
|
+
"./fr-ch.js": "./node_modules/moment/locale/fr-ch.js",
|
101
|
+
"./fr.js": "./node_modules/moment/locale/fr.js",
|
102
|
+
"./fy": "./node_modules/moment/locale/fy.js",
|
103
|
+
"./fy.js": "./node_modules/moment/locale/fy.js",
|
104
|
+
"./ga": "./node_modules/moment/locale/ga.js",
|
105
|
+
"./ga.js": "./node_modules/moment/locale/ga.js",
|
106
|
+
"./gd": "./node_modules/moment/locale/gd.js",
|
107
|
+
"./gd.js": "./node_modules/moment/locale/gd.js",
|
108
|
+
"./gl": "./node_modules/moment/locale/gl.js",
|
109
|
+
"./gl.js": "./node_modules/moment/locale/gl.js",
|
110
|
+
"./gom-latn": "./node_modules/moment/locale/gom-latn.js",
|
111
|
+
"./gom-latn.js": "./node_modules/moment/locale/gom-latn.js",
|
112
|
+
"./gu": "./node_modules/moment/locale/gu.js",
|
113
|
+
"./gu.js": "./node_modules/moment/locale/gu.js",
|
114
|
+
"./he": "./node_modules/moment/locale/he.js",
|
115
|
+
"./he.js": "./node_modules/moment/locale/he.js",
|
116
|
+
"./hi": "./node_modules/moment/locale/hi.js",
|
117
|
+
"./hi.js": "./node_modules/moment/locale/hi.js",
|
118
|
+
"./hr": "./node_modules/moment/locale/hr.js",
|
119
|
+
"./hr.js": "./node_modules/moment/locale/hr.js",
|
120
|
+
"./hu": "./node_modules/moment/locale/hu.js",
|
121
|
+
"./hu.js": "./node_modules/moment/locale/hu.js",
|
122
|
+
"./hy-am": "./node_modules/moment/locale/hy-am.js",
|
123
|
+
"./hy-am.js": "./node_modules/moment/locale/hy-am.js",
|
124
|
+
"./id": "./node_modules/moment/locale/id.js",
|
125
|
+
"./id.js": "./node_modules/moment/locale/id.js",
|
126
|
+
"./is": "./node_modules/moment/locale/is.js",
|
127
|
+
"./is.js": "./node_modules/moment/locale/is.js",
|
128
|
+
"./it": "./node_modules/moment/locale/it.js",
|
129
|
+
"./it-ch": "./node_modules/moment/locale/it-ch.js",
|
130
|
+
"./it-ch.js": "./node_modules/moment/locale/it-ch.js",
|
131
|
+
"./it.js": "./node_modules/moment/locale/it.js",
|
132
|
+
"./ja": "./node_modules/moment/locale/ja.js",
|
133
|
+
"./ja.js": "./node_modules/moment/locale/ja.js",
|
134
|
+
"./jv": "./node_modules/moment/locale/jv.js",
|
135
|
+
"./jv.js": "./node_modules/moment/locale/jv.js",
|
136
|
+
"./ka": "./node_modules/moment/locale/ka.js",
|
137
|
+
"./ka.js": "./node_modules/moment/locale/ka.js",
|
138
|
+
"./kk": "./node_modules/moment/locale/kk.js",
|
139
|
+
"./kk.js": "./node_modules/moment/locale/kk.js",
|
140
|
+
"./km": "./node_modules/moment/locale/km.js",
|
141
|
+
"./km.js": "./node_modules/moment/locale/km.js",
|
142
|
+
"./kn": "./node_modules/moment/locale/kn.js",
|
143
|
+
"./kn.js": "./node_modules/moment/locale/kn.js",
|
144
|
+
"./ko": "./node_modules/moment/locale/ko.js",
|
145
|
+
"./ko.js": "./node_modules/moment/locale/ko.js",
|
146
|
+
"./ku": "./node_modules/moment/locale/ku.js",
|
147
|
+
"./ku.js": "./node_modules/moment/locale/ku.js",
|
148
|
+
"./ky": "./node_modules/moment/locale/ky.js",
|
149
|
+
"./ky.js": "./node_modules/moment/locale/ky.js",
|
150
|
+
"./lb": "./node_modules/moment/locale/lb.js",
|
151
|
+
"./lb.js": "./node_modules/moment/locale/lb.js",
|
152
|
+
"./lo": "./node_modules/moment/locale/lo.js",
|
153
|
+
"./lo.js": "./node_modules/moment/locale/lo.js",
|
154
|
+
"./lt": "./node_modules/moment/locale/lt.js",
|
155
|
+
"./lt.js": "./node_modules/moment/locale/lt.js",
|
156
|
+
"./lv": "./node_modules/moment/locale/lv.js",
|
157
|
+
"./lv.js": "./node_modules/moment/locale/lv.js",
|
158
|
+
"./me": "./node_modules/moment/locale/me.js",
|
159
|
+
"./me.js": "./node_modules/moment/locale/me.js",
|
160
|
+
"./mi": "./node_modules/moment/locale/mi.js",
|
161
|
+
"./mi.js": "./node_modules/moment/locale/mi.js",
|
162
|
+
"./mk": "./node_modules/moment/locale/mk.js",
|
163
|
+
"./mk.js": "./node_modules/moment/locale/mk.js",
|
164
|
+
"./ml": "./node_modules/moment/locale/ml.js",
|
165
|
+
"./ml.js": "./node_modules/moment/locale/ml.js",
|
166
|
+
"./mn": "./node_modules/moment/locale/mn.js",
|
167
|
+
"./mn.js": "./node_modules/moment/locale/mn.js",
|
168
|
+
"./mr": "./node_modules/moment/locale/mr.js",
|
169
|
+
"./mr.js": "./node_modules/moment/locale/mr.js",
|
170
|
+
"./ms": "./node_modules/moment/locale/ms.js",
|
171
|
+
"./ms-my": "./node_modules/moment/locale/ms-my.js",
|
172
|
+
"./ms-my.js": "./node_modules/moment/locale/ms-my.js",
|
173
|
+
"./ms.js": "./node_modules/moment/locale/ms.js",
|
174
|
+
"./mt": "./node_modules/moment/locale/mt.js",
|
175
|
+
"./mt.js": "./node_modules/moment/locale/mt.js",
|
176
|
+
"./my": "./node_modules/moment/locale/my.js",
|
177
|
+
"./my.js": "./node_modules/moment/locale/my.js",
|
178
|
+
"./nb": "./node_modules/moment/locale/nb.js",
|
179
|
+
"./nb.js": "./node_modules/moment/locale/nb.js",
|
180
|
+
"./ne": "./node_modules/moment/locale/ne.js",
|
181
|
+
"./ne.js": "./node_modules/moment/locale/ne.js",
|
182
|
+
"./nl": "./node_modules/moment/locale/nl.js",
|
183
|
+
"./nl-be": "./node_modules/moment/locale/nl-be.js",
|
184
|
+
"./nl-be.js": "./node_modules/moment/locale/nl-be.js",
|
185
|
+
"./nl.js": "./node_modules/moment/locale/nl.js",
|
186
|
+
"./nn": "./node_modules/moment/locale/nn.js",
|
187
|
+
"./nn.js": "./node_modules/moment/locale/nn.js",
|
188
|
+
"./pa-in": "./node_modules/moment/locale/pa-in.js",
|
189
|
+
"./pa-in.js": "./node_modules/moment/locale/pa-in.js",
|
190
|
+
"./pl": "./node_modules/moment/locale/pl.js",
|
191
|
+
"./pl.js": "./node_modules/moment/locale/pl.js",
|
192
|
+
"./pt": "./node_modules/moment/locale/pt.js",
|
193
|
+
"./pt-br": "./node_modules/moment/locale/pt-br.js",
|
194
|
+
"./pt-br.js": "./node_modules/moment/locale/pt-br.js",
|
195
|
+
"./pt.js": "./node_modules/moment/locale/pt.js",
|
196
|
+
"./ro": "./node_modules/moment/locale/ro.js",
|
197
|
+
"./ro.js": "./node_modules/moment/locale/ro.js",
|
198
|
+
"./ru": "./node_modules/moment/locale/ru.js",
|
199
|
+
"./ru.js": "./node_modules/moment/locale/ru.js",
|
200
|
+
"./sd": "./node_modules/moment/locale/sd.js",
|
201
|
+
"./sd.js": "./node_modules/moment/locale/sd.js",
|
202
|
+
"./se": "./node_modules/moment/locale/se.js",
|
203
|
+
"./se.js": "./node_modules/moment/locale/se.js",
|
204
|
+
"./si": "./node_modules/moment/locale/si.js",
|
205
|
+
"./si.js": "./node_modules/moment/locale/si.js",
|
206
|
+
"./sk": "./node_modules/moment/locale/sk.js",
|
207
|
+
"./sk.js": "./node_modules/moment/locale/sk.js",
|
208
|
+
"./sl": "./node_modules/moment/locale/sl.js",
|
209
|
+
"./sl.js": "./node_modules/moment/locale/sl.js",
|
210
|
+
"./sq": "./node_modules/moment/locale/sq.js",
|
211
|
+
"./sq.js": "./node_modules/moment/locale/sq.js",
|
212
|
+
"./sr": "./node_modules/moment/locale/sr.js",
|
213
|
+
"./sr-cyrl": "./node_modules/moment/locale/sr-cyrl.js",
|
214
|
+
"./sr-cyrl.js": "./node_modules/moment/locale/sr-cyrl.js",
|
215
|
+
"./sr.js": "./node_modules/moment/locale/sr.js",
|
216
|
+
"./ss": "./node_modules/moment/locale/ss.js",
|
217
|
+
"./ss.js": "./node_modules/moment/locale/ss.js",
|
218
|
+
"./sv": "./node_modules/moment/locale/sv.js",
|
219
|
+
"./sv.js": "./node_modules/moment/locale/sv.js",
|
220
|
+
"./sw": "./node_modules/moment/locale/sw.js",
|
221
|
+
"./sw.js": "./node_modules/moment/locale/sw.js",
|
222
|
+
"./ta": "./node_modules/moment/locale/ta.js",
|
223
|
+
"./ta.js": "./node_modules/moment/locale/ta.js",
|
224
|
+
"./te": "./node_modules/moment/locale/te.js",
|
225
|
+
"./te.js": "./node_modules/moment/locale/te.js",
|
226
|
+
"./tet": "./node_modules/moment/locale/tet.js",
|
227
|
+
"./tet.js": "./node_modules/moment/locale/tet.js",
|
228
|
+
"./tg": "./node_modules/moment/locale/tg.js",
|
229
|
+
"./tg.js": "./node_modules/moment/locale/tg.js",
|
230
|
+
"./th": "./node_modules/moment/locale/th.js",
|
231
|
+
"./th.js": "./node_modules/moment/locale/th.js",
|
232
|
+
"./tl-ph": "./node_modules/moment/locale/tl-ph.js",
|
233
|
+
"./tl-ph.js": "./node_modules/moment/locale/tl-ph.js",
|
234
|
+
"./tlh": "./node_modules/moment/locale/tlh.js",
|
235
|
+
"./tlh.js": "./node_modules/moment/locale/tlh.js",
|
236
|
+
"./tr": "./node_modules/moment/locale/tr.js",
|
237
|
+
"./tr.js": "./node_modules/moment/locale/tr.js",
|
238
|
+
"./tzl": "./node_modules/moment/locale/tzl.js",
|
239
|
+
"./tzl.js": "./node_modules/moment/locale/tzl.js",
|
240
|
+
"./tzm": "./node_modules/moment/locale/tzm.js",
|
241
|
+
"./tzm-latn": "./node_modules/moment/locale/tzm-latn.js",
|
242
|
+
"./tzm-latn.js": "./node_modules/moment/locale/tzm-latn.js",
|
243
|
+
"./tzm.js": "./node_modules/moment/locale/tzm.js",
|
244
|
+
"./ug-cn": "./node_modules/moment/locale/ug-cn.js",
|
245
|
+
"./ug-cn.js": "./node_modules/moment/locale/ug-cn.js",
|
246
|
+
"./uk": "./node_modules/moment/locale/uk.js",
|
247
|
+
"./uk.js": "./node_modules/moment/locale/uk.js",
|
248
|
+
"./ur": "./node_modules/moment/locale/ur.js",
|
249
|
+
"./ur.js": "./node_modules/moment/locale/ur.js",
|
250
|
+
"./uz": "./node_modules/moment/locale/uz.js",
|
251
|
+
"./uz-latn": "./node_modules/moment/locale/uz-latn.js",
|
252
|
+
"./uz-latn.js": "./node_modules/moment/locale/uz-latn.js",
|
253
|
+
"./uz.js": "./node_modules/moment/locale/uz.js",
|
254
|
+
"./vi": "./node_modules/moment/locale/vi.js",
|
255
|
+
"./vi.js": "./node_modules/moment/locale/vi.js",
|
256
|
+
"./x-pseudo": "./node_modules/moment/locale/x-pseudo.js",
|
257
|
+
"./x-pseudo.js": "./node_modules/moment/locale/x-pseudo.js",
|
258
|
+
"./yo": "./node_modules/moment/locale/yo.js",
|
259
|
+
"./yo.js": "./node_modules/moment/locale/yo.js",
|
260
|
+
"./zh-cn": "./node_modules/moment/locale/zh-cn.js",
|
261
|
+
"./zh-cn.js": "./node_modules/moment/locale/zh-cn.js",
|
262
|
+
"./zh-hk": "./node_modules/moment/locale/zh-hk.js",
|
263
|
+
"./zh-hk.js": "./node_modules/moment/locale/zh-hk.js",
|
264
|
+
"./zh-tw": "./node_modules/moment/locale/zh-tw.js",
|
265
|
+
"./zh-tw.js": "./node_modules/moment/locale/zh-tw.js"
|
266
|
+
};
|
267
|
+
|
268
|
+
|
269
|
+
function webpackContext(req) {
|
270
|
+
var id = webpackContextResolve(req);
|
271
|
+
return __webpack_require__(id);
|
272
|
+
}
|
273
|
+
function webpackContextResolve(req) {
|
274
|
+
if(!__webpack_require__.o(map, req)) {
|
275
|
+
var e = new Error("Cannot find module '" + req + "'");
|
276
|
+
e.code = 'MODULE_NOT_FOUND';
|
277
|
+
throw e;
|
278
|
+
}
|
279
|
+
return map[req];
|
280
|
+
}
|
281
|
+
webpackContext.keys = function webpackContextKeys() {
|
282
|
+
return Object.keys(map);
|
283
|
+
};
|
284
|
+
webpackContext.resolve = webpackContextResolve;
|
285
|
+
module.exports = webpackContext;
|
286
|
+
webpackContext.id = "./node_modules/moment/locale sync recursive ^\\.\\/.*$";
|
287
|
+
|
288
|
+
/***/ }),
|
289
|
+
|
290
|
+
/***/ "./src/data/banned-user.js":
|
291
|
+
/*!*********************************!*\
|
292
|
+
!*** ./src/data/banned-user.js ***!
|
293
|
+
\*********************************/
|
294
|
+
/*! exports provided: BannedUser */
|
295
|
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
296
|
+
|
297
|
+
"use strict";
|
298
|
+
__webpack_require__.r(__webpack_exports__);
|
299
|
+
/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "BannedUser", function() { return BannedUser; });
|
300
|
+
/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! moment */ "./node_modules/moment/moment.js");
|
301
|
+
/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_0__);
|
302
|
+
|
303
|
+
|
304
|
+
class BannedUser
|
305
|
+
{
|
306
|
+
constructor(name, zone)
|
307
|
+
{
|
308
|
+
this.DATE_FORMAT = 'DD/MM/YYYY HH:mm';
|
309
|
+
|
310
|
+
this.name = name;
|
311
|
+
this.zone = zone;
|
312
|
+
}
|
313
|
+
|
314
|
+
static fromSFSArray(sfsa)
|
315
|
+
{
|
316
|
+
let bu = new BannedUser(sfsa.getUtfString(0), sfsa.getUtfString(1));
|
317
|
+
|
318
|
+
bu.mode = sfsa.getUtfString(2);
|
319
|
+
bu.reason = sfsa.getUtfString(3);
|
320
|
+
bu.adminName = sfsa.getUtfString(4);
|
321
|
+
bu.ipAddress = sfsa.getUtfString(5);
|
322
|
+
bu.banTimeMillis = sfsa.getLong(6);
|
323
|
+
bu.banDurationMillis = sfsa.getLong(7);
|
324
|
+
bu.expirationDate = bu._getExpirationDate();
|
325
|
+
bu.banDate = bu._getBanDate();
|
326
|
+
|
327
|
+
return bu;
|
328
|
+
}
|
329
|
+
|
330
|
+
_getExpirationDate()
|
331
|
+
{
|
332
|
+
const expireOn = moment__WEBPACK_IMPORTED_MODULE_0__(this.banTimeMillis + this.banDurationMillis);
|
333
|
+
|
334
|
+
if (expireOn.year() >= moment__WEBPACK_IMPORTED_MODULE_0__().year() + 100)
|
335
|
+
return 'Never';
|
336
|
+
else
|
337
|
+
return expireOn.format(this.DATE_FORMAT);
|
338
|
+
}
|
339
|
+
|
340
|
+
_getBanDate()
|
341
|
+
{
|
342
|
+
return moment__WEBPACK_IMPORTED_MODULE_0__(this.banTimeMillis).format(this.DATE_FORMAT);
|
343
|
+
}
|
344
|
+
}
|
345
|
+
|
346
|
+
|
347
|
+
/***/ }),
|
348
|
+
|
349
|
+
/***/ "./src/modules/ban-manager.js":
|
350
|
+
/*!************************************!*\
|
351
|
+
!*** ./src/modules/ban-manager.js ***!
|
352
|
+
\************************************/
|
353
|
+
/*! exports provided: default */
|
354
|
+
/***/ (function(module, __webpack_exports__, __webpack_require__) {
|
355
|
+
|
356
|
+
"use strict";
|
357
|
+
__webpack_require__.r(__webpack_exports__);
|
358
|
+
/* WEBPACK VAR INJECTION */(function($) {/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "default", function() { return BanManager; });
|
359
|
+
/* harmony import */ var _base_module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./base-module */ "./src/modules/base-module.js");
|
360
|
+
/* harmony import */ var _data_banned_user__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../data/banned-user */ "./src/data/banned-user.js");
|
361
|
+
/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! moment */ "./node_modules/moment/moment.js");
|
362
|
+
/* harmony import */ var moment__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(moment__WEBPACK_IMPORTED_MODULE_2__);
|
363
|
+
|
364
|
+
|
365
|
+
|
366
|
+
|
367
|
+
class BanManager extends _base_module__WEBPACK_IMPORTED_MODULE_0__["BaseModule"]
|
368
|
+
{
|
369
|
+
constructor()
|
370
|
+
{
|
371
|
+
super('banManager');
|
372
|
+
|
373
|
+
// Outgoing requests
|
374
|
+
this.REQ_GET_ZONES = 'getZones';
|
375
|
+
this.REQ_GET_USERNAMES = 'getUNames';
|
376
|
+
this.REQ_GET_IPADDRESSES = 'getIPs';
|
377
|
+
this.REQ_REMOVE_USERNAMES = 'removeUNames';
|
378
|
+
this.REQ_REMOVE_IPADDRESSES = 'removeIPs';
|
379
|
+
this.REQ_BAN = 'ban';
|
380
|
+
|
381
|
+
// Incoming responses
|
382
|
+
this.RESP_ZONES = 'zones';
|
383
|
+
this.RESP_USERNAMES = 'uNames';
|
384
|
+
this.RESP_IPADDRESSES = 'IPs';
|
385
|
+
}
|
386
|
+
|
387
|
+
//------------------------------------
|
388
|
+
// COMMON MODULE INTERFACE METHODS
|
389
|
+
// This members are used by the main controller
|
390
|
+
// to communicate with the module's controller.
|
391
|
+
//------------------------------------
|
392
|
+
|
393
|
+
initialize(idData, shellController)
|
394
|
+
{
|
395
|
+
// Call super method
|
396
|
+
super.initialize(idData, shellController);
|
397
|
+
|
398
|
+
// Initialize scrolling tabs
|
399
|
+
$('#bnm-tabNavigator > #tabs').scrollingTabs({
|
400
|
+
bootstrapVersion: 4,
|
401
|
+
scrollToTabEdge: true,
|
402
|
+
enableSwiping: true,
|
403
|
+
disableScrollArrowsOnFullyScrolled: true,
|
404
|
+
cssClassLeftArrow: 'fa fa-chevron-left',
|
405
|
+
cssClassRightArrow: 'fa fa-chevron-right'
|
406
|
+
});
|
407
|
+
|
408
|
+
// Initialize zone filter dropdown
|
409
|
+
this._zonesDD = $('#bnm-zonesDD').kendoDropDownList({
|
410
|
+
change: $.proxy(this._onZoneChange, this)
|
411
|
+
}).data('kendoDropDownList');
|
412
|
+
|
413
|
+
// Initialize ban button
|
414
|
+
$('#bnm-showBanModalBt').on('click', $.proxy(this._onShowBanModalClick, this));
|
415
|
+
|
416
|
+
// Initialize banned IPs grid
|
417
|
+
this._ipGrid = $('#bnm-ipGrid').kendoGrid({
|
418
|
+
scrollable: true,
|
419
|
+
sortable: true,
|
420
|
+
//resizable: true,
|
421
|
+
selectable: 'multiple',
|
422
|
+
columns:
|
423
|
+
[
|
424
|
+
{
|
425
|
+
field: 'ipAddress',
|
426
|
+
width: 150,
|
427
|
+
title: 'IP Address',
|
428
|
+
},
|
429
|
+
{
|
430
|
+
field: 'banDate',
|
431
|
+
width: 120,
|
432
|
+
title: 'Date',
|
433
|
+
},
|
434
|
+
{
|
435
|
+
field: 'expirationDate',
|
436
|
+
width: 120,
|
437
|
+
title: 'Expiration',
|
438
|
+
},
|
439
|
+
{
|
440
|
+
field: 'reason',
|
441
|
+
width: 250,
|
442
|
+
title: 'Reason',
|
443
|
+
},
|
444
|
+
{
|
445
|
+
field: 'adminName',
|
446
|
+
width: 150,
|
447
|
+
title: 'Banned By',
|
448
|
+
},
|
449
|
+
],
|
450
|
+
noRecords: {
|
451
|
+
template: 'No banned IP addresses.'
|
452
|
+
},
|
453
|
+
change: $.proxy(this._onIpGridSelectionChange, this),
|
454
|
+
dataSource: []
|
455
|
+
}).data('kendoGrid');
|
456
|
+
|
457
|
+
// Initialize banned usernames grid
|
458
|
+
this._namesGrid = $('#bnm-namesGrid').kendoGrid({
|
459
|
+
scrollable: true,
|
460
|
+
sortable: true,
|
461
|
+
//resizable: true,
|
462
|
+
selectable: 'multiple',
|
463
|
+
columns:
|
464
|
+
[
|
465
|
+
{
|
466
|
+
field: 'name',
|
467
|
+
width: 150,
|
468
|
+
title: 'Username',
|
469
|
+
},
|
470
|
+
{
|
471
|
+
field: 'banDate',
|
472
|
+
width: 120,
|
473
|
+
title: 'Date',
|
474
|
+
},
|
475
|
+
{
|
476
|
+
field: 'expirationDate',
|
477
|
+
width: 120,
|
478
|
+
title: 'Expiration',
|
479
|
+
},
|
480
|
+
{
|
481
|
+
field: 'reason',
|
482
|
+
width: 250,
|
483
|
+
title: 'Reason',
|
484
|
+
},
|
485
|
+
{
|
486
|
+
field: 'adminName',
|
487
|
+
width: 150,
|
488
|
+
title: 'Banned By',
|
489
|
+
},
|
490
|
+
],
|
491
|
+
noRecords: {
|
492
|
+
template: 'No banned usernames.'
|
493
|
+
},
|
494
|
+
change: $.proxy(this._onNamesGridSelectionChange, this),
|
495
|
+
dataSource: []
|
496
|
+
}).data('kendoGrid');
|
497
|
+
|
498
|
+
// Initialize refresh and remove buttons
|
499
|
+
$('#bnm-refreshNamesBt').on('click', $.proxy(this._onRefreshNamesClick, this));
|
500
|
+
$('#bnm-removeNameBt').on('click', $.proxy(this._onRemoveNamesClick, this));
|
501
|
+
$('#bnm-removeAllNamesBt').on('click', $.proxy(this._onRemoveAllNamesClick, this));
|
502
|
+
$('#bnm-refreshIpBt').on('click', $.proxy(this._onRefreshIpClick, this));
|
503
|
+
$('#bnm-removeIpBt').on('click', $.proxy(this._onRemoveIpClick, this));
|
504
|
+
$('#bnm-removeAllIpBt').on('click', $.proxy(this._onRemoveAllIpClick, this));
|
505
|
+
|
506
|
+
// Configure ban panel
|
507
|
+
$('#bnm-banModal').modal({
|
508
|
+
backdrop: 'static',
|
509
|
+
keyboard: false,
|
510
|
+
show: false,
|
511
|
+
});
|
512
|
+
|
513
|
+
// Add listener for ban panel hide
|
514
|
+
$('#bnm-banModal').on('hidden.bs.modal', $.proxy(this._onBanModalHidden, this));
|
515
|
+
|
516
|
+
// Initialize kendo validation on folder name form
|
517
|
+
this._banValidator = $('#bnm-banForm').kendoValidator({}).data('kendoValidator');
|
518
|
+
|
519
|
+
// Add listener to Ban button click
|
520
|
+
$('#bnm-banBt').on('click', $.proxy(this._onBanClick, this));
|
521
|
+
|
522
|
+
// Init ban delay numeric stepper
|
523
|
+
this._banDelayIn = $('#bnm-modalDelayNS').kendoNumericTextBox({
|
524
|
+
min: 0,
|
525
|
+
step: 1,
|
526
|
+
format: '#'
|
527
|
+
}).data('kendoNumericTextBox');
|
528
|
+
|
529
|
+
// Init ban expiration date picker
|
530
|
+
this._banExpDateIn = $('#bnm-expirationDP').kendoDatePicker({
|
531
|
+
value: this._tomorrow,
|
532
|
+
min: this._tomorrow,
|
533
|
+
footer: false,
|
534
|
+
format: 'dd/MM/yyyy'
|
535
|
+
}).data('kendoDatePicker');
|
536
|
+
|
537
|
+
// Disable manual date input
|
538
|
+
$('#bnm-expirationDP').attr('readonly','readonly');
|
539
|
+
|
540
|
+
// Init ban expiration hours/minutes inputs
|
541
|
+
this._banExpHourIn = $('#bnm-modalExpHoursNS').kendoNumericTextBox({
|
542
|
+
min: 0,
|
543
|
+
max: 99,
|
544
|
+
step: 1,
|
545
|
+
format: '#'
|
546
|
+
}).data('kendoNumericTextBox');
|
547
|
+
|
548
|
+
this._banExpMinIn = $('#bnm-modalExpMinsNS').kendoNumericTextBox({
|
549
|
+
min: 0,
|
550
|
+
max: 59,
|
551
|
+
step: 1,
|
552
|
+
format: '#'
|
553
|
+
}).data('kendoNumericTextBox');
|
554
|
+
|
555
|
+
//-------------------------------------
|
556
|
+
|
557
|
+
// Load zones list
|
558
|
+
this.sendExtensionRequest(this.REQ_GET_ZONES);
|
559
|
+
|
560
|
+
// Load banned IP addresses
|
561
|
+
// Note: we don't load the banned usernames automatically because a zone must be selected
|
562
|
+
this._getBannedIPs();
|
563
|
+
}
|
564
|
+
|
565
|
+
destroy()
|
566
|
+
{
|
567
|
+
// Call super method
|
568
|
+
super.destroy();
|
569
|
+
|
570
|
+
// Destroy scrolling tabs
|
571
|
+
$('#bnm-tabNavigator #tabs').scrollingTabs('destroy');
|
572
|
+
|
573
|
+
// Remove click listeners
|
574
|
+
$('#bnm-showBanModalBt').off('click');
|
575
|
+
$('#bnm-refreshNamesBt').off('click');
|
576
|
+
$('#bnm-removeNameBt').off('click');
|
577
|
+
$('#bnm-removeAllNamesBt').off('click');
|
578
|
+
$('#bnm-refreshIpBt').off('click');
|
579
|
+
$('#bnm-removeIpBt').off('click');
|
580
|
+
$('#bnm-removeAllIpBt').off('click');
|
581
|
+
$('#bnm-banBt').off('click');
|
582
|
+
|
583
|
+
// Hide ban panel
|
584
|
+
$('#bnm-banModal').modal('hide');
|
585
|
+
|
586
|
+
// Remove room creation panel listener
|
587
|
+
$('#bnm-banModal').off('hidden.bs.modal');
|
588
|
+
}
|
589
|
+
|
590
|
+
onExtensionCommand(command, data)
|
591
|
+
{
|
592
|
+
// Data received
|
593
|
+
if (command == this.RESP_ZONES)
|
594
|
+
{
|
595
|
+
let zones = data.getUtfStringArray('zones');
|
596
|
+
|
597
|
+
// If we have 1 zone only, we will select it immediately
|
598
|
+
const selectFirstZone = zones.length == 1;
|
599
|
+
|
600
|
+
// Sort zones list
|
601
|
+
zones.sort(function (a, b) {
|
602
|
+
return a.localeCompare(b);
|
603
|
+
});
|
604
|
+
|
605
|
+
// Add "none" zone
|
606
|
+
zones.unshift('[none]');
|
607
|
+
|
608
|
+
// Set zone dropdown datasource
|
609
|
+
this._zonesDD.setDataSource(zones);
|
610
|
+
|
611
|
+
if (selectFirstZone)
|
612
|
+
{
|
613
|
+
this._zonesDD.select(1);
|
614
|
+
this._getBannedUsernames();
|
615
|
+
}
|
616
|
+
else
|
617
|
+
this._zonesDD.select(0);
|
618
|
+
}
|
619
|
+
|
620
|
+
else if (command == this.RESP_USERNAMES)
|
621
|
+
{
|
622
|
+
// Substitute grid's data source, retaining current sorting
|
623
|
+
let currSort = this._namesGrid.dataSource.sort();
|
624
|
+
|
625
|
+
let ds = new kendo.data.DataSource({
|
626
|
+
sort: currSort,
|
627
|
+
data: this._generateBannedEntries(data.getSFSArray('uNames'))
|
628
|
+
});
|
629
|
+
|
630
|
+
// Assign data source to grid
|
631
|
+
this._namesGrid.setDataSource(ds);
|
632
|
+
|
633
|
+
// Enable remove all button
|
634
|
+
$('#bnm-removeAllNamesBt').attr('disabled', ds.total() == 0)
|
635
|
+
}
|
636
|
+
else if (command == this.RESP_IPADDRESSES)
|
637
|
+
{
|
638
|
+
// Substitute grid's data source, retaining current sorting
|
639
|
+
let currSort = this._ipGrid.dataSource.sort();
|
640
|
+
|
641
|
+
let ds = new kendo.data.DataSource({
|
642
|
+
sort: currSort,
|
643
|
+
data: this._generateBannedEntries(data.getSFSArray('IPs'))
|
644
|
+
});
|
645
|
+
|
646
|
+
// Assign data source to grid
|
647
|
+
this._ipGrid.setDataSource(ds);
|
648
|
+
|
649
|
+
// Enable remove all button
|
650
|
+
$('#bnm-removeAllIpBt').attr('disabled', ds.total() == 0)
|
651
|
+
}
|
652
|
+
}
|
653
|
+
|
654
|
+
//---------------------------------
|
655
|
+
// UI EVENT LISTENERS
|
656
|
+
//---------------------------------
|
657
|
+
|
658
|
+
_onShowBanModalClick()
|
659
|
+
{
|
660
|
+
// Display zone name
|
661
|
+
$('#bnm-modalZoneLb').text(this._zonesDD.value())
|
662
|
+
|
663
|
+
// Display ban panel
|
664
|
+
$('#bnm-banModal').modal('show');
|
665
|
+
|
666
|
+
// Focus name field
|
667
|
+
$('#bnm-modalNameIn').focus();
|
668
|
+
}
|
669
|
+
|
670
|
+
_onBanModalHidden(e)
|
671
|
+
{
|
672
|
+
// Reset validator
|
673
|
+
this._banValidator.hideMessages();
|
674
|
+
|
675
|
+
// The method above doesn't remove the k-invalid classes and aria-invalid="true" attributes from inputs
|
676
|
+
// Let's do it manually
|
677
|
+
$('#bnm-banForm .k-invalid').removeClass('k-invalid');
|
678
|
+
$('#bnm-banForm [aria-invalid="true"]').removeAttr('aria-invalid');
|
679
|
+
|
680
|
+
// Reset ban form
|
681
|
+
$('#bnm-modalNameIn').val('');
|
682
|
+
$('#bnm-modalReasonIn').val('');
|
683
|
+
$('#bnm-modalMessageIn').val('');
|
684
|
+
|
685
|
+
this._banDelayIn.value(5);
|
686
|
+
|
687
|
+
$('input[name="expiration"]').removeAttr('checked');
|
688
|
+
$('#bnm-expirationRB0').prop('checked', true);
|
689
|
+
|
690
|
+
this._banExpHourIn.value(1);
|
691
|
+
this._banExpMinIn.value(0);
|
692
|
+
|
693
|
+
this._banExpDateIn.min(this._tomorrow);
|
694
|
+
this._banExpDateIn.value(this._tomorrow);
|
695
|
+
}
|
696
|
+
|
697
|
+
_onBanClick()
|
698
|
+
{
|
699
|
+
if (this._banValidator.validate())
|
700
|
+
{
|
701
|
+
// Retrieve ban details
|
702
|
+
let params = new SFS2X.SFSObject();
|
703
|
+
|
704
|
+
params.putUtfString('zone', this._zonesDD.value());
|
705
|
+
params.putUtfString('name', $('#bnm-modalNameIn').val());
|
706
|
+
params.putUtfString('msg', $('#bnm-modalMessageIn').val());
|
707
|
+
params.putInt('delay', this._banDelayIn.value() != null ? this._banDelayIn.value() : 0);
|
708
|
+
params.putUtfString('reason', $('#bnm-modalReasonIn').val());
|
709
|
+
|
710
|
+
const exp = $('input[name="expiration"]:checked').val();
|
711
|
+
let duration = -1;
|
712
|
+
|
713
|
+
if (exp == 'after')
|
714
|
+
{
|
715
|
+
const hours = this._banExpHourIn.value() != null ? this._banExpHourIn.value() : 0;
|
716
|
+
const minutes = this._banExpMinIn.value() != null ? this._banExpMinIn.value() : 0;
|
717
|
+
|
718
|
+
duration = (hours * 60) + minutes;
|
719
|
+
|
720
|
+
if (duration <= 0)
|
721
|
+
duration = 1;
|
722
|
+
}
|
723
|
+
else if (exp == 'on')
|
724
|
+
{
|
725
|
+
const onDate = moment__WEBPACK_IMPORTED_MODULE_2__(this._banExpDateIn.value());
|
726
|
+
const now = moment__WEBPACK_IMPORTED_MODULE_2__();
|
727
|
+
|
728
|
+
duration = onDate.startOf('day').diff(now.startOf('minute'), 'minutes');
|
729
|
+
|
730
|
+
if (duration <= 0)
|
731
|
+
duration = 1;
|
732
|
+
}
|
733
|
+
|
734
|
+
params.putInt('durMins', duration);
|
735
|
+
|
736
|
+
// Send ban request to server
|
737
|
+
this.sendExtensionRequest(this.REQ_BAN, params);
|
738
|
+
|
739
|
+
// Refresh list
|
740
|
+
this._getBannedUsernames();
|
741
|
+
|
742
|
+
// Focus username field
|
743
|
+
$('#bnm-modalNameIn').focus();
|
744
|
+
$('#bnm-modalNameIn').select();
|
745
|
+
}
|
746
|
+
}
|
747
|
+
|
748
|
+
_onZoneChange()
|
749
|
+
{
|
750
|
+
$('#bnm-namesButtons').attr('disabled', this._zonesDD.select() == 0);
|
751
|
+
$('#bnm-showBanModalBt').attr('disabled', this._zonesDD.select() == 0);
|
752
|
+
|
753
|
+
this._getBannedUsernames();
|
754
|
+
}
|
755
|
+
|
756
|
+
_onNamesGridSelectionChange()
|
757
|
+
{
|
758
|
+
// Enable/disable remove button
|
759
|
+
const selectedRows = this._namesGrid.select();
|
760
|
+
$('#bnm-removeNameBt').attr('disabled', selectedRows.length == 0);
|
761
|
+
}
|
762
|
+
|
763
|
+
_onIpGridSelectionChange()
|
764
|
+
{
|
765
|
+
// Enable/disable remove button
|
766
|
+
const selectedRows = this._ipGrid.select();
|
767
|
+
$('#bnm-removeIpBt').attr('disabled', selectedRows.length == 0);
|
768
|
+
}
|
769
|
+
|
770
|
+
_onRefreshNamesClick()
|
771
|
+
{
|
772
|
+
this._getBannedUsernames();
|
773
|
+
}
|
774
|
+
|
775
|
+
_onRemoveNamesClick()
|
776
|
+
{
|
777
|
+
this.shellCtrl.showConfirmWarning(`Are you sure you want to remove the banning for the selected username${this._ipGrid.select().length > 1 ? 's' : ''}?`, $.proxy(this._onRemoveNamesConfirm, this));
|
778
|
+
}
|
779
|
+
|
780
|
+
_onRemoveNamesConfirm()
|
781
|
+
{
|
782
|
+
let selectedRows = this._namesGrid.select();
|
783
|
+
let usernames = [];
|
784
|
+
|
785
|
+
for (let i = 0; i < selectedRows.length; i++)
|
786
|
+
{
|
787
|
+
let dataItem = this._namesGrid.dataItem(selectedRows[i]);
|
788
|
+
usernames.push(dataItem.name);
|
789
|
+
}
|
790
|
+
|
791
|
+
this._requestBannedUsersRemoval(usernames, this._zonesDD.value());
|
792
|
+
}
|
793
|
+
|
794
|
+
_onRemoveAllNamesClick()
|
795
|
+
{
|
796
|
+
this.shellCtrl.showConfirmWarning(`Are you sure you want to remove all banned usernames?`, $.proxy(this._onRemovAllNamesConfirm, this));
|
797
|
+
}
|
798
|
+
|
799
|
+
_onRemovAllNamesConfirm()
|
800
|
+
{
|
801
|
+
this._requestBannedUsersRemoval(null, this._zonesDD.value());
|
802
|
+
}
|
803
|
+
|
804
|
+
_onRefreshIpClick()
|
805
|
+
{
|
806
|
+
this._getBannedIPs();
|
807
|
+
}
|
808
|
+
|
809
|
+
_onRemoveIpClick()
|
810
|
+
{
|
811
|
+
this.shellCtrl.showConfirmWarning(`Are you sure you want to remove the banning for the selected IP address${this._ipGrid.select().length > 1 ? 'es' : ''}?`, $.proxy(this._onRemoveIpConfirm, this));
|
812
|
+
}
|
813
|
+
|
814
|
+
_onRemoveIpConfirm()
|
815
|
+
{
|
816
|
+
let selectedRows = this._ipGrid.select();
|
817
|
+
let ipAddresses = [];
|
818
|
+
|
819
|
+
for (let i = 0; i < selectedRows.length; i++)
|
820
|
+
{
|
821
|
+
let dataItem = this._ipGrid.dataItem(selectedRows[i]);
|
822
|
+
ipAddresses.push(dataItem.ipAddress);
|
823
|
+
}
|
824
|
+
|
825
|
+
this._requestBannedIPsRemoval(ipAddresses);
|
826
|
+
}
|
827
|
+
|
828
|
+
_onRemoveAllIpClick()
|
829
|
+
{
|
830
|
+
this.shellCtrl.showConfirmWarning(`Are you sure you want to remove all banned IP addresses?`, $.proxy(this._onRemovAllIpConfirm, this));
|
831
|
+
}
|
832
|
+
|
833
|
+
_onRemovAllIpConfirm()
|
834
|
+
{
|
835
|
+
this._requestBannedIPsRemoval(null);
|
836
|
+
}
|
837
|
+
|
838
|
+
//------------------------------------
|
839
|
+
// PRIVATE METHODS
|
840
|
+
//------------------------------------
|
841
|
+
|
842
|
+
_getBannedIPs()
|
843
|
+
{
|
844
|
+
// Remove selection
|
845
|
+
this._ipGrid.clearSelection();
|
846
|
+
|
847
|
+
// Clear banned IPs table
|
848
|
+
this._ipGrid.setDataSource([]);
|
849
|
+
|
850
|
+
// Send request to extension
|
851
|
+
this.sendExtensionRequest(this.REQ_GET_IPADDRESSES);
|
852
|
+
}
|
853
|
+
|
854
|
+
_getBannedUsernames()
|
855
|
+
{
|
856
|
+
// Remove selection
|
857
|
+
this._namesGrid.clearSelection();
|
858
|
+
|
859
|
+
// Clear banned IPs table
|
860
|
+
this._namesGrid.setDataSource([]);
|
861
|
+
|
862
|
+
if (this._zonesDD.select() > 0)
|
863
|
+
{
|
864
|
+
// Get zone ID
|
865
|
+
let params = new SFS2X.SFSObject();
|
866
|
+
params.putUtfString('zone', this._zonesDD.value());
|
867
|
+
|
868
|
+
// Send request to extension
|
869
|
+
this.sendExtensionRequest(this.REQ_GET_USERNAMES, params);
|
870
|
+
}
|
871
|
+
}
|
872
|
+
|
873
|
+
_generateBannedEntries(banData)
|
874
|
+
{
|
875
|
+
let bannedEntries = [];
|
876
|
+
|
877
|
+
for (let i = 0; i < banData.size(); i++)
|
878
|
+
{
|
879
|
+
const bu = _data_banned_user__WEBPACK_IMPORTED_MODULE_1__["BannedUser"].fromSFSArray(banData.getSFSArray(i));
|
880
|
+
bannedEntries.push(bu);
|
881
|
+
}
|
882
|
+
|
883
|
+
return bannedEntries;
|
884
|
+
}
|
885
|
+
|
886
|
+
_requestBannedUsersRemoval(usernames, zone)
|
887
|
+
{
|
888
|
+
// If the usernames array is null, server will remove all banned usernames
|
889
|
+
let params = new SFS2X.SFSObject();
|
890
|
+
params.putUtfString('zone', zone);
|
891
|
+
|
892
|
+
if (usernames == null)
|
893
|
+
params.putNull('uNames');
|
894
|
+
else
|
895
|
+
params.putUtfStringArray('uNames', usernames);
|
896
|
+
|
897
|
+
this.sendExtensionRequest(this.REQ_REMOVE_USERNAMES, params);
|
898
|
+
}
|
899
|
+
|
900
|
+
_requestBannedIPsRemoval(ipAddresses)
|
901
|
+
{
|
902
|
+
// If the usernames array is null, server will remove all banned usernames
|
903
|
+
let params = new SFS2X.SFSObject();
|
904
|
+
|
905
|
+
if (ipAddresses == null)
|
906
|
+
params.putNull('IPs');
|
907
|
+
else
|
908
|
+
params.putUtfStringArray('IPs', ipAddresses);
|
909
|
+
|
910
|
+
this.sendExtensionRequest(this.REQ_REMOVE_IPADDRESSES, params);
|
911
|
+
}
|
912
|
+
|
913
|
+
//---------------------------------
|
914
|
+
// PRIVATE GETTERS
|
915
|
+
//---------------------------------
|
916
|
+
|
917
|
+
get _tomorrow()
|
918
|
+
{
|
919
|
+
let tomorrow = moment__WEBPACK_IMPORTED_MODULE_2__().add(1, 'd');
|
920
|
+
return tomorrow.toDate();
|
921
|
+
}
|
922
|
+
}
|
923
|
+
|
924
|
+
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(/*! jquery */ "jquery")))
|
925
|
+
|
926
|
+
/***/ })
|
927
|
+
|
928
|
+
}]);
|
929
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXNzZXRzL2pzL2NvcmUvbW9kdWxlcy9tb2R1bGUtMS5idW5kbGUuanMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9hcHBsaWNhdGlvbi8uL3NyYy9kYXRhL2Jhbm5lZC11c2VyLmpzIiwid2VicGFjazovL2FwcGxpY2F0aW9uLy4vc3JjL21vZHVsZXMvYmFuLW1hbmFnZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbmV4cG9ydCBjbGFzcyBCYW5uZWRVc2VyXG57XG5cdGNvbnN0cnVjdG9yKG5hbWUsIHpvbmUpXG5cdHtcblx0XHR0aGlzLkRBVEVfRk9STUFUID0gJ0REL01NL1lZWVkgSEg6bW0nO1xuXG5cdCAgICB0aGlzLm5hbWUgPSBuYW1lO1xuXHRcdHRoaXMuem9uZSA9IHpvbmU7XG5cdH1cblxuXHRzdGF0aWMgZnJvbVNGU0FycmF5KHNmc2EpXG5cdHtcblx0XHRsZXQgYnUgPSBuZXcgQmFubmVkVXNlcihzZnNhLmdldFV0ZlN0cmluZygwKSwgc2ZzYS5nZXRVdGZTdHJpbmcoMSkpO1xuXG5cdFx0YnUubW9kZSA9IHNmc2EuZ2V0VXRmU3RyaW5nKDIpO1xuXHRcdGJ1LnJlYXNvbiA9IHNmc2EuZ2V0VXRmU3RyaW5nKDMpO1xuXHRcdGJ1LmFkbWluTmFtZSA9IHNmc2EuZ2V0VXRmU3RyaW5nKDQpO1xuXHRcdGJ1LmlwQWRkcmVzcyA9IHNmc2EuZ2V0VXRmU3RyaW5nKDUpO1xuXHRcdGJ1LmJhblRpbWVNaWxsaXMgPSBzZnNhLmdldExvbmcoNik7XG5cdFx0YnUuYmFuRHVyYXRpb25NaWxsaXMgPSBzZnNhLmdldExvbmcoNyk7XG5cdFx0YnUuZXhwaXJhdGlvbkRhdGUgPSBidS5fZ2V0RXhwaXJhdGlvbkRhdGUoKTtcblx0XHRidS5iYW5EYXRlID0gYnUuX2dldEJhbkRhdGUoKTtcblxuXHRcdHJldHVybiBidTtcblx0fVxuXG5cdF9nZXRFeHBpcmF0aW9uRGF0ZSgpXG5cdHtcblx0XHRjb25zdCBleHBpcmVPbiA9IG1vbWVudCh0aGlzLmJhblRpbWVNaWxsaXMgKyB0aGlzLmJhbkR1cmF0aW9uTWlsbGlzKTtcblxuXHRcdGlmIChleHBpcmVPbi55ZWFyKCkgPj0gbW9tZW50KCkueWVhcigpICsgMTAwKVxuXHRcdFx0cmV0dXJuICdOZXZlcic7XG5cdFx0ZWxzZVxuXHRcdFx0cmV0dXJuIGV4cGlyZU9uLmZvcm1hdCh0aGlzLkRBVEVfRk9STUFUKTtcblx0fVxuXG5cdF9nZXRCYW5EYXRlKClcblx0e1xuXHRcdHJldHVybiBtb21lbnQodGhpcy5iYW5UaW1lTWlsbGlzKS5mb3JtYXQodGhpcy5EQVRFX0ZPUk1BVCk7XG5cdH1cbn1cbiIsImltcG9ydCB7QmFzZU1vZHVsZX0gZnJvbSAnLi9iYXNlLW1vZHVsZSc7XG5pbXBvcnQge0Jhbm5lZFVzZXJ9IGZyb20gJy4uL2RhdGEvYmFubmVkLXVzZXInO1xuaW1wb3J0ICogYXMgbW9tZW50IGZyb20gJ21vbWVudCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIEJhbk1hbmFnZXIgZXh0ZW5kcyBCYXNlTW9kdWxlXG57XG5cdGNvbnN0cnVjdG9yKClcblx0e1xuXHQgICAgc3VwZXIoJ2Jhbk1hbmFnZXInKTtcblxuXHRcdC8vIE91dGdvaW5nIHJlcXVlc3RzXG5cdFx0dGhpcy5SRVFfR0VUX1pPTkVTID0gJ2dldFpvbmVzJztcblx0XHR0aGlzLlJFUV9HRVRfVVNFUk5BTUVTID0gJ2dldFVOYW1lcyc7XG5cdFx0dGhpcy5SRVFfR0VUX0lQQUREUkVTU0VTID0gJ2dldElQcyc7XG5cdFx0dGhpcy5SRVFfUkVNT1ZFX1VTRVJOQU1FUyA9ICdyZW1vdmVVTmFtZXMnO1xuXHRcdHRoaXMuUkVRX1JFTU9WRV9JUEFERFJFU1NFUyA9ICdyZW1vdmVJUHMnO1xuXHRcdHRoaXMuUkVRX0JBTiA9ICdiYW4nO1xuXG5cdFx0Ly8gSW5jb21pbmcgcmVzcG9uc2VzXG5cdFx0dGhpcy5SRVNQX1pPTkVTID0gJ3pvbmVzJztcblx0XHR0aGlzLlJFU1BfVVNFUk5BTUVTID0gJ3VOYW1lcyc7XG5cdFx0dGhpcy5SRVNQX0lQQUREUkVTU0VTID0gJ0lQcyc7XG5cdH1cblxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQvLyBDT01NT04gTU9EVUxFIElOVEVSRkFDRSBNRVRIT0RTXG5cdC8vIFRoaXMgbWVtYmVycyBhcmUgdXNlZCBieSB0aGUgbWFpbiBjb250cm9sbGVyXG5cdC8vIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIG1vZHVsZSdzIGNvbnRyb2xsZXIuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblx0aW5pdGlhbGl6ZShpZERhdGEsIHNoZWxsQ29udHJvbGxlcilcblx0e1xuXHRcdC8vIENhbGwgc3VwZXIgbWV0aG9kXG5cdFx0c3VwZXIuaW5pdGlhbGl6ZShpZERhdGEsIHNoZWxsQ29udHJvbGxlcik7XG5cblx0XHQvLyBJbml0aWFsaXplIHNjcm9sbGluZyB0YWJzXG5cdFx0JCgnI2JubS10YWJOYXZpZ2F0b3IgPiAjdGFicycpLnNjcm9sbGluZ1RhYnMoe1xuXHRcdFx0Ym9vdHN0cmFwVmVyc2lvbjogNCxcblx0XHRcdHNjcm9sbFRvVGFiRWRnZTogdHJ1ZSxcblx0XHRcdGVuYWJsZVN3aXBpbmc6IHRydWUsXG5cdFx0XHRkaXNhYmxlU2Nyb2xsQXJyb3dzT25GdWxseVNjcm9sbGVkOiB0cnVlLFxuXHRcdFx0Y3NzQ2xhc3NMZWZ0QXJyb3c6ICdmYSBmYS1jaGV2cm9uLWxlZnQnLFxuXHRcdFx0Y3NzQ2xhc3NSaWdodEFycm93OiAnZmEgZmEtY2hldnJvbi1yaWdodCdcblx0XHR9KTtcblxuXHRcdC8vIEluaXRpYWxpemUgem9uZSBmaWx0ZXIgZHJvcGRvd25cblx0XHR0aGlzLl96b25lc0REID0gJCgnI2JubS16b25lc0REJykua2VuZG9Ecm9wRG93bkxpc3Qoe1xuXHRcdFx0Y2hhbmdlOiAkLnByb3h5KHRoaXMuX29uWm9uZUNoYW5nZSwgdGhpcylcblx0XHR9KS5kYXRhKCdrZW5kb0Ryb3BEb3duTGlzdCcpO1xuXG5cdFx0Ly8gSW5pdGlhbGl6ZSBiYW4gYnV0dG9uXG5cdFx0JCgnI2JubS1zaG93QmFuTW9kYWxCdCcpLm9uKCdjbGljaycsICQucHJveHkodGhpcy5fb25TaG93QmFuTW9kYWxDbGljaywgdGhpcykpO1xuXG5cdFx0Ly8gSW5pdGlhbGl6ZSBiYW5uZWQgSVBzIGdyaWRcblx0XHR0aGlzLl9pcEdyaWQgPSAkKCcjYm5tLWlwR3JpZCcpLmtlbmRvR3JpZCh7XG5cdFx0XHRzY3JvbGxhYmxlOiB0cnVlLFxuICAgICAgICAgICAgc29ydGFibGU6IHRydWUsXG5cdFx0XHQvL3Jlc2l6YWJsZTogdHJ1ZSxcblx0XHRcdHNlbGVjdGFibGU6ICdtdWx0aXBsZScsXG4gICAgICAgICAgICBjb2x1bW5zOlxuICAgICAgICAgICAgW1xuXHRcdFx0XHR7XG5cdCAgICAgICAgICAgICAgICBmaWVsZDogJ2lwQWRkcmVzcycsXG5cdCAgICAgICAgICAgICAgICB3aWR0aDogMTUwLFxuXHRcdFx0XHRcdHRpdGxlOiAnSVAgQWRkcmVzcycsXG5cdCAgICAgICAgICAgIH0sXG5cdCAgICAgICAgICAgIHtcblx0ICAgICAgICAgICAgICAgIGZpZWxkOiAnYmFuRGF0ZScsXG5cdCAgICAgICAgICAgICAgICB3aWR0aDogMTIwLFxuXHQgICAgICAgICAgICAgICAgdGl0bGU6ICdEYXRlJyxcblx0ICAgICAgICAgICAgfSxcblx0ICAgICAgICAgICAge1xuXHQgICAgICAgICAgICAgICAgZmllbGQ6ICdleHBpcmF0aW9uRGF0ZScsXG5cdCAgICAgICAgICAgICAgICB3aWR0aDogMTIwLFxuXHQgICAgICAgICAgICAgICAgdGl0bGU6ICdFeHBpcmF0aW9uJyxcblx0ICAgICAgICAgICAgfSxcblx0XHRcdFx0e1xuXHQgICAgICAgICAgICAgICAgZmllbGQ6ICdyZWFzb24nLFxuXHQgICAgICAgICAgICAgICAgd2lkdGg6IDI1MCxcblx0XHRcdFx0XHR0aXRsZTogJ1JlYXNvbicsXG5cdCAgICAgICAgICAgIH0sXG5cdFx0XHRcdHtcblx0ICAgICAgICAgICAgICAgIGZpZWxkOiAnYWRtaW5OYW1lJyxcblx0ICAgICAgICAgICAgICAgIHdpZHRoOiAxNTAsXG5cdFx0XHRcdFx0dGl0bGU6ICdCYW5uZWQgQnknLFxuXHQgICAgICAgICAgICB9LFxuXHRcdFx0XSxcblx0XHRcdG5vUmVjb3Jkczoge1xuXHRcdFx0XHR0ZW1wbGF0ZTogJ05vIGJhbm5lZCBJUCBhZGRyZXNzZXMuJ1xuXHRcdFx0fSxcblx0XHRcdGNoYW5nZTogJC5wcm94eSh0aGlzLl9vbklwR3JpZFNlbGVjdGlvbkNoYW5nZSwgdGhpcyksXG5cdFx0XHRkYXRhU291cmNlOiBbXVxuICAgICAgICB9KS5kYXRhKCdrZW5kb0dyaWQnKTtcblxuXHRcdC8vIEluaXRpYWxpemUgYmFubmVkIHVzZXJuYW1lcyBncmlkXG5cdFx0dGhpcy5fbmFtZXNHcmlkID0gJCgnI2JubS1uYW1lc0dyaWQnKS5rZW5kb0dyaWQoe1xuXHRcdFx0c2Nyb2xsYWJsZTogdHJ1ZSxcbiAgICAgICAgICAgIHNvcnRhYmxlOiB0cnVlLFxuXHRcdFx0Ly9yZXNpemFibGU6IHRydWUsXG5cdFx0XHRzZWxlY3RhYmxlOiAnbXVsdGlwbGUnLFxuICAgICAgICAgICAgY29sdW1uczpcbiAgICAgICAgICAgIFtcblx0XHRcdFx0e1xuXHQgICAgICAgICAgICAgICAgZmllbGQ6ICduYW1lJyxcblx0ICAgICAgICAgICAgICAgIHdpZHRoOiAxNTAsXG5cdFx0XHRcdFx0dGl0bGU6ICdVc2VybmFtZScsXG5cdCAgICAgICAgICAgIH0sXG5cdFx0XHRcdHtcblx0ICAgICAgICAgICAgICAgIGZpZWxkOiAnYmFuRGF0ZScsXG5cdCAgICAgICAgICAgICAgICB3aWR0aDogMTIwLFxuXHQgICAgICAgICAgICAgICAgdGl0bGU6ICdEYXRlJyxcblx0ICAgICAgICAgICAgfSxcblx0ICAgICAgICAgICAge1xuXHQgICAgICAgICAgICAgICAgZmllbGQ6ICdleHBpcmF0aW9uRGF0ZScsXG5cdCAgICAgICAgICAgICAgICB3aWR0aDogMTIwLFxuXHQgICAgICAgICAgICAgICAgdGl0bGU6ICdFeHBpcmF0aW9uJyxcblx0ICAgICAgICAgICAgfSxcblx0XHRcdFx0e1xuXHQgICAgICAgICAgICAgICAgZmllbGQ6ICdyZWFzb24nLFxuXHQgICAgICAgICAgICAgICAgd2lkdGg6IDI1MCxcblx0XHRcdFx0XHR0aXRsZTogJ1JlYXNvbicsXG5cdCAgICAgICAgICAgIH0sXG5cdFx0XHRcdHtcblx0ICAgICAgICAgICAgICAgIGZpZWxkOiAnYWRtaW5OYW1lJyxcblx0ICAgICAgICAgICAgICAgIHdpZHRoOiAxNTAsXG5cdFx0XHRcdFx0dGl0bGU6ICdCYW5uZWQgQnknLFxuXHQgICAgICAgICAgICB9LFxuXHRcdFx0XSxcblx0XHRcdG5vUmVjb3Jkczoge1xuXHRcdFx0XHR0ZW1wbGF0ZTogJ05vIGJhbm5lZCB1c2VybmFtZXMuJ1xuXHRcdFx0fSxcblx0XHRcdGNoYW5nZTogJC5wcm94eSh0aGlzLl9vbk5hbWVzR3JpZFNlbGVjdGlvbkNoYW5nZSwgdGhpcyksXG5cdFx0XHRkYXRhU291cmNlOiBbXVxuICAgICAgICB9KS5kYXRhKCdrZW5kb0dyaWQnKTtcblxuXHRcdC8vIEluaXRpYWxpemUgcmVmcmVzaCBhbmQgcmVtb3ZlIGJ1dHRvbnNcblx0XHQkKCcjYm5tLXJlZnJlc2hOYW1lc0J0Jykub24oJ2NsaWNrJywgJC5wcm94eSh0aGlzLl9vblJlZnJlc2hOYW1lc0NsaWNrLCB0aGlzKSk7XG5cdFx0JCgnI2JubS1yZW1vdmVOYW1lQnQnKS5vbignY2xpY2snLCAkLnByb3h5KHRoaXMuX29uUmVtb3ZlTmFtZXNDbGljaywgdGhpcykpO1xuXHRcdCQoJyNibm0tcmVtb3ZlQWxsTmFtZXNCdCcpLm9uKCdjbGljaycsICQucHJveHkodGhpcy5fb25SZW1vdmVBbGxOYW1lc0NsaWNrLCB0aGlzKSk7XG5cdFx0JCgnI2JubS1yZWZyZXNoSXBCdCcpLm9uKCdjbGljaycsICQucHJveHkodGhpcy5fb25SZWZyZXNoSXBDbGljaywgdGhpcykpO1xuXHRcdCQoJyNibm0tcmVtb3ZlSXBCdCcpLm9uKCdjbGljaycsICQucHJveHkodGhpcy5fb25SZW1vdmVJcENsaWNrLCB0aGlzKSk7XG5cdFx0JCgnI2JubS1yZW1vdmVBbGxJcEJ0Jykub24oJ2NsaWNrJywgJC5wcm94eSh0aGlzLl9vblJlbW92ZUFsbElwQ2xpY2ssIHRoaXMpKTtcblxuXHRcdC8vIENvbmZpZ3VyZSBiYW4gcGFuZWxcblx0XHQkKCcjYm5tLWJhbk1vZGFsJykubW9kYWwoe1xuXHRcdFx0YmFja2Ryb3A6ICdzdGF0aWMnLFxuXHRcdFx0a2V5Ym9hcmQ6IGZhbHNlLFxuXHRcdFx0c2hvdzogZmFsc2UsXG5cdFx0fSk7XG5cblx0XHQvLyBBZGQgbGlzdGVuZXIgZm9yIGJhbiBwYW5lbCBoaWRlXG5cdFx0JCgnI2JubS1iYW5Nb2RhbCcpLm9uKCdoaWRkZW4uYnMubW9kYWwnLCAkLnByb3h5KHRoaXMuX29uQmFuTW9kYWxIaWRkZW4sIHRoaXMpKTtcblxuXHRcdC8vIEluaXRpYWxpemUga2VuZG8gdmFsaWRhdGlvbiBvbiBmb2xkZXIgbmFtZSBmb3JtXG5cdFx0dGhpcy5fYmFuVmFsaWRhdG9yID0gJCgnI2JubS1iYW5Gb3JtJykua2VuZG9WYWxpZGF0b3Ioe30pLmRhdGEoJ2tlbmRvVmFsaWRhdG9yJyk7XG5cblx0XHQvLyBBZGQgbGlzdGVuZXIgdG8gQmFuIGJ1dHRvbiBjbGlja1xuXHRcdCQoJyNibm0tYmFuQnQnKS5vbignY2xpY2snLCAkLnByb3h5KHRoaXMuX29uQmFuQ2xpY2ssIHRoaXMpKTtcblxuXHRcdC8vIEluaXQgYmFuIGRlbGF5IG51bWVyaWMgc3RlcHBlclxuXHRcdHRoaXMuX2JhbkRlbGF5SW4gPSAkKCcjYm5tLW1vZGFsRGVsYXlOUycpLmtlbmRvTnVtZXJpY1RleHRCb3goe1xuXHRcdCAgICBtaW46IDAsXG5cdFx0ICAgIHN0ZXA6IDEsXG5cdFx0ICAgIGZvcm1hdDogJyMnXG5cdFx0fSkuZGF0YSgna2VuZG9OdW1lcmljVGV4dEJveCcpO1xuXG5cdFx0Ly8gSW5pdCBiYW4gZXhwaXJhdGlvbiBkYXRlIHBpY2tlclxuXHRcdHRoaXMuX2JhbkV4cERhdGVJbiA9ICQoJyNibm0tZXhwaXJhdGlvbkRQJykua2VuZG9EYXRlUGlja2VyKHtcblx0XHRcdHZhbHVlOiB0aGlzLl90b21vcnJvdyxcblx0XHRcdG1pbjogdGhpcy5fdG9tb3Jyb3csXG5cdFx0XHRmb290ZXI6IGZhbHNlLFxuXHRcdFx0Zm9ybWF0OiAnZGQvTU0veXl5eSdcblx0XHR9KS5kYXRhKCdrZW5kb0RhdGVQaWNrZXInKTtcblxuXHRcdC8vIERpc2FibGUgbWFudWFsIGRhdGUgaW5wdXRcblx0XHQkKCcjYm5tLWV4cGlyYXRpb25EUCcpLmF0dHIoJ3JlYWRvbmx5JywncmVhZG9ubHknKTtcblxuXHRcdC8vIEluaXQgYmFuIGV4cGlyYXRpb24gaG91cnMvbWludXRlcyBpbnB1dHNcblx0XHR0aGlzLl9iYW5FeHBIb3VySW4gPSAkKCcjYm5tLW1vZGFsRXhwSG91cnNOUycpLmtlbmRvTnVtZXJpY1RleHRCb3goe1xuXHRcdCAgICBtaW46IDAsXG5cdFx0XHRtYXg6IDk5LFxuXHRcdCAgICBzdGVwOiAxLFxuXHRcdCAgICBmb3JtYXQ6ICcjJ1xuXHRcdH0pLmRhdGEoJ2tlbmRvTnVtZXJpY1RleHRCb3gnKTtcblxuXHRcdHRoaXMuX2JhbkV4cE1pbkluID0gJCgnI2JubS1tb2RhbEV4cE1pbnNOUycpLmtlbmRvTnVtZXJpY1RleHRCb3goe1xuXHRcdCAgICBtaW46IDAsXG5cdFx0XHRtYXg6IDU5LFxuXHRcdCAgICBzdGVwOiAxLFxuXHRcdCAgICBmb3JtYXQ6ICcjJ1xuXHRcdH0pLmRhdGEoJ2tlbmRvTnVtZXJpY1RleHRCb3gnKTtcblxuXHRcdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdFx0Ly8gTG9hZCB6b25lcyBsaXN0XG5cdFx0dGhpcy5zZW5kRXh0ZW5zaW9uUmVxdWVzdCh0aGlzLlJFUV9HRVRfWk9ORVMpO1xuXG5cdFx0Ly8gTG9hZCBiYW5uZWQgSVAgYWRkcmVzc2VzXG5cdFx0Ly8gTm90ZTogd2UgZG9uJ3QgbG9hZCB0aGUgYmFubmVkIHVzZXJuYW1lcyBhdXRvbWF0aWNhbGx5IGJlY2F1c2UgYSB6b25lIG11c3QgYmUgc2VsZWN0ZWRcblx0XHR0aGlzLl9nZXRCYW5uZWRJUHMoKTtcblx0fVxuXG5cdGRlc3Ryb3koKVxuXHR7XG5cdFx0Ly8gQ2FsbCBzdXBlciBtZXRob2Rcblx0XHRzdXBlci5kZXN0cm95KCk7XG5cblx0XHQvLyBEZXN0cm95IHNjcm9sbGluZyB0YWJzXG5cdFx0JCgnI2JubS10YWJOYXZpZ2F0b3IgI3RhYnMnKS5zY3JvbGxpbmdUYWJzKCdkZXN0cm95Jyk7XG5cblx0XHQvLyBSZW1vdmUgY2xpY2sgbGlzdGVuZXJzXG5cdFx0JCgnI2JubS1zaG93QmFuTW9kYWxCdCcpLm9mZignY2xpY2snKTtcblx0XHQkKCcjYm5tLXJlZnJlc2hOYW1lc0J0Jykub2ZmKCdjbGljaycpO1xuXHRcdCQoJyNibm0tcmVtb3ZlTmFtZUJ0Jykub2ZmKCdjbGljaycpO1xuXHRcdCQoJyNibm0tcmVtb3ZlQWxsTmFtZXNCdCcpLm9mZignY2xpY2snKTtcblx0XHQkKCcjYm5tLXJlZnJlc2hJcEJ0Jykub2ZmKCdjbGljaycpO1xuXHRcdCQoJyNibm0tcmVtb3ZlSXBCdCcpLm9mZignY2xpY2snKTtcblx0XHQkKCcjYm5tLXJlbW92ZUFsbElwQnQnKS5vZmYoJ2NsaWNrJyk7XG5cdFx0JCgnI2JubS1iYW5CdCcpLm9mZignY2xpY2snKTtcblxuXHRcdC8vIEhpZGUgYmFuIHBhbmVsXG5cdFx0JCgnI2JubS1iYW5Nb2RhbCcpLm1vZGFsKCdoaWRlJyk7XG5cblx0XHQvLyBSZW1vdmUgcm9vbSBjcmVhdGlvbiBwYW5lbCBsaXN0ZW5lclxuXHRcdCQoJyNibm0tYmFuTW9kYWwnKS5vZmYoJ2hpZGRlbi5icy5tb2RhbCcpO1xuXHR9XG5cblx0b25FeHRlbnNpb25Db21tYW5kKGNvbW1hbmQsIGRhdGEpXG5cdHtcblx0XHQvLyBEYXRhIHJlY2VpdmVkXG5cdFx0aWYgKGNvbW1hbmQgPT0gdGhpcy5SRVNQX1pPTkVTKVxuXHRcdHtcblx0XHRcdGxldCB6b25lcyA9IGRhdGEuZ2V0VXRmU3RyaW5nQXJyYXkoJ3pvbmVzJyk7XG5cblx0XHRcdC8vIElmIHdlIGhhdmUgMSB6b25lIG9ubHksIHdlIHdpbGwgc2VsZWN0IGl0IGltbWVkaWF0ZWx5XG5cdFx0XHRjb25zdCBzZWxlY3RGaXJzdFpvbmUgPSB6b25lcy5sZW5ndGggPT0gMTtcblxuXHRcdFx0Ly8gU29ydCB6b25lcyBsaXN0XG5cdFx0XHR6b25lcy5zb3J0KGZ1bmN0aW9uIChhLCBiKSB7XG5cdFx0XHRcdHJldHVybiBhLmxvY2FsZUNvbXBhcmUoYik7XG5cdFx0XHR9KTtcblxuXHRcdFx0Ly8gQWRkIFwibm9uZVwiIHpvbmVcblx0XHRcdHpvbmVzLnVuc2hpZnQoJ1tub25lXScpO1xuXG5cdFx0XHQvLyBTZXQgem9uZSBkcm9wZG93biBkYXRhc291cmNlXG5cdFx0XHR0aGlzLl96b25lc0RELnNldERhdGFTb3VyY2Uoem9uZXMpO1xuXG5cdFx0XHRpZiAoc2VsZWN0Rmlyc3Rab25lKVxuXHRcdFx0e1xuXHRcdFx0XHR0aGlzLl96b25lc0RELnNlbGVjdCgxKTtcblx0XHRcdFx0dGhpcy5fZ2V0QmFubmVkVXNlcm5hbWVzKCk7XG5cdFx0XHR9XG5cdFx0XHRlbHNlXG5cdFx0XHRcdHRoaXMuX3pvbmVzREQuc2VsZWN0KDApO1xuXHRcdH1cblxuXHRcdGVsc2UgaWYgKGNvbW1hbmQgPT0gdGhpcy5SRVNQX1VTRVJOQU1FUylcblx0XHR7XG5cdFx0XHQvLyBTdWJzdGl0dXRlIGdyaWQncyBkYXRhIHNvdXJjZSwgcmV0YWluaW5nIGN1cnJlbnQgc29ydGluZ1xuXHRcdFx0bGV0IGN1cnJTb3J0ID0gdGhpcy5fbmFtZXNHcmlkLmRhdGFTb3VyY2Uuc29ydCgpO1xuXG5cdFx0XHRsZXQgZHMgPSBuZXcga2VuZG8uZGF0YS5EYXRhU291cmNlKHtcblx0XHRcdFx0c29ydDogY3VyclNvcnQsXG5cdFx0XHRcdGRhdGE6IHRoaXMuX2dlbmVyYXRlQmFubmVkRW50cmllcyhkYXRhLmdldFNGU0FycmF5KCd1TmFtZXMnKSlcblx0XHRcdH0pO1xuXG5cdFx0XHQvLyBBc3NpZ24gZGF0YSBzb3VyY2UgdG8gZ3JpZFxuXHRcdFx0dGhpcy5fbmFtZXNHcmlkLnNldERhdGFTb3VyY2UoZHMpO1xuXG5cdFx0XHQvLyBFbmFibGUgcmVtb3ZlIGFsbCBidXR0b25cblx0XHRcdCQoJyNibm0tcmVtb3ZlQWxsTmFtZXNCdCcpLmF0dHIoJ2Rpc2FibGVkJywgZHMudG90YWwoKSA9PSAwKVxuXHRcdH1cblx0XHRlbHNlIGlmIChjb21tYW5kID09IHRoaXMuUkVTUF9JUEFERFJFU1NFUylcblx0XHR7XG5cdFx0XHQvLyBTdWJzdGl0dXRlIGdyaWQncyBkYXRhIHNvdXJjZSwgcmV0YWluaW5nIGN1cnJlbnQgc29ydGluZ1xuXHRcdFx0bGV0IGN1cnJTb3J0ID0gdGhpcy5faXBHcmlkLmRhdGFTb3VyY2Uuc29ydCgpO1xuXG5cdFx0XHRsZXQgZHMgPSBuZXcga2VuZG8uZGF0YS5EYXRhU291cmNlKHtcblx0XHRcdFx0c29ydDogY3VyclNvcnQsXG5cdFx0XHRcdGRhdGE6IHRoaXMuX2dlbmVyYXRlQmFubmVkRW50cmllcyhkYXRhLmdldFNGU0FycmF5KCdJUHMnKSlcblx0XHRcdH0pO1xuXG5cdFx0XHQvLyBBc3NpZ24gZGF0YSBzb3VyY2UgdG8gZ3JpZFxuXHRcdFx0dGhpcy5faXBHcmlkLnNldERhdGFTb3VyY2UoZHMpO1xuXG5cdFx0XHQvLyBFbmFibGUgcmVtb3ZlIGFsbCBidXR0b25cblx0XHRcdCQoJyNibm0tcmVtb3ZlQWxsSXBCdCcpLmF0dHIoJ2Rpc2FibGVkJywgZHMudG90YWwoKSA9PSAwKVxuXHRcdH1cblx0fVxuXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cdC8vIFVJIEVWRU5UIExJU1RFTkVSU1xuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG5cdF9vblNob3dCYW5Nb2RhbENsaWNrKClcblx0e1xuXHRcdC8vIERpc3BsYXkgem9uZSBuYW1lXG5cdFx0JCgnI2JubS1tb2RhbFpvbmVMYicpLnRleHQodGhpcy5fem9uZXNERC52YWx1ZSgpKVxuXG5cdFx0Ly8gRGlzcGxheSBiYW4gcGFuZWxcblx0XHQkKCcjYm5tLWJhbk1vZGFsJykubW9kYWwoJ3Nob3cnKTtcblxuXHRcdC8vIEZvY3VzIG5hbWUgZmllbGRcblx0XHQkKCcjYm5tLW1vZGFsTmFtZUluJykuZm9jdXMoKTtcblx0fVxuXG5cdF9vbkJhbk1vZGFsSGlkZGVuKGUpXG5cdHtcblx0XHQvLyBSZXNldCB2YWxpZGF0b3Jcblx0XHR0aGlzLl9iYW5WYWxpZGF0b3IuaGlkZU1lc3NhZ2VzKCk7XG5cblx0XHQvLyBUaGUgbWV0aG9kIGFib3ZlIGRvZXNuJ3QgcmVtb3ZlIHRoZSBrLWludmFsaWQgY2xhc3NlcyBhbmQgYXJpYS1pbnZhbGlkPVwidHJ1ZVwiIGF0dHJpYnV0ZXMgZnJvbSBpbnB1dHNcblx0XHQvLyBMZXQncyBkbyBpdCBtYW51YWxseVxuXHRcdCQoJyNibm0tYmFuRm9ybSAuay1pbnZhbGlkJykucmVtb3ZlQ2xhc3MoJ2staW52YWxpZCcpO1xuXHRcdCQoJyNibm0tYmFuRm9ybSBbYXJpYS1pbnZhbGlkPVwidHJ1ZVwiXScpLnJlbW92ZUF0dHIoJ2FyaWEtaW52YWxpZCcpO1xuXG5cdFx0Ly8gUmVzZXQgYmFuIGZvcm1cblx0XHQkKCcjYm5tLW1vZGFsTmFtZUluJykudmFsKCcnKTtcblx0XHQkKCcjYm5tLW1vZGFsUmVhc29uSW4nKS52YWwoJycpO1xuXHRcdCQoJyNibm0tbW9kYWxNZXNzYWdlSW4nKS52YWwoJycpO1xuXG5cdFx0dGhpcy5fYmFuRGVsYXlJbi52YWx1ZSg1KTtcblxuXHRcdCQoJ2lucHV0W25hbWU9XCJleHBpcmF0aW9uXCJdJykucmVtb3ZlQXR0cignY2hlY2tlZCcpO1xuXHRcdCQoJyNibm0tZXhwaXJhdGlvblJCMCcpLnByb3AoJ2NoZWNrZWQnLCB0cnVlKTtcblxuXHRcdHRoaXMuX2JhbkV4cEhvdXJJbi52YWx1ZSgxKTtcblx0XHR0aGlzLl9iYW5FeHBNaW5Jbi52YWx1ZSgwKTtcblxuXHRcdHRoaXMuX2JhbkV4cERhdGVJbi5taW4odGhpcy5fdG9tb3Jyb3cpO1xuXHRcdHRoaXMuX2JhbkV4cERhdGVJbi52YWx1ZSh0aGlzLl90b21vcnJvdyk7XG5cdH1cblxuXHRfb25CYW5DbGljaygpXG5cdHtcblx0XHRpZiAodGhpcy5fYmFuVmFsaWRhdG9yLnZhbGlkYXRlKCkpXG5cdFx0e1xuXHRcdFx0Ly8gUmV0cmlldmUgYmFuIGRldGFpbHNcblx0XHRcdGxldCBwYXJhbXMgPSBuZXcgU0ZTMlguU0ZTT2JqZWN0KCk7XG5cblx0XHRcdHBhcmFtcy5wdXRVdGZTdHJpbmcoJ3pvbmUnLCB0aGlzLl96b25lc0RELnZhbHVlKCkpO1xuXHRcdFx0cGFyYW1zLnB1dFV0ZlN0cmluZygnbmFtZScsICQoJyNibm0tbW9kYWxOYW1lSW4nKS52YWwoKSk7XG5cdFx0XHRwYXJhbXMucHV0VXRmU3RyaW5nKCdtc2cnLCAkKCcjYm5tLW1vZGFsTWVzc2FnZUluJykudmFsKCkpO1xuXHRcdFx0cGFyYW1zLnB1dEludCgnZGVsYXknLCB0aGlzLl9iYW5EZWxheUluLnZhbHVlKCkgIT0gbnVsbCA/IHRoaXMuX2JhbkRlbGF5SW4udmFsdWUoKSA6IDApO1xuXHRcdFx0cGFyYW1zLnB1dFV0ZlN0cmluZygncmVhc29uJywgJCgnI2JubS1tb2RhbFJlYXNvbkluJykudmFsKCkpO1xuXG5cdFx0XHRjb25zdCBleHAgPSAkKCdpbnB1dFtuYW1lPVwiZXhwaXJhdGlvblwiXTpjaGVja2VkJykudmFsKCk7XG5cdFx0XHRsZXQgZHVyYXRpb24gPSAtMTtcblxuXHRcdFx0aWYgKGV4cCA9PSAnYWZ0ZXInKVxuXHRcdFx0e1xuXHRcdFx0XHRjb25zdCBob3VycyA9IHRoaXMuX2JhbkV4cEhvdXJJbi52YWx1ZSgpICE9IG51bGwgPyB0aGlzLl9iYW5FeHBIb3VySW4udmFsdWUoKSA6IDA7XG5cdFx0XHRcdGNvbnN0IG1pbnV0ZXMgPSB0aGlzLl9iYW5FeHBNaW5Jbi52YWx1ZSgpICE9IG51bGwgPyB0aGlzLl9iYW5FeHBNaW5Jbi52YWx1ZSgpIDogMDtcblxuXHRcdFx0XHRkdXJhdGlvbiA9IChob3VycyAqIDYwKSArIG1pbnV0ZXM7XG5cblx0XHRcdFx0aWYgKGR1cmF0aW9uIDw9IDApXG5cdFx0XHRcdFx0ZHVyYXRpb24gPSAxO1xuXHRcdFx0fVxuXHRcdFx0ZWxzZSBpZiAoZXhwID09ICdvbicpXG5cdFx0XHR7XG5cdFx0XHRcdGNvbnN0IG9uRGF0ZSA9IG1vbWVudCh0aGlzLl9iYW5FeHBEYXRlSW4udmFsdWUoKSk7XG5cdFx0XHRcdGNvbnN0IG5vdyA9IG1vbWVudCgpO1xuXG5cdFx0XHRcdGR1cmF0aW9uID0gb25EYXRlLnN0YXJ0T2YoJ2RheScpLmRpZmYobm93LnN0YXJ0T2YoJ21pbnV0ZScpLCAnbWludXRlcycpO1xuXG5cdFx0XHRcdGlmIChkdXJhdGlvbiA8PSAwKVxuXHRcdFx0XHRcdGR1cmF0aW9uID0gMTtcblx0XHRcdH1cblxuXHRcdFx0cGFyYW1zLnB1dEludCgnZHVyTWlucycsIGR1cmF0aW9uKTtcblxuXHRcdFx0Ly8gU2VuZCBiYW4gcmVxdWVzdCB0byBzZXJ2ZXJcblx0XHRcdHRoaXMuc2VuZEV4dGVuc2lvblJlcXVlc3QodGhpcy5SRVFfQkFOLCBwYXJhbXMpO1xuXG5cdFx0XHQvLyBSZWZyZXNoIGxpc3Rcblx0XHRcdHRoaXMuX2dldEJhbm5lZFVzZXJuYW1lcygpO1xuXG5cdFx0XHQvLyBGb2N1cyB1c2VybmFtZSBmaWVsZFxuXHRcdFx0JCgnI2JubS1tb2RhbE5hbWVJbicpLmZvY3VzKCk7XG5cdFx0XHQkKCcjYm5tLW1vZGFsTmFtZUluJykuc2VsZWN0KCk7XG5cdFx0fVxuXHR9XG5cblx0X29uWm9uZUNoYW5nZSgpXG5cdHtcblx0XHQkKCcjYm5tLW5hbWVzQnV0dG9ucycpLmF0dHIoJ2Rpc2FibGVkJywgdGhpcy5fem9uZXNERC5zZWxlY3QoKSA9PSAwKTtcblx0XHQkKCcjYm5tLXNob3dCYW5Nb2RhbEJ0JykuYXR0cignZGlzYWJsZWQnLCB0aGlzLl96b25lc0RELnNlbGVjdCgpID09IDApO1xuXG5cdFx0dGhpcy5fZ2V0QmFubmVkVXNlcm5hbWVzKCk7XG5cdH1cblxuXHRfb25OYW1lc0dyaWRTZWxlY3Rpb25DaGFuZ2UoKVxuXHR7XG5cdFx0Ly8gRW5hYmxlL2Rpc2FibGUgcmVtb3ZlIGJ1dHRvblxuXHRcdGNvbnN0IHNlbGVjdGVkUm93cyA9IHRoaXMuX25hbWVzR3JpZC5zZWxlY3QoKTtcblx0XHQkKCcjYm5tLXJlbW92ZU5hbWVCdCcpLmF0dHIoJ2Rpc2FibGVkJywgc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PSAwKTtcblx0fVxuXG5cdF9vbklwR3JpZFNlbGVjdGlvbkNoYW5nZSgpXG5cdHtcblx0XHQvLyBFbmFibGUvZGlzYWJsZSByZW1vdmUgYnV0dG9uXG5cdFx0Y29uc3Qgc2VsZWN0ZWRSb3dzID0gdGhpcy5faXBHcmlkLnNlbGVjdCgpO1xuXHRcdCQoJyNibm0tcmVtb3ZlSXBCdCcpLmF0dHIoJ2Rpc2FibGVkJywgc2VsZWN0ZWRSb3dzLmxlbmd0aCA9PSAwKTtcblx0fVxuXG5cdF9vblJlZnJlc2hOYW1lc0NsaWNrKClcblx0e1xuXHRcdHRoaXMuX2dldEJhbm5lZFVzZXJuYW1lcygpO1xuXHR9XG5cblx0X29uUmVtb3ZlTmFtZXNDbGljaygpXG5cdHtcblx0XHR0aGlzLnNoZWxsQ3RybC5zaG93Q29uZmlybVdhcm5pbmcoYEFyZSB5b3Ugc3VyZSB5b3Ugd2FudCB0byByZW1vdmUgdGhlIGJhbm5pbmcgZm9yIHRoZSBzZWxlY3RlZCB1c2VybmFtZSR7dGhpcy5faXBHcmlkLnNlbGVjdCgpLmxlbmd0aCA+IDEgPyAncycgOiAnJ30/YCwgJC5wcm94eSh0aGlzLl9vblJlbW92ZU5hbWVzQ29uZmlybSwgdGhpcykpO1xuXHR9XG5cblx0X29uUmVtb3ZlTmFtZXNDb25maXJtKClcblx0e1xuXHRcdGxldCBzZWxlY3RlZFJvd3MgPSB0aGlzLl9uYW1lc0dyaWQuc2VsZWN0KCk7XG5cdFx0bGV0IHVzZXJuYW1lcyA9IFtdO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBzZWxlY3RlZFJvd3MubGVuZ3RoOyBpKyspXG5cdFx0e1xuXHRcdFx0bGV0IGRhdGFJdGVtID0gdGhpcy5fbmFtZXNHcmlkLmRhdGFJdGVtKHNlbGVjdGVkUm93c1tpXSk7XG5cdFx0XHR1c2VybmFtZXMucHVzaChkYXRhSXRlbS5uYW1lKTtcblx0XHR9XG5cblx0XHR0aGlzLl9yZXF1ZXN0QmFubmVkVXNlcnNSZW1vdmFsKHVzZXJuYW1lcywgdGhpcy5fem9uZXNERC52YWx1ZSgpKTtcblx0fVxuXG5cdF9vblJlbW92ZUFsbE5hbWVzQ2xpY2soKVxuXHR7XG5cdFx0dGhpcy5zaGVsbEN0cmwuc2hvd0NvbmZpcm1XYXJuaW5nKGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIGFsbCBiYW5uZWQgdXNlcm5hbWVzP2AsICQucHJveHkodGhpcy5fb25SZW1vdkFsbE5hbWVzQ29uZmlybSwgdGhpcykpO1xuXHR9XG5cblx0X29uUmVtb3ZBbGxOYW1lc0NvbmZpcm0oKVxuXHR7XG5cdFx0dGhpcy5fcmVxdWVzdEJhbm5lZFVzZXJzUmVtb3ZhbChudWxsLCB0aGlzLl96b25lc0RELnZhbHVlKCkpO1xuXHR9XG5cblx0X29uUmVmcmVzaElwQ2xpY2soKVxuXHR7XG5cdFx0dGhpcy5fZ2V0QmFubmVkSVBzKCk7XG5cdH1cblxuXHRfb25SZW1vdmVJcENsaWNrKClcblx0e1xuXHRcdHRoaXMuc2hlbGxDdHJsLnNob3dDb25maXJtV2FybmluZyhgQXJlIHlvdSBzdXJlIHlvdSB3YW50IHRvIHJlbW92ZSB0aGUgYmFubmluZyBmb3IgdGhlIHNlbGVjdGVkIElQIGFkZHJlc3Mke3RoaXMuX2lwR3JpZC5zZWxlY3QoKS5sZW5ndGggPiAxID8gJ2VzJyA6ICcnfT9gLCAkLnByb3h5KHRoaXMuX29uUmVtb3ZlSXBDb25maXJtLCB0aGlzKSk7XG5cdH1cblxuXHRfb25SZW1vdmVJcENvbmZpcm0oKVxuXHR7XG5cdFx0bGV0IHNlbGVjdGVkUm93cyA9IHRoaXMuX2lwR3JpZC5zZWxlY3QoKTtcblx0XHRsZXQgaXBBZGRyZXNzZXMgPSBbXTtcblxuXHRcdGZvciAobGV0IGkgPSAwOyBpIDwgc2VsZWN0ZWRSb3dzLmxlbmd0aDsgaSsrKVxuXHRcdHtcblx0XHRcdGxldCBkYXRhSXRlbSA9IHRoaXMuX2lwR3JpZC5kYXRhSXRlbShzZWxlY3RlZFJvd3NbaV0pO1xuXHRcdFx0aXBBZGRyZXNzZXMucHVzaChkYXRhSXRlbS5pcEFkZHJlc3MpO1xuXHRcdH1cblxuXHRcdHRoaXMuX3JlcXVlc3RCYW5uZWRJUHNSZW1vdmFsKGlwQWRkcmVzc2VzKTtcblx0fVxuXG5cdF9vblJlbW92ZUFsbElwQ2xpY2soKVxuXHR7XG5cdFx0dGhpcy5zaGVsbEN0cmwuc2hvd0NvbmZpcm1XYXJuaW5nKGBBcmUgeW91IHN1cmUgeW91IHdhbnQgdG8gcmVtb3ZlIGFsbCBiYW5uZWQgSVAgYWRkcmVzc2VzP2AsICQucHJveHkodGhpcy5fb25SZW1vdkFsbElwQ29uZmlybSwgdGhpcykpO1xuXHR9XG5cblx0X29uUmVtb3ZBbGxJcENvbmZpcm0oKVxuXHR7XG5cdFx0dGhpcy5fcmVxdWVzdEJhbm5lZElQc1JlbW92YWwobnVsbCk7XG5cdH1cblxuXHQvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXHQvLyBQUklWQVRFIE1FVEhPRFNcblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuXHRfZ2V0QmFubmVkSVBzKClcblx0e1xuXHRcdC8vIFJlbW92ZSBzZWxlY3Rpb25cblx0XHR0aGlzLl9pcEdyaWQuY2xlYXJTZWxlY3Rpb24oKTtcblxuXHRcdC8vIENsZWFyIGJhbm5lZCBJUHMgdGFibGVcblx0XHR0aGlzLl9pcEdyaWQuc2V0RGF0YVNvdXJjZShbXSk7XG5cblx0XHQvLyBTZW5kIHJlcXVlc3QgdG8gZXh0ZW5zaW9uXG5cdFx0dGhpcy5zZW5kRXh0ZW5zaW9uUmVxdWVzdCh0aGlzLlJFUV9HRVRfSVBBRERSRVNTRVMpO1xuXHR9XG5cblx0X2dldEJhbm5lZFVzZXJuYW1lcygpXG5cdHtcblx0XHQvLyBSZW1vdmUgc2VsZWN0aW9uXG5cdFx0dGhpcy5fbmFtZXNHcmlkLmNsZWFyU2VsZWN0aW9uKCk7XG5cblx0XHQvLyBDbGVhciBiYW5uZWQgSVBzIHRhYmxlXG5cdFx0dGhpcy5fbmFtZXNHcmlkLnNldERhdGFTb3VyY2UoW10pO1xuXG5cdFx0aWYgKHRoaXMuX3pvbmVzREQuc2VsZWN0KCkgPiAwKVxuXHRcdHtcblx0XHRcdC8vIEdldCB6b25lIElEXG5cdFx0XHRsZXQgcGFyYW1zID0gbmV3IFNGUzJYLlNGU09iamVjdCgpO1xuXHRcdFx0cGFyYW1zLnB1dFV0ZlN0cmluZygnem9uZScsIHRoaXMuX3pvbmVzREQudmFsdWUoKSk7XG5cblx0XHRcdC8vIFNlbmQgcmVxdWVzdCB0byBleHRlbnNpb25cblx0XHRcdHRoaXMuc2VuZEV4dGVuc2lvblJlcXVlc3QodGhpcy5SRVFfR0VUX1VTRVJOQU1FUywgcGFyYW1zKTtcblx0XHR9XG5cdH1cblxuXHRfZ2VuZXJhdGVCYW5uZWRFbnRyaWVzKGJhbkRhdGEpXG5cdHtcblx0XHRsZXQgYmFubmVkRW50cmllcyA9IFtdO1xuXG5cdFx0Zm9yIChsZXQgaSA9IDA7IGkgPCBiYW5EYXRhLnNpemUoKTsgaSsrKVxuXHRcdHtcblx0XHRcdGNvbnN0IGJ1ID0gQmFubmVkVXNlci5mcm9tU0ZTQXJyYXkoYmFuRGF0YS5nZXRTRlNBcnJheShpKSk7XG5cdFx0XHRiYW5uZWRFbnRyaWVzLnB1c2goYnUpO1xuXHRcdH1cblxuXHRcdHJldHVybiBiYW5uZWRFbnRyaWVzO1xuXHR9XG5cblx0X3JlcXVlc3RCYW5uZWRVc2Vyc1JlbW92YWwodXNlcm5hbWVzLCB6b25lKVxuXHR7XG5cdFx0Ly8gSWYgdGhlIHVzZXJuYW1lcyBhcnJheSBpcyBudWxsLCBzZXJ2ZXIgd2lsbCByZW1vdmUgYWxsIGJhbm5lZCB1c2VybmFtZXNcblx0XHRsZXQgcGFyYW1zID0gbmV3IFNGUzJYLlNGU09iamVjdCgpO1xuXHRcdHBhcmFtcy5wdXRVdGZTdHJpbmcoJ3pvbmUnLCB6b25lKTtcblxuXHRcdGlmICh1c2VybmFtZXMgPT0gbnVsbClcblx0XHRcdHBhcmFtcy5wdXROdWxsKCd1TmFtZXMnKTtcblx0XHRlbHNlXG5cdFx0XHRwYXJhbXMucHV0VXRmU3RyaW5nQXJyYXkoJ3VOYW1lcycsIHVzZXJuYW1lcyk7XG5cblx0XHR0aGlzLnNlbmRFeHRlbnNpb25SZXF1ZXN0KHRoaXMuUkVRX1JFTU9WRV9VU0VSTkFNRVMsIHBhcmFtcyk7XG5cdH1cblxuXHRfcmVxdWVzdEJhbm5lZElQc1JlbW92YWwoaXBBZGRyZXNzZXMpXG5cdHtcblx0XHQvLyBJZiB0aGUgdXNlcm5hbWVzIGFycmF5IGlzIG51bGwsIHNlcnZlciB3aWxsIHJlbW92ZSBhbGwgYmFubmVkIHVzZXJuYW1lc1xuXHRcdGxldCBwYXJhbXMgPSBuZXcgU0ZTMlguU0ZTT2JqZWN0KCk7XG5cblx0XHRpZiAoaXBBZGRyZXNzZXMgPT0gbnVsbClcblx0XHRcdHBhcmFtcy5wdXROdWxsKCdJUHMnKTtcblx0XHRlbHNlXG5cdFx0XHRwYXJhbXMucHV0VXRmU3RyaW5nQXJyYXkoJ0lQcycsIGlwQWRkcmVzc2VzKTtcblxuXHRcdHRoaXMuc2VuZEV4dGVuc2lvblJlcXVlc3QodGhpcy5SRVFfUkVNT1ZFX0lQQUREUkVTU0VTLCBwYXJhbXMpO1xuXHR9XG5cblx0Ly8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS1cblx0Ly8gUFJJVkFURSBHRVRURVJTXG5cdC8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tXG5cblx0Z2V0IF90b21vcnJvdygpXG5cdHtcblx0XHRsZXQgdG9tb3Jyb3cgPSBtb21lbnQoKS5hZGQoMSwgJ2QnKTtcblx0XHRyZXR1cm4gdG9tb3Jyb3cudG9EYXRlKCk7XG5cdH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTs7Ozs7Ozs7Ozs7OztBQzFDQTtBQUFBO0FBQUE7QUFBQTtBQUFBO0FBQUE7QUFBQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBOzs7Ozs7QSIsInNvdXJjZVJvb3QiOiIifQ==
|