Compare commits

...

2610 Commits
v1.0 ... master

Author SHA1 Message Date
billz 81875fae10 Update release version 2023-10-09 08:59:20 +02:00
Bill Zimmerman 509af62586
Merge pull request #1411 from RaspAP/fix/wpa-passphrase
Correctly handle 64 hex digit passkey
2023-10-09 08:43:22 +02:00
Bill Zimmerman c331ef9aaf
Merge pull request #1412 from RaspAP/fix/sys-functions
Ajaxifies system reboot + shutdown
2023-10-09 08:42:34 +02:00
Bill Zimmerman 03118b9918
Merge pull request #1409 from RaspAP/maint/blocklists
Replaces ad block no-tracking lists w/ new sources
2023-10-08 20:30:59 +02:00
billz c208ad9357 Add modal dialogs for system reboot/shutdown 2023-10-08 19:54:56 +02:00
billz bd506f6831 Update system msgs + compile .mo 2023-10-08 19:54:26 +02:00
billz 21f703b5a9 Ajaxify system reboot/shutdown 2023-10-08 19:21:43 +02:00
billz ff3f6ddb90 fwrite priority to wpa network if defined 2023-10-08 11:49:56 +02:00
billz deac75af89 Fix: handle 64 char passkey in absence of 8-63 char passhprase 2023-10-08 11:46:12 +02:00
billz a0ff530318 Replace notracking w/ updated blocklist host + domain lists 2023-10-06 14:43:28 +02:00
billz 2e8d2b1e16 Update adblock logging regex 2023-10-06 14:42:33 +02:00
billz 911a6a3145 Update template blocklist ids + cbxblocklist option val 2023-10-06 14:41:55 +02:00
billz 104b8c340c Update set local file timestamp to when it was downloaded 2023-10-06 14:40:16 +02:00
billz 3e491c17f4 Update fetch remote blocklists 2023-10-06 10:58:54 +02:00
billz 1f5d4b0830 Replace notracking lists w/ alternatives 2023-10-06 09:11:13 +02:00
billz 2ac5f94594 Hotfix: delete _move_config_file (obsolete) 2023-10-02 15:12:39 +01:00
billz 2270fe4953 Update release version 2023-10-02 10:22:57 +01:00
Bill Zimmerman f11dbb1b28
Merge pull request #1404 from RaspAP/maint/translations
Updates ko_KR and pt_BR locales
2023-10-02 11:19:33 +02:00
billz 1e0405a91e Update pt_BR locale 100% - thanks @Osuppa 2023-10-02 10:11:41 +01:00
billz 5028c7aa0a Update ko_KR locale 100% - thanks @dansunmi 2023-10-02 10:09:36 +01:00
Bill Zimmerman 10637efee3
Merge pull request #1395 from RaspAP/security/sanitize-ajax-posts
Sanitize post with escapeshellcmd()
2023-09-17 07:44:34 -07:00
billz e87e7d1d3a Sanitize post with escapeshellcmd() 2023-09-17 16:33:23 +02:00
Bill Zimmerman 3575d1d185
Merge pull request #1394 from RaspAP/fix/theme-select
Fix theme select for material variants
2023-09-17 07:24:42 -07:00
billz a4e8beabdf Fix theme select for material variants 2023-09-17 10:38:01 +02:00
Bill Zimmerman 4f2a43365b
Merge pull request #1393 from RaspAP/maint/authenticate
Refactors existing auth mechanism
2023-09-16 05:12:34 -07:00
billz 33c596189d Apply autoloader support for status messages 2023-09-16 11:46:11 +02:00
billz 07b950cf65 Migrate includes/status_message.php to RaspAP/Messages 2023-09-16 11:43:40 +02:00
billz c2d740ef44 Implement PSR-4 compliant class autoloader 2023-09-16 10:43:05 +02:00
billz 93166171db Update additional ajax posts w/ csrf_token 2023-09-16 10:39:14 +02:00
billz 0116d87445 Create loadFooterScripts(), update page_actions + formatting 2023-09-15 20:02:37 +02:00
billz 66b3b20bf4 Update ajax post data w/ csrf_token 2023-09-14 19:56:36 +02:00
billz 8ff2a89cac Update sidebar items, formatting + bump reported php-cgi version 2023-09-14 19:47:37 +02:00
billz f9d27e3bae Reorg index components into includes 2023-09-14 15:14:02 +02:00
billz 8044bc8cb1 Minor: untabify 2023-09-13 21:45:12 +02:00
billz 1347cd7bfa Swap fas hide/show icons 2023-09-13 21:34:12 +02:00
billz 1e5ac9b3fc Apply patch from RaspAP/raspap-insiders#209 2023-09-13 21:26:19 +02:00
billz 7831afa29a Update release version 2023-09-10 10:11:12 +02:00
billz 434e8dc3f4 Set backgroundColor: transparent for theme compatibility 2023-09-10 10:09:23 +02:00
Bill Zimmerman 67df02fe4c
Merge pull request #1388 from RaspAP/maint/php-strict-types
Fixes php8 strict_types errors + numerous warnings
2023-09-06 03:54:21 -07:00
billz ceea867c69 Fix php warning + undefined var notice 2023-09-06 12:25:39 +02:00
billz c64bdb42c8 Fix php notices w/ proper var checks 2023-09-06 09:54:20 +02:00
billz 55c0a49911 Fix php warnings + general code cleanup 2023-09-03 09:47:51 +02:00
billz 5457855aa1 Unambiguously typecast to expected datatype 2023-09-03 09:46:50 +02:00
billz cc6fa1d8d0 Install iw package on Debian 12 2023-09-03 09:44:43 +02:00
Bill Zimmerman 16a413aa9f
Merge pull request #1380 from marek-guran/material-theme
Dynamic Material Theme (Dark/Light)
2023-08-30 01:24:44 -07:00
Marek Guráň a259a4f868
Small fix (removed forgotten insiders part) 2023-08-30 10:00:15 +02:00
Marek Guráň 877ed4698e
Removed mistakenly added insiders code 2023-08-30 09:54:26 +02:00
Marek Guráň dd2c648a78
Update linkquality.js
Added hard coded colors to material theme. Now it is more readable on dark and light versions.
2023-08-30 09:52:59 +02:00
Marek Guráň 5bd2ef1edc
Fixed missing padding to cards 2023-08-29 12:28:51 +02:00
Marek Guráň 49634a4e58
Renamed theme to Material 2023-08-29 12:28:08 +02:00
Marek Guráň 2828b09d54
Fixed visual errors and improved some visuals
1. The rounded corners issue is gone
2. Fixed light theme status indicator, so on latest insiders it wont hide active green button
3. Added new visuals to navigation menu to make it more clear what card is active
2023-08-29 10:36:11 +02:00
Marek Guráň 7a1900d814
Update custom.js
Updated dark theme switcher so now it can switch between dark and light material theme while keeping it's functionality to stock theme.
2023-08-28 23:17:31 +02:00
Marek Guráň 3cf88d98b2
Small changes to system.php
Removed dark theme since it will be enabled by switch at top bar
2023-08-28 23:12:04 +02:00
Bill Zimmerman dee77c7597
Update features list 2023-08-28 15:16:03 +02:00
Marek Guráň aec2e3b7bf
Added themes to custom.js
Still cant change themes in settings
2023-08-28 14:31:23 +02:00
Bill Zimmerman 4bb1873f7b
Merge pull request #1385 from RaspAP/maint/locales
Template + locales maintenance
2023-08-26 06:14:20 -07:00
billz 36be6e3980 Typo fix in gettext string, update locales + compile .mo files 2023-08-26 15:05:07 +02:00
Bill Zimmerman f7f67023f4
Merge pull request #1384 from RaspAP/maint/translations
Update pt_BR translation 100%
2023-08-25 07:17:46 -07:00
Bill Zimmerman 8739acdccd
Merge pull request #1383 from RaspAP/maint/installer
Updates Quick installer w/ doc link to authentication (Insiders)
2023-08-25 03:36:00 -07:00
billz 8a1f0aad1d Update pt_BR translation 100% - thx @Osuppa 2023-08-25 12:33:34 +02:00
billz 2ea85a741a Typo fix 2023-08-23 20:01:34 +02:00
billz d035fc804d Update _install_status w/ ! important + add Insiders note 2023-08-23 19:44:59 +02:00
billz 9d0b565155 Revert "Add Insiders to raspi_version"
This reverts commit 563e0216cc.
2023-08-16 03:53:40 +02:00
billz 563e0216cc Add Insiders to raspi_version 2023-08-16 03:50:36 +02:00
billz 470debb945 Minor: compile sk_SK messages.po 2023-08-13 17:03:10 +02:00
Bill Zimmerman 64454a8b23
Merge pull request #1375 from RaspAP/locale-update/sk_SK
Add locale support for sk_SK
2023-08-13 07:56:40 -07:00
Marek Guráň 69967f6dd9
Updated forgotten button - light theme 2023-08-08 06:35:25 +02:00
Marek Guráň f831794a55
Updated forgotten button - dark theme 2023-08-08 06:34:43 +02:00
Marek Guráň 5970ee397b
Fixed insiders dashboard - light theme 2023-08-07 18:37:58 +02:00
Marek Guráň 2f3582d952
Fixed shadows and fixed insiders dashboard 2023-08-07 18:36:56 +02:00
Marek Guráň 7c0e4b73db
Small fix to dashboard text 2023-08-07 18:27:11 +02:00
Marek Guráň bd7c07ff22
Small fix to dashboard text 2023-08-07 18:26:47 +02:00
Marek Guráň 7b07869d68
Added themes to settings 2023-08-07 12:14:53 +02:00
Marek Guráň bb0a82acbc
Update and rename materialdark.php to material-dark.php 2023-08-07 12:03:29 +02:00
Marek Guráň 6b11b3593f
Create material-light.php 2023-08-07 12:03:08 +02:00
Marek Guráň d8ef9943d9
Last touch to dark theme 2023-08-07 11:16:44 +02:00
Marek Guráň ac019d6eff
Updated missing stuff 2023-08-07 10:17:25 +02:00
Marek Guráň e137bb67e9
Final Dark Version
Fixed few issues and restyled back to top button
2023-08-07 10:02:25 +02:00
Marek Guráň b0ef54a6e0
Small styling fix for static leases 2023-08-07 09:51:55 +02:00
Marek Guráň 5234e0bb8e
Added dynamic theming 2023-08-07 09:35:55 +02:00
Marek Guráň a77168c745
Create materialdark.php 2023-08-06 18:31:38 +02:00
Bill Zimmerman f51be6538b
Merge pull request #1378 from marek-guran/locale-update/sk_SK
Small fix to Slovakian translation
2023-08-05 06:56:15 -07:00
marek-guran 090a2a6c76 Fixed translations
Once seen on WEB GUI, I had to fix those.
2023-08-05 07:40:41 +02:00
billz 5cbc70cd6f Add locale support for sk_SK - thx @marek-guran 2023-08-03 18:19:36 +02:00
billz fd201207b4 Update release version 2023-08-01 06:06:02 +02:00
Bill Zimmerman 41445b191d
Merge pull request #1354 from RaspAP/maint/debian12-distros
Extend support to latest Debian distros (non-RPi OS)
2023-07-31 20:55:11 -07:00
Bill Zimmerman 16309a1fbc
Update README.md 2023-06-24 15:46:12 +02:00
Bill Zimmerman c65a3d4140
Merge pull request #1359 from RaspAP/maint/translations
Update de_DE locale + compile .mo
2023-06-23 08:17:34 +00:00
billz 593515cac6 Update de_DE locale + compile .mo 2023-06-23 09:08:43 +02:00
Bill Zimmerman d9249d85e2
Merge pull request #1358 from RaspAP/maint/translations
Update de_DE locale
2023-06-22 15:58:07 +00:00
billz 1a782e468d Update de_DE locale 100% - thx Jonas Stiegler 2023-06-22 13:08:34 +02:00
billz 9c79bf2368 Update link to translations doc 2023-06-10 06:01:41 +00:00
billz ebed27a0bd Update about w/ Gitter link 2023-06-09 16:00:39 +00:00
Bill Zimmerman 51da8020ee
Update README.md w/ gitter badge 2023-06-09 08:46:59 +02:00
Bill Zimmerman c3f7b17ef3
Merge pull request #1355 from RaspAP/feat/system-time
Adds system time to System > Basic tab
2023-06-05 06:37:50 +00:00
billz da091b9142 Add system time to System > Basic tab 2023-06-04 15:27:54 +00:00
billz 186af54185 Add iw_package when OS = ubuntu 2023-06-04 15:11:25 +00:00
billz 6b01e6afae Fix php8 uncaught fatal error: Unsupported operand types string * int 2023-06-04 14:19:28 +00:00
billz a69bf2c6dd Add _check_notify_ubuntu() 2023-06-04 12:26:15 +00:00
billz 5c9e842244 Fix php8 uncaught fatal error: ($value) must be of type Countable 2023-06-03 18:47:53 +00:00
billz e3a9919af1 Set php_package for Ubuntu 23.04 2023-06-03 18:43:55 +00:00
billz 20414b9ef1 Detect latest distro releases + set php_package 2023-06-02 12:52:52 +00:00
billz 5ee8270f47 Fix fatal error in php8 parse_ini_file() 2023-06-02 12:51:13 +00:00
billz 47cbd520d0 Update BACKERS.md 2023-05-21 15:46:08 +01:00
Bill Zimmerman 9ddff8f245
Merge pull request #1350 from RaspAP/feat/nohook-toggle
Implements nohook wpa_supplicant flag
2023-05-19 16:05:34 +00:00
billz 98d392d473 Implements nohook wpa_supplicant flag 2023-05-19 12:18:25 +01:00
billz c971c5c9bc Installer hotfix + update release version 2023-04-12 21:09:01 +01:00
billz c5eb4bc068 Update release version 2023-04-11 23:31:00 +01:00
billz c838a33deb Update _install_dependencies() 2023-04-11 23:29:04 +01:00
billz 810114613b Update release version 2023-04-11 10:14:22 +02:00
Bill Zimmerman dd6ff1ca92
Merge pull request #1337 from RaspAP/fix/installer
Fix: update _install_dependencies()
2023-04-11 08:10:53 +00:00
billz cb79429f27 Fix: update _install_dependencies() 2023-04-11 10:03:52 +02:00
Bill Zimmerman 9af19a9b74
Create SECURITY.md 2023-04-07 21:50:29 +02:00
Bill Zimmerman f17cb126fa
Merge pull request #1333 from RaspAP/security/wpa_cli
Input sanitization for wpa client
2023-04-07 10:39:52 +00:00
billz 157f29b858 Update sanitize wifi_client_interface var 2023-04-07 12:32:01 +02:00
Bill Zimmerman b70bce0d7b
Merge pull request #1335 from ldevillez/master
missing = in install script
2023-04-06 14:02:08 +00:00
ldevillez ac08a2cfaf missing = 2023-04-06 14:38:23 +02:00
billz 7adbfe143d Update connect var sanitization 2023-04-06 11:42:11 +02:00
Bill Zimmerman 6a295d46b8
Update Travis CI embed status image 2023-04-06 10:20:23 +02:00
Bill Zimmerman 9d3007194e
Merge pull request #1334 from RaspAP/feat/resetbtn
Feature: Restore settings
2023-04-06 06:22:40 +00:00
billz 11278542d1 Update label + en_US locale message 2023-04-05 20:11:37 +02:00
billz 7b43f64e87 Code scan fix: escape text before interpreting as html 2023-04-05 17:03:12 +02:00
billz 4bf83d4411 Update label w/ relevant doc link 2023-04-05 08:59:51 +02:00
billz 8f3ae2b376 Update en_US locale messages + compile .mo 2023-04-04 22:36:51 +02:00
billz 13a113f717 Add gettext strings to model data-message fields, error handling 2023-04-04 22:30:03 +02:00
billz 2499c7a712 Update modal dialog 2023-04-04 22:06:00 +02:00
billz bde68d8e30 Add system-reset ajax handler 2023-04-04 22:05:25 +02:00
billz 0d0aee916e Initial commit 2023-04-04 22:04:17 +02:00
billz bfcb420524 Update w/ reset tab + modal dialog 2023-04-03 18:48:45 +02:00
billz 55cd332861 Add js-system-reset-confirm handler 2023-04-03 18:47:58 +02:00
billz a07be6e3bd Input sanitization for wpa client 2023-04-03 15:20:01 +02:00
Bill Zimmerman ce7e84ec61
Merge pull request #1326 from eldstal/master
Input sanitization for wpa client, Fix for #1325
2023-04-01 00:19:23 +02:00
eldstal db6bf4c6b4 Additional type check on sensitive network ID parameter 2023-03-31 22:20:10 +02:00
billz 10738f5b7b Minor: add missing mkcert option to help 2023-03-30 18:43:24 +02:00
eldstal 30e35574a1 Input sanitization for wpa client, Fix for #1325 2023-03-30 12:18:38 +02:00
billz 592bce02bf Update release version 2023-03-29 10:16:51 +02:00
Bill Zimmerman fa22327719
Update BACKERS.md 2023-03-29 09:45:56 +02:00
Bill Zimmerman 238e1670fc
Merge pull request #1322 from RaspAP/maint/security
Sanitize hostapd input
2023-03-29 09:44:17 +02:00
billz 7760a1d7cb Update sanitize var method 2023-03-29 09:35:25 +02:00
billz 1e52ff598b Sanitize input with escapeshellarg() 2023-03-29 08:25:18 +02:00
Bill Zimmerman dda1fe6bbb
Merge pull request #1319 from RaspAP/feat/minwrite
Adds minimal SD card write support to installer
2023-03-28 21:33:00 +02:00
billz 454e5d7ea8 Update remove_packages + disable_services 2023-03-28 18:43:36 +02:00
billz b64faff248 Update w/ apt-get, install_status 2 (warning) on service disable 2023-03-26 12:01:38 +02:00
billz 0ba7833804 Add proceed check to _install_logger() 2023-03-26 10:08:01 +02:00
billz 33d99a0148 Minor: comments 2023-03-25 18:09:41 +01:00
billz 040160564f Create _install_minwrite() + functions 2023-03-25 17:51:00 +01:00
billz 41d21477fd Add -m --minwrite option and loader support 2023-03-25 17:49:52 +01:00
Bill Zimmerman 1532b3e58f
Merge pull request #1317 from RaspAP/maint/system-tab
Move theme UI under System tab
2023-03-25 12:05:28 +01:00
Bill Zimmerman fc95d844f3
Merge pull request #1318 from RaspAP/feat/signal-bars
Updates wifi client UI w/ RSSI signal bars
2023-03-25 12:01:57 +01:00
billz 7a2b319830 Set pointer-events prop for button w/ fas icon 2023-03-25 11:56:44 +01:00
billz fcdd966619 Update w/ gettext 2023-03-25 08:52:56 +01:00
billz 18c0623649 Apply misc styles from insiders 2023-03-24 15:42:05 +01:00
billz b20a4f012d Style + layout tweaks 2023-03-24 15:27:44 +01:00
billz 8b6e3e5edb Remove obsolete images 2023-03-24 15:11:02 +01:00
billz 6df78d125c Move common declarations to all.css 2023-03-24 15:09:41 +01:00
billz b01c005596 Initial commit 2023-03-24 15:08:49 +01:00
billz dbc0d0d65f Update w/ getSignalBars, hide/show passphrase glyphs 2023-03-24 12:04:34 +01:00
billz 162dbf74e0 Update js-toggle-password w/ fontawesome glyphs 2023-03-24 12:02:50 +01:00
billz 4850354630 Add .signal-icon + .signal-bar classes 2023-03-24 12:02:19 +01:00
billz 26bde30e95 Create getSignalBars(), add max/min RSSI constants 2023-03-24 12:01:47 +01:00
billz 39d7151da4 Move theme UI under System tab 2023-03-22 20:39:00 +01:00
Bill Zimmerman 8be62bb811
Merge pull request #1314 from RaspAP/mode-compatibility
Wireless mode tooltip
2023-03-21 08:44:08 +01:00
billz 7b3a7dba1d Move template logic to includes + code cleanup 2023-03-20 20:14:42 +01:00
billz 24abe9c53c Update wireless mode items 2023-03-20 20:00:28 +01:00
billz e95f12e91e Add 802.11ac tooltip help text, update messages + compile .mo 2023-03-20 19:14:24 +01:00
billz 9bc54336c2 Update messages + compile .mo 2023-03-19 16:53:40 +01:00
billz d5eb3c510e Update en_US locale w/ new messsages 2023-03-19 16:47:55 +01:00
billz 01af3d1c52 Add setHardwareModeTooltip(), fix webmanifest src attr 2023-03-19 16:47:30 +01:00
billz 6faa6d749a Return messages from ajax handler for gettext locale support 2023-03-19 16:45:56 +01:00
billz 2bfbbd4a47 Update templates w/ getTooltip(), add setHardwareModeTooltip 2023-03-19 16:45:09 +01:00
billz 67bf364b04 Add function getTooltip() 2023-03-19 16:44:18 +01:00
billz d4b107a07f Initial commit 2023-03-19 15:27:12 +01:00
billz fce63f1c35 Update release version 2023-03-09 11:36:20 +01:00
Bill Zimmerman 7cf64f7893
Merge pull request #1308 from RaspAP/maint/translations
Update de_DE messages + compile .mo
2023-02-23 15:35:10 +01:00
Bill Zimmerman 99de55778d
Merge pull request #1304 from RaspAP/feat/nav-insiders
Navbar icon linked to Insiders
2023-02-22 10:10:52 +01:00
billz 68c3e64a7c Update de_DE messages + compile .mo 2023-02-22 09:20:54 +01:00
billz b69147fb8d Add linked navbar icon 2023-02-18 16:19:41 +01:00
billz 122172a329 Update features list 2023-02-18 16:18:58 +01:00
Bill Zimmerman f969236d93
Merge pull request #1303 from RaspAP/fix/sanitize-input
Sanitize post data w/ escapeshellcmd()
2023-02-18 08:33:53 +01:00
billz 1fabc48169 Sanitize post data w/ escapeshellcmd() 2023-02-17 19:05:36 +01:00
Bill Zimmerman d19249757e
Merge pull request #1302 from RaspAP/fix/ajax-csrf
Fix: Update ajax files w/ CSRF check
2023-02-17 07:26:14 +01:00
billz 6a199aa581 Update require includes/csrf 2023-02-16 23:25:43 +01:00
Bill Zimmerman 7862d37279
Merge pull request #1300 from RaspAP/fix/passphrase
Fix: Limit preg_split to 2 parts
2023-02-09 19:03:10 +01:00
billz 65c1e58f77 Limit preg_split to 2 parts 2023-02-09 18:27:51 +01:00
Bill Zimmerman 2dcdbbd34e
Merge pull request #1294 from RaspAP/fix/getnetcfg
Resolve local server in getNetConfig() + minor fixes
2023-02-08 16:09:04 +01:00
Bill Zimmerman e8d2b6d707
Update feature_request.md 2023-02-08 09:04:09 +01:00
billz fd976a5dce Fix relative form action path 2023-02-05 13:53:18 +01:00
billz 3e1fbdf298 Fix for getNetConfig() resolving local server 2023-02-05 13:52:42 +01:00
billz 5a3e464c23 Update release version 2023-01-26 11:21:56 +01:00
Bill Zimmerman 9eb9ce44d7
Create main.yml 2023-01-25 18:03:17 +01:00
Bill Zimmerman a98f8a1de6
Merge pull request #1289 from RaspAP/fix/wext-driver
Add wext driver wrapper as a fallback, if unknown in nl80211 wrapper
2023-01-25 05:40:46 -08:00
billz 60450b5165 Add wext driver wrapper as a fallback, if unknown in nl80211 wrapper 2023-01-25 13:14:10 +01:00
Bill Zimmerman cccf70f7c2
Merge pull request #1287 from RaspAP/fix/broadcast-addr
Exclude .255 broadcast address from dhcp-range
2023-01-25 04:04:44 -08:00
billz 3bf3e0baa3 Exclude .255 broadcast address from dhcp-range 2023-01-24 12:02:46 +01:00
Bill Zimmerman 34f1052450
Merge pull request #1284 from RaspAP/maint/locale-updates
Update community translations from Crowdin
2023-01-24 03:00:49 -08:00
billz d358115298 Update community translations from Crowdin + compile .mo 2023-01-24 09:49:03 +01:00
Bill Zimmerman ca5164c3a3
Merge pull request #1282 from RaspAP/fix/dhcp-leasetime
Fix handling of infinite lease time
2023-01-17 09:30:48 -08:00
billz 56b15a8eb8 Handle infinite value when constructing cfg 2023-01-17 18:23:50 +01:00
billz c7ba2e1ec5 Fix handling of infinite lease time. 2023-01-17 18:10:13 +01:00
Bill Zimmerman 404bc34aef
Merge pull request #1278 from RaspAP/fix/ip-route-regex
Update regex for optional src attribute
2023-01-06 10:15:19 -08:00
billz 4c4b3bae53 Update regex for optional src attribute 2023-01-05 22:36:09 +01:00
Bill Zimmerman f18e867352
Merge pull request #1275 from RaspAP/fix/wpa-cli-spaces
Improve handling of wpa_cli output
2022-12-30 06:30:09 +01:00
billz 43c9997f07 Improve handling of wpa_cli output 2022-12-29 06:27:32 +01:00
Bill Zimmerman eb0d8bfa76
Merge pull request #1266 from RaspAP/feat/webauth
Add auth_enabled option to config
2022-12-15 09:36:41 +01:00
billz d76984517c Add RASPI_AUTH_ENABLED flag to config #280 2022-12-12 12:44:20 +01:00
Bill Zimmerman e5778ba01c
Merge pull request #1264 from RaspAP/dependabot/npm_and_yarn/minimatch-3.0.8
Bump minimatch from 3.0.4 to 3.0.8
2022-12-04 16:32:26 +01:00
Bill Zimmerman c684680360
Merge pull request #1265 from RaspAP/dependabot/npm_and_yarn/moment-2.29.4
Bump moment from 2.29.2 to 2.29.4
2022-12-04 16:32:18 +01:00
dependabot[bot] 4bf3ba57be
Bump minimatch from 3.0.4 to 3.0.8
Bumps [minimatch](https://github.com/isaacs/minimatch) from 3.0.4 to 3.0.8.
- [Release notes](https://github.com/isaacs/minimatch/releases)
- [Changelog](https://github.com/isaacs/minimatch/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/minimatch/compare/v3.0.4...v3.0.8)

---
updated-dependencies:
- dependency-name: minimatch
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-04 15:30:37 +00:00
dependabot[bot] 5512d1956d
Bump moment from 2.29.2 to 2.29.4
Bumps [moment](https://github.com/moment/moment) from 2.29.2 to 2.29.4.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.29.2...2.29.4)

---
updated-dependencies:
- dependency-name: moment
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-04 15:30:37 +00:00
Bill Zimmerman 3c2d488ae7
Merge pull request #1263 from RaspAP/dependabot/npm_and_yarn/decode-uri-component-0.2.2
Bump decode-uri-component from 0.2.0 to 0.2.2
2022-12-04 16:30:11 +01:00
dependabot[bot] 9ecdf6a4fa
Bump decode-uri-component from 0.2.0 to 0.2.2
Bumps [decode-uri-component](https://github.com/SamVerschueren/decode-uri-component) from 0.2.0 to 0.2.2.
- [Release notes](https://github.com/SamVerschueren/decode-uri-component/releases)
- [Commits](https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.2)

---
updated-dependencies:
- dependency-name: decode-uri-component
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-12-04 15:10:30 +00:00
billz a87d5829f3 Update release version 2022-10-24 09:52:02 +02:00
Bill Zimmerman 4c23b45375
Merge pull request #1235 from RaspAP/feature/clear-log
Adds a 'clear log' button to service logging UIs
2022-09-28 00:08:58 +02:00
billz b1870d40e8 Apply functionality to openvpn log 2022-09-27 12:04:54 +02:00
billz 5d0454f96e Update svg logging label 2022-09-27 12:04:29 +02:00
billz 729adf7e71 Update dhcp/dnsmasq logging help text 2022-09-27 12:03:40 +02:00
billz e422b4908e Apply functionality to dnsmasq log 2022-09-27 11:46:59 +02:00
billz e57012679e Update en_US locale + compile .mo 2022-09-26 20:57:57 +01:00
billz 52553f323b Update template w/ clear log btn 2022-09-26 20:54:52 +01:00
billz 1680c43c3e Add /bin/truncate to sudoers 2022-09-26 20:54:29 +01:00
billz b51ca53d4b Add js-clearhostapd-log ajax handler 2022-09-26 20:54:12 +01:00
billz cbdc5a11e5 Initial commit 2022-09-26 20:53:06 +01:00
Bill Zimmerman ee3de983ab
Merge pull request #1189 from cyberqueen-meg/master
Update to not freak out over vlans - see reddit post
2022-07-17 17:37:12 +02:00
Megan Howell 78156484bf
Update to not freak out over vlans
https://www.reddit.com/r/RaspAP/comments/w0mm0v/how_to_configure_dhcp_on_vlan_interfaces/
2022-07-16 16:07:39 -07:00
billz f299427ad1 Update fr_FR locale + compile .mo, thx @p0lycarpio 2022-06-28 10:17:37 +01:00
billz f0ef11bcf5 Update release version 2022-06-24 06:25:11 +01:00
billz 5625e13ef1 Detect Ubuntu 22.04, extended regex to match daemon_conf 2022-06-23 21:05:40 +01:00
Bill Zimmerman e6b6e8eafc
Merge pull request #1183 from RaspAP/feature/ubuntu20-armbian22
Extend support to Ubuntu 20.04 / Armbian 22
2022-06-23 18:12:10 +02:00
Bill Zimmerman c1db8d6409
Set DAEMON_CONF path for hostapd 2022-06-23 17:06:58 +02:00
Bill Zimmerman 10942aa8ae
Update country_code 2022-06-23 00:19:31 +02:00
Bill Zimmerman 52b11b092c
Set default country_code 2022-06-22 21:52:09 +02:00
billz 7f593bfe31 Add timeout to wget to extract public IP, thx @zbchristian 2022-06-22 14:04:53 +01:00
billz a743f84529 Minor: case change 2022-06-22 11:56:42 +01:00
billz 7674feaf61 Add operatingSystem check to bridge option 2022-06-22 11:50:00 +01:00
billz a4960f89ac Get system->operatingSystem() 2022-06-08 17:29:23 +00:00
billz 08a76445ae Add new messages to en_US locale 2022-06-08 17:24:13 +00:00
billz affc0396f1 Display os + kernel info on system > basic tab 2022-06-08 17:22:52 +00:00
billz b5886882ee Add os_desc + kernel version functions 2022-06-08 17:21:50 +00:00
billz 86bb8458b8 Add sbin/netplan to sudoers 2022-06-08 16:47:00 +00:00
billz 705477a011 Install OS-specific bridge default config 2022-06-08 16:45:56 +00:00
billz 9187691b3e Add --uninstall option to loader 2022-06-08 16:16:56 +00:00
billz 316b161671 Catch error & return install_status on failure 2022-06-08 07:24:36 +01:00
billz fcd3a7f204 Tidy function w/ do loop 2022-06-07 20:46:55 +01:00
billz a75ead776f Created _manage_systemd_services() 2022-06-07 19:58:04 +01:00
billz ac46e6dfcb Initial commit 2022-06-07 19:57:16 +01:00
billz 6eded85bcd Detect Ubuntu 20.04 / Armbian 22.05 + set php package 2022-06-05 18:36:14 +01:00
Bill Zimmerman d216cf612f
Update supported distros 2022-06-05 18:57:28 +02:00
billz 9d5088adf0 Backup/apply auth + config with --upgrade. Related to #1162 2022-06-05 13:42:00 +01:00
billz 41cff23878 Update pt_BR translation + compile .mo 2022-05-31 12:04:54 +01:00
billz c982079363 Merge branch 'master' of https://github.com/RaspAP/raspap-webgui 2022-05-31 11:59:13 +01:00
Bill Zimmerman 5d9ad372f9
Update bug_report.md 2022-05-25 19:57:06 +02:00
billz 6e5b2fb776 Merge branch 'master' of https://github.com/RaspAP/raspap-webgui 2022-04-24 10:19:44 +01:00
Bill Zimmerman 993e65483d
Update picker w/ new default 2022-04-24 11:18:08 +02:00
billz 3dde957d39 Merge branch 'master' of https://github.com/RaspAP/raspap-webgui 2022-04-24 10:11:23 +01:00
billz c4a2649267 Update picker w/ correct default 2022-04-24 10:11:01 +01:00
Bill Zimmerman 7b1bdf405c
Merge pull request #1158 from luke23489/luke23489-patch-1
patched data usage issue and #1068
2022-04-24 10:39:59 +02:00
Bill Zimmerman 5cbe9eba94
Merge pull request #1157 from RaspAP/feature/routing-table
Implement routing table raw output
2022-04-24 10:08:08 +02:00
Lukas 2b3b0eb6c2 fix #1068 data size units 2022-04-22 19:06:05 +02:00
Lukas b5b2e81d3b
fix overwrite issues
The $jsonobj array is iterated from the back, so the first entries overwrite the newest entries (that is, the ones from the back). So it happens that instead of the traffic for today 16 o'clock ,the traffic from the day before yesterday 16 o'clock ends up in the array $data_template and is displayed in the graph. But this should not be like this!
2022-04-22 18:50:18 +02:00
billz f0d1fe9b84 Implement routing table raw output 2022-04-21 09:52:09 +01:00
Bill Zimmerman 658a300d63
Update BACKERS.md 2022-04-12 09:47:34 +02:00
Bill Zimmerman 6e3177ea31
Merge pull request #1153 from RaspAP/dependabot/npm_and_yarn/moment-2.29.2
Bump moment from 2.24.0 to 2.29.2
2022-04-12 09:05:13 +02:00
Bill Zimmerman 362346e69d
Merge pull request #1154 from Hemina-SPA/revert-branch
Revert branch
2022-04-12 09:04:46 +02:00
Federico Frigo 00fe51f005 Reverting files to correct ones 2022-04-10 20:09:23 +02:00
dependabot[bot] 55959257d9
Bump moment from 2.24.0 to 2.29.2
Bumps [moment](https://github.com/moment/moment) from 2.24.0 to 2.29.2.
- [Release notes](https://github.com/moment/moment/releases)
- [Changelog](https://github.com/moment/moment/blob/develop/CHANGELOG.md)
- [Commits](https://github.com/moment/moment/compare/2.24.0...2.29.2)

---
updated-dependencies:
- dependency-name: moment
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-09 05:16:52 +00:00
Bill Zimmerman 4d93834e28
Update BACKERS.md 2022-04-08 18:37:24 +02:00
Bill Zimmerman 5a3e2f235b
Merge pull request #1151 from RaspAP/dependabot/npm_and_yarn/copy-props-2.0.5
Bump copy-props from 2.0.4 to 2.0.5
2022-04-08 18:35:54 +02:00
Federico Frigo b386f5285a
Merge pull request #1 from RaspAP/master
Updates from upstream
2022-04-06 09:21:43 +02:00
Federico Frigo 592b2ccc77
Merge branch 'master' into master 2022-04-06 09:21:29 +02:00
dependabot[bot] 5a7eb090e2
Bump copy-props from 2.0.4 to 2.0.5
Bumps [copy-props](https://github.com/gulpjs/copy-props) from 2.0.4 to 2.0.5.
- [Release notes](https://github.com/gulpjs/copy-props/releases)
- [Changelog](https://github.com/gulpjs/copy-props/blob/master/CHANGELOG.md)
- [Commits](https://github.com/gulpjs/copy-props/compare/2.0.4...2.0.5)

---
updated-dependencies:
- dependency-name: copy-props
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-04-03 19:15:47 +00:00
Bill Zimmerman 5c22eafa31
Merge pull request #1147 from RaspAP/dependabot/npm_and_yarn/minimist-1.2.6
Bump minimist from 1.2.5 to 1.2.6
2022-04-03 21:15:03 +02:00
billz 0aad7c8f0e Fix: filter dhcdpcd.log for ad block 2022-03-31 10:47:55 +01:00
Bill Zimmerman a8aa6d4331
Merge pull request #1141 from levi-ee/fix_uninstall_defaul_opt
fix: uninstall script default option #1140
2022-03-31 10:19:39 +02:00
dependabot[bot] 1ed490786e
Bump minimist from 1.2.5 to 1.2.6
Bumps [minimist](https://github.com/substack/minimist) from 1.2.5 to 1.2.6.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.5...1.2.6)

---
updated-dependencies:
- dependency-name: minimist
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-03-24 19:22:59 +00:00
Flavio Capitao fc2637be6b fix: uninstall script default option #1140 2022-03-14 11:23:54 +01:00
Bill Zimmerman 6f0d97858a
Merge pull request #1137 from Jonny1797/patch-1
Wrong assumption of default behaviour
2022-03-08 09:18:29 +01:00
Jonny1797 eeaed09f51
Wrong assumption of default behaviour
As the default behaviour is the reboot, the "yes" option should (like before) stand out. Alternatively one can make default that the device does not reboot.
2022-03-07 17:50:10 +01:00
Bill Zimmerman 43ba0db577
Merge pull request #1124 from BANKA2017/fix-function-used-memory
Fix: function usedMemory
2022-02-20 15:39:47 +01:00
BANKA2017 c0b0d87ff4
Fix: function usedMemory
While language in console is not English, this function may return `nan`
2022-02-20 15:59:43 +08:00
billz 4299d4d7cc Update release version 2022-01-25 08:42:09 +00:00
billz 4b6db8bb1b Apply zbchristian/fix-wireguard conf 2022-01-25 08:36:14 +00:00
Bill Zimmerman 7435dfd0ff
Merge pull request #1104 from p0lycarpio/fix-update-credentials
Backup raspap.auth file when upgrading
2022-01-18 00:07:13 +01:00
p0lycarpio 4213d169bf fix: check if file exists 2022-01-16 18:39:02 +01:00
p0lycarpio f315f05073 change scripts order and backup raspap.auth 2022-01-16 14:16:40 +01:00
Bill Zimmerman e353b82ab5
Update BACKERS.md 2022-01-10 09:53:09 +01:00
Bill Zimmerman cf02ac04c8
Update BACKERS.md 2022-01-06 19:10:34 +01:00
billz f549a3735d Update release version 2022-01-05 12:52:18 +00:00
Bill Zimmerman 95d9cbd65d
Update wireguard.php 2022-01-05 13:17:07 +01:00
billz 1617a7c5be Fix: chmod o+r for /var/log/dnsmasq.log 2022-01-05 11:30:09 +00:00
Bill Zimmerman 21da37712b
Fix: assign iw reg cc value if empty 2022-01-05 11:19:40 +01:00
Bill Zimmerman c83ecb9527
Update BACKERS.md 2022-01-05 10:55:48 +01:00
billz d10e963845 Merge branch 'master' of https://github.com/RaspAP/raspap-webgui 2022-01-04 20:48:02 +00:00
billz b44bc01644 Update release version 2022-01-04 20:47:22 +00:00
Bill Zimmerman 793bbfac53
Bugfix: rewrite selected wlan dhcpcd cfg 2022-01-04 19:02:12 +01:00
billz b1da175ea7 Fix: dhcpcd default-route status check 2022-01-02 19:31:07 +00:00
Bill Zimmerman 02ec6b03c6
Merge pull request #1093 from RaspAP/origin/master
Update release version
2022-01-01 23:55:01 +01:00
billz 6905dd36bd Update release version 2022-01-01 22:53:19 +00:00
Bill Zimmerman 1c3c6599fe
Update common.sh 2022-01-01 23:47:20 +01:00
Bill Zimmerman 60d151b976
Merge pull request #1087 from RaspAP/billz/insiders-merge
Insiders 1st Edition
2022-01-01 10:03:08 +01:00
billz 78e56ecf88 Minor: update set_error message 2022-01-01 00:35:15 +00:00
billz 669efe4d8c Standardize wg logging facility 2021-12-31 19:21:16 +00:00
billz 34ae762e5a Abbreviate msg to fix sidebar layout 2021-12-31 17:49:35 +00:00
billz c06bd30fed Added Romainian language support - thx Drago! 2021-12-31 14:59:55 +00:00
billz ef70e3938b Add new Romanian translation - thx Drago! 2021-12-31 14:39:11 +00:00
billz 7ae0625ae3 Update translations + compile mo files 2021-12-31 14:38:11 +00:00
billz 031df3195c Update release version 2021-12-31 13:12:38 +00:00
billz acb9fb270e Merge branch 'billz/insiders-merge' of https://github.com/RaspAP/raspap-webgui into billz/insiders-merge 2021-12-31 13:10:41 +00:00
billz 0af3e7a7c6 Update wg logging facility 2021-12-31 13:10:27 +00:00
billz 5fe58be79e Update en_US msgs + compile .mo 2021-12-31 13:10:09 +00:00
billz f6995ba239 Update default value for color-input 2021-12-31 13:05:11 +00:00
Bill Zimmerman 90470cbaf9
Merge branch 'master' into billz/insiders-merge 2021-12-29 17:04:09 +01:00
billz cffade5cfc Merge branch 'master' into billz/insiders-merge 2021-12-29 15:56:15 +00:00
billz 5017fb16b9 Fix merge conflict 2021-12-29 15:36:22 +00:00
billz 0c5ecb549d Update release version - First Insiders Edition 2021-12-29 13:27:34 +00:00
billz c2665ae528 Resolve merge conflict 2021-12-29 12:41:35 +00:00
billz 2ca5f25dff Merge First Edition of RaspAP/raspap-insiders 2021-12-29 12:35:57 +00:00
Bill Zimmerman d75175848f
Fix for issue RaspAP/raspap-webgui#1016 2021-12-29 12:39:59 +01:00
Bill Zimmerman bf5de0a81d
Update README.md 2021-11-28 11:39:04 +01:00
billz 730c3c3cc8 Update release version 2021-11-28 09:07:16 +00:00
Bill Zimmerman d0564ec946
Merge pull request #49 from RaspAP/feature-firewall
Feature: firewall settings
2021-11-26 22:48:14 +01:00
billz d12fc09cae Update nav-link dom element 2021-11-26 21:38:22 +00:00
billz 6b777ff8c2 Update release version 2021-11-25 09:02:59 +00:00
billz 4d00bd9e94 Update default getColorOpt() 2021-11-25 08:06:17 +00:00
billz 37bc68c91a Update default getColorOpt() 2021-11-25 08:05:38 +00:00
zbchristian 4408940a3d Improve detection of escaped hex bytes in ssid name 2021-11-24 23:02:07 +00:00
zbchristian c33cf5f81a Fix display of non-ASCII SSID 2021-11-24 23:01:51 +00:00
zbchristian db9f76eb5c only lower case hex sequences in non-ASCII SSID 2021-11-24 22:52:59 +00:00
zbchristian 634eb72760 Convert non ASCII ssid for display to utf8
Convert hex bytes to binary. Assumes utf8 encoding
2021-11-24 22:49:05 +00:00
zbchristian 5cbb785529 Handle non-ASCII SSID
Non-ASCII SSID has to be stored in wpa_supplicant.conf identical to the string given by wpa_cli scan. This includes the escaped special chars (e.g. ö = \xc3\xb9 ), with a prescript "P".
To obtain a valid psk from wpa_passphrase, the UTF8 string is passed (ssid2utf8 replaces the \x bytes by their binary value) to the exec(). For this to work the shell locale has to be UTF8 (via putenv()). Otherwise the string is converted to the shell encoding.
2021-11-24 22:49:05 +00:00
zbchristian 5b0c480df7 Fix SSID name of wifi client 2021-11-24 22:48:31 +00:00
zbchristian 74b6a15a75 Correct non-ASCII SSID read from wpa_supplicant 2021-11-24 22:47:39 +00:00
zbchristian d8626bd790 Zbchristian fix wifi client connect #53 2021-11-24 19:50:06 +00:00
Bill Zimmerman b90777b550
Merge pull request #54 from RaspAP/workaround-nonASCII-ssid-names
Fix handling of non ASCII ssid names
2021-11-24 16:59:18 +01:00
Bill Zimmerman 872d76e9c4
Merge pull request #53 from RaspAP/zbchristian-fix-wifi-client-connect
Zbchristian fix wifi client connect
2021-11-24 00:13:00 +01:00
billz 51f4904431 Merge upstream master: support for open networks 2021-11-23 23:01:59 +00:00
Bill Zimmerman 66c9095ba9
Merge pull request #1050 from RaspAP/feature-open-network
Remove pw requirement for open networks
2021-11-23 19:54:26 +01:00
billz 5415707721 Fix for vnStat v2.6 (bullseye) breaking changes 2021-11-21 23:24:26 +00:00
billz 4be05fe85e Fix for vnStat v2.6 (bullseye) breaking changes. Resolves #1064 2021-11-21 18:45:01 +00:00
billz 83373cf1c8 Update release version 2021-11-18 16:57:44 +00:00
billz 63ec96dde3 Update release version 2021-11-18 16:39:30 +00:00
billz 4b27f9c844 Bugfix: vnstat column name change 2021-11-18 10:26:38 +00:00
billz d5f0bf6928 Merge branch 'master' of https://github.com/RaspAP/raspap-webgui 2021-11-18 10:08:48 +00:00
billz a426823aee Bugfix: vnstat column name change. Resolves #1060 2021-11-18 10:08:24 +00:00
billz c0774a7bde Minor: typo fix 2021-11-17 22:00:20 +00:00
billz f35663f0aa Minor: typo fixes 2021-11-17 21:39:21 +00:00
billz fc4fe6ea58 Update release version 2021-11-17 18:21:06 +00:00
billz e75333e29d Define RASPI_DHCPCD_LOG 2021-11-17 18:20:03 +00:00
billz 816f760dad Update release version 2021-11-17 18:07:47 +00:00
billz f077aedde0 Define RASPI_DHCPCD_LOG. Resolves #1058 2021-11-17 18:06:43 +00:00
billz 8cef08cc81 Update release version 2021-11-15 22:15:16 +00:00
billz 03d14ed434 Update for for Debian 11 compatibility 2021-11-15 22:14:59 +00:00
billz a2e1b4bb68 Update release version 2021-11-15 17:48:09 +00:00
Bill Zimmerman 4cea3c1095
Merge pull request #1055 from RaspAP/fix/debian-11-patch
Update for Debian 11 / kernel 5.10.63 support
2021-11-15 18:42:00 +01:00
Bill Zimmerman 46e2760f0e
Update for Debian 11 / kernel 5.10.63 support 2021-11-15 18:39:18 +01:00
Bill Zimmerman bb3bc5cac4
Fix for Debian 11 / kernel 5.10.63 compatibility 2021-11-15 18:28:11 +01:00
billz c9b4c1d285 Update _set_php_package for Debian 11 / kernel 5.10.63 2021-11-15 16:33:24 +00:00
billz c9c321c435 Remove pw requirement for open networks #1039 2021-11-12 16:45:19 +00:00
billz 84bd141025 Update release version 2021-11-04 09:50:21 +00:00
Federico Frigo 6b276a8c4e
Update 50-raspap-router.conf 2021-10-23 16:38:28 +02:00
Federico Frigo 7008873277
Update 50-raspap-router.conf 2021-10-23 16:22:50 +02:00
Federico Frigo 6a361b80aa
Update 50-raspap-router.conf 2021-10-23 14:27:36 +02:00
Federico Frigo 6a08924dd1 servicestart.sh fixes 2021-10-19 20:23:19 +02:00
Federico Frigo ec2e0af7db Hostname automatic update 2021-10-19 19:30:47 +02:00
Federico Frigo fd1c48b710 Automated ssid and country code updates 2021-10-19 18:51:44 +02:00
Federico Frigo d0c14824e1
Merge branch 'RaspAP:master' into master 2021-10-18 20:33:38 +02:00
billz 0548a05f86 Resolves #1036 2021-10-18 12:27:33 +01:00
billz 921d5a0c5f Update release version 2021-10-13 21:56:33 +01:00
Federico Frigo 7ebd9eb75c Merge branch 'master' of https://github.com/FIAV1/raspap-webgui 2021-09-30 11:05:12 +01:00
Federico Frigo 50ab349d1b Custom settings 2021-09-30 11:04:57 +01:00
Bill Zimmerman e04055e67f
Merge pull request #1017 from smurphy425/issue_#1016_DHCP_wrong_subnet
Issue #1016 dhcp wrong subnet
2021-09-24 20:28:13 +02:00
smurphy 6c0b2d8b82 Fix for issue #1016 DHCP serves wrong Subnet Mask after updaiting in the webapp 2021-09-24 12:32:07 -04:00
smurphy 43088d3d1d Fix for issue #1016 DHCP serves wrong Subnet Mask after updaiting in the webapp 2021-09-24 12:31:28 -04:00
zbchristian 45bd02ecb7 Improve detection of escaped hex bytes in ssid name 2021-09-08 14:46:19 +02:00
zbchristian d07fd0a327 Implement update firewall function
- cleanup firewall.php
- add function updateFirewall
- add standalone script update_firewall.sh to update the firewall rules
2021-09-08 10:59:58 +02:00
billz a634e0dfaa Merge from upstream master: Pass $upstreamServers to template 2021-09-07 17:05:58 +01:00
billz c24104008a Pass $upstreamServers to template, resolves #994 thx @SephGER 2021-09-07 17:04:00 +01:00
zbchristian 98fe68e2d3 Fix numbering of nearby nextworks 2021-09-02 11:03:35 +02:00
zbchristian 7344c323ee Fix display of non-ASCII SSID 2021-09-02 09:39:32 +02:00
zbchristian 3aa564cdec only lower case hex sequences in non-ASCII SSID 2021-09-02 09:37:34 +02:00
zbchristian 077a9cd675 Convert non ASCII ssid for display to utf8
Convert hex bytes to binary. Assumes utf8 encoding
2021-09-02 09:37:33 +02:00
zbchristian d478bf5362 Handle non-ASCII SSID
Non-ASCII SSID has to be stored in wpa_supplicant.conf identical to the string given by wpa_cli scan. This includes the escaped special chars (e.g. ö = \xc3\xb9 ), with a prescript "P".
To obtain a valid psk from wpa_passphrase, the UTF8 string is passed (ssid2utf8 replaces the \x bytes by their binary value) to the exec(). For this to work the shell locale has to be UTF8 (via putenv()). Otherwise the string is converted to the shell encoding.
2021-09-02 09:37:33 +02:00
zbchristian 5630258d9a Fix SSID name of wifi client 2021-09-01 18:37:36 +02:00
zbchristian 433434f4b7 Correct non-ASCII SSID read from wpa_supplicant 2021-09-01 18:37:36 +02:00
Bill Zimmerman 890aaaabc9
Merge pull request #52 from RaspAP/zbchristian-fix-sysinfo-creation
Fix system info class creation
2021-08-31 18:03:33 +02:00
zbchristian 9aa94a4d22
Add network index to network array 2021-08-31 17:00:08 +02:00
zbchristian 7df8f68621
Fix index of known networks
Index now stored in the network array
2021-08-31 16:57:46 +02:00
zbchristian 0adbf9f215
Fix system info class creation
Hostapd.php is throwing an error.
Two problems found:
1) the class System is not existing. Its actually called Sysinfo
2) the namespace of the class is RaspAP\System
2021-08-31 16:43:44 +02:00
Bill Zimmerman 8778d225ac
Merge pull request #50 from RaspAP/dependabot/npm_and_yarn/path-parse-1.0.7
Bump path-parse from 1.0.6 to 1.0.7
2021-08-30 12:15:44 +02:00
dependabot[bot] 4df91097fa
Bump path-parse from 1.0.6 to 1.0.7
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-13 00:15:40 +00:00
Bill Zimmerman 48feef88ff
Merge pull request #985 from RaspAP/dependabot/npm_and_yarn/path-parse-1.0.7
Bump path-parse from 1.0.6 to 1.0.7
2021-08-11 16:46:32 +02:00
dependabot[bot] 33dbaddcd9
Bump path-parse from 1.0.6 to 1.0.7
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-08-11 13:34:01 +00:00
billz 3145b6050e Legacy 802.11a UI support. Resolves #983 2021-08-09 17:54:46 +01:00
billz 6be1ad1612 Legacy 802.11a UI support. Resolves #983 2021-08-09 17:54:20 +01:00
billz b01e383e43 Instantiate system class w/ namespace 2021-08-09 06:25:41 +01:00
billz 93db1347cb Instantiate system class w/ namespace 2021-08-09 06:24:29 +01:00
billz ddc5b44557 Standardize modal dialog 2021-08-05 22:52:40 +01:00
billz 9405297662 Renamed constant for consistency 2021-08-05 20:29:46 +01:00
billz 307256d96e Function comment block stubs 2021-08-05 18:15:12 +01:00
billz 99577938f6 Formatting: processed w/ phpcbf 2021-08-05 18:05:31 +01:00
billz cb2e97fdec Minor: mode change 2021-08-05 16:12:45 +01:00
billz 9b76fd54c6 Format labels for locale support 2021-08-05 16:12:11 +01:00
billz f114a70191 Update en_US locale w/ firewall msgs 2021-08-05 16:09:20 +01:00
billz cca40f287c Merge branch 'feature-firewall' of https://github.com/RaspAP/raspap-insiders into feature-firewall 2021-08-05 15:18:24 +01:00
billz c661b0f473 Update template msg + en_US locale 2021-08-03 23:38:02 +01:00
billz b4394513ca Update template msg + en_US locale 2021-08-03 23:37:42 +01:00
billz fa849e55de Merge with upstream master 2021-08-03 17:42:56 +01:00
Bill Zimmerman 9b72d7f3db
Merge pull request #969 from fareg/master
DHCP static leases w/ optional comment
2021-08-03 16:43:20 +02:00
billz c3a219e340 Update class w/ namespace, phpcbf formatting 2021-08-03 15:20:08 +01:00
billz 4e62413e11 Instantiate system class w/ namespace 2021-08-03 15:18:36 +01:00
Bill Zimmerman d12aa8da21
Update README.md 2021-07-30 21:01:29 +02:00
Bill Zimmerman 372da249af
Update README.md 2021-07-30 20:59:16 +02:00
Fabrice Colas 17597cd2cc DHCP static leases w/ optional comment
* Ability to add an optional Comment to DHCP  static Leases
    * Sort DHCP static leases by IP (more human readable)
2021-07-27 18:33:00 +02:00
Christian Zeitnitz f572fdd39e Improve search for tun and wg device 2021-07-27 11:25:42 +02:00
Christian Zeitnitz 3d4b710492 Allow IPv6 addresses for VPN server 2021-07-27 10:09:36 +02:00
Christian Zeitnitz 0886999055 Improve active VPN detection 2021-07-26 15:42:14 +02:00
Christian Zeitnitz 882535b130 Get VPN state from active tun/wg device 2021-07-25 17:27:31 +02:00
Christian Zeitnitz 2f1a6af0ba Add IPv6 to Firewall 2021-07-25 15:42:46 +02:00
zbchristian 1855f40f9d
Add masquerade rule for NAT
Add default NAT POSTROUTING  rule to masquerade addresses
2021-07-24 15:04:01 +02:00
Christian Zeitnitz 0a6e48a953 Fix display of VPN IPs 2021-07-21 17:56:01 +02:00
Christian Zeitnitz 393292f872 Add VPN server IPs to Firewall GUI 2021-07-21 16:02:21 +02:00
Christian Zeitnitz e049dd6d45 Add excelusion option to firewall GUI 2021-07-20 21:56:00 +02:00
Christian Zeitnitz 721e576779 Fix writing of the firewall config 2021-07-20 18:13:35 +02:00
Christian Zeitnitz 5197df18e1 Fix ownership of firewall directory 2021-07-19 17:47:38 +02:00
Christian Zeitnitz 3059dd1fb8 Define firewall constants 2021-07-19 17:28:49 +02:00
Christian Zeitnitz b770b89d73 Add openvpn udp rules to firewall 2021-07-18 22:09:59 +02:00
Christian Zeitnitz 2e1781a2eb Add installation script
Add wireguard iptables rules
2021-07-17 22:26:56 +02:00
Christian Zeitnitz 5f0eb25f5c Add Firewall entry to menu 2021-07-17 09:45:59 +02:00
Christian Zeitnitz 59abc641d6 Implement firewall
- settings in iptables_rules.json
- creates a script under /tmp/iptables_raspap.sh and executes it
- no installer yet
- to do: deal with Bridge and VPN settings
2021-07-16 21:40:28 +02:00
billz 98533c3ee8 Update release version 2021-07-15 08:49:35 +01:00
billz 1b7169edd4 Tweak wg template 2021-07-14 07:18:07 +01:00
Bill Zimmerman 78c4dff40b
Merge pull request #45 from RaspAP/feature/wg-extended
Extend WG functionality
2021-07-13 14:03:35 +02:00
billz ab3e147bbf Update wg messages for en_US locale 2021-07-13 12:51:09 +01:00
billz 2ccce60189 Simplify template, update save actions 2021-07-08 11:22:17 +01:00
billz 8374d032b3 Update w/ common public_ip function 2021-07-07 23:25:23 +01:00
billz 84fcedc203 Added get_public_ip() 2021-07-07 23:24:49 +01:00
billz 225bff59b6 Upload wg config, set postup/down rules, move to destination 2021-07-07 23:01:47 +01:00
billz fbe1348e15 Added sudoers mv /tmp/wg/* 2021-07-07 22:59:51 +01:00
billz d7baf5492f Set toggle state from template var 2021-07-07 22:58:50 +01:00
billz c3b45a7915 Update labels, add iptables rules toggle 2021-07-07 08:12:30 +01:00
billz 8c3531e6d2 Work in progress: SaveWireGuardUpload() 2021-07-06 23:13:32 +01:00
billz 1adaca1ea1 Set file upload as default wg config method 2021-07-06 23:11:16 +01:00
billz 84d5584150 Move file upload validation class to functions 2021-07-06 23:10:10 +01:00
billz de586e0024 Work in progress: WG server config panels 2021-07-06 22:18:43 +01:00
Bill Zimmerman 4d4fac2a8f
Merge pull request #43 from RaspAP/feature/zbchristian-clients-mods
Feature/zbchristian clients mods
2021-07-05 10:07:51 +02:00
billz 8cd2c59ca1 Update w/ namespace 2021-07-04 11:16:21 +01:00
billz 87352b8b42 Update w/ namespace, fix configauth for client.conf 2021-07-04 11:15:50 +01:00
billz 699f9ff397 Bugfix + remove debug output 2021-07-04 10:47:45 +01:00
billz 8409c3e7d8 Update sudoers ovpn actions 2021-07-04 10:46:00 +01:00
billz b7a9c6254e Refactor w/ file upload class 2021-07-03 23:03:14 +01:00
billz 8ae0fce366 Initial commit 2021-07-03 23:01:35 +01:00
Bill Zimmerman ab9e9ae8d4
Update README.md 2021-06-20 17:10:48 +02:00
billz 859b99fd60 Update documentation links 2021-06-20 15:32:57 +01:00
Christian Zeitnitz 8f702a2a55 Correct Hilink authentication and service 2021-06-18 17:27:11 +02:00
Christian Zeitnitz 0625fcc5ef Add raspap_helpers.sh 2021-06-18 14:04:56 +02:00
Bill Zimmerman 73161151fe
Merge pull request #40 from RaspAP/dependabot/npm_and_yarn/postcss-7.0.36
Bump postcss from 7.0.18 to 7.0.36
2021-06-17 17:27:39 +02:00
dependabot[bot] 6f353b331f
Bump postcss from 7.0.18 to 7.0.36
Bumps [postcss](https://github.com/postcss/postcss) from 7.0.18 to 7.0.36.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/7.0.18...7.0.36)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-17 14:55:24 +00:00
Bill Zimmerman 6c8ab2b31b
Merge pull request #934 from RaspAP/dependabot/npm_and_yarn/postcss-7.0.36
Bump postcss from 7.0.18 to 7.0.36
2021-06-16 15:53:21 +02:00
dependabot[bot] 3566d0f032
Bump postcss from 7.0.18 to 7.0.36
Bumps [postcss](https://github.com/postcss/postcss) from 7.0.18 to 7.0.36.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/7.0.18...7.0.36)

---
updated-dependencies:
- dependency-name: postcss
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2021-06-16 11:54:18 +00:00
Bill Zimmerman bcff66d14f Update issue templates 2021-06-15 18:05:36 +02:00
billz 815e4639a1 Update release version 2021-06-15 16:03:45 +01:00
Bill Zimmerman daffef71c8
Merge pull request #37 from RaspAP/zbchristian-openvpn-fix
Fix openvpn activation and config display
2021-06-14 07:48:07 +02:00
billz 0a9aa6a5e6 Update fr_FR locale translations, thx @yolateng0 2021-06-12 20:09:50 +01:00
billz e07774c09b Update fr_FR locale translations, thx @yolateng0 2021-06-12 20:08:12 +01:00
zbchristian 4c79f1f362
Insert determination of the default config 2021-06-12 16:21:20 +02:00
zbchristian 4bfbfc40f1
Remove determination of the default config 2021-06-12 16:19:31 +02:00
zbchristian a963c0564f
Correct displayed configuration name 2021-06-12 14:36:03 +02:00
zbchristian f721c08dc9
Fix openvpn activation of configuration 2021-06-12 14:29:37 +02:00
zbchristian e62bb9c04e
Fix display of active openvpn config 2021-06-12 14:28:09 +02:00
billz 5f7df3accb Update release version 2021-06-08 20:16:34 +01:00
Bill Zimmerman 2fc30acbc5
Merge pull request #34 from RaspAP/bugfix/multiple-ovpn
Bugfix: multiple OpenVPN config handling
2021-06-08 20:31:26 +02:00
billz 83c6e17970 Refactor openvpn activate cfg ajax 2021-06-06 20:55:43 +01:00
billz cca50c3592 Update raspap.sudoers w/ /usr/bin/ln -s 2021-06-06 20:53:21 +01:00
billz 1b7074f693 Revise openvpn log output method 2021-06-06 20:51:13 +01:00
billz 1647aa3c73 Refactor config handling w/ symbolic links 2021-06-06 20:50:20 +01:00
billz 234f22117f Remove file_move_config (deprecated) 2021-06-06 20:49:09 +01:00
billz 55995c797c Update template, remove affilate link 2021-06-06 20:48:23 +01:00
billz 43e9a093c4 Add RASPI_OPENVPN_CLIENT_PATH 2021-06-06 20:47:30 +01:00
billz eed50706d9 Fixup template merge from upstream master 2021-06-05 12:20:58 +01:00
billz 06476b9a61 Merge with upstream master 2021-06-05 12:02:26 +01:00
billz 083e19d631 Update About page insiders logo 2021-06-05 10:16:35 +01:00
Bill Zimmerman 57f3512b79
Merge pull request #926 from EvilOlaf/patch-1
Update URL
2021-06-05 10:23:00 +02:00
Werner 9dd88b10ef
Update URL 2021-06-05 09:41:52 +02:00
billz 04fc73326b Update release version 2021-06-05 08:10:43 +01:00
Bill Zimmerman 97e6d3eda8
Merge pull request #922 from RaspAP/wifi-stations-extra
Wifi stations extra
2021-06-01 19:55:52 +02:00
billz b5a1d12f1c Update en_US locale w/ new messages 2021-06-01 14:32:15 +01:00
billz ac6f31fa22 Adjust hr color + padding 2021-06-01 14:31:38 +01:00
Bill Zimmerman 0e1d652c5e
Merge pull request #919 from glaszig/wifi-stations-ui
Wifi stations UI
2021-06-01 15:20:38 +02:00
glaszig c832b46e4f fix card-header content items alignments and heading text wrap 2021-06-01 03:27:28 +01:00
glaszig ba438faaa2 fix service status vertical alignment 2021-06-01 03:26:46 +01:00
glaszig d711acb52d use css grid for wifi stations layout (better width equality) 2021-06-01 03:02:05 +01:00
glaszig d9212737e5 fix layout issues, mainly margins and centering 2021-06-01 03:02:05 +01:00
glaszig 807a591504 remove unnecessary function calls 2021-06-01 03:02:04 +01:00
glaszig 9dc1f14ccb separate connected from known from nearby wifi stations in ui 2021-06-01 03:02:04 +01:00
billz a4d5cc1af6 Remove extended ASCII ISO Latin-1 printable chars from filter 2021-05-31 10:49:02 +01:00
Bill Zimmerman 2233636681
Merge pull request #918 from glaszig/unicode-ssid
interpret hex sequences in ssid station names
2021-05-31 08:35:07 +02:00
glaszig fe3b8a108e properly exclude raspap station from found wifi stations 2021-05-30 21:58:38 +01:00
glaszig 92e154fa64 interpret hex sequences in ssid station names
resolves #917
2021-05-30 21:49:48 +01:00
Bill Zimmerman f5a18b8d95
Merge pull request #913 from RaspAP/dependabot/npm_and_yarn/browserslist-4.16.6
Bump browserslist from 4.7.0 to 4.16.6
2021-05-27 07:27:34 +02:00
Bill Zimmerman e08692fcd3
Merge pull request #33 from RaspAP/dependabot/npm_and_yarn/browserslist-4.16.6
Bump browserslist from 4.7.0 to 4.16.6
2021-05-27 07:27:13 +02:00
dependabot[bot] 1e0a64d460
Bump browserslist from 4.7.0 to 4.16.6
Bumps [browserslist](https://github.com/browserslist/browserslist) from 4.7.0 to 4.16.6.
- [Release notes](https://github.com/browserslist/browserslist/releases)
- [Changelog](https://github.com/browserslist/browserslist/blob/main/CHANGELOG.md)
- [Commits](https://github.com/browserslist/browserslist/compare/4.7.0...4.16.6)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-27 00:53:00 +00:00
dependabot[bot] 261a89cab0
Bump browserslist from 4.7.0 to 4.16.6
Bumps [browserslist](https://github.com/browserslist/browserslist) from 4.7.0 to 4.16.6.
- [Release notes](https://github.com/browserslist/browserslist/releases)
- [Changelog](https://github.com/browserslist/browserslist/blob/main/CHANGELOG.md)
- [Commits](https://github.com/browserslist/browserslist/compare/4.7.0...4.16.6)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-25 17:27:45 +00:00
Christian Zeitnitz 29547b52e1 Use Hilink API 2021-05-23 09:04:08 +02:00
Christian Zeitnitz 26a50993b9 Fix hilink login 2021-05-21 22:07:04 +02:00
Christian Zeitnitz b99752c4cd Implement login for Hilink devices 2021-05-21 14:57:14 +02:00
Bill Zimmerman 9c6de84752
Update config.php 2021-05-20 10:10:44 +02:00
Bill Zimmerman a58845ed9e
Update common.sh 2021-05-20 09:37:20 +02:00
Bill Zimmerman ced9816398
Update common.sh 2021-05-20 09:15:31 +02:00
Christian Zeitnitz 613cd6bae8 Add Huawei Hilink API
Cleanup mobile data scripts
2021-05-19 21:04:31 +02:00
billz 00131b052f Bugfix: unconditionally apply raspap.sudoers 2021-05-15 09:05:07 +01:00
Bill Zimmerman d042e5cd33
Merge pull request #31 from RaspAP/dependabot/npm_and_yarn/lodash-4.17.21
Bump lodash from 4.17.20 to 4.17.21
2021-05-12 14:21:00 +02:00
Bill Zimmerman c1b676bb91
Merge pull request #30 from RaspAP/dependabot/npm_and_yarn/hosted-git-info-2.8.9
Bump hosted-git-info from 2.8.8 to 2.8.9
2021-05-12 13:36:26 +02:00
dependabot[bot] 45cbbea78c
Bump lodash from 4.17.20 to 4.17.21
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-12 00:04:42 +00:00
dependabot[bot] 97b2a09145
Bump hosted-git-info from 2.8.8 to 2.8.9
Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9.
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-11 23:37:52 +00:00
glaszig 1c7f57467f add missing css class to lightsout theme 2021-05-11 17:38:08 -03:00
Bill Zimmerman 77d8044f52
Merge pull request #895 from RaspAP/dependabot/npm_and_yarn/hosted-git-info-2.8.9
Bump hosted-git-info from 2.8.8 to 2.8.9
2021-05-11 07:42:44 +02:00
Bill Zimmerman 8194e64593
Merge pull request #894 from RaspAP/dependabot/npm_and_yarn/lodash-4.17.21
Bump lodash from 4.17.20 to 4.17.21
2021-05-11 07:19:43 +02:00
dependabot[bot] c47aeece43
Bump hosted-git-info from 2.8.8 to 2.8.9
Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.8.8 to 2.8.9.
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.8.8...v2.8.9)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-11 04:51:24 +00:00
dependabot[bot] 5c442f185b
Bump lodash from 4.17.20 to 4.17.21
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.20 to 4.17.21.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.20...4.17.21)

Signed-off-by: dependabot[bot] <support@github.com>
2021-05-10 16:50:37 +00:00
Bill Zimmerman a94337342b
Merge pull request #28 from RaspAP/zbchristian-patch-2
Add auto YES to apt-get
2021-05-10 11:33:29 +02:00
Bill Zimmerman b6e0123b4a
Merge pull request #27 from RaspAP/zbchristian-patch-1
Fix unknown device type for  mobile modems (ppp)
2021-05-10 11:32:48 +02:00
Bill Zimmerman 4ed0244763
Merge pull request #29 from RaspAP/zbchristian-patch-3
Fix default device name numbering in UDEV rule
2021-05-10 11:32:25 +02:00
Bill Zimmerman fabc48c7da
Merge pull request #884 from RaspAP/feature/reinitialize-wpa
Feature: reinitialize wpa_supplicant
2021-05-10 11:13:04 +02:00
Bill Zimmerman 061d01cbd5
Merge pull request #888 from RaspAP/bugfix/security
Bugfix: command injection vulnerabilities
2021-05-10 10:55:45 +02:00
billz 4841d9336a Remove locale include (unused) 2021-05-10 07:49:16 +01:00
billz a3814cdf71 Wrap reinitialize w/ monitor mode condition 2021-05-08 19:40:19 +01:00
glaszig 947ccf7021 add margin to wifi qr code to have it work with dark background (i.e. dark theme) 2021-05-08 14:29:59 -03:00
glaszig 45a50edc41 use special multibyte shell escaping to support unicode ssid names with qr code 2021-05-08 14:24:36 -03:00
billz 3969db61b0 Validate wpa_passphrase w/ ctype_print 2021-05-07 11:33:17 +01:00
glaszig e76c31c9c6 revert part of 3a41b52c to respect http method's purpose 2021-05-06 19:12:58 -03:00
Bill Zimmerman 5a7b774598
Merge pull request #889 from RaspAP/quad9-dns
add second quad9 service address
2021-05-04 08:28:07 +02:00
glaszig bd3e8de2d7
add second quad9 service address
see https://www.quad9.net/service/service-addresses-and-features
2021-05-04 00:06:50 -03:00
billz a8d59c1479 Merge branch 'master' of https://github.com/RaspAP/raspap-webgui 2021-05-02 16:15:07 +01:00
billz d6b3304c01 Apply dashboard widget layout to sysinfo 2021-05-02 16:12:50 +01:00
billz 6567f99c74 Restrict control scripts to root user, thx Omri Inbar 2021-05-02 10:46:53 +01:00
billz 4baac6eae2 Escape constant, arg + extension 2021-05-02 07:15:12 +01:00
billz 90aea4ca93 Set locale for utf-8 support, remove mb_escapeshellarg (deprecated) 2021-05-02 07:02:30 +01:00
billz 6bfb3a3c9d Add escapeshellarg() for iwgetid interface 2021-05-01 17:46:53 +01:00
billz 3a41b52c1d Update method to POST + escapeshellarg() 2021-05-01 17:24:37 +01:00
billz e5024c4c19 Minor: fix labels + update en_US locale 2021-04-30 17:24:45 +01:00
Bill Zimmerman 855486073f
Merge pull request #851 from RaspAP/networking-ui-improvements
Networking UI improvements
2021-04-30 18:18:57 +02:00
billz 3207ac75cd Minor: standardize labels 2021-04-30 14:40:47 +01:00
billz 1d6b8a4c09 Update en_US messages 2021-04-30 14:40:13 +01:00
billz d1fdbd9f25 Add wpa_reinit button to template 2021-04-30 08:38:49 +01:00
billz 56abf95c5b Fixup sudoers for wpa_supplicant 2021-04-30 08:38:16 +01:00
billz 8873735d7f Add status msg, update shell cmds 2021-04-30 08:37:41 +01:00
Bill Zimmerman 79393c48d0
Add reinitialize message on scan failure 2021-04-30 00:05:19 +02:00
Bill Zimmerman 0bb9d6c196
Update with /sbin/wpa_supplicant 2021-04-30 00:00:25 +02:00
Bill Zimmerman 3451efe132
Create reinitializeWPA() 2021-04-29 23:58:46 +02:00
Bill Zimmerman c8a9c05d3e
Add handler for wpa_reinit 2021-04-29 23:56:40 +02:00
zbchristian 9d132bee3a
Fix naming of hilink devices 2021-04-24 11:17:25 +02:00
zbchristian 29c4c5a833
Fix default device name numbering in UDEV rule 2021-04-24 11:11:48 +02:00
zbchristian 9f38f64c3d
Add auto YES to apt-get in order to avoid abort during installation 2021-04-23 19:01:03 +02:00
zbchristian 422ce9dd3b
Fix unknown device type for mobile modems (ppp) 2021-04-23 18:04:11 +02:00
Bill Zimmerman 08164f43f1
Update BACKERS.md 2021-04-23 15:27:41 +02:00
Bill Zimmerman e4995314f0
Update banner img 2021-04-23 14:39:05 +02:00
billz 6ac7642c33 Update release version 2021-04-23 12:45:28 +01:00
Bill Zimmerman fcb601e369
Merge pull request #26 from RaspAP/feature/tx-power
Feature: Set TxPower for AP
2021-04-23 13:20:21 +02:00
glaszig 048848b2b5 make interface cards full width for legibility 2021-04-22 16:52:09 +01:00
glaszig d1382cbabf make interface cards be of 100% height 2021-04-22 16:36:58 +01:00
glaszig 779bce7cc8 remove superfluous button container 2021-04-22 16:35:59 +01:00
glaszig c624c36f31 fix indentation 2021-04-22 16:35:14 +01:00
glaszig f6c4d2b1d8 Revert "fix markup in networking"
This reverts commit 8dbb2f3a1b.
2021-04-22 16:31:58 +01:00
glaszig 8dbb2f3a1b fix markup in networking 2021-04-22 16:31:20 +01:00
glaszig e5ac7d23a3 improve table layout 'internet connection' 2021-04-22 16:31:20 +01:00
glaszig 1d21f524f1 remove superfluous quote 2021-04-22 16:31:20 +01:00
billz 6d3966dd8a Update release version 2021-04-22 08:28:07 +01:00
billz f24373d7f8 Update w/ _install_mobile_clients @zbchristian 2021-04-22 08:13:05 +01:00
billz 2032b27ad0 Merge from upstream master (insiders) 2021-04-22 08:12:44 +01:00
billz 3ee38e6abe Update en_US locale w/ new messages + compile .mo 2021-04-20 20:01:25 +01:00
billz 14b6a72105 Add text-muted to tooltip, revise placement + text 2021-04-20 20:00:40 +01:00
billz 643afe09e8 Set txpower w/ iw, persist value in UI 2021-04-20 17:53:09 +01:00
billz 6c674537bb WIP: txpower feature 2021-04-20 15:19:00 +01:00
Bill Zimmerman 07ea4d2519
Merge pull request #16 from RaspAP/feature/zbchristian-clients
Feature/zbchristian clients
2021-04-16 16:38:35 +02:00
billz e4967e5045 Update en_US local, template + compile .mo 2021-04-16 13:42:51 +01:00
billz 6c6722ae88 Update release version 2021-04-15 18:48:45 +01:00
billz dc8b39dc40 Output tab labels with gettext() 2021-04-15 09:05:01 +01:00
billz e1c2770a76 Minor: formatting + status text 2021-04-15 09:04:20 +01:00
billz 38c37296af Add new messages to en_US, compile .mo 2021-04-15 09:03:32 +01:00
billz 6741560f1a Merge with upstream master 2021-04-15 09:01:29 +01:00
billz 263e326281 Descriptive function name + insiders flag check 2021-04-15 09:00:14 +01:00
Bill Zimmerman 0c9152fff3
Merge branch 'master' into feature/zbchristian-clients 2021-04-15 09:00:48 +02:00
billz dc39cf8bac Merge branch 'master' of https://github.com/billz/raspap-webgui 2021-04-14 20:06:52 +01:00
billz e8343cc0a1 Install wireguard from apt on RPi OS 2021-04-14 20:06:19 +01:00
billz ba948d99dd Update install_wireguard from apt on RPi OS 2021-04-14 19:58:34 +01:00
Bill Zimmerman f6bc06b647
Merge pull request #854 from RaspAP/billz-dashboard-client-widget
Tweak layout of dashboard client widget
2021-04-09 16:11:49 +02:00
billz d3c769b748 Layout fix: dashboard client widget + openvpn ipv4 2021-04-09 15:05:40 +01:00
billz 620fece123 Apply updated info-item layout to openvpn ipv4 2021-04-09 15:03:25 +01:00
billz 83d0a98979 Additional chart layout tweaks 2021-04-09 07:51:43 +01:00
billz 30c42b8ea3 Align signal strength meter w/ adjacent col 2021-04-07 09:25:28 +01:00
billz d05b07fee3 Append WG option if undefined 2021-04-07 08:46:26 +01:00
billz f7f963bbdc Set common repo for install loader 2021-04-07 07:17:05 +01:00
billz f9e907e3ce Tweak layout of dashboard client widget 2021-04-06 22:59:40 +01:00
Bill Zimmerman aa6df37801
Update README.md 2021-04-06 14:24:36 +02:00
Bill Zimmerman 0f333bd261
Merge pull request #19 from RaspAP/zbchristian-mods-openvpn
Allow to configure OpenVPN with a client certificate
2021-04-06 14:22:09 +02:00
Bill Zimmerman b4012039c2
Update BACKERS.md 2021-04-06 14:21:19 +02:00
billz d221c76e32 Spacing + remove extraneous div 2021-04-06 12:48:27 +01:00
billz d3c830d69f Wrap strings w/ php gettext, update en_US locale + compile 2021-04-06 10:34:39 +01:00
billz 594c5dad1c Merge with upstream master 2021-04-05 10:06:44 +01:00
billz bb0fa69985 Merge branch 'zbchristian-mods-openvpn' of https://github.com/RaspAP/raspap-insiders into zbchristian-mods-openvpn 2021-04-05 10:02:49 +01:00
Bill Zimmerman 260aa7694b
Merge pull request #850 from RaspAP/default-route-option
add 'default route' toggle to network interface configuration ui
2021-04-05 10:56:48 +02:00
billz 16098c0e96 Update en_US msgstr 2021-04-05 08:20:41 +01:00
glaszig 6196bcd311 add 'default route' toggle to network interface configuration ui 2021-04-03 00:43:42 +01:00
glaszig 8f0ae3b36a
fix url rewriting
(\?.+) already captures the question mark so it's not needed in the replaced string.
this actually made the `page` GET parameter be `?page` because the url wound up being `??page=foo`.
2021-04-02 19:33:35 -03:00
Bill Zimmerman c84ac43185
Merge pull request #848 from RaspAP/glaszig-dashboard-wifi-design
Glaszig dashboard wifi design
2021-04-02 19:06:26 +02:00
root dc59594c76 Merge branch 'dashboard-wifi-design' into glaszig-dashboard-wifi-design 2021-04-02 17:26:39 +01:00
root b418212408 div => p 2021-04-02 17:25:45 +01:00
root f2ec732bf0 add missing card-title class to headings 2021-04-02 17:25:45 +01:00
root 41e27cc546 improving layout, text and styles of wifi client box 2021-04-02 17:25:44 +01:00
billz 1503d81317 Apply styles to themes css 2021-04-02 17:03:35 +01:00
billz 14b00f1b0a Merge branch 'dashboard-wifi-design' of https://github.com/glaszig/raspap-webgui into glaszig-dashboard-wifi-design 2021-04-02 07:15:08 +01:00
Bill Zimmerman f05d3b0248
Merge pull request #846 from glaszig/sort-interfaces
sort interface list for hostapd
2021-04-02 07:41:16 +02:00
root b31c4a024d add missing card-title class to headings 2021-04-02 00:18:57 +01:00
root ec3fa1002b improving layout, text and styles of wifi client box 2021-04-02 00:17:17 +01:00
root b10ee7a98f sort interface list for hostapd 2021-04-02 00:13:35 +01:00
Bill Zimmerman a109798803
Update README.md 2021-04-01 20:05:54 +02:00
billz 88e39fa991 Unlink existing 50-raspap-router in conf-enabled 2021-04-01 16:50:20 +01:00
billz 41cb105b2a Unlink existing 50-raspap-router in conf-enabled 2021-04-01 16:46:07 +01:00
Bill Zimmerman 98bd74372f
Update README.md 2021-04-01 12:07:16 +02:00
Bill Zimmerman 12d52dfd3c
Update README.md 2021-04-01 06:58:36 +02:00
Bill Zimmerman b08373a72f
Update README.md 2021-04-01 06:56:59 +02:00
billz 8cd71ce864 Merge with upstream repo 2021-03-31 19:56:13 +01:00
billz 8d4cf1c96d Update country_code optionv values 2021-03-31 19:48:34 +01:00
Bill Zimmerman f0ab95c987
Merge pull request #842 from RaspAP/dependabot/npm_and_yarn/y18n-3.2.2
Bump y18n from 3.2.1 to 3.2.2
2021-03-31 17:45:43 +02:00
Christian Zeitnitz fc83727408 Use client.conf to get path and name of configuration 2021-03-31 12:54:43 +02:00
Christian Zeitnitz 20d2443468 Fix panel title for certificate option 2021-03-31 12:48:31 +02:00
dependabot[bot] 77170a9a7b
Bump y18n from 3.2.1 to 3.2.2
Bumps [y18n](https://github.com/yargs/y18n) from 3.2.1 to 3.2.2.
- [Release notes](https://github.com/yargs/y18n/releases)
- [Changelog](https://github.com/yargs/y18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yargs/y18n/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2021-03-31 02:31:36 +00:00
Christian Zeitnitz d7428be2ec Fix json format of client udev prototypes
limit device name length to 20
2021-03-29 21:53:26 +02:00
Christian Zeitnitz afe0553935 Fix EOL format 2021-03-29 20:30:26 +02:00
Christian Zeitnitz 689b3439f7 Update prototypes of udev rules with extra "raspapType" property 2021-03-29 15:53:43 +02:00
Christian Zeitnitz 300f2c2457 Cleanup and fix for udev rules written for clients
Fix device type in client table
2021-03-29 15:16:23 +02:00
Christian Zeitnitz f7cef44b06 Add code for PPP and TUN devices 2021-03-28 16:35:19 +02:00
Christian Zeitnitz 6eb51a2d63 Add flag for client configuration 2021-03-28 14:44:05 +02:00
Christian Zeitnitz 1715237529 Remove signal strength meter in case of unconfigured client 2021-03-28 11:59:57 +02:00
Christian Zeitnitz fd3dcedb4a Fix Client status text 2021-03-28 11:15:46 +02:00
billz 8b62d3319c Merge branch 'zbchristian-mods-openvpn' of https://github.com/RaspAP/raspap-insiders into zbchristian-mods-openvpn 2021-03-27 23:11:37 +00:00
billz 61c550165d Update with form-control class 2021-03-27 19:34:35 +00:00
billz 20ef52de57 Bugfix: syntax error (echo) 2021-03-27 19:34:11 +00:00
billz c6597b27c9 Use dynamic navbar logo 2021-03-27 19:33:35 +00:00
Christian Zeitnitz 34f46007bd fix coding standard violations 2021-03-27 18:39:42 +01:00
Christian Zeitnitz f583a3eeae modified text in case of unconfigured client 2021-03-27 18:00:40 +01:00
Christian Zeitnitz 5b9d4ca814 Add unconfigured client state to dashboard.php
Add tun device as client_udev_prototypes.json
2021-03-27 17:43:15 +01:00
billz 43043d48e4 Processed with phpcbf 2021-03-27 14:38:03 +00:00
billz 1485d4509e Set repo with --insiders option 2021-03-27 13:11:44 +00:00
billz 4f168dca46 Set repo with --insiders option 2021-03-27 13:10:33 +00:00
Christian Zeitnitz 72ae09461d Fix form 2021-03-27 11:22:26 +01:00
Christian Zeitnitz 720e6c3e77 Add certificate option to openvpn GUI
add JS code to display options and selected ovpn file
2021-03-27 10:29:09 +01:00
billz 0c056b3833 Update w/ api.raspap.com 2021-03-21 17:32:51 +00:00
billz b2b19cd159 Update w/ api.raspap.com 2021-03-21 17:32:37 +00:00
zbchristian e16844294b
Merge branch 'master' into feature/zbchristian-clients 2021-03-21 18:00:40 +01:00
billz 1b47fcf2a9 Update it_IT locale, thx Ioma Taani 2021-03-20 14:58:06 +00:00
billz 9d00d50313 Update it_IT locale, thx Ioma Taani 2021-03-20 14:57:20 +00:00
Bill Zimmerman fbe1688b2a
Update README.md 2021-03-20 10:33:51 +01:00
Bill Zimmerman bac9eaaeae
Update README.md 2021-03-20 10:31:05 +01:00
Christian Zeitnitz 68ec5f7db5 Fix name of internal wlan interface 2021-03-20 10:24:19 +01:00
Christian Zeitnitz ac16d67609 Handling of USB tethering (Android phone) improved 2021-03-18 18:20:52 +01:00
Bill Zimmerman 728a875eed
Delete CNAME 2021-03-18 14:50:34 +01:00
Bill Zimmerman 3c83dde059
Update README.md 2021-03-18 08:35:25 +01:00
Christian Zeitnitz 159e3674e5 cleanup common.sh
typo in wifi-qr-code.php corrected
2021-03-16 22:31:00 +01:00
Christian Zeitnitz fd487a9824 Fix line break to Unix 2021-03-16 22:04:40 +01:00
Christian Zeitnitz a34485225f Fix install_feature function 2021-03-16 21:50:44 +01:00
Christian Zeitnitz f15533d256 Add feature install option to common.sh
Add installers/install_feature_clients.sh
2021-03-16 21:45:26 +01:00
Christian Zeitnitz f77fb660bf Fix missing mobiledata.ini and some cleanup 2021-03-16 19:11:40 +01:00
Christian Zeitnitz 8bccf1d077 Add modal message when start/stop client interface is pressed 2021-03-15 18:07:14 +01:00
Bill Zimmerman b467e5b324
Update bug_report.md 2021-03-15 16:55:14 +01:00
Bill Zimmerman 04376dd3a1
Update bug_report.md 2021-03-15 16:52:30 +01:00
Bill Zimmerman af1fab30ed Update issue templates 2021-03-15 16:48:51 +01:00
Christian Zeitnitz 3b64697b4a Switch client on: wait for connection w/ timeout
add new switchClientState.sh to be used in hilink service (calls the php getClients code)
2021-03-15 14:03:34 +01:00
Christian Zeitnitz 11e2724afa Dashboard: show correct status after switching the client state
fix huawei hilink service (udev rule)
2021-03-15 13:29:16 +01:00
Bill Zimmerman 4bdd9e1065
Merge pull request #15 from RaspAP/feature/wg-download-client
Feature/wg download client
2021-03-15 12:35:14 +01:00
billz c7c8eacb0c Minor: remove debug output 2021-03-15 10:38:14 +00:00
billz 319f917071 Update w/ wg download msgs 2021-03-15 10:31:17 +00:00
billz a89140435b Update peer template w/ download button 2021-03-15 10:30:36 +00:00
billz 1c158eade7 Add handler for wg client.conf download 2021-03-15 10:12:18 +00:00
billz ee634c4b50 Initial commit: ajax fetch wg client.conf 2021-03-15 10:11:36 +00:00
billz 2b3d37a68a Fix for -t,--token option, thx @zbchristian 2021-03-14 19:27:13 +00:00
Christian Zeitnitz c87253a06b Fix SSID consisting of multiple words 2021-03-14 19:53:08 +01:00
billz 3a3f577a99 Fix for -t,--token option 2021-03-14 17:03:11 +00:00
Christian Zeitnitz 438ab94309 Fix access token option in raspbian.sh 2021-03-14 18:02:19 +01:00
Bill Zimmerman 3ab90f64b7
Update README.md 2021-03-12 15:55:43 +01:00
Christian Zeitnitz 2b4c9472e6 Replace switchClientState.sh by php function in get_clients.php
Cleanup display of client on dashboard
2021-03-12 12:20:34 +01:00
Bill Zimmerman 3e5ac1e267
Update README.md 2021-03-11 13:00:59 +01:00
Bill Zimmerman 18bcc3032a
Update README.md 2021-03-11 11:32:48 +01:00
Christian Zeitnitz 76e2eecaec Correct internet device GUI and udev config 2021-03-10 23:45:04 +01:00
billz b6e308351f Update get_release() 2021-03-10 06:37:12 +00:00
billz 4777da48e6 Update get_release() 2021-03-10 06:29:11 +00:00
billz f905434b0b Minor: comments + get_release() 2021-03-10 06:27:29 +00:00
Bill Zimmerman 860a5d21d8
Update README.md 2021-03-09 23:27:24 +01:00
billz 9a770329db Update release version 2021-03-09 17:54:30 +00:00
Bill Zimmerman 792a7d7e6a
Merge pull request #8 from RaspAP/feature/wireguard
Wireguard server install + peer config
2021-03-09 18:52:35 +01:00
billz 63267cd225 Update en_US locale 2021-03-09 15:41:03 +00:00
billz cb58e31089 Handle server/peer enable states 2021-03-09 15:35:48 +00:00
billz dd46f6d483 Update release version 2021-03-09 13:26:30 +00:00
Bill Zimmerman 679f764cba
Merge pull request #820 from RaspAP/bugfix/installer
Adds @zbchristian's token option, fix private repo handling
2021-03-09 14:15:12 +01:00
billz 113ffa2d80 Minor: comments + whitespace 2021-03-09 12:21:34 +00:00
billz 13997d57a9 Minor: cleanup + comments 2021-03-09 12:12:11 +00:00
billz 45965c4ae0 Add openvpnlog.sh 2021-03-09 11:43:22 +00:00
billz c62d99aab9 Adds @zbchristian's token option, fix private repo handling 2021-03-09 11:38:40 +00:00
Bill Zimmerman 6d9eaceef7
Merge branch 'master' into feature/wireguard 2021-03-09 12:11:21 +01:00
Bill Zimmerman 4208221d15
Merge pull request #10 from RaspAP/bugfix/installer
Adds @zbchristian's token option, fix private repo handling
2021-03-09 12:10:23 +01:00
billz 80c525c042 Minor: update comments 2021-03-09 10:58:15 +00:00
billz 76e87508bd Remove feature branch routines 2021-03-09 09:58:05 +00:00
billz 445b0af4b5 Add @zbchristian's token option, fix private repo handling 2021-03-09 09:51:15 +00:00
Christian Zeitnitz e8d0fab463 Fix the sidebar logo path 2021-03-08 16:44:20 +01:00
Christian Zeitnitz dd7873fd41 Allow installation from a private repository via access token 2021-03-08 14:35:17 +01:00
billz 03acf8f92c Minor: update timestamp 2021-03-08 08:59:38 +00:00
billz 50901948e0 Added wg strings to en_US locale 2021-03-08 08:44:17 +00:00
Bill Zimmerman 70989202d1
Update README.md 2021-03-08 09:10:05 +01:00
Bill Zimmerman 0f0c73de0f
Update BACKERS.md 2021-03-08 09:08:59 +01:00
Christian Zeitnitz b978a3d468 Add UDEV prototypes for network devices 2021-03-07 20:35:58 +01:00
billz 1e7438da23 Code cleanup, update Endpoint default value 2021-03-07 19:06:53 +00:00
Christian Zeitnitz d920f73943 Add client handling to installer 2021-03-07 18:48:53 +01:00
Christian Zeitnitz 8b0383dd20 Implement Client configuration
- add mobile date network devices and configuration
- add client configuration via udev
- add GUI under networking tab
- add scripts to handle mobile data devices
2021-03-07 18:36:48 +01:00
billz 7c1ef85bb8 Update wg-quick w/ systemd start/stop 2021-03-07 13:22:26 +00:00
billz 0b3307ce1f Add required fields for validation 2021-03-07 13:20:52 +00:00
billz 96bd34f07f Add event listener for Bootstrap form validation 2021-03-07 13:19:56 +00:00
billz 55e94adb2b Add PHP_EOLs to parsed client.conf 2021-03-07 10:39:33 +00:00
billz 3ac70a3a3c Move qr_encode() to inc/functions 2021-03-07 10:28:14 +00:00
billz cbab3f2825 Update peer input handling, write wg configs 2021-03-07 10:27:08 +00:00
billz ddc8c42746 Update peer template w/ additional fields 2021-03-07 10:25:21 +00:00
billz 4a50687e79 Add wg peer default values 2021-03-07 10:24:34 +00:00
Bill Zimmerman 6d635a96d5
Update README.md 2021-03-06 08:44:52 +01:00
Bill Zimmerman 5d13d75ce7
Update README.md 2021-03-05 20:30:47 +01:00
Bill Zimmerman c10d13c45e
Update README.md 2021-03-05 20:30:03 +01:00
billz 406ff39ef8 Update release version 2021-03-05 19:24:18 +00:00
billz 333d447c6b Add defaults for wg server PostUp/Down 2021-03-05 08:32:00 +00:00
billz 18729edd1e Update wg endpoint default value 2021-03-04 23:54:21 +00:00
billz 0e89de2066 Remove private keys from payload 2021-03-04 23:50:16 +00:00
billz 4515ac95fb Improved private key handling (security) 2021-03-04 23:44:45 +00:00
billz 6b002e3d4c Update wg placeholder values 2021-03-04 23:23:05 +00:00
billz 9beab1d2e7 Update server + peer hidden fields 2021-03-04 23:08:23 +00:00
billz 858edb065b Update sudoers wg-*.key 2021-03-04 23:07:04 +00:00
billz 0dbfb5c44f Create SaveWireGuardConfig() 2021-03-04 23:06:27 +00:00
billz 82779b286e Merge remote-tracking branch 'upstream/master' 2021-03-04 11:36:36 +00:00
Bill Zimmerman 11d867eccf
Merge pull request #813 from RaspAP/bugfix/routing
Routing custom install dir bugfix
2021-03-03 20:19:12 +01:00
billz 6b484d383c Progress commit: wg-qr-code 2021-03-02 23:15:47 +00:00
billz 74497bebf1 Update page routing with PATH_INFO 2021-03-02 17:27:40 +00:00
billz 33ac6d26cf Fix for #803 by @mp035 2021-03-02 14:37:50 +00:00
billz cd045a34b8 Reorder inputs, QR client.conf WIP 2021-03-02 14:18:32 +00:00
billz 0d2f02e3fb Update sudoers wireguard/*.conf 2021-03-02 14:17:13 +00:00
billz 9eadd28df1 Save client.conf 2021-03-02 14:16:43 +00:00
billz 3ec81ba085 Get/set pub+priv keys, create wg0.conf 2021-02-24 18:07:19 +00:00
billz 9bbf698b6a Reorder template fields 2021-02-24 18:06:18 +00:00
billz b7ed2960c1 Update wg-keygen for server + peer 2021-02-24 10:32:07 +00:00
billz 796ed558f7 Handle peer defaults 2021-02-24 09:12:31 +00:00
billz 1431d44b52 Added /bin/mv /tmp/wg-*.key 2021-02-24 08:48:56 +00:00
billz 6076e277c8 Disambiguate var names 2021-02-24 08:48:07 +00:00
billz c80ad85214 Update wireguard constants 2021-02-24 08:46:41 +00:00
billz ad6a14fa50 Added generateWgKey() 2021-02-24 08:45:53 +00:00
billz d871e271ef Initial commit: wgkey gen 2021-02-24 08:45:26 +00:00
billz 2c99f9857d Update page routing for wg_conf 2021-02-23 23:22:13 +00:00
billz 369f303926 Add _prompt_install_wireguard 2021-02-23 23:21:38 +00:00
billz cc1c8d594a Update w/ fallback default values 2021-02-23 23:21:02 +00:00
billz 1fddf4270b Add wg default values 2021-02-23 23:19:33 +00:00
billz 9c2cd82562 Merge branch 'feature/wireguard' of https://github.com/RaspAP/raspap-insiders into feature/wireguard 2021-02-23 20:17:38 +00:00
Bill Zimmerman f9c2bccc3a
Merge pull request #5 from RaspAP/feature/dhcp-ignore
Limit network access to static clients
2021-02-23 07:31:12 +01:00
billz d6570cbc41 Update install loader 2021-02-22 16:08:24 +00:00
billz 54b9d7ec5e Update release version 2021-02-22 12:02:12 +00:00
billz 109c4f84d5 Update features list 2021-02-22 09:49:24 +00:00
billz 1eec097b80 Bugfix: Parse dhcp-host entries 2021-02-22 09:47:25 +00:00
billz effed56169 Bugfix: update br0 dhcpcd sequence 2021-02-22 09:41:37 +00:00
billz f7a441566e Optimize template layout 2021-02-22 08:01:41 +00:00
billz f156fbceae Add tag set:known to dhcp-host 2021-02-22 08:00:50 +00:00
billz a33512953d Update en_US dhcp msgs 2021-02-21 23:53:58 +00:00
billz 9466e4fa70 Rework static leases tab 2021-02-21 23:53:14 +00:00
billz 16eace63e7 Add dhcp-ignore handling 2021-02-21 23:51:20 +00:00
billz 871d5353a5 Update br0 dhcpcd sequence, thx @lifros 2021-02-21 10:28:55 +00:00
billz 0bd82e7069 Merge branch 'master' of https://github.com/RaspAP/raspap-insiders 2021-02-18 07:04:20 +00:00
billz a6caea05f2 Night mode tweaks 2021-02-18 07:03:58 +00:00
Bill Zimmerman f7d6891457
Update README.md 2021-02-16 07:35:57 +01:00
billz c16d48d2fe Update DisplayThemeConfig() 2021-02-15 22:07:34 +00:00
billz 4378ff7add Implement night mode toggle in top navbar 2021-02-15 19:02:13 +00:00
billz faffbfea51 Update client settings tab 2021-02-12 19:02:58 +00:00
billz f456d64afb Update fr_FR locale, merci @yolateng0 2021-02-12 14:42:13 +00:00
Bill Zimmerman 334e6f0b50
Update README.md 2021-02-10 22:37:54 +01:00
billz e2a526ef81 Update release version 2021-02-10 17:13:34 +00:00
billz 677e06807a Update about template 2021-02-10 17:06:51 +00:00
billz 72515b0734 Update release version 2021-02-10 16:23:56 +00:00
billz deb071a269 Update BACKERS.md 2021-02-10 16:21:29 +00:00
billz 0f7ff60a81 Update about page 2021-02-10 16:20:43 +00:00
Bill Zimmerman 80f3c5c921
Update FUNDING.yml 2021-02-10 13:35:23 +01:00
Bill Zimmerman 031f91dfc0
Merge pull request #3 from RaspAP/feature/openvpn-cfgs
Multiple OpenVPN configs
2021-02-10 12:49:23 +01:00
billz 196e17bfd6 Update en_US locale 2021-02-10 11:29:34 +00:00
billz 76dc60ca41 Update logging template 2021-02-10 11:29:12 +00:00
billz 7798e710c1 Install openvpn logging script 2021-02-10 11:28:33 +00:00
billz 0ffe0ecd4b Persist log-openvpn option 2021-02-10 11:27:24 +00:00
Bill Zimmerman 78f115b181
Update README.md 2021-02-10 08:02:17 +01:00
billz 04edc3a185 Implement openvpn logging 2021-02-09 21:57:15 +00:00
billz b9a87df343 Update openvpn template 2021-02-08 07:32:40 +00:00
billz 76a997049b Revert "Update openvpn template"
This reverts commit 33e5f791c7.
2021-02-08 07:12:31 +00:00
billz 33e5f791c7 Update openvpn template 2021-02-08 07:09:50 +00:00
billz c073d18133 Cleanup + fadeOut deleted cfg 2021-02-07 18:51:21 +00:00
billz 361a37332a Update en_US locale + template 2021-02-07 15:24:45 +00:00
billz ee1da31da0 Code cleanup 2021-02-07 13:50:55 +00:00
billz dc1e4b4bc7 Swap profiles + restart openvpn-client 2021-02-07 13:04:04 +00:00
billz 6432efcf34 Progress commit: bootstrap modal event handlers 2021-02-07 11:59:16 +00:00
billz 12dd5d824b Progress commit: bootstrap modal event handlers 2021-02-07 11:59:02 +00:00
billz 56ca7ab281 Update w/ openvpn client cfg actions 2021-02-07 11:56:18 +00:00
billz f48e77da6c Update w/ file_move_config + permissions 2021-02-07 11:54:57 +00:00
billz ef09dd0f60 Add file utility functions 2021-02-07 11:53:57 +00:00
billz f1b1e96df3 Progress commit: templates/openvpn 2021-02-07 11:52:58 +00:00
billz 9bc9f2d3d7 Add ajax delete handler 2021-02-07 11:50:52 +00:00
billz dc03d9ea00 Prepend .ovpn filename to client + login 2021-02-06 11:03:30 +00:00
billz fd62520355 Create openvpn subtemplates 2021-02-06 08:18:27 +00:00
Bill Zimmerman 932166b3da
Update README.md 2021-02-05 20:09:34 +01:00
Bill Zimmerman 6e5d69affb
Update README.md 2021-02-05 15:27:31 +01:00
Bill Zimmerman 8ed6561c41
Update README.md 2021-02-05 11:43:00 +01:00
Bill Zimmerman c53dede0db
Update README.md 2021-02-05 11:34:04 +01:00
Bill Zimmerman e2be5dc17d
Update README.md 2021-02-05 11:17:30 +01:00
Bill Zimmerman fb6fdafc9e
Update README.md 2021-02-04 18:22:15 +01:00
Bill Zimmerman d86c323ca9
Merge pull request #1 from RaspAP/dependabot/npm_and_yarn/minimist-1.2.5
Bump minimist from 1.2.0 to 1.2.5
2021-02-04 11:43:15 +01:00
dependabot[bot] 0ca49ad645
Bump minimist from 1.2.0 to 1.2.5
Bumps [minimist](https://github.com/substack/minimist) from 1.2.0 to 1.2.5.
- [Release notes](https://github.com/substack/minimist/releases)
- [Commits](https://github.com/substack/minimist/compare/1.2.0...1.2.5)

Signed-off-by: dependabot[bot] <support@github.com>
2021-02-04 10:12:17 +00:00
Bill Zimmerman eb1ba5933f
Merge pull request #799 from RaspAP/feature/modal-wificlient
Add modal dialog to configure wifi client
2021-02-04 08:49:10 +01:00
Bill Zimmerman 7b85bbdafd
Update travis-ci badge 2021-02-03 17:47:10 +01:00
billz 16cd2d0c0f Update README 2021-02-03 11:09:10 +00:00
billz e3c00a8092 Update sponsor links 2021-02-03 09:18:44 +00:00
billz 8a4453b0f5 Migrate repo to organization 2021-02-03 09:07:15 +00:00
billz e5ce7b9fb2 Add modal dialog to configure client 2021-02-02 16:55:46 +00:00
billz b21ea0d28d Transfer template logic to includes, see #749 thx @mp035 2021-02-02 12:26:14 +00:00
billz 3d2d608477 Fix warning: check for RASPI_CACHE_PATH 2021-02-02 11:15:08 +00:00
billz bdafa8dfbd Wrap auth with getConfig(), thx @mp035 2021-02-02 10:03:09 +00:00
billz 5c4b84f826 Disambiguate iface overrides for ap-sta & bridged modes, thx @mp035 2021-02-02 07:36:28 +00:00
billz 5ec25e56d9 Bugfix: break on pageload event 2021-02-02 04:30:24 +00:00
billz 23de56b8e7 Reassociate client iface in AP-STA, thx @mp035 2021-02-02 04:28:19 +00:00
billz 3b0ce8aa3b Exclude config from routing 2021-02-02 04:22:13 +00:00
billz bbc676f55e Update link to RPi OS images 2021-02-01 20:12:54 +00:00
Bill Zimmerman d583c7bc00
Merge pull request #791 from billz/feature/mp-routing
Routing support
2021-02-01 09:23:02 +01:00
billz 96ed5072d8 Update ambiguous msg, unlink & remove lighttpd conf 2021-01-31 09:41:55 +00:00
Bill Zimmerman c09f6a6793
Update travis-ci badge 2021-01-31 07:44:36 +01:00
billz 7c14c2f5f0 Minor: fix typo 2021-01-31 06:23:54 +00:00
billz 6d3f5e9f37 Cleanup commented code 2021-01-30 16:59:36 +00:00
billz 9baa8de162 Resolve conflicts 2021-01-30 16:56:49 +00:00
Mark Pointing 6966bc7f3a Changed routing system to use the more common path approach instead of query strings. 2021-01-30 16:06:33 +00:00
Bill Zimmerman 557cd260e6
Update README.md
travis-ci badge
2021-01-28 13:22:39 +01:00
Bill Zimmerman 6b6496d9ff
Update README.md 2021-01-28 13:16:27 +01:00
billz bf8542b075 Update BACKERS.md 2021-01-28 10:49:58 +00:00
billz fd6d7f3a69 Update repo name 2021-01-28 08:29:44 +00:00
billz f06851c5f4 Update developers link 2021-01-28 08:29:22 +00:00
billz 27b41a8518 Rename repo 2021-01-28 08:24:52 +00:00
billz 62a5e42393 Update release version 2.6 2021-01-25 17:16:57 +00:00
billz 32099f9330 Update about template w/ docs link 2021-01-25 17:15:44 +00:00
billz f1c85c993e Move getHumanReadableDatasize() to functions 2021-01-21 11:54:10 +00:00
billz 79dd702d97 Update Italian translation, thx Luca Sasdelli 2021-01-21 10:45:15 +00:00
Bill Zimmerman 6954c1b3fd
Create codeql-analysis.yml 2021-01-21 10:01:00 +01:00
Bill Zimmerman cde6349a8c
Update bug_report.md 2021-01-19 10:52:24 +01:00
billz de8cbef220 Update README w/ links to docs.raspap.com 2021-01-19 09:03:15 +00:00
billz 0bbf03cc95 Set WifiManaged value from $_POST. Resolves #767 2021-01-17 10:41:12 +00:00
billz ba4e114c8a Update Danish translation, thx skipperskip 2021-01-13 08:23:26 +00:00
Bill Zimmerman ea3bbae872
Update bug_report.md 2021-01-10 09:19:47 +01:00
billz 1cd7811d7d Update BACKERS.md 2021-01-07 19:32:14 +00:00
billz a4636b2902 Bugfix: typo. Thx @mp035 2021-01-06 07:48:46 +00:00
billz d500ee2899 Update BACKERS.md 2021-01-03 17:02:19 +00:00
Bill Zimmerman 20a8b5e9d9
Update BACKERS.md 2020-12-28 10:18:00 +01:00
Bill Zimmerman 15e0b59054
Merge pull request #704 from billz/feature/dhcp-eth0
Feature: dhcp for eth0
2020-12-26 11:52:23 +01:00
billz 885891f6f5 Update README.md 2020-12-26 10:41:56 +00:00
billz c3bdc60c48 Update pre-release version 2.6-beta 2020-12-26 10:18:27 +00:00
billz 37ea945516 Normalize hostapd + dhcp log output, update en_US 2020-12-26 09:55:54 +00:00
billz cb10bf684c Update en_US messages, compile .mo files 2020-12-26 08:51:45 +00:00
billz 8e8ce320d4 Implement hostapd modal dialog 2020-12-24 20:52:18 +00:00
billz 31e3afa4a4 Create getDefaultNetOpts() 2020-12-24 12:29:52 +00:00
billz 22b173b4c5 Update dhcpcd.conf 2020-12-24 11:06:08 +00:00
billz ac2833bb7e Update BACKERS.md 2020-12-24 10:59:51 +00:00
billz 910122838d Handle dhcp log options w/ 090_raspap.conf 2020-12-24 10:20:52 +00:00
billz 3db9717b27 Bugfix: set AP-STA/bridged mode in hostapd.conf 2020-12-20 16:46:57 +00:00
billz b59776d2fe Merge branch 'master' of https://github.com/billz/raspap-webgui 2020-12-16 16:29:50 +00:00
billz d7f5ee36e8 Tidy install loader, usage notes readability + examples 2020-12-16 16:25:17 +00:00
billz 87e2d812a7 Tidy installer + common functions 2020-12-16 11:35:15 +00:00
billz fa8c6548a5 update get_release 2020-12-16 11:03:30 +00:00
billz 64ee7b4f3d Fix: Update raspap_latest to non-readonly 2020-12-16 10:47:45 +00:00
billz 237d561090 Define branch after get_release 2020-12-16 10:44:30 +00:00
billz 3771ef5b6a Minor: installer usage notes 2020-12-16 10:11:50 +00:00
billz bec2d22cf8 Tidy install loader, usage notes readability + examples 2020-12-16 10:01:11 +00:00
Bill Zimmerman f43083fec8
Merge branch 'master' into feature/dhcp-eth0 2020-12-15 23:01:23 +01:00
Bill Zimmerman 3ab19574f4 Set default config static dns + router 2020-12-15 17:33:02 +01:00
Bill Zimmerman bcd90f80d0 Merge branch 'feature/dhcp-eth0' of https://github.com/billz/raspap-webgui into feature/dhcp-eth0 2020-12-15 17:25:27 +01:00
Bill Zimmerman 4e00b81940
Merge pull request #734 from mp035/bugfix
Fixed function getWifiInterface for rpi0W in AP-STA mode.
2020-12-15 17:04:38 +01:00
billz 6e3d0d4515 Merge branch 'master' of https://github.com/billz/raspap-webgui 2020-12-15 15:05:28 +00:00
billz c608d22b6f Utility functions + param handling 2020-12-15 15:04:55 +00:00
Mark Pointing 12b69590da Removed some band-aid fixes of incorrect client/ap interface identification function. 2020-12-15 10:45:27 +00:00
Mark Pointing ed09f9b9da Cleaned up some debugging code identified when comparing PR. 2020-12-15 19:02:33 +10:00
Mark Pointing c5f692263d Fixed function getWifiInterface for rpi0W. The old version would get 'wifi_client_interface' and 'ap_interface' reversed when rpi0W is used in AP-STA mode. This commit fixes the issue. 2020-12-15 18:05:07 +10:00
billz 0ff2daf2d4 Update uninstall dnsmasq 2020-12-15 07:40:21 +00:00
billz 0cd278f040 Create 090_raspap.conf w/ dnsmasq log-facility 2020-12-12 19:29:43 +00:00
Bill Zimmerman fc3925148d Merge branch 'feature/dhcp-eth0' of https://github.com/billz/raspap-webgui into feature/dhcp-eth0 2020-12-12 18:27:46 +01:00
billz 04b0e8ac53 Set log-facility for dnsmasq 2020-12-12 16:53:58 +00:00
Bill Zimmerman 4333d505c4 Merge branch 'feature/dhcp-eth0' of https://github.com/billz/raspap-webgui into feature/dhcp-eth0 2020-12-12 17:48:47 +01:00
Bill Zimmerman 16f4c47f00
Merge branch 'master' into feature/dhcp-eth0 2020-12-12 17:41:41 +01:00
Bill Zimmerman 6b04789b89
Merge pull request #732 from billz/dependabot/npm_and_yarn/ini-1.3.8
Bump ini from 1.3.5 to 1.3.8
2020-12-11 23:34:21 +01:00
dependabot[bot] 9b2ea74a6f
Bump ini from 1.3.5 to 1.3.8
Bumps [ini](https://github.com/isaacs/ini) from 1.3.5 to 1.3.8.
- [Release notes](https://github.com/isaacs/ini/releases)
- [Commits](https://github.com/isaacs/ini/compare/v1.3.5...v1.3.8)

Signed-off-by: dependabot[bot] <support@github.com>
2020-12-11 22:29:22 +00:00
billz 1f318f0137 Remove default_hostapd (deprecated) 2020-12-09 17:16:25 +00:00
Bill Zimmerman 3a7ac95ffe
Update bug_report.md 2020-12-09 10:01:45 +01:00
Bill Zimmerman 3cd5de59fe
Update bug_report.md 2020-12-09 09:57:58 +01:00
Bill Zimmerman b5e49a9477 Merge branch 'feature/dhcp-eth0' of https://github.com/billz/raspap-webgui into feature/dhcp-eth0 2020-12-08 09:44:31 +01:00
billz c0e5625ae1 Update release verison 2.5.2 2020-12-07 12:45:19 +00:00
billz da0e714f86 Openvpn template layout, relative img paths. Closes #716 2020-12-07 11:37:57 +00:00
billz 3b1c9b23c5 Update installer w/ -c advice.detachedHead=false 2020-12-07 09:55:01 +00:00
billz 6aaa1bd7a4 Set default install branch to latest release 2020-12-07 09:47:04 +00:00
billz 5eae4bd086 Handle default subnet mask values 2020-12-06 17:31:03 +00:00
Bill Zimmerman 927fed257c Merge branch 'feature/dhcp-eth0' of https://github.com/billz/raspap-webgui into feature/dhcp-eth0 2020-12-06 17:19:49 +01:00
billz e8219c70ec Check if raspapd.service file exists 2020-12-06 09:11:43 +00:00
billz b832954f05 Check if 090_wlan0.conf exists 2020-12-06 09:08:11 +00:00
billz 4bb2597bff Fix: pass required param 2020-12-06 09:04:40 +00:00
billz 3c4cdefc56 Minor: wrap msg w/ div 2020-12-06 08:27:18 +00:00
billz 24e4bc8705 Apply defaults.json + set ownership 2020-12-05 22:21:39 +00:00
billz a56a59b7e5 Default config tweaks 2020-12-05 21:49:32 +00:00
billz 3f4901495a Add stop services to uninstaller 2020-12-05 14:30:11 +00:00
billz d35397f09e Remove hardcoded default values, implement defaults.json 2020-12-05 09:14:07 +00:00
billz 9f85daaa86 Added getDefaultNetValue() 2020-12-05 09:12:47 +00:00
billz e77b0fead1 Minor: camelCase + docblocks 2020-12-04 22:44:27 +00:00
billz e3f36158bb Added updateHostapdConfig() 2020-12-04 22:36:54 +00:00
billz bcab63bb30 Bugfix + documentation 2020-12-04 21:41:10 +00:00
billz de787c424a Create functions from procedural code 2020-12-04 14:40:54 +00:00
billz f32d7c8778 Update installer w/ 090_wlan0.conf 2020-12-03 20:26:17 +00:00
billz 6044d3d6ae Replace dnsmasq.conf (deprecated) w/ 090_wlan0.conf 2020-12-03 10:31:50 +00:00
billz 1c6d837a80 Bugfix: handle subnetmask null value 2020-12-03 10:29:11 +00:00
Bill Zimmerman eb7c50be26
Log installer output, addresses #721 2020-12-02 22:43:36 +01:00
billz 8420bbb0da Read/apply dhcp settings from json 2020-12-01 22:52:15 +00:00
billz 15fb1b714c Minor: cleanup 2020-12-01 22:51:00 +00:00
billz 160c47defe Create network.json + RASPI_CONFIG_NETWORK 2020-12-01 19:48:59 +00:00
billz b09d61619a Bugfix: typo 2020-12-01 18:39:23 +00:00
billz 66bd5d5927 Added getNetConfig() 2020-12-01 18:38:57 +00:00
Bill Zimmerman 99918c30e0 Merge branch 'feature/dhcp-eth0' of https://github.com/billz/raspap-webgui into feature/dhcp-eth0 2020-12-01 09:13:10 +01:00
billz a21009e049 Remove networking dhcp config (deprecated) 2020-11-30 17:33:17 +00:00
billz 495f33eaa3 Added subnet mask display/edit 2020-11-30 12:10:44 +00:00
billz 5b1325803a Added cidr2mask() 2020-11-30 12:09:56 +00:00
billz 5cc7794cb0 Update fallback static profile, subnet mask 2020-11-30 12:09:22 +00:00
billz 2ff8f6f179 Bugfix: add/update/delete config 2020-11-27 16:28:37 +00:00
billz f8bc24ce6f Template fixes 2020-11-27 16:26:25 +00:00
billz 57174245ad Updated w/ set toggle states 2020-11-27 16:25:46 +00:00
billz 5045cbfd33 Fixup dhcp cfg save/update 2020-11-26 17:20:12 +00:00
billz 827f37385f Decouple default settings from wlan0 cfg 2020-11-26 17:18:04 +00:00
billz 6d331c3ebd Add static IP fields, fallback, toggle state 2020-11-26 17:16:54 +00:00
billz d3e842f6db Update ajax w/ dhcpcd settings 2020-11-26 17:15:42 +00:00
Bill Zimmerman 7925513367 Merge branch 'feature/dhcp-eth0' of https://github.com/billz/raspap-webgui into feature/dhcp-eth0 2020-11-21 16:54:11 +01:00
billz b63a53e182 Set default dhcp interface on page load 2020-11-21 13:52:20 +00:00
Bill Zimmerman 297246aea0 Merge branch 'feature/dhcp-eth0' of https://github.com/billz/raspap-webgui into feature/dhcp-eth0 2020-11-20 23:27:41 +01:00
billz 73deab78cf Update uninstall: remove adblock (optional) 2020-11-20 22:06:51 +00:00
billz 687c16810e Update default dhcpcd config 2020-11-20 13:35:52 +00:00
Bill Zimmerman cf092566e3 Merge branch 'feature/dhcp-eth0' of https://github.com/billz/raspap-webgui into feature/dhcp-eth0 2020-11-20 10:30:05 +01:00
billz b13f57283e Update raspap_dnsmasq uninstall 2020-11-20 08:41:42 +00:00
billz a0a8ff0734 Cleanup: procedural code into functions 2020-11-20 07:35:36 +00:00
billz eca6c5ae2f Bugfix: set preg_replace limit 2020-11-20 07:32:52 +00:00
Bill Zimmerman 047e0cecc3 Merge branch 'feature/dhcp-eth0' of https://github.com/billz/raspap-webgui into feature/dhcp-eth0 2020-11-19 13:54:14 +01:00
billz 276720ab57 Add new en_US msgstrs for dhcp 2020-11-19 12:36:31 +00:00
billz d72661455e Minor: spacing 2020-11-19 12:36:02 +00:00
billz 3c7eab702c enable log-facility + conf-dir on default iface 2020-11-19 12:35:38 +00:00
billz fc4c8867f4 Update constant, saf merge dhcp config 2020-11-19 12:34:55 +00:00
billz 70efa660e0 Remove RASPI_DNSMASQ_CONFIG (deprecated) 2020-11-19 12:32:38 +00:00
billz 04590dc889 Load default iface on page load 2020-11-19 12:31:48 +00:00
Bill Zimmerman 8f84217ccf Merge branch 'feature/dhcp-eth0' of https://github.com/billz/raspap-webgui into feature/dhcp-eth0 2020-11-17 18:09:30 +01:00
billz ebbd6f4399 Refactor, create SaveDHCPConfig() 2020-11-17 11:21:04 +00:00
billz b6b50288bb Deprecate 090_raspap.conf, default to 090_wlan0 2020-11-17 11:19:17 +00:00
billz e4856484d9 Add advanced fields to JSON response 2020-11-17 11:18:10 +00:00
Bill Zimmerman 01aedfbcf7 Merge branch 'feature/dhcp-eth0' of https://github.com/billz/raspap-webgui into feature/dhcp-eth0 2020-11-17 10:15:14 +01:00
Bill Zimmerman 30ed6b9026
Update BACKERS.md 2020-11-17 10:11:53 +01:00
billz 209d741363 Remove parse DHCP, moved to AJAX handler 2020-11-16 18:21:31 +00:00
billz 0f8e7b88b7 Add IDs to form elements for ajax 2020-11-16 18:20:39 +00:00
billz e0235d640a Added loadInterfaceDHCPSelect() 2020-11-16 18:19:40 +00:00
billz 3b5c7805cb Initial commit: AJAX get_netcfg 2020-11-16 18:18:51 +00:00
Bill Zimmerman 974c93254e
Merge pull request #713 from furkan-gnu/turkish-translation
Translated to Turkish
2020-11-15 12:20:05 +01:00
billz daa6b877e6 Enable DHCP option for all interfaces 2020-11-15 10:55:33 +00:00
billz d440dd805c Update sudoers /etc/dnsmasq.d/ 2020-11-15 10:55:01 +00:00
billz 17da7cfcab Move enable DHCP option to general tab 2020-11-15 10:51:51 +00:00
billz e54e8b5bc0 Update const RASPI_DNSMASQ_PREFIX 2020-11-15 10:51:09 +00:00
furkan-gnu 93d28e0fe7 Translated to Turkish 2020-11-13 15:34:42 +03:00
billz ed2c4cb3ef Update de_DE & nl_NL locales, thx Mark Holtkamp 2020-11-12 09:29:42 +00:00
billz e5f1d4ed0e Safe write dhcpcd.conf, validate static IP, handle revert cfg 2020-11-11 12:40:22 +00:00
billz 6d14cbaee5 Handle dhcp for eth0, udpdate dhcpcd + dnsmasq.conf 2020-11-09 17:48:32 +00:00
billz 0049518769 Minor: update label 2020-11-09 17:46:55 +00:00
billz 3e101e4c55 Add /bin/rm 090_eth0.conf to sudoers 2020-11-09 17:46:19 +00:00
billz ab05bf15c7 Use dchp_eth0 to set toggle state 2020-11-06 09:05:43 +00:00
billz a20877c377 Add RASPI_DNSMASQ_ETH0 to default config 2020-11-06 09:04:22 +00:00
billz 06af0795f6 Add /bin/cp for 090_eth0.conf to sudoers 2020-11-06 09:01:33 +00:00
billz 6ca12a184b Add DHCP for eth0 option to advanced tab 2020-11-04 01:05:35 +00:00
billz 64736d64cc Closes #701 2020-11-02 08:23:55 +00:00
Bill Zimmerman 8788e73345 Merge branch 'master' of https://github.com/billz/raspap-webgui 2020-10-25 10:55:12 +01:00
billz 2c60b34084 Added RASPI_5GHZ_MAX_CHANNEL to defaults 2020-10-25 08:00:17 +00:00
billz b095073043 Validate channel w/ RASPI_5GHZ_MAX_CHANNEL, addresses #450 2020-10-25 07:48:41 +00:00
billz 8686406ef1 Added RASPI_5GHZ_MAX_CHANNEL 2020-10-25 07:47:47 +00:00
billz 06c8a2edcd Install raspberrypi-kernel-headers (raspbian only) 2020-10-15 16:08:23 +01:00
billz 09f65e0252 Merge branch 'feature/wireguard' of https://github.com/billz/raspap-webgui into feature/wireguard 2020-10-15 10:46:07 +01:00
Bill Zimmerman 0ba767c387 Merge branch 'master' into feature/wireguard 2020-10-15 11:40:45 +02:00
billz 39dcb5060d Resolves #690 2020-10-14 11:40:02 +01:00
billz abbd364e7e Update BACKERS.md 2020-10-06 11:23:44 +01:00
Bill Zimmerman ac421dd9b4
Merge pull request #687 from billz/feature/metrics
Exposes metric value in network interfaces
2020-10-02 20:47:38 +02:00
billz 466616e420 Add label to en_US locale 2020-10-02 14:24:16 +01:00
billz 602c2a2a7f Return iface name in absence of cfgFile 2020-10-02 09:27:35 +01:00
billz fa2f3d5cdd Merge branch 'master' into feature/metrics 2020-10-02 08:30:26 +01:00
billz deaf393a2f Expose metric for network interfaces 2020-10-01 23:06:47 +01:00
billz 31b01e7704 Update Polish translation, thx Patryk Kubiak 2020-10-01 10:48:22 +01:00
billz a301d6bfd0 Update list of supported languages 2020-10-01 07:59:28 +01:00
billz cbee0996b8 Added Polish language support, thx Patryk Kubiak 2020-10-01 07:54:40 +01:00
Bill Zimmerman eb3f2343b3 Merge branch 'master' of https://github.com/billz/raspap-webgui 2020-10-01 08:42:35 +02:00
billz 4fc16555cb Compile .mo translations 2020-09-28 16:50:07 +01:00
Bill Zimmerman 819b85e526
Merge pull request #684 from yolateng0/patch-3
Update messages.po
2020-09-28 17:47:25 +02:00
Yo 724b781f59
change descritpion
memory ram and Temperature CPU in french more explicit
2020-09-28 17:39:08 +02:00
Yo 9504594e87
Update messages.po
sorry I didn't use
file to keep track of changes .
Errors not visible on Crowdin
2020-09-28 15:51:38 +02:00
Bill Zimmerman ecbb7f3966 Merge branch 'master' of https://github.com/billz/raspap-webgui 2020-09-26 12:32:06 +02:00
Bill Zimmerman dd772a7bdf
Update README.md 2020-09-26 12:31:21 +02:00
billz 65381ecdbb Prettify php 2020-09-24 08:55:06 +01:00
billz 88600f05de Indicate wireless client iface in UI, thx @RobertDuncan42 2020-09-23 23:12:24 +01:00
billz 7335de7968 Cleanup debug output 2020-09-23 21:14:55 +01:00
Bill Zimmerman 840f89247a Merge branch 'master' of https://github.com/billz/raspap-webgui 2020-09-23 21:50:15 +02:00
billz 054c53831a Wifi client layout fix. Resolves #680 2020-09-23 19:45:21 +01:00
billz 31edb21a76 Fix merge error 2020-09-23 09:10:44 +01:00
Bill Zimmerman f6e9faed05 Merge branch 'master' of https://github.com/billz/raspap-webgui 2020-09-22 21:52:36 +02:00
Bill Zimmerman a7f9afdd7a
Merge pull request #675 from RobertDuncan42/Blanks-in-SSID-fix
Update dashboard.php
2020-09-22 21:10:00 +02:00
billz f8b5f8fdfc Merge branch 'master' into feature/wireguard 2020-09-22 18:23:36 +01:00
Robert Duncan 2108d5b79f
Update dashboard.php 2020-09-22 11:25:24 -04:00
Bill Zimmerman 53b503bcfa
Merge pull request #673 from darcyrush/darcyrush_readme
Update README Adblock wiki link
2020-09-20 13:02:03 +02:00
Bill Zimmerman 893bca55e7
Merge pull request #671 from billz/adblock-custom
Support for Adblock custom blocklists
2020-09-20 12:59:58 +02:00
DArcy Rush d437eac1df Update README Adblock wiki link 2020-09-20 11:13:02 +02:00
billz 3c5737224e Check for empty strings 2020-09-20 09:42:13 +01:00
billz 9b02fc5b27 Remove debug output 2020-09-20 07:38:21 +01:00
billz 24eb3afc59 Merge branch 'master' into feature/wireguard 2020-09-19 22:51:15 +01:00
billz 5a62436d84 Update en_US messages, compile .mo 2020-09-19 22:50:33 +01:00
billz 656e5d83ad Template updates for custom blocklists 2020-09-19 22:27:32 +01:00
billz 3644109cec Validate/handle custom hosts input 2020-09-19 22:26:52 +01:00
billz b533b7ab98 Update cp dnsmasq_custom 2020-09-19 22:24:58 +01:00
billz 5189853c19 Added validate_host() 2020-09-19 22:24:15 +01:00
Bill Zimmerman 199f83777b
Merge pull request #668 from billz/hostapd-opts
Add beacon_int & disassoc_low_ack options to hostapd
2020-09-12 18:34:45 +02:00
billz 18e21ad3e7 Added disassoc_low_ack help text 2020-09-12 13:02:37 +01:00
billz b898230823 Update messages + compile .po 2020-09-11 20:33:18 +01:00
billz 4b1c5b802c Implement beacon_int + disassoc_low_ack hostapd options. Addresses #666😈 2020-09-11 19:03:14 +01:00
Bill Zimmerman 23bf46ea02
Update BACKERS.md 2020-09-10 19:41:36 +02:00
Bill Zimmerman 3e626eaffc Merge branch 'master' of https://github.com/billz/raspap-webgui 2020-09-05 20:31:42 +02:00
Bill Zimmerman 9b17d9a093
Merge pull request #663 from zbchristian/master
Update to list of default routes
2020-09-05 20:30:58 +02:00
billz 7286173438 Add rudimentary logging 2020-09-05 19:27:38 +01:00
Bill Zimmerman 42d1297557
Merge pull request #665 from billz/dependabot/npm_and_yarn/node-sass-4.14.1
Bump node-sass from 4.12.0 to 4.14.1
2020-09-04 22:44:32 +02:00
dependabot[bot] 3395daaab0
Bump node-sass from 4.12.0 to 4.14.1
Bumps [node-sass](https://github.com/sass/node-sass) from 4.12.0 to 4.14.1.
- [Release notes](https://github.com/sass/node-sass/releases)
- [Changelog](https://github.com/sass/node-sass/blob/master/CHANGELOG.md)
- [Commits](https://github.com/sass/node-sass/compare/v4.12.0...v4.14.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-09-04 19:26:49 +00:00
zbchristian 46946ecebc
Update to list of default routes
Add the default route entries, which are done via a "scope link" to a network device.
2020-09-03 08:46:57 +02:00
billz af0721e021 Save wg config, template fixes 2020-08-28 23:42:55 +01:00
billz 34b5b4c1b2 Add validateCidr() 2020-08-28 23:40:46 +01:00
Bill Zimmerman ead3eda2c3 Merge branch 'master' of https://github.com/billz/raspap-webgui 2020-08-28 18:56:16 +02:00
billz 4f7784215d Merge branch 'master' into feature/wireguard 2020-08-27 23:20:32 +01:00
billz 04d8433d1c Update release version 2020-08-27 15:15:54 +01:00
billz aff035122b Validate, save & display wg config 2020-08-26 23:54:49 +01:00
billz 22651a86b7 Simplify wg config handling 2020-08-25 22:11:57 +01:00
billz 543791f723 WIP: handle input 2020-08-25 22:11:27 +01:00
billz dccfb991b1 Build out peer template 2020-08-25 22:10:50 +01:00
billz 0a21695ff2 Add cp /tmp/wgdata to sudoers 2020-08-25 22:08:47 +01:00
billz dd5ab7bdc2 Remove webconsole, fixes RCE via json-rpc. Thanks @lb0x 2020-08-22 23:23:06 +01:00
billz 5be1ad5844 Merge billz/raspap-webgui master 2020-08-22 14:43:26 +01:00
billz 44e9ae75ae Remove webconsole, fixes RCE via json-rpc. Thanks @lunchb0x 2020-08-22 11:41:33 +01:00
billz 267f31785a Semantic version, update license 2020-08-22 11:37:31 +01:00
billz 447dfcfc4e Bump version, add publishConfig 2020-08-17 17:22:04 +01:00
billz 396ea23458 Update Italian translation 2020-08-17 15:43:11 +01:00
Bill Zimmerman 617f2232cc
Update w/ crowdin badge 2020-08-12 16:28:18 +02:00
billz c5a747463b Formatting 2020-08-12 07:29:51 +01:00
Bill Zimmerman 7bf29ca6c4
Update BACKERS.md 2020-08-12 08:27:29 +02:00
Bill Zimmerman b2b3d58afd
Merge pull request #648 from billz/feature/bind-addr
Feature: Add server.bind address option to System UI
2020-08-06 09:44:52 +02:00
billz cfd26ae2bd Add newline 2020-08-06 08:34:14 +01:00
billz 83ff3198aa Modify return message 2020-08-05 23:07:55 +01:00
billz 08011100cd Add/update save server.bind option 2020-08-05 18:58:29 +01:00
billz b0ebd7bf00 Add validate serverBind, save settings 2020-08-05 18:57:42 +01:00
billz dd978e9f86 Update docblock 2020-07-29 17:12:04 +01:00
billz eeccb19b35 WIP: enable bind-addr control 2020-07-29 15:52:31 +01:00
billz 04f62b9f0d Templatize system 2020-07-29 08:37:27 +01:00
billz b69d7f28a3 Create system subtemplates 2020-07-29 08:35:57 +01:00
billz 5c2b42b7fe Update fr_FR locale 2020-07-24 19:12:43 +01:00
billz 5c592ccadc Bugfix. Resolves #638 2020-07-21 22:42:39 +01:00
Bill Zimmerman 08cb4742d2
Merge pull request #637 from billz/dependabot/npm_and_yarn/lodash-4.17.19
Bump lodash from 4.17.15 to 4.17.19
2020-07-20 10:19:08 +02:00
dependabot[bot] 090cd57c20
Bump lodash from 4.17.15 to 4.17.19
Bumps [lodash](https://github.com/lodash/lodash) from 4.17.15 to 4.17.19.
- [Release notes](https://github.com/lodash/lodash/releases)
- [Commits](https://github.com/lodash/lodash/compare/4.17.15...4.17.19)

Signed-off-by: dependabot[bot] <support@github.com>
2020-07-18 11:46:36 +00:00
billz fee8717e4d Get version from defaults.php 2020-07-17 16:21:35 +01:00
Bill Zimmerman 2df8f4fdce
Update PayPal donors 2020-07-17 17:18:44 +02:00
billz 4e82f3bdb3 Apply defaults during upgrade. Resolves #629 2020-07-14 08:15:27 +01:00
billz ec94706b32 Standardize labels 2020-07-11 09:04:28 +01:00
billz e0e1f2f378 Standardize labels 2020-07-11 09:04:07 +01:00
billz 7d8fc65ef0 Block direct file access 2020-07-11 09:03:23 +01:00
billz 3d901ae5f9 Set country_code from iw reg if undefined 2020-07-10 18:28:28 +01:00
billz 695cdd2d35 Revert file access check 2020-07-10 15:39:36 +01:00
billz 7af8b302e9 Prevent direct file access. Resolves #622 2020-07-10 14:46:55 +01:00
billz bf2fda1bc4 Templatize hostapd 2020-07-10 12:36:29 +01:00
billz 3ce4e51d63 Update 5GHz countries, thx @roelfrenkema 2020-07-04 19:12:46 +01:00
billz b02660d5ff Update release version 2020-07-03 12:43:47 +01:00
Bill Zimmerman da4387359e
Merge pull request #624 from billz/feature/colorpicker
Customize default theme color
2020-07-01 19:27:53 +02:00
billz 578bb9d9f4 Tweak column grid 2020-07-01 17:46:07 +01:00
billz c8ec7565ad Update w/ dynamic svg logo 2020-07-01 13:50:36 +01:00
billz 520b706ef3 Delete obsolete file 2020-07-01 10:36:32 +01:00
billz 434021a9a1 Remove console.log 2020-07-01 10:34:40 +01:00
billz 7fcfacaeae Update w/ getColorOpt() 2020-07-01 10:32:31 +01:00
billz ed7ed04475 Create RASPI_BRAND_TEXT 2020-07-01 09:13:38 +01:00
billz 7b92f56cda Dynamic svg logo 2020-06-30 23:38:32 +01:00
billz 4b77a0b144 Renamed svg > php 2020-06-30 23:38:02 +01:00
billz 7c939fdeaf Update messages 2020-06-30 23:37:43 +01:00
billz a77bb2720d Dynamic sidebar logo 2020-06-30 23:37:08 +01:00
billz 29be22a8d3 Create dashboard functions 2020-06-30 23:35:46 +01:00
billz 2916bd1998 Dynamic theme color support 2020-06-30 16:54:30 +01:00
billz 9fef770143 Create getThemeOpt 2020-06-30 16:53:52 +01:00
billz 2a1f531ffa Cleanup 2020-06-30 16:52:18 +01:00
billz 3603e099fe Update extraFooterScripts 2020-06-30 16:50:21 +01:00
billz 77d59c9788 Initial commit 2020-06-30 16:46:51 +01:00
billz 4eb3d6b24c Convert to dynamic css 2020-06-30 16:46:04 +01:00
billz 8132296d4c Update dependencies 2020-06-30 00:29:27 +01:00
billz 445ffd8e9f Replace CDN links w/ dist 2020-06-30 00:28:39 +01:00
billz 4af08391fa Update files from gulp build 2020-06-30 00:27:54 +01:00
billz 480319a3f4 Update gulp build 2020-06-30 00:20:12 +01:00
billz 665c40d0d4 Update w/ huebee CDN 2020-06-30 00:19:47 +01:00
billz 624862480d Add huebee color-input 2020-06-30 00:14:46 +01:00
billz 159d539f59 Style fontawesome glyphs 2020-06-29 16:07:38 +01:00
billz cfbfff00a9 Update w/ fontawesome glyphs 2020-06-29 14:13:06 +01:00
Bill Zimmerman 51a71808d3
Merge pull request #620 from zbchristian/master
Add internet connectivity information to network UI
2020-06-29 15:04:40 +02:00
zbchristian fc4e234b45
Merge pull request #1 from billz/zbchristian-master
Code style fixes + locale update
2020-06-29 14:09:59 +02:00
zbchristian 42032e0df0
Typo corrected 2020-06-29 13:36:38 +02:00
zbchristian 33a099de61
Define displayed text for internet access 2020-06-29 13:16:55 +02:00
zbchristian 4623060f08
Simplify and cleanup handling of return values of system calls
Handling of return values done in a single line.
Determine only, if access is possible not not (true, false). The actual displayed text has to be determined, when displaying the result of the access check.
2020-06-29 13:12:29 +02:00
billz d878cbf356 Processed with phpcbf 2020-06-28 17:12:42 +01:00
billz 36141d1e9c Update defaults w/ new constants 2020-06-28 17:08:29 +01:00
billz 9afb773ab3 Minor: remove newline 2020-06-28 17:07:38 +01:00
billz 8647673d9a Move + rename constants 2020-06-28 17:02:07 +01:00
billz c4e2faa25a Update networking msg 2020-06-28 17:01:32 +01:00
billz e5f2c218e1 Processed with phpcbf, removed tabs 2020-06-28 16:58:42 +01:00
billz 6ed35a1aba Merge branch 'master' of https://github.com/zbchristian/raspap-webgui into zbchristian-master 2020-06-28 16:08:23 +01:00
Bill Zimmerman 1ef2f10b8a
Merge pull request #619 from billz/feature/upgrade
Adds upgrade option to installer
2020-06-26 17:47:04 +02:00
zbchristian 90e5f50da6
reset input vars to exec before call 2020-06-25 17:18:23 +02:00
zbchristian 5a311d24ec
Remove duplicated title 2020-06-25 16:56:53 +02:00
zbchristian dc790b246b
fix failed copy/paste lines 2020-06-25 16:55:25 +02:00
zbchristian 365bb3fa25
Add internet connectivity information 2020-06-25 16:00:41 +02:00
zbchristian 850f52e128
Create internetRoute.php 2020-06-25 15:54:56 +02:00
billz 199065e93f Update installer with upgrade option. Resolves #617 2020-06-24 23:36:19 +01:00
Bill Zimmerman d95113eaaf
Merge pull request #582 from billz/zbchristian-wlan-switch
Enable switching of AP interface
2020-06-16 23:15:17 +02:00
Bill Zimmerman b7fd77bcf8
Update README.md 2020-06-16 22:04:32 +02:00
Bill Zimmerman bff66c0b7e
Update README.md 2020-06-15 23:46:26 +02:00
billz e1bb73a76d Update service-status to indicate AP interface 2020-06-15 09:35:44 +01:00
Bill Zimmerman a05b0bf1e3
Merge pull request #616 from zbchristian/zbchristian-wlan-switch
Correct session variable setting and client on dashboard
2020-06-15 10:31:15 +02:00
zbchristian e6652c025d
Remove check on existing SESSION variable 2020-06-14 18:22:51 +02:00
zbchristian a8238d688e
select correct wifi interface as client 2020-06-14 18:19:34 +02:00
zbchristian 417e9489bb
disable check on existing session variable 2020-06-14 17:40:50 +02:00
Bill Zimmerman 815a7806a3
Merge pull request #614 from echaritos/patch-1
Update README.md
2020-06-13 13:45:22 +02:00
echaritos 88d91b6063
Update README.md
corrected typos
2020-06-13 10:57:38 +02:00
billz b9ba2946a5 Fix: display AP interface stats 2020-06-10 09:09:10 +01:00
Bill Zimmerman 9faa98dd51
Merge pull request #609 from zbchristian/zbchristian-wlan-switch
add session variable for wifi client interface
2020-06-09 21:17:31 +02:00
christian Zeitnitz 656ba9234b Fix intial assignment of $_SESSION['ap_interface'] 2020-06-09 20:53:11 +02:00
christian Zeitnitz f8a094134b Add Session variable "wifi_client_interface" 2020-06-09 20:25:19 +02:00
billz 1a85237d15 Rename var for clarity 2020-06-09 17:01:58 +01:00
billz 9d1659b97b Document getWifiInterface 2020-06-09 15:44:21 +01:00
billz 8ae1e5a8f2 Rename constant for clarity 2020-06-09 15:34:19 +01:00
billz 2ca9bf5b6f Rename ambiguous variable for clarity 2020-06-09 15:32:49 +01:00
billz e9470aaf7f Get 1st wireless iface, fixes client dashboard widget 2020-06-09 13:09:58 +01:00
Bill Zimmerman 7d06bece80
Merge pull request #608 from zbchristian/zbchristian-wlan-switch
Check for second wifi interface as wifi client
2020-06-09 12:36:29 +02:00
zbchristian 633f389f4e
Check for second wifi interface as wifi client 2020-06-09 10:15:21 +02:00
billz 2814ab5d55 Bugfix: typo 2020-06-08 09:16:10 +01:00
billz 43819ddfd2 Fix require path 2020-06-07 19:12:00 +01:00
billz 9fb59918cf Fix: Update session var when saving cfg 2020-06-07 18:46:14 +01:00
billz e2c82168fb Add includes/config 2020-06-07 17:25:11 +01:00
billz 9c2ae296d3 Merge branch 'zbchristian-wlan-switch' of https://github.com/billz/raspap-webgui into zbchristian-wlan-switch 2020-06-07 17:20:09 +01:00
billz a6a92235f9 Add include wifi_functions getWifiInterface() 2020-06-07 17:17:16 +01:00
billz a1940ae8f2 Update w/ session var, fix indents 2020-06-07 17:15:13 +01:00
billz e3c378427b Added getWifiInterface 2020-06-07 17:13:43 +01:00
Bill Zimmerman 34d4358326
Update README.md 2020-06-07 16:42:40 +02:00
Bill Zimmerman 5c88aafbec
Merge branch 'master' into zbchristian-wlan-switch 2020-06-07 15:29:28 +02:00
billz b14175ab0c Replace interface constant with _SESSION value 2020-06-07 14:25:28 +01:00
billz 677a6c52b0 Get/set wireless iface from ini, store in _SESSION 2020-06-07 14:23:40 +01:00
Bill Zimmerman 95c5126776
Merge pull request #604 from zbchristian/zbchristian-wlan-switch
Zbchristian wlan switch
2020-06-05 00:26:30 +02:00
zbchristian e390c00a2b
Get interface of AP from hostapd config file 2020-06-03 23:33:43 +02:00
zbchristian d13c77bd2f
Write required options to dhcpcd.conf 2020-06-03 23:32:32 +02:00
Bill Zimmerman 1a59c06d42
Update README.md 2020-06-02 00:22:10 +02:00
Bill Zimmerman 7393d220ef
Update README.md 2020-06-02 00:11:30 +02:00
billz 7cc196f4f5 Update release version 2020-05-27 09:40:44 +01:00
billz 74723f0de3 Update uninstaller. Resolves #593 2020-05-27 09:04:16 +01:00
billz 7410b45c05 Return model info for non-Pi devices 2020-05-27 08:31:54 +01:00
Bill Zimmerman 8c6f0bd5fc
Merge pull request #589 from billz/zbchristian/wifi-sorting
Sort and filter available client networks
2020-05-26 09:52:51 +02:00
Bill Zimmerman 68fb14c390
Update README.md 2020-05-26 08:52:40 +02:00
billz 4b7262a98b Remove 802.11w option from UI 2020-05-26 07:49:04 +01:00
billz eb6f2c5db7 Fix build error 2020-05-24 08:30:32 +01:00
billz 1a8ffd94fc Replaced tabs w/ spaces, applied PSR-2 code standard 2020-05-24 08:24:42 +01:00
billz b128c4106c Applied patches from #581 2020-05-24 08:14:07 +01:00
billz ceaa7a3511 Update _set_php_package w/ pattern match #588 2020-05-23 18:01:11 +01:00
Bill Zimmerman e04ac679dd
Update README.md 2020-05-23 13:55:10 +02:00
billz 0c5e93e9d8 Added 802.11.w MFP support, addresses #484 2020-05-19 17:28:48 +01:00
billz 18285bca22 Update Русский translation, thx Denis Trifiniuc 2020-05-19 16:35:41 +01:00
billz 650af228d9 Disable Ad block when bridgedEnabled 2020-05-19 13:47:31 +01:00
billz 807a8bb7f3 Update composer.json 2020-05-16 12:05:56 +01:00
billz dec0be87bb Update composer.json 2020-05-16 11:54:35 +01:00
billz 9f1133e360 Merge branch 'master' of https://github.com/billz/raspap-webgui 2020-05-16 11:47:52 +01:00
billz f4169a0ede Update composer.json 2020-05-16 11:46:01 +01:00
billz 14508ee773 Remove duplicate $config[] block 2020-05-12 09:16:04 +01:00
billz dabec46511 Minor: untabify 2020-05-12 08:10:54 +01:00
billz 15032a3f44 Apply zbchristian patch 2020-05-12 07:50:28 +01:00
Bill Zimmerman f02f9c6211
Update stale.yml 2020-05-08 18:35:54 +02:00
Bill Zimmerman 25d9743e3b
Update stale.yml 2020-05-08 17:27:15 +02:00
billz 2a7bb37167 Update jquery to v3.5.0 2020-04-30 13:37:40 +01:00
billz dbb71d10c9 Style update for font-based logo 2020-04-30 13:35:17 +01:00
Bill Zimmerman cc7a066d43
Merge pull request #573 from reedy/newparallellint
Use php-parallel-lint/php-parallel-lint instead of jakub-onderka/php-parallel-lint
2020-04-30 14:25:22 +02:00
Reedy 1a7222ccfb Use php-parallel-lint/php-parallel-lint instead of jakub-onderka/php-parallel-lint 2020-04-30 13:13:39 +01:00
Bill Zimmerman 12a70e1f22
Merge pull request #568 from reedy/reedy-patch-1
Revamp testing
2020-04-30 14:06:59 +02:00
billz a20db9185b Fix wifi client connect button. Resolves #572, thx @zbchristian 2020-04-30 12:42:31 +01:00
billz 2a4645bc08 Fixes #570 2020-04-25 22:06:02 +01:00
Bill Zimmerman 82914fa3ae
Merge pull request #569 from reedy/reedy-patch-2
Test on PHP 7.3 and 7.4
2020-04-25 10:41:18 +02:00
Sam Reed 74c2c1759b Test on PHP 7.3 and 7.4 2020-04-25 01:31:51 +01:00
Sam Reed 01052bf8af Revamp testing
Add a composer.json file

Bring in squizlabs/php_codesniffer and phpcompatibility/php-compatibility via composer

Do php linting via jakub-onderka/php-parallel-lint
2020-04-25 01:31:34 +01:00
billz 0fa59b3272 Adjust wg font-size 2020-04-22 10:02:37 +01:00
billz 292a4ed1be Initial template setup 2020-04-22 10:02:07 +01:00
billz 7c7b8941cb Update stop/start, status 2020-04-22 10:01:31 +01:00
billz 8d73fb774f Update installer + sudoers for wg 2020-04-22 10:00:34 +01:00
billz 5c4814585a Style tweaks 2020-04-20 22:36:34 +01:00
billz 5179847c5c Update w/ project webfont 2020-04-20 22:36:03 +01:00
billz 070b1db425 Create RaspAP webfont 2020-04-20 22:35:16 +01:00
billz db497de7d0 Initial commit: wg templates 2020-04-20 12:53:46 +01:00
billz 4c0de33956 Update w/ wg_conf 2020-04-20 12:52:03 +01:00
billz 2bedbad71a Add wireguard constants 2020-04-20 11:05:15 +01:00
billz 7e58feeec0 Enable wg management UI 2020-04-20 11:04:36 +01:00
billz 5028007b7a Add wireguard install option 2020-04-20 10:14:12 +01:00
billz 79d2786638 Update w/ install_status 2020-04-19 12:35:29 +01:00
Bill Zimmerman 4646b6e185
Merge pull request #565 from sfoerster/noninteractive
Noninteractive
2020-04-19 11:39:59 +02:00
Steven Foerster 50693655b8 using apt_option everywhere 2020-04-19 01:30:23 -04:00
Steven Foerster 54c707f5bb non interactive install 2020-04-19 01:13:09 -04:00
billz ec1a915edd Update Czech translation, thx @jiribrejcha 2020-04-17 07:42:15 +01:00
billz 0e44b766a0 Update Czech translation, thx @jiribrejcha 2020-04-16 09:15:34 +01:00
billz 59c625042b Update Czech translation, thx @jiribrejcha 2020-04-16 08:26:25 +01:00
billz 486425d389 Update with 正體中文 (Chinese traditional), thx Mike Hsiao 2020-04-15 09:37:08 +01:00
billz 6cdbb05998 Update 简体中文 (Chinese simplified), thx @BANKA2017 2020-04-14 10:02:45 +01:00
billz c0a4b0fcd5 Compile .mo files from source 2020-04-13 15:48:30 +01:00
Bill Zimmerman 1d68121e45
Merge pull request #560 from marco97pa/patch-1
Full Italian translation
2020-04-13 16:47:13 +02:00
Bill Zimmerman cc29f3e099
Merge pull request #561 from glaszig/patch-2
add freenom world hosted dns option
2020-04-13 16:44:51 +02:00
billz 3874a15a29 Update release version 2020-04-13 09:16:52 +01:00
billz f7343df5ba Adblock unattended install option 2020-04-13 08:49:18 +01:00
billz 9be1e31dae About page tweak 2020-04-13 07:48:53 +01:00
glaszig 94a98074bd
add freenom world hosted dns option 2020-04-12 23:47:01 +02:00
Marco Fantauzzo 90646fa0a0
Full Italian translation
I edited many strings because some of them were not contextualized. To find the best words in the right context, I looked at the interface while translating the text.
2020-04-12 21:34:08 +02:00
Bill Zimmerman fa2be15d2e
Update w/ last-translator credit, thx @marco97pa 2020-04-12 17:57:36 +02:00
billz c2069bf1d6 Update en_US string, thx @skipperskip 2020-04-12 16:00:19 +01:00
billz 3bc6235f7b Update + compile da_DK, de_DE & it_IT 2020-04-12 11:30:51 +01:00
billz de7e3c2134 Update README 2020-04-12 11:29:49 +01:00
billz 8f37f19ba3 Theme style tweaks 2020-04-12 11:27:02 +01:00
Bill Zimmerman cc94964757
Update README.md 2020-04-11 23:15:02 +02:00
billz 1b0fcc06f7 Update BACKERS.md 2020-04-11 17:30:02 +01:00
billz d49cc8daf8 About style tweaks 2020-04-11 17:29:45 +01:00
billz b0eb7c63eb Update About page 2020-04-11 16:17:40 +01:00
Bill Zimmerman 87a22c8194
Update BACKERS.md 2020-04-11 11:51:16 +02:00
Bill Zimmerman c387a65cc1
Update screenshot 2020-04-11 10:17:01 +02:00
billz f3e15bcd78 Update system stats labels w/ gettext 2020-04-11 08:59:21 +01:00
billz 540d7f2403 Reorder locale list 2020-04-11 08:58:41 +01:00
billz b13c6c34dd Update en_US messages 2020-04-11 08:57:46 +01:00
Bill Zimmerman 6e881dfa98
Update supported languages 2020-04-11 09:28:22 +02:00
billz 15749d13c3 Update attribution for Danish, thx skipperskip🇩🇰 2020-04-10 22:33:05 +01:00
billz 9e87bc8452 Added Danish language support, thx skipperskip 2020-04-10 22:27:48 +01:00
billz 512cde4fc3 Replace err,warn,success functions w/ install_status 2020-04-10 10:40:21 +01:00
billz 223ae3e11a Aligns uninstall w/ #537 2020-04-08 09:53:41 +01:00
Bill Zimmerman e5c93970ac
Update crowdin.yml 2020-04-07 00:54:43 +02:00
billz 666912eaa5 Update en_US messages 2020-04-06 08:14:16 +01:00
Bill Zimmerman 064a78098b Update Crowdin configuration file 2020-04-05 09:35:14 +02:00
Bill Zimmerman bb3497ef78
Update readme w/ ad blocking 2020-04-03 23:03:36 +02:00
billz cc5110818f Adblock: enable local DNS name resolution for DHCP clients 2020-04-03 09:51:59 +00:00
Bill Zimmerman 67746601a4
Merge pull request #543 from billz/feature/notracking
Enable ad / tracker blocking with host blocklists
2020-04-03 08:58:46 +02:00
billz dd54c0a5db Minor: fix indents 2020-04-03 06:22:45 +00:00
billz 4eb6a5a2f7 Change last updated text on success 2020-04-02 08:12:59 +01:00
billz 55b9d92217 Update wget w/ -q --show-progress 2020-04-01 18:49:25 +00:00
billz 86133c80ff Update labels with gettext shorthand 2020-04-01 18:43:20 +00:00
billz 3fa5215449 Added blocklist last updated 2020-04-01 09:09:52 +00:00
billz 15374927a0 Add 090_adblock.conf to /etc/dnsmasq.d 2020-04-01 07:51:53 +00:00
Bill Zimmerman 8fd1677974
Merge branch 'master' into feature/notracking 2020-04-01 00:28:22 +02:00
billz 26dc8d92da Ad block installer option (beta) 2020-03-31 21:54:46 +00:00
billz edcc8ce016 Update w/ adblock commands 2020-03-31 00:09:51 +00:00
billz ff14e64bf9 add list download progress indicator 2020-03-31 00:04:52 +00:00
Bill Zimmerman 947ea4a504
Typo fix 2020-03-30 00:23:06 +02:00
Bill Zimmerman 07caa334a0
Update supported OS's 2020-03-30 00:18:58 +02:00
Bill Zimmerman 7fcc546414
Add supported OS's 2020-03-30 00:03:42 +02:00
billz 92051c1090 Update release version 2020-03-29 21:49:35 +01:00
Bill Zimmerman b922f380ba
Merge pull request #537 from billz/armbian-buster
Extend installer to Debian-based distros
2020-03-29 22:40:49 +02:00
billz e4ff789a50 add check for uap0 interface 2020-03-29 15:08:33 +00:00
billz cce45fa1bf restored default interface 2020-03-29 14:46:18 +00:00
billz 892a88e3cc test for $interface before changing daemon, chk status of br0 2020-03-29 14:14:12 +00:00
billz 3552a4b101 update status indicator 2020-03-29 00:16:07 +00:00
billz 0b475ff56d save cnf to 090_adblock.conf, start/restart actions 2020-03-29 00:15:25 +00:00
billz 17d62acdd6 Added check for openvpn-client svc stop/start 2020-03-28 11:09:06 +00:00
billz 1b33935c01 Update after=multi-user.target 2020-03-28 10:56:56 +00:00
billz a5a1f09e84 Fix: update exec start/reload args 2020-03-28 09:39:19 +00:00
billz 9d5e2ee666 update messages, compile .mo 2020-03-27 23:07:47 +00:00
billz e1bdc41ace add stats tab (wip) 2020-03-27 22:46:29 +00:00
billz 222b29535a templatize adblock tab content 2020-03-27 22:39:05 +00:00
billz d66639eaef update dsnmasq_conf constant 2020-03-27 22:36:43 +00:00
billz 1103401fe0 replace blocklist dest w/ constant 2020-03-27 22:05:10 +00:00
billz ffbd99414e rudimentary logging 2020-03-27 22:04:35 +00:00
billz 46213b90b0 Added contant adblock_listpath 2020-03-27 14:32:27 +00:00
billz ab68168951 Update blocklist_dest 2020-03-27 14:31:50 +00:00
billz 584ee2cde0 Initial commit 2020-03-27 13:25:47 +00:00
billz 3d4f12ffa6 Persist toggle, cleanup 2020-03-27 13:09:32 +00:00
billz b1d26b0296 Save adblock settings 2020-03-27 13:02:21 +00:00
billz ca7bde25c6 Update ajax handler + indicate status 2020-03-27 09:24:48 +00:00
billz 6299540216 Add blocklist status classes 2020-03-27 08:50:18 +00:00
billz 36da011e0b Update hosts-blocklist 2020-03-27 08:47:59 +00:00
billz 0ba0172b7c Update blocklist select 2020-03-27 08:47:10 +00:00
billz 0d18432343 Initial commit 2020-03-27 08:46:13 +00:00
billz ae26f948a4 WIP 2020-03-26 19:45:39 +00:00
billz 6f503d8b53 Reorder nav items 2020-03-26 18:21:59 +00:00
billz 82e489884b Fix: RemainAfterExit=no 2020-03-26 17:25:34 +00:00
billz 18b459032d Added Ubuntu Server 19.10 to release check 2020-03-26 10:08:20 +00:00
billz 9592104190 Replace hardcoded path with var 2020-03-25 23:00:26 +00:00
billz 37adaf2cd0 Check existing iptables rules.v4 2020-03-25 22:59:51 +00:00
billz a4c594beff Update release version 2020-03-25 16:54:06 +00:00
Bill Zimmerman 06109bf82e
Merge pull request #541 from Taikuh/connected-devices
List Connected devices in bridged AP mode
2020-03-25 14:20:00 +01:00
Taikuh 347a406729
Remove html tags from locale .po files 2020-03-25 19:58:13 +08:00
Taikuh 482033c57b
Use small text-muted for info text 2020-03-25 19:55:39 +08:00
Taikuh 2eb4ae8088
Replace arp with iw station dump 2020-03-25 19:50:04 +08:00
Bill Zimmerman e207ef6687
Added dev process 2020-03-25 10:24:20 +01:00
Taikuh b7625e34da Shorten info text 2020-03-25 15:19:10 +08:00
Taikuh 2a42c56ab3 bridged $clients only show MAC 2020-03-25 14:42:53 +08:00
billz 422a46e92c Fix PHP notices 2020-03-24 18:48:35 +00:00
billz f92ec4ebda Check existing iptables rules 2020-03-24 17:45:04 +00:00
Taikuh f0db12664d add quotes to $MACPattern 2020-03-25 00:21:59 +08:00
Taikuh c2cff9d947 Add connected device for bridged, edit regex 2020-03-24 20:40:18 +08:00
billz 1de12470d3 Replace update rc.local w/ iptables-save 2020-03-24 11:17:01 +00:00
Bill Zimmerman cb65a66ee3
Merge pull request #539 from Taikuh/master
corrected hostapd toggle display
2020-03-23 15:59:30 +01:00
Taikuh 80b0634d2d corrected hostapd toggle display 2020-03-23 20:41:06 +08:00
billz aa497b46e4 Update comments, apply best practices 2020-03-23 09:31:18 +00:00
billz e46929b505 Update set dchpcd_package option 2020-03-22 18:16:57 +00:00
Bill Zimmerman 271064dbdb
Rename raspap.service to raspapd.service 2020-03-22 15:02:13 +01:00
Bill Zimmerman 3e13971012
Delete iptables.service 2020-03-22 15:01:14 +01:00
Bill Zimmerman bd1dd0a671
Delete iptables.rules 2020-03-22 15:00:41 +01:00
billz eef84597d0 Merge branch 'armbian-buster' of https://github.com/billz/raspap-webgui into armbian-buster 2020-03-22 13:59:38 +00:00
billz cc0d220e30 Restore stop/start systemd-networkd in bridge mode 2020-03-22 13:41:48 +00:00
billz ba13a592cc Standardize service name raspapd 2020-03-22 13:40:34 +00:00
billz 409545f4c3 Direct output to /dev/null, error handling 2020-03-22 11:48:33 +00:00
billz 07b2e6d07a Update stop/start systemd-networkd 2020-03-22 11:47:47 +00:00
billz d799fc1de0 WIP: raspap.service changes 2020-03-22 09:06:23 +00:00
billz 26a28a0123 Persist IP forwarding + iptables, update raspapd 2020-03-21 23:37:05 +00:00
billz a943942bdd Refactor configure_networking, create get_linux_distro 2020-03-21 17:31:38 +00:00
billz 15d829c0b1 Create configure_networking 2020-03-21 08:07:40 +00:00
billz 0b135fb231 WIP: Ubuntu 18.04 LTS support 2020-03-20 20:13:33 +00:00
billz c56a48234f Update dnsmasq.d path 2020-03-20 17:43:46 +00:00
billz 8216a3f4ec Added load sysctl settings 2020-03-20 17:21:07 +00:00
billz 8dfed88ed3 Exec update-alternatives to use iptables-legacy. nftables replaces iptables on Debian 10 2020-03-20 16:18:42 +00:00
billz f2e0841970 Revert "Fix ruleset with iptables + iptables-save"
This reverts commit 0218f4beea.
2020-03-20 16:11:10 +00:00
Bill Zimmerman ac4f7be5bb
Update iptables.rules 2020-03-20 16:23:54 +01:00
billz 63dc8442ba Fix: /etc/iptables/ dir absent on Raspbian 2020-03-20 14:20:21 +00:00
billz 125c203884 Fix: tee output w/ sudo 2020-03-20 13:49:06 +00:00
billz 176593b81f Minor: newlines for readability 2020-03-20 12:10:03 +00:00
billz 96aed21bb5 Quote vars + remove whitespace 2020-03-20 12:07:50 +00:00
billz 0218f4beea Fix ruleset with iptables + iptables-save 2020-03-20 12:07:13 +00:00
Bill Zimmerman 72eec3e2af
Hotfix: strip spaces 2020-03-20 12:48:44 +01:00
billz 40e558b720 Var rename, prevent conflict w/ lsb_release 2020-03-20 11:06:36 +00:00
billz 6e713e6857 Bugfix IP forwarding + error handling 2020-03-20 11:04:03 +00:00
billz 1f538d4a77 Externalized sudoers, - superfluous code from patch_system_files 2020-03-20 09:55:49 +00:00
billz 49622dd4af Initial commit 2020-03-20 09:53:59 +00:00
billz df3d84b570 Postpone start of raspap.service 2020-03-20 09:16:18 +00:00
billz aac5025029 Added stop action for LSB compliance 2020-03-20 09:05:33 +00:00
billz de2ded1984 LSBize service script 2020-03-20 09:03:28 +00:00
billz 21273774a5 Fix raspap.service install path, add error handling 2020-03-20 08:04:50 +00:00
Bill Zimmerman d1de71318b
Delete raspap.iptables 2020-03-20 08:54:02 +01:00
billz 4a7c61eabf Rename iptables.rules for consistency, strip comments 2020-03-20 07:51:35 +00:00
billz f6599ae815 Update iptables.rules naming for consistency 2020-03-20 07:48:24 +00:00
billz 4b30be5c54 Align installer w/ Debian's modern SYSV style. Resolves #127 2020-03-20 07:32:23 +00:00
billz ebefe5df75 Resolve version naming conflict 2020-03-20 07:26:37 +00:00
billz 8c67fd0c3a Initial commit 2020-03-20 07:23:05 +00:00
billz c649246614 Update sudoers file handling. Resolves #41. Addresses #127 2020-03-19 09:37:05 +00:00
billz c52487c671 Minor: rename version > release 2020-03-17 20:05:41 +00:00
Bill Zimmerman 8998433d75
Bugfix: missing whitespace 2020-03-17 19:31:26 +01:00
Bill Zimmerman ead1f354d7
operand bugfix 2020-03-17 19:22:07 +01:00
Bill Zimmerman 3e39f33345
Update version welcome 2020-03-17 18:51:07 +01:00
Bill Zimmerman a55c1cbb1d
Update installer version 2020-03-17 18:47:21 +01:00
billz 8e148e683b Update w/ OS, version detect & install dhcpcd5 2020-03-17 11:55:40 +00:00
billz e5c60ec0c1 Merge branch 'armbian-buster' of https://github.com/billz/raspap-webgui into armbian-buster 2020-03-17 10:56:38 +00:00
Bill Zimmerman f3dd4cc67d Update install_dependencies w/ dhcpcd5 2020-03-17 10:56:07 +00:00
billz 35f915d42e Style tweak: dark mode 2020-03-17 07:30:26 +00:00
billz 57734e837f Update installed php-cgi to v7.3 (buster) 2020-03-16 23:29:48 +00:00
billz c7d8b5caf4 Merge branch 'master' of https://github.com/billz/raspap-webgui 2020-03-16 23:19:10 +00:00
billz de86082034 Style tweaks: dark mode 2020-03-16 23:18:35 +00:00
Bill Zimmerman b33753bc73
Update screenshot 2020-03-16 10:46:07 +01:00
Bill Zimmerman 42ddc46a21
Added link to bridged AP wiki page 2020-03-16 10:09:16 +01:00
Bill Zimmerman 6d893e4a3f
Merge pull request #523 from Taikuh/bridge-mode
Bridged AP Mode
2020-03-16 10:04:26 +01:00
Taikuh 8082430c30 ovpn, uap0 compatibility; readme 2020-03-15 19:02:20 +08:00
Bill Zimmerman bfe795a977
Update install_dependencies w/ dhcpcd5 2020-03-14 00:53:09 +01:00
Bill Zimmerman 8a18554201
Update common.sh 2020-03-13 23:10:36 +01:00
Taikuh 5d57765669 Merge billz:master into bridge-mode 2020-03-13 14:08:11 +08:00
Taikuh 5e44aae1c5 Disable incompatible settings when bridged 2020-03-13 05:02:26 +08:00
Bill Zimmerman 898865d417
Create stale.yml 2020-03-12 11:36:48 +01:00
Bill Zimmerman 6f8a60c9ac
Style tweak for dark mode 2020-03-10 12:56:03 +01:00
Taikuh 8823c0602e Add bridged-routed toggle to webgui 2020-03-10 19:07:15 +08:00
Bill Zimmerman 11cc6d6f43
Merge pull request #528 from Taikuh/logs-permissions
Workaround for logs permissions not sticking
2020-03-10 12:00:40 +01:00
Bill Zimmerman 8bda81adcb
Merge branch 'master' into bridge-mode 2020-03-10 00:05:46 +01:00
Bill Zimmerman 20a540236a
Merge pull request #527 from Taikuh/override-git-source
download_latest_files follows quick installer
2020-03-09 23:58:03 +01:00
Taikuh 4a85188a22 Workaround for logs permissions not sticking 2020-03-10 05:08:26 +08:00
Taikuh 57bcb79310 download_latest_files follows quick installer 2020-03-09 20:11:11 +08:00
billz c44d58d51b Stats display for the Adafruit Mini PiTFT 2020-03-08 17:40:40 +00:00
Taikuh 9800b23e4d Add bridged-routed toggle script 2020-03-09 01:16:05 +08:00
billz 1b87d57af4 Bugfix: Escape backslashes 2020-03-07 09:17:02 +00:00
billz 227fc3d775 Dark mode style tweak 2020-03-07 07:07:55 +00:00
Bill Zimmerman 33b6a42aa0
Merge pull request #519 from glaszig/fix/markup
dhcp page maintenance
2020-03-06 20:05:25 +01:00
billz 51e736c79b Update for dark theme 2020-03-06 18:57:16 +00:00
billz 88f0859955 Terminal theme => Lights Out 2020-03-06 18:40:47 +00:00
glaszig 29d4653524 prevent variable name collision in renderTemplate() function 2020-03-06 16:54:48 +01:00
glaszig 1d6b4e6468 moved dhcp tab panes into partials 2020-03-06 16:53:22 +01:00
glaszig ad6a4b5228 improved tab id 2020-03-06 16:41:49 +01:00
glaszig 287bfcb568 dhcp: moved logging-related controls to logging tab 2020-03-06 16:39:24 +01:00
glaszig 67eefdcf05 fixed dhcp template markup
there was one closing div too many leading to empty
content area when nav is collapsed
2020-03-06 16:26:23 +01:00
billz c6fe7ebe36 Minor: update comment block 2020-03-05 21:47:46 +00:00
billz cff02c86fb Update rc.local to set log ownership. Resolves #518 2020-03-05 18:34:21 +00:00
Bill Zimmerman 2784672604
Merge pull request #517 from billz/feature/dnsmasq-logging
Add dnsmasq logging options
2020-03-05 17:46:50 +01:00
billz ddd8b53fdf Minor: label change 2020-03-05 12:43:14 +00:00
billz 90b922c432 Update with dnsmasq logfile output 2020-03-05 10:35:40 +00:00
billz ea389e1a13 Add create_dnsmasq_log 2020-03-05 10:34:46 +00:00
Bill Zimmerman 00c4d3b9b2 Update locales with advanced DHCP strings 2020-03-05 08:26:59 +01:00
Bill Zimmerman 3ba6c135a8
Merge pull request #506 from glaszig/feature/dhcp-upstream-server
[WIP] added ui to manage upstream dns servers
2020-03-04 23:07:35 +01:00
glaszig 5259102b18 optimized select box position 2020-03-04 19:49:07 +01:00
glaszig cfa3f9cfd3 added selectable hosted dns servers 2020-03-04 19:43:22 +01:00
glaszig 6c6de51a45 improved dhcp tab label "advanced" 2020-03-04 18:26:21 +01:00
glaszig e037bd92e7 prevent empty upstream server field if non is set 2020-03-04 18:23:51 +01:00
Bill Zimmerman 42cb0a93bb
Add travis-ci badge 2020-03-02 10:39:10 +01:00
billz d36a6b2d10 Update mkcert release version. Addresses #513 2020-03-02 07:41:25 +00:00
Bill Zimmerman 16f146b0da
Update AP mode screenshot 2020-03-01 20:23:59 +01:00
Bill Zimmerman 4c37739914
Update AP mode image 2020-03-01 19:16:01 +01:00
Bill Zimmerman 8b1f0d9a8f
Merge pull request #511 from glaszig/fix/remove-bootstrap-toggle
remove bootstrap4-toggle
2020-03-01 18:20:02 +01:00
Bill Zimmerman 9e10c66184
Merge pull request #510 from glaszig/fix/hostapd-help-text
improved form field help text styling
2020-03-01 18:12:33 +01:00
Bill Zimmerman 03c280bb82
Update screenshot 2020-03-01 18:05:13 +01:00
billz 3193cf068c Style tweak for left nav labels 2020-03-01 17:00:50 +00:00
billz 5b31c77b18 Removed redundancy in labels. Related to #507 2020-03-01 16:55:51 +00:00
Bill Zimmerman 874e5d1c12
Merge pull request #507 from glaszig/fix/nav
remove redundant wording
2020-03-01 17:13:57 +01:00
glaszig 589fb6298c indentation 2020-02-29 22:26:20 +01:00
glaszig 5271c03268 tabs, spaces... lord have mercy. 2020-02-29 22:20:40 +01:00
glaszig cc584e0b6b replace bootstrap4-toggle in favor of bootstrap's more lightweight custom-switch 2020-02-29 22:15:35 +01:00
glaszig 14caf445bd improved form field help text styling 2020-02-29 21:53:38 +01:00
glaszig d431da3e3a use proper gettext message for dhcp section header 2020-02-29 19:42:48 +01:00
glaszig 4cd38dc8c6 generic buttons for all tab panes in dhcp 2020-02-29 19:30:28 +01:00
glaszig a45e3a5e32 fixed nav-tabs margin to content below 2020-02-29 19:22:44 +01:00
glaszig 490ca1cb5a added "advanced" tab to dhcp config, moved upstream dns into it 2020-02-29 19:19:15 +01:00
glaszig 9c3c27cb71 small input groups for upstream dns servers 2020-02-29 19:07:31 +01:00
glaszig 3ce99eeaa7 improved checkbox label 2020-02-29 19:03:49 +01:00
glaszig 0db3d151ee use bootstrap's pretty custom-switch 2020-02-29 19:02:27 +01:00
glaszig 1efbb52738 added label for new upstream dhcp server field 2020-02-29 18:55:57 +01:00
glaszig 9f672549f2 added placeholder 2020-02-29 18:50:06 +01:00
glaszig f3e8f0e64d fixed heading 2020-02-29 18:49:59 +01:00
glaszig dc77f304bf added note about no-resolv dnsmasq option 2020-02-29 18:43:23 +01:00
glaszig 56d7a74879 improved upstream dns server help text 2020-02-29 18:37:23 +01:00
glaszig 896797a6d6 fixed aria label 2020-02-29 18:35:23 +01:00
glaszig 835d2f2a42 removed superfluous class attribute 2020-02-29 18:34:20 +01:00
glaszig 6bb4abac56 added checkbox for no-resolv option in dnsmasq.conf 2020-02-29 18:33:51 +01:00
glaszig 3d981a4eab Auth => Authentication 2020-02-29 18:09:31 +01:00
glaszig e87d2c1c72 remove left-over redundant wording 2020-02-29 18:07:24 +01:00
Bill Zimmerman 8a1f75b256
Merge pull request #505 from glaszig/fix/dhcpcd-config
respect common dhcpcd config options in ap mode
2020-02-29 18:07:11 +01:00
glaszig acb5df1601 remove redundant wording 2020-02-29 00:00:35 +01:00
glaszig a3c8def120 added ui to manage upstream dns servers 2020-02-28 23:41:56 +01:00
glaszig 3cc2720a35 respect common dhcpcd config options in ap mode
resolves #502
2020-02-28 17:51:33 +00:00
Bill Zimmerman 2120b0e215
Merge pull request #504 from billz/glaszig-feature/wifi-qr-code
Glaszig feature/wifi qr code
2020-02-28 08:30:28 +01:00
Bill Zimmerman 68a6ea1aa0
Merge pull request #503 from glaszig/feature/wifi-qr-code
show wifi qr code in "hotspot > security" section
2020-02-28 08:30:11 +01:00
glaszig 806ce22970 add etag header to wifi qr code to improve
browser caching behavior
2020-02-27 23:53:48 +00:00
glaszig ad1ca08de3 escape qrencode arguments in multibyte-safe way 2020-02-27 23:52:35 +00:00
Bill Zimmerman 85aeeba7a2
Update subreddit badge 2020-02-27 19:14:33 +01:00
Bill Zimmerman 7a2d6b907b
Added subreddit badge 2020-02-27 19:12:29 +01:00
billz f63c4688bc Update with click handler, genPassword() 2020-02-27 17:21:57 +00:00
billz 6c01069f67 Adds auto-generate secure PSK button to input 2020-02-27 17:20:29 +00:00
glaszig 695ea7b969 show wifi qr code in "hotspot > security" section
resolves #469.
2020-02-27 02:37:00 +00:00
Bill Zimmerman 33fbb910e5
Merge pull request #501 from glaszig/feature/dnsmasq-conf-dir
add conf-dir option to dnsmasq.conf
2020-02-26 11:37:26 +01:00
glaszig 409adb0c05 add conf-dir option to dnsmasq.conf, closes #403
this allows custom configuration stored
in files in /etc/dnsmasq.d. raspap does not
touch them and they'll always be loaded.

also creates /etc/dnsmasq.d if it doesn't exist.
2020-02-26 02:13:19 +00:00
Bill Zimmerman d748a341bd
Merge pull request #499 from jcwebhole/spelling-corrections-on-readme
Spelling corrections on readme
2020-02-20 13:17:49 +01:00
Jason Bruno ee3f47dae1
Spelling corrections on readme
found spelling error while reading at line 121
2020-02-20 11:31:19 +08:00
billz 5ff4bed6b7 Update msgstrs, recompile .mo files 2020-02-18 21:36:12 +00:00
billz 8e29570d07 Enable restart when hostapd is active. Addresses #495 2020-02-18 21:01:38 +00:00
Bill Zimmerman 897d61d1db
Update .travis.yml 2020-02-15 19:35:33 +01:00
billz 457da91008 Processed with phpcbf 2020-02-15 17:57:46 +00:00
Bill Zimmerman c0af41a53b
Merge pull request #494 from JohnTheNerd/master
Properly locked down the back-end in monitoring mode
2020-02-15 00:05:32 +01:00
Bill Zimmerman a561a58680
Update .travis.yml 2020-02-14 23:43:19 +01:00
Bill Zimmerman f6caa4db8f
Create .travis.yml 2020-02-14 23:37:25 +01:00
John 8fe0e9e59a fully locked down the back-end in monitoring mode 2020-02-13 23:08:46 -03:30
John Karabudak c7785ce672 fixed security hole that allowed web console in monitor mode 2020-02-13 21:59:58 -03:30
Bill Zimmerman 5cbe0ba2b7
Update README.md 2020-02-13 17:08:33 +01:00
Bill Zimmerman 47d07a95be
formatting 2020-02-13 11:17:45 +01:00
Bill Zimmerman 0886f16f43
formatting 2020-02-13 11:16:04 +01:00
Bill Zimmerman f3e4c2c52c
Merge pull request #493 from opencollective/opencollective
Activating Open Collective
2020-02-13 11:12:16 +01:00
Bill Zimmerman ee85f21572
Update README.md 2020-02-13 08:12:50 +01:00
Bill Zimmerman 7156edc857
Update CONTRIBUTING.md 2020-02-12 22:33:40 +01:00
Bill Zimmerman fddf4c4763
Update CONTRIBUTING.md 2020-02-12 22:28:29 +01:00
Bill Zimmerman f8490191ac
Merge branch 'master' into opencollective 2020-02-12 08:20:47 +01:00
billz 90fe706fba Update release version 2020-02-11 07:12:14 +00:00
Jess 2209888a5d Added financial contributors to the README 2020-02-10 18:44:10 -08:00
Bill Zimmerman 1b136946e9
Update README.md 2020-02-09 17:40:28 +01:00
Bill Zimmerman ccfccda089
Update README.md 2020-02-08 12:40:03 +01:00
Bill Zimmerman d5d6c10c44
Update README.md 2020-02-08 12:18:55 +01:00
Bill Zimmerman 4937de79a7 Update FUNDING.yml 2020-02-08 12:05:07 +01:00
billz f97a701697 Style tweak 2020-02-06 12:37:09 +00:00
Bill Zimmerman 105ac35306
Update README.md 2020-02-03 23:29:13 +01:00
billz 3394c9cecc Style tweaks 2020-02-03 18:54:58 +00:00
Bill Zimmerman bffaee8ab9
Crop screenshot 2020-02-03 13:42:00 +01:00
Bill Zimmerman b52e7a17d0
Update screenshot 2020-02-03 13:38:55 +01:00
billz bbd545b97a Style tweaks for new dashboard 2020-02-03 12:33:31 +00:00
Bill Zimmerman f4e8fbd6c2
Merge pull request #491 from billz/dashboard-redesign
Dashboard redesign
2020-02-03 12:52:35 +01:00
billz 5ff1e85274 Processed with phpcs/phpcbf 2020-02-03 10:13:57 +00:00
billz 78fa4c2c9b Fix more indents 2020-02-03 09:56:30 +00:00
billz e250fa211a Fix indents 2020-02-03 09:48:58 +00:00
billz 5f0e2b3f11 Added .chart-container 2020-02-03 09:34:17 +00:00
billz 3efce777b5 Update widget LED values from sysstat 2020-02-03 09:33:23 +00:00
billz 7180501272 Added cputemp + memuse led values 2020-02-03 09:32:16 +00:00
billz 70ca6d03e0 Limit dhcp client display, alignment tweaks 2020-02-03 09:31:39 +00:00
billz b37221b55b Update SSID label 2020-02-03 09:28:06 +00:00
billz 36e4d5baf0 Tweak svc status colors 2020-02-02 15:34:53 +00:00
billz 95383b81c0 Add $extraFooterScripts to default case 2020-02-02 15:15:22 +00:00
billz 373a7f28ef Update hires .png from .svg 2020-02-02 15:06:15 +00:00
billz af361d3c18 Update hires .png from .svg 2020-02-02 15:05:20 +00:00
billz 2121a77e29 Deprecated old logo64px 2020-02-02 15:04:29 +00:00
billz bade88ecd6 Replace .png with .svg :tada 2020-02-02 14:59:47 +00:00
billz d15fd5692d Unique id, prevent conflict w/ data usage 2020-02-02 14:58:35 +00:00
billz 9dc2a67d70 Update beforeDraw as inline plugin 2020-02-02 13:40:41 +00:00
billz 29772f8144 Fix indents 2020-02-02 13:37:17 +00:00
billz 32a2cf699b Update sysstat include 2020-02-02 12:41:07 +00:00
billz 49cb572069 Update w/ hostapd svc indicator 2020-02-02 12:40:24 +00:00
billz f0e94780b8 Added svc status warn 2020-02-02 12:35:21 +00:00
billz 0c95173889 Update w/ hostapd svc indicator 2020-02-02 12:34:36 +00:00
billz 857ffb15d4 Fix indents 2020-02-02 11:57:31 +00:00
billz 8b0c4d7308 Added hostapd status 2020-02-02 11:55:10 +00:00
billz 631963dfdf Dashboard widget + data usage styles 2020-02-02 11:37:23 +00:00
billz 7cecb1d1af Minor: formatting 2020-02-02 11:36:20 +00:00
billz 298bec2465 Removed unused system class 2020-02-02 11:35:55 +00:00
billz c3c15d49ad Updated w/ include sysstats 2020-02-02 11:35:10 +00:00
billz 2faf80959d Update maintainAspectRatio 2020-02-02 11:34:08 +00:00
billz 355a2eed03 Added sysstats widget, reposition logo 2020-02-02 11:33:09 +00:00
billz 82db0a34b9 WIP: dashboard redesign 2020-02-02 08:37:15 +00:00
billz 2056236c42 Get hostapdStatus from System 2020-02-01 11:07:54 +00:00
billz 1bbeefca7c Add hostapdStatus to System 2020-02-01 11:06:41 +00:00
Bill Zimmerman 223b20ddc9
Update README.md 2020-01-31 12:57:00 +01:00
Bill Zimmerman 8530280a98
Update twitter badge 2020-01-30 09:02:55 +01:00
Bill Zimmerman 3a63ea0d90
Update README.md 2020-01-30 08:41:41 +01:00
Bill Zimmerman 34859daa63
Update README.md 2020-01-29 22:08:22 +01:00
Bill Zimmerman c166829191
Update FUNDING.yml 2020-01-29 21:39:27 +01:00
billz 9fc2b9d91e Use defaults in absence of user config. Resolves #486 2020-01-29 09:58:36 +00:00
Bill Zimmerman 0712351508
Merge pull request #466 from yolateng0/patch-1
Update dhcpcd.conf dns safe
2020-01-28 19:43:31 +01:00
Bill Zimmerman f4afe925f8
Merge pull request #483 from WRXTsla/patch-2
Update dhcp.php
2020-01-27 11:35:14 +01:00
Bill Zimmerman 50de4f73a3
Merge branch 'master' into patch-2 2020-01-27 11:34:18 +01:00
Bill Zimmerman 96773ab447 Minor: fix indentation 2020-01-27 07:39:16 +01:00
Bill Zimmerman 659f9675eb
Update BACKERS.md 2020-01-26 08:51:06 +01:00
WRXTsla 26190c0f5c
Update dhcp.php
typo?
2020-01-26 02:16:47 +01:00
Bill Zimmerman 8ff2167a75
Merge pull request #479 from Weylin-fr/adding-cpu-temperature
Adding cpu temperature
2020-01-22 11:04:43 +01:00
Weylin-fr 303347ac00
Update system.php
removed "</div>" as billz request it in the master branch
2020-01-22 10:59:02 +01:00
Weylin-fr 9819c6a3e1
Update system.php
- Adding the CPU temp from a copy of CPU load.
- The CPU temp cannot go to 100°C, so i multiply the temp to 1.2. This way the progress bar is full when CPU temp is 83°C or more.
- The LAN Chipset supports up to 70°C, so i set the red progress bar to that threshold 
   (source: https://www.raspberrypi.org/documentation/faqs/)
2020-01-20 16:30:44 +01:00
Weylin-fr 6fc73851aa
Update system.php
get CPU temp from "/sys/class/thermal/thermal_zone0/temp"
2020-01-20 16:27:19 +01:00
Bill Zimmerman 419e10a5b2
Update FUNDING.yml 2020-01-19 22:54:39 +01:00
Bill Zimmerman a76e8ad35a
Update FUNDING.yml 2020-01-19 22:53:37 +01:00
Bill Zimmerman e449c47212
Update FUNDING.yml 2020-01-19 22:47:32 +01:00
Bill Zimmerman d194b85a74
Update FUNDING.yml 2020-01-19 22:45:46 +01:00
Bill Zimmerman f9bcc0979f
Delete FUNDING.yml 2020-01-19 22:45:29 +01:00
Bill Zimmerman b63f34e48e
Update FUNDING.yml 2020-01-19 22:43:59 +01:00
Bill Zimmerman 2f851ecf7d
Create FUNDING.yml 2020-01-19 22:41:40 +01:00
billz a801f43615 Comments for clarity. Addresses #461 2020-01-15 17:47:09 +00:00
billz a07adb6d3a Added Greek to list of supported translations 2020-01-14 09:55:30 +00:00
billz 7f12ef1cee Added support for Greek. Thanks Chris K! 2020-01-14 09:23:13 +00:00
billz 6e443c66d1 Compiled .mo for el_GR 2020-01-14 09:21:49 +00:00
Bill Zimmerman 37d49ae328 Initial commit 2020-01-14 10:04:05 +01:00
billz 6325f4dd02 Update dnsmasq with bind-dynamic. Addresses #429 2020-01-13 09:42:05 +00:00
Bill Zimmerman 4ea015c6ef
Update README.md 2020-01-07 09:21:00 +01:00
Bill Zimmerman 815a479ca5
Update README.md 2020-01-07 09:15:43 +01:00
billz ff2c91fe8d Bugfix, resolves #457 2020-01-06 18:00:07 +00:00
billz 6106c3196a Bugfix. Resolves #470 2020-01-04 18:59:19 +00:00
billz 8d1b6a5c6a Minor: comments 2020-01-01 19:12:04 +00:00
Bill Zimmerman bc8ed88d93
Merge pull request #465 from billz/802.11ac
802.11ac config
2020-01-01 10:58:22 -08:00
Yo 6230d787f7
Update dhcpcd.conf dns safe
Quad9 provides DNSSEC validation on our primary resolvers.
in addition Quad9 validate DNSSEC on our EDNS enabled service.
Quad9 does not and never will share any of its data with marketers, nor will it use this data for demographic analysis.
This means that for domains that implement DNSSEC security, the Quad9 system will cryptographically ensure that the response provided matches the intended response of the domain operator. In the event of a cryptographic failure, our system will not return an answer at all. This ensures protection against domain spoofing or other attacks that attempt to provide false data. Learn more about DNSSEC here: https://www.icann.org/resources/pages/dnssec-qaa-2014-01-29-en
2020-01-01 17:29:55 +00:00
billz e072e0a32a Replace hardcoded 5Ghz countries with constant 2019-12-31 19:12:01 +00:00
billz 154eee337c Initial commit 2019-12-31 19:11:00 +00:00
billz f41bfa93aa Fetch wireless regulatory data from config/wireless.json 2019-12-31 19:10:48 +00:00
billz 581798a15f Added constant for CRDA wireless regulatory domain 2019-12-31 19:09:26 +00:00
billz ba8d245eca Revert "Expanded 5Ghz country list (testing)"
This reverts commit f1ff34af6d.
2019-12-30 04:41:07 +00:00
billz a596568fbc Revert "Allow channel input up to 64 (testing)"
This reverts commit 40bc21a04b.
2019-12-30 04:39:37 +00:00
billz 882621a6af Prevent disabled state when AP mode is inactive 2019-12-29 23:34:31 +00:00
billz 3dfb5995b6 Minor: remove comments + fix indents 2019-12-29 19:30:55 +00:00
billz 40bc21a04b Allow channel input up to 64 (testing) 2019-12-28 00:05:59 +00:00
billz f1ff34af6d Expanded 5Ghz country list (testing) 2019-12-28 00:04:50 +00:00
billz 597f1b04cf Fetch ajax channel value 2019-12-27 06:43:49 +00:00
billz b6cd2e0fa1 Initial commit: ajax get channel 2019-12-27 06:34:09 +00:00
billz 6abe731ae5 Disable ac hw_mode if no 5Ghz country match 2019-12-27 03:16:50 +00:00
billz 3292bc580b Added disabled param to SelectorOptions() 2019-12-27 03:08:51 +00:00
billz 93514a6787 Minor: comments + formatting 2019-12-27 01:26:37 +00:00
billz f8ac55da6f Added missing 4B models 2019-12-27 00:50:53 +00:00
billz 6a961e09b8 Added loadChannelSelect() to document.ready 2019-12-26 21:37:23 +00:00
billz 75ebf08ae7 Implemented selectablechannels in custom.js 2019-12-26 21:36:27 +00:00
billz 05772a5ff2 Added selectable channels for wireless mode AC 2019-12-26 06:18:22 +00:00
billz 597f2ebdb9 Added support for wireless mode AC 2019-12-26 06:17:27 +00:00
billz 6d7aa1b401 Added optional $event param to SelectorOptions() 2019-12-26 06:16:13 +00:00
billz bbe430028c Updated wpa, wpa_pairwise 2019-12-26 06:15:04 +00:00
billz 0b6362e611 Updated with loadChannelSelect() 2019-12-26 06:14:03 +00:00
Bill Zimmerman 75451fb25f Rollback patch wpa_supplicant 2019-12-19 13:21:21 -08:00
Bill Zimmerman 32d398f07d
Update README.md 2019-12-14 13:28:35 +01:00
billz 78b09cc4b4 Initialize wpa_supplicant, create if absent. Resolves #452 2019-12-13 16:54:01 +00:00
Bill Zimmerman 7aad037cf4
Update README.md 2019-12-13 16:27:53 +01:00
billz 80133ece4b Disable toggle if managed mode not enabled. Resolves #455 2019-12-13 14:07:57 +00:00
billz 5462e26d95 Add detect managedModeEnabled state with iwgetid 2019-12-13 14:05:41 +00:00
billz 0d92cb636f Minor: add comments for clarity 2019-12-09 12:07:57 +00:00
billz c94e3edd88 Minor: update version output 2019-12-04 19:34:50 +00:00
billz 8325b894ff Merge branch 'master' of https://github.com/billz/raspap-webgui 2019-12-02 08:27:44 +00:00
billz d8e7a4fb91 Update release version 2019-12-02 08:26:54 +00:00
Bill Zimmerman a8185d0d51
Update release 2.1 2019-12-01 12:16:51 +01:00
billz 233e5930e0 Merge branch 'master' of https://github.com/billz/raspap-webgui 2019-12-01 11:15:33 +00:00
billz c1ddac7f4e Update release version 2019-12-01 11:15:08 +00:00
billz aeaa6432d6 Update release version 2019-12-01 11:14:08 +00:00
Bill Zimmerman 53fe3e0045
Update release version 2019-12-01 12:11:53 +01:00
billz 6a01fae624 Update quick installer 2019-12-01 09:49:07 +00:00
billz 89e9fc5563 Update installer with version option 2019-12-01 09:45:06 +00:00
Bill Zimmerman 9735c97795
Merge pull request #445 from jeffeb3/master
Update Manual Instructions
2019-12-01 10:12:02 +01:00
Jeff Eberl 03a0c5d2f2
Change cmds count to always be right. 2019-11-30 15:08:16 -07:00
Jeff Eberl 73651d2b87
Updated manual instructions to match the common.sh 2019-11-30 15:05:30 -07:00
billz d9f7f7d4a0 Merge branch 'master' of https://github.com/billz/raspap-webgui 2019-11-28 09:46:33 +00:00
billz 9c78fd57ed Update usage notes 2019-11-28 09:45:54 +00:00
Bill Zimmerman e00ed695fb
Updated with link to Quick Installer wiki page 2019-11-27 10:42:57 +01:00
billz 07ca2900a1 Omit wpa_pasphrase is sec type = none. Resolves #439 2019-11-26 13:14:14 +00:00
billz edbb996b57 Call optimize_php after create_raspap_dirs. Resolves #441 2019-11-25 13:54:36 +00:00
Bill Zimmerman 868ecf7323
Update bug_report.md 2019-11-24 10:44:14 +01:00
Bill Zimmerman d5416e1121
Create config.yml 2019-11-24 10:09:21 +01:00
billz a6117b47cb Check ovpn_option for automated install. Resolves #436 2019-11-22 14:05:49 +00:00
billz e9954a7af7 Adds -o,--openvpn <flag> install option. Resolves #436 2019-11-22 14:03:50 +00:00
billz a06de39da2 Deprecate Raspbian 8 / php5 support. Resolves #438 2019-11-22 13:01:59 +00:00
billz 671baf587d Enable openvpn-client service. Resolves #437 2019-11-22 12:41:19 +00:00
billz 3ba3f3351b Replace /home/pi with $HOME. Resolves #435 2019-11-21 10:29:48 +00:00
Bill Zimmerman 785b43b3ba
Added link to raspbian.sh 2019-11-20 14:53:01 +01:00
Bill Zimmerman 59a76f8f04
Update HTTPS support 2019-11-20 00:23:52 +01:00
Bill Zimmerman 5b07efc5c3
Update quick installer 2019-11-19 22:36:46 +01:00
Bill Zimmerman 434b4830dc
Update quick install 2019-11-19 18:56:01 +01:00
billz 11e71a638f Specify terminal device /dev/tty for input 2019-11-19 11:42:06 +00:00
Bill Zimmerman cd17379733
update screenshot 2019-11-18 18:35:22 +01:00
Bill Zimmerman 487cbc8db5
update screenshot 2019-11-18 13:58:33 +01:00
Bill Zimmerman 760ff5630e
Added OpenVPN support 2019-11-18 13:44:02 +01:00
billz e8c9587f5a Added OpenVPN install option. addresses #147 2019-11-18 11:51:59 +00:00
billz cd92bdae46 Update iptables msgs 2019-11-17 19:08:39 +00:00
billz 47af4c7815 Update sudoers 2019-11-17 18:46:39 +00:00
billz c9721043f8 Update openvpn paths 2019-11-17 18:45:57 +00:00
billz e4e3089a82 Update openvpn paths 2019-11-17 18:22:55 +00:00
billz 5eac756946 Added argument for auth-user-pass 2019-11-17 18:20:25 +00:00
billz 40ac95af59 Update openvpn client path 2019-11-17 18:17:46 +00:00
billz 5c8b18a0ac Allow empty credentials in case of client key auth. Thanks @r45635 2019-11-17 18:16:14 +00:00
billz 607a72e5e9 Merge branch 'master' of https://github.com/billz/raspap-webgui 2019-11-17 12:03:31 +00:00
billz 22eac80306 Tweak info-item 2019-11-17 12:01:36 +00:00
billz 2e54ae8dde Diplay public Ipv4 address 2019-11-17 12:01:07 +00:00
billz 81db069626 Resolve public_ip 2019-11-17 12:00:30 +00:00
billz 122609866a Add iptables entries to rc.local 2019-11-17 10:17:57 +00:00
billz ebcdd4d47b Minor: mode change 2019-11-17 10:16:55 +00:00
billz 5ddad7e39c Update tmp paths, parameterize control script 2019-11-17 10:16:10 +00:00
billz 844182f704 Minor: update comment block 2019-11-17 10:11:52 +00:00
billz e0bb18b283 Update openvpn-client sudoers 2019-11-16 17:42:55 +00:00
billz d10d349e9a Handle .ovpn file upload, auth-user-pass config, client svc start/stop 2019-11-16 10:10:25 +00:00
billz b412587249 Update msgs 2019-11-16 09:15:39 +00:00
billz a15ed37adc Update svc control init.d w/ systemd 2019-11-15 09:02:37 +00:00
billz 06c00b727b Initial commit 2019-11-15 09:01:57 +00:00
billz 11955a9641 Update svc control init.d w/ systemd 2019-11-15 09:00:36 +00:00
billz 21cff18275 Added create_openvpn_scripts, update svc controls to systemd 2019-11-15 08:57:17 +00:00
billz 93e3af0ecd Update w/ openvpn service status indicator 2019-11-15 08:45:54 +00:00
billz 23d40b138d Added OPENVPN_CLIENT_LOGIN 2019-11-15 08:44:29 +00:00
billz e30d1596dc Update openvpn template w/ focus on client UI 2019-11-14 12:30:24 +00:00
billz bce1278dfc Fix JP country code 2019-11-13 10:33:04 +00:00
billz 25d1ddeed6 Templatized Tor proxy config 2019-11-12 21:05:21 +00:00
billz ef2286152a Added includes/torproxy 2019-11-12 21:04:30 +00:00
billz 2c9f135389 Templatized OpenVPN config 2019-11-12 16:03:26 +00:00
billz e4225086e1 Moved DisplayOpenVPNConfig() to new file 2019-11-12 16:02:05 +00:00
billz e3c5b0243c Added includes/openvpn 2019-11-12 16:00:51 +00:00
billz e58e1df283 Added -h, --help 2019-11-11 19:24:01 +00:00
billz d83dab1937 Simplify usage string 2019-11-11 19:18:20 +00:00
billz 24b669b157 Added -r option, changed msgs 2019-11-11 13:37:06 +00:00
billz 184b723de0 Added restart lighttpd btn 2019-11-11 13:36:19 +00:00
billz 4e4a937ccd Handler for restart lighttpd 2019-11-11 13:35:48 +00:00
billz 21ae039589 Minor: update legacy version check 2019-11-11 09:17:35 +00:00
billz fa0c18c52e Error handling 2019-11-11 08:57:30 +00:00
billz a08005dca7 Added repo & branch command line options 2019-11-11 08:51:45 +00:00
Bill Zimmerman a00a3d5915
Update config.php 2019-11-10 23:50:48 +01:00
billz cbec3c40d2 Added create_lighttpd_scripts() 2019-11-10 22:21:55 +00:00
billz e0251930be Added advanced tab w/ lighttpd port option. Thx Raspberry Pie on discord :) 2019-11-10 22:14:07 +00:00
billz eb0442b130 Added support for lighttpd server port. Resolves #146 2019-11-10 22:10:49 +00:00
billz d3e0aca3d7 Initial commit 2019-11-10 22:09:36 +00:00
billz 7e6a8f35af Added lighttpd conf 2019-11-10 22:09:16 +00:00
billz 3c93fe4d6f Update supported locales 2019-11-08 17:20:50 +00:00
billz 1a533234d4 Hotfix. Resolves #430 2019-11-08 10:54:05 +00:00
Bill Zimmerman 3d07bfe704
Update HTTPS support 2019-11-08 11:14:44 +01:00
billz b4836bf304 Disables console when monitor mode is enabled. Thanks @sedgett 2019-11-08 08:41:55 +00:00
billz f8b1f407f7 Added option to disable system tab. Thanks @sedgett 2019-11-08 08:20:47 +00:00
Bill Zimmerman 68ca768502
Merge pull request #428 from billz/extend-installer
Extend quick installer
2019-11-07 21:52:25 +01:00
billz 0fa61f8626 Bugfix 2019-11-07 20:12:41 +00:00
billz 35894bc4fc Minor: messages 2019-11-07 20:12:23 +00:00
billz a66bb13703 Cleanup + error handling 2019-11-07 18:04:41 +00:00
billz c5c283b2e3 Merge branch 'extend-installer' of https://github.com/billz/raspap-webgui into extend-installer 2019-11-07 17:13:36 +00:00
billz 3a0540c266 Replace $certname with $HOSTNAME 2019-11-07 16:45:21 +00:00
Bill Zimmerman 4b022dfd84
Merge branch 'master' into extend-installer 2019-11-07 14:58:10 +01:00
billz bf9647c5bb Update installer paths 2019-11-07 13:48:30 +00:00
billz 76ee50ec96 Cleanup debug output 2019-11-07 13:36:21 +00:00
billz 1786d65809 Update .gitignore 2019-11-07 13:30:02 +00:00
billz 2f0db78955 Added usage notes, handle default & known cases 2019-11-07 13:29:42 +00:00
billz fbcb6c3836 Updated install_complete help text 2019-11-07 13:24:06 +00:00
billz 7914110a77 Added configure_lighttpd() 2019-11-07 12:33:17 +00:00
billz 23d1ab83c7 Update version method 2019-11-07 10:41:56 +00:00
billz 5f4bd25ddc WIP 2019-11-07 10:41:05 +00:00
billz 61fe3cc6ee Removed trailing slash on webroot prompt 2019-11-07 10:35:17 +00:00
Bill Zimmerman 8ef78878fd
Replace jq with grep. Resolves #427 2019-11-07 10:26:25 +01:00
billz de56289ca6 Generalize installer 2019-11-07 08:44:13 +00:00
billz cf63968ca3 Initial commit 2019-11-07 08:39:54 +00:00
billz b0c874254a Move shared functions 2019-11-07 08:39:33 +00:00
Bill Zimmerman 966f5319a0
Merge pull request #426 from glaszig/conflict-free-config
handle configuration in a conflict-free way
2019-11-06 10:35:06 +01:00
glaszig 313852a698 handle configuration in a conflict-free way
* config defaults in includes/defaults.php
* removed includes/config.php, added to gitignore
* during installation copy config/config.php
  to includes/config.php
2019-11-05 15:30:08 +01:00
billz 25c4b965eb Added install option for web root. Resolves #294 2019-11-05 07:25:48 +00:00
Bill Zimmerman c75788e31c Get latest release version from GitHub API 2019-11-04 18:18:33 +01:00
Bill Zimmerman 1d45ef7f2c Display release version in welcome msg 2019-11-04 18:17:30 +01:00
billz 1bc99e6729 Replaces absolute paths w/ relative. Enables #294 2019-11-04 16:15:04 +00:00
billz 43af89cd2e Minor: cleanup 2019-11-04 15:57:45 +00:00
billz aedddfe0d7 Update messages & recompile .mo files 2019-11-04 12:15:17 +00:00
Bill Zimmerman d0454a05ad Update en_US messages 2019-11-04 12:19:26 +01:00
billz bcdadd3d43 Parse/set static ip_address value for uap0. #329 2019-11-04 10:04:11 +00:00
billz fdef2a3d7a Parse/set dhcp-range & dhcp-option values from system config. #329 2019-11-04 09:40:23 +00:00
billz 8f9d494437 Adjust chartjs linkQuality graph 2019-11-03 17:02:45 +00:00
billz 0b9f7d232e Replace empty values with placeholder 2019-11-03 09:45:55 +00:00
Bill Zimmerman 5d265ed284
Update screenshot 2019-11-01 19:12:31 +01:00
Bill Zimmerman b1f9312175
Merge pull request #416 from billz/bootstrap4
Bootstrap 4 / SB Admin 2 v4 update
2019-11-01 18:30:32 +01:00
Bill Zimmerman 057ccbc9c1
Update 2.0 release 2019-11-01 18:29:44 +01:00
billz aea38439ef Minor: fix indents 2019-11-01 16:02:22 +00:00
billz 5ba9122aaa Added @media query to optimize display on small devices 2019-11-01 09:11:48 +00:00
billz 7f384e9ff1 Abbreviate serviceStatus for small devices 2019-11-01 09:10:24 +00:00
billz 5a3f27ea73 Minor: fix indents 2019-11-01 09:09:38 +00:00
billz 929fbd2572 Standardize card-headers 2019-11-01 09:08:49 +00:00
Bill Zimmerman 1779aa73a5
Update BACKERS.md 2019-10-31 22:34:44 +01:00
Bill Zimmerman 28b586ab4f
Update README.md 2019-10-31 22:09:31 +01:00
Bill Zimmerman 2eaa3afafa
Update FUNDING.yml 2019-10-31 22:08:32 +01:00
Bill Zimmerman f930eb3fee
Update README.md 2019-10-31 20:54:33 +01:00
Bill Zimmerman a06c47a861
Update README.md 2019-10-31 20:48:16 +01:00
Bill Zimmerman b5adc68118
Create FUNDING.yml 2019-10-31 20:43:48 +01:00
billz 23c60010b3 Update release version 2019-10-31 09:14:10 +00:00
billz b72087db64 Fix: load linkquality.js 2019-10-31 09:06:35 +00:00
Bill Zimmerman b6c4f6c8e8
Update with link to raspap-awesome list 2019-10-30 14:43:17 +01:00
Bill Zimmerman 10f09a346f
Update translations. Resolves #421 2019-10-30 08:14:08 +01:00
billz 35177d32ba Style tweaks 2019-10-29 18:30:07 +00:00
billz c557a846f0 Update cookie cname, fix class to center sidebar toggler 2019-10-29 14:19:49 +00:00
billz e054a963f6 Adjust sidebar toggle behavior on >768 displays 2019-10-29 14:18:16 +00:00
billz 7b02c1fa72 Remove easing transition on sidebar toggle 2019-10-29 14:07:54 +00:00
billz 8726456168 Remove toggle state from window load/resize 2019-10-29 10:03:28 +00:00
billz 7ca6a859ef Read sidebar togglestate from cookie, conditonally load linkquality.js 2019-10-29 10:02:06 +00:00
Bill Zimmerman 794aaf1a88 Compile 한국어 machine object (.mo) file 2019-10-28 21:36:19 +01:00
billz f9b9329182 Cleanup 2019-10-28 20:22:32 +00:00
billz 59472b1b89 Update help-block text to match gettext msg 2019-10-28 20:21:06 +00:00
Bill Zimmerman 253b3cddc4 Added support for Indonesian, 한국어, 日本語 & Tiếng Việt 2019-10-28 21:18:40 +01:00
Bill Zimmerman 1a0a801a11 Added Tiếng Việt translation 2019-10-28 20:57:15 +01:00
Bill Zimmerman d47fe50a24 Added 한국어 translation 2019-10-28 20:56:49 +01:00
Bill Zimmerman f90134bba2 Added 日本語 translation 2019-10-28 20:56:26 +01:00
Bill Zimmerman 9b9ccfb7eb Added Indonesian translation 2019-10-28 20:55:42 +01:00
Bill Zimmerman bb34935b1e Updated cs_CZ messages 2019-10-28 20:54:59 +01:00
Bill Zimmerman e7eb3278e2
Merge pull request #418 from billz/translation-update
Update messages for supported translations
2019-10-28 18:53:19 +01:00
billz ac29197364 Override SB Admin2 sidebarToggle function 2019-10-28 16:28:48 +00:00
Bill Zimmerman a4ce7b1236 Update supported translations. Resolves #417 2019-10-28 15:18:37 +01:00
Bill Zimmerman d49a77edc6
Merge pull request #420 from dalmago/translation-update
Updating pt-BR translation
2019-10-28 08:49:00 +01:00
Matheus Dal Mago c131fb4c17 Updating pt-BR translation 2019-10-27 15:31:29 -03:00
Bill Zimmerman 06c264c358 Update messages 2019-10-25 19:52:27 +02:00
Bill Zimmerman 0afcd47aa4 Remove duplicate msgid 2019-10-25 19:44:00 +02:00
Bill Zimmerman 0c2186255a Update en_US messages 2019-10-25 19:37:17 +02:00
billz e25a67b325 Update fontawesome icon 2019-10-24 23:36:22 +01:00
billz 9d38e6a806 Update OpenVPN + Tor to bootstrap4. Todo: templatize 2019-10-24 23:35:59 +01:00
billz cd555f6b13 Update fontawesome icons 2019-10-24 23:34:22 +01:00
billz 9d9adf3803 Removed extra <div>, fixed malformed display 2019-10-24 22:47:06 +01:00
billz 10b894546c Tweaked style for active nav-item 2019-10-24 22:45:51 +01:00
billz 4c72ae67ee Tweaked styles for active nav-item 2019-10-24 22:24:36 +01:00
billz 46da9b91e7 Adds active class to current nav-item 2019-10-24 22:23:57 +01:00
billz a126b9c8c2 Standardized on col-md-6 2019-10-24 21:42:03 +01:00
billz b98f2f1a02 Classes for sidebar toggle/hide on small displays 2019-10-24 21:41:03 +01:00
billz b5ffdb47ec Toggle sidebar, overrides SB Admin 2 behavior 2019-10-24 21:38:33 +01:00
billz 10c680a31a Removed obsolete timeline.css 2019-10-24 09:37:06 +01:00
billz ad98ec6d6d Delete obsolete sidebar load/resize function 2019-10-23 12:19:39 +01:00
billz dc85b41256 Style tweaks 2019-10-22 09:03:13 +01:00
billz 0287abf9ac Update labels with gettext alias _() 2019-10-22 09:02:21 +01:00
billz 5bbf52e3b6 Update label for gettext support 2019-10-22 09:01:44 +01:00
billz 314475050f Fix label to support gettext string match 2019-10-22 09:01:01 +01:00
billz cdf925c31a Update labels with gettext alias _() 2019-10-22 08:59:55 +01:00
Bill Zimmerman 794d298b45
Update messages.po 2019-10-21 23:57:48 +02:00
Bill Zimmerman e1395b845f Update messages for supported translations 2019-10-21 23:18:52 +02:00
billz 214c590b18 Reduced brightness 2019-10-20 21:58:53 +01:00
Bill Zimmerman 093080cb49
Merge branch 'master' into bootstrap4 2019-10-20 22:33:09 +02:00
billz ccff8108f8 Removed text-gray class 2019-10-20 18:31:39 +01:00
billz 669fe09ea4 Removed *-gray classes 2019-10-20 18:30:42 +01:00
billz 1d4211a1e1 Added theming support 2019-10-20 18:29:32 +01:00
billz 01e80c7109 Added getCookie() 2019-10-20 18:26:25 +01:00
billz 7c5bb27902 Style tweak 2019-10-20 18:26:01 +01:00
billz bebaf13c81 Style tweak 2019-10-20 18:25:16 +01:00
billz d0e5bd5692 Update terminal theme 2019-10-20 18:24:56 +01:00
billz 75ab458377 Adjust dataset style 2019-10-20 13:23:06 +01:00
billz 493559c13f Style tweaks 2019-10-20 13:22:23 +01:00
billz 05a00b02c2 Update theme 2019-10-20 11:04:26 +01:00
billz 741c14a583 Remove datatables js (redundant jquery) 2019-10-19 23:28:59 +01:00
billz 84dc254cb0 Added datatables css/js 2019-10-19 23:26:35 +01:00
billz 8489f49999 Rename function to drawLinkQ 2019-10-19 22:56:26 +01:00
billz bc07a78559 Migrate morris chart to chartjs 2019-10-19 22:36:43 +01:00
billz 185115561a Migrate morris chart to chartjs 2019-10-19 22:13:50 +01:00
billz 237c246ee6 Adjusted toggle spacing 2019-10-18 09:12:54 +01:00
billz da6a388fc3 Styled sidebar toggle 2019-10-18 09:12:30 +01:00
billz 7e3e830d00 Updated /dist with missing dependencies 2019-10-18 09:09:54 +01:00
billz 40008ea799 Update gulp.src datatables 2019-10-18 09:08:47 +01:00
billz 193813feba Fix indents + comments 2019-10-15 21:08:27 +01:00
billz d25b8cb4d9 Align rescan button 2019-10-15 21:07:44 +01:00
billz b29bbf4f11 Replace HTML linebreaks in ConvertToSecurity() 2019-10-15 21:07:21 +01:00
billz ea578fcd5f Tweak styles 2019-10-15 21:06:25 +01:00
billz f0ab44a9fe Minor: update comment 2019-10-15 21:06:07 +01:00
billz ef25e83794 Added info-item-wifi class 2019-10-15 18:29:00 +01:00
billz b025048771 Stacked horizontal cards 2019-10-15 18:28:34 +01:00
billz d264a888bc Work in progress 2019-10-15 13:47:34 +01:00
billz 05f466491f Update w/ new fontawesome icon 2019-10-15 13:46:10 +01:00
billz 457347836c Adjust layout, apply bootstrap4 classes 2019-10-15 13:45:35 +01:00
billz 3ecb5d2f49 Tweak bootstrap4-toggles 2019-10-15 13:44:47 +01:00
billz 8b200b3aec Update sidebar w/ new fontawesome icon 2019-10-15 13:43:47 +01:00
billz 2121da9bcd Style tweaks 2019-10-15 13:43:20 +01:00
billz d8e13795d9 Fix display issue, indents for readability 2019-10-15 10:17:29 +01:00
billz dbc3ff4950 Update systemLoadPercentage() 2019-10-15 10:11:51 +01:00
billz ab8648c3e5 Update yarn install 2019-10-15 01:18:03 +01:00
billz f31dcd3660 Update with bootstrap4-toggle 2019-10-15 01:17:42 +01:00
billz 1f60b72f30 Tweak bootstrap-toggle 2019-10-15 01:17:13 +01:00
billz 30741359f0 Update dependencies 2019-10-15 01:16:28 +01:00
billz 2d93085d35 Update gulp build 2019-10-15 01:15:59 +01:00
billz 7c1eba1fe7 Removed obsolete component 2019-10-15 01:15:25 +01:00
billz 5be23d9b33 Replaced obsolete component. long live bootstrap4-toggle! 2019-10-15 01:14:30 +01:00
billz 84d2f519d1 Update set linkQ 2019-10-15 00:04:17 +01:00
billz c4a5ec4300 Adjust info-item 2019-10-15 00:02:05 +01:00
billz 58870076b1 Update info-item display 2019-10-15 00:01:22 +01:00
billz ce944f92bb Rebase master 2019-10-14 23:33:41 +01:00
billz 8240be30d0 Rebase + fix indents 2019-10-14 23:18:39 +01:00
Bill Zimmerman 68605b9377
Merge pull request #410 from yusnel-rojas/dnsmasq-dns-options
support dns options in dnsmasq configuration
2019-10-15 00:00:39 +02:00
billz ac3197f7f6 Numerous presentation fixes/tweaks 2019-10-14 21:57:29 +01:00
billz 73914b9c08 Update fontawesome class 2019-10-14 21:56:45 +01:00
billz b3d736cb61 Tweak card-header 2019-10-14 21:21:56 +01:00
billz ff17a0f7ad Tweak card-header + h4 margins 2019-10-14 21:21:00 +01:00
billz 0a4ee3a18b Tweak card-header spacing, add missing footer 2019-10-14 21:20:10 +01:00
billz 8238ae524c Tweak card-header spacing, add missing h4 2019-10-14 21:19:46 +01:00
billz 8b90d25a63 Added iface-status indicator 2019-10-14 21:18:16 +01:00
billz 04d2398c77 Add service-status indicator 2019-10-14 21:17:27 +01:00
billz d517669c9f Add service-status indicator 2019-10-14 21:17:20 +01:00
billz 578d5a981a Style nav-tabs, service-status 2019-10-14 21:16:11 +01:00
billz 5c5ff6c5bb Add linkquality.js 2019-10-14 11:33:02 +01:00
billz 71fe3165e6 Shift wireless info left column + link quality meter 2019-10-14 11:32:40 +01:00
billz ea04aa1fac Initial commit 2019-10-14 11:31:29 +01:00
billz 5f79533ae7 Addded card-footer 2019-10-13 23:49:37 +01:00
billz 1599476881 Mostly sidebar 2019-10-13 23:48:52 +01:00
billz 2b6fa0c4df Work in progress 2019-10-13 23:48:09 +01:00
billz dd7354fc84 Work in progress 2019-10-13 18:03:32 +01:00
billz a479911a63 Add vendor component from gulp build 2019-10-13 00:27:25 +01:00
billz dbfe48776c Update .gitignore 2019-10-13 00:26:21 +01:00
billz 7712d9f4be Work in progress 2019-10-13 00:25:35 +01:00
billz a8e3687bdd Deprecate legacy object 2019-10-13 00:25:03 +01:00
billz 54816ec10f Fix header icons 2019-10-13 00:23:00 +01:00
billz 1c90cb114f Style tweak 2019-10-13 00:22:10 +01:00
billz cdf38cb498 Fix vendor path 2019-10-13 00:21:47 +01:00
billz 40e408dd98 Work in progress 2019-10-12 23:04:27 +01:00
billz 6880f54178 Replace sb-admin2 bootstrap 3.x dependencies 2019-10-11 20:42:13 +01:00
billz 915b40ab7d Update classes for bootstrap 4 2019-10-11 20:39:35 +01:00
billz 0be6cb9651 Update yarn install 2019-10-11 20:38:49 +01:00
billz 94a374096f Update dependencies 2019-10-11 20:38:25 +01:00
billz 5b8f7056dc Update for sb-admin-2 4.0.7 2019-10-11 20:37:59 +01:00
billz 78c10a5425 Update gulp build for dependency changes 2019-10-11 20:36:00 +01:00
Yusnel Rojas Garcia 4d45afa27b support dns options in dnsmasq configuration 2019-10-11 13:24:22 -04:00
billz ee2bddcd80 Update /dist from gulp build 2019-10-11 00:34:31 +01:00
billz cf69881767 Merge branch 'master' of https://github.com/billz/raspap-webgui 2019-10-10 23:04:12 +01:00
billz d66d11ea02 Update paths 2019-10-10 23:03:28 +01:00
Bill Zimmerman c7ad786348
Update README.md 2019-10-10 21:06:03 +02:00
billz 976ae2a6bb Update release version 2019-10-10 18:17:39 +01:00
billz 80c343080f Recompile .mo 2019-10-10 16:57:41 +01:00
billz 76f591ddac Update last-translator 2019-10-10 16:52:12 +01:00
billz 33b8017181 Update sudo_add() with $raspap_user. Resolves #409 2019-10-10 08:34:40 +01:00
billz cee0f80164 Remove obsolete css reference, update comments 2019-10-08 19:22:55 +01:00
billz b9194672f6 Deprecated obsolete files 2019-10-08 19:12:22 +01:00
billz 485ea29270 Update path 2019-10-08 19:10:41 +01:00
billz 3fa1be1cd6 Update include path 2019-10-08 19:10:18 +01:00
billz 0eece20f0b Update path 2019-10-08 19:09:39 +01:00
billz c4f0d9125d Moved project resource to /app 2019-10-08 19:09:10 +01:00
billz 3e15a54db9 Moved project resource to /app 2019-10-08 19:08:53 +01:00
billz 4752700682 Update url 2019-10-08 19:08:25 +01:00
billz 0ff78301d6 Reorg/standardize project directories 2019-10-08 19:07:38 +01:00
billz 1256f44bbb Reorg/standardize project directories 2019-10-08 19:07:18 +01:00
billz 2beb36c351 Moved to /app, standardize directory structure 2019-10-08 19:00:10 +01:00
billz f681326240 Moved to /app, standardize directory structure 2019-10-08 19:00:03 +01:00
billz c26cb40a80 Standardize project directory structure, in line with gulp build 2019-10-08 18:58:46 +01:00
billz e78606f233 Cleanup/reorg project dependencies 2019-10-08 18:55:45 +01:00
billz c81888e716 Cleanup/reorg project dependencies 2019-10-08 18:55:30 +01:00
billz ad1db22661 Create /dist to reflect updated gulp build 2019-10-08 18:53:51 +01:00
billz 4c5d2dd16f Deprecate obsolete files, move project .js to /app/js 2019-10-08 18:38:32 +01:00
billz d1558413d4 Update paths to reflect gulp build 2019-10-08 18:36:31 +01:00
billz 11bdecf8b7 Update paths in line with gulp build 2019-10-08 18:35:32 +01:00
billz 8009c6a427 Update .gitignore 2019-10-08 18:34:39 +01:00
billz 1d77571fae Deprecated /vendor in line with gulp build 2019-10-08 18:33:37 +01:00
billz 78c496df87 Initial commit 2019-10-08 18:31:14 +01:00
billz 2ad8ded664 Refactored for better handling of 3rd party dependencies 2019-10-08 18:30:46 +01:00
billz edb2c1ce4d Update dependencies, project info 2019-10-08 18:27:31 +01:00
billz 0b067ace70 deprecated in favor of yarn. long live yarn! 2019-10-08 18:23:36 +01:00
billz fe2d01f42f Added comment block with command-line options 2019-10-06 23:59:21 +01:00
billz 7d8cce9fb1 Update release version 2019-10-06 12:43:45 +01:00
billz 40bc7a7d51 Update release version 2019-10-06 12:43:35 +01:00
billz 5b83249fcf Update release version 2019-10-06 12:43:30 +01:00
billz 12cda4a833 Merge branch 'master' of https://github.com/billz/raspap-webgui 2019-10-04 19:00:24 +01:00
billz f9afd96280 Fix: update tmp/dnsmasqdata to match sudoers. Resolves #407 2019-10-04 18:57:58 +01:00
Bill Zimmerman b71244c229
Delete feature_request.md 2019-10-01 21:53:13 +02:00
billz 83e6f60cb7 Fix handling of command-line options 2019-09-30 18:58:12 +01:00
billz 3404aeebe0 Updated with $apt_option for non-interactive install 2019-09-30 18:44:03 +01:00
billz 44f6762cb1 Updated with unattended install option. Resolves #397 2019-09-30 18:42:04 +01:00
Bill Zimmerman ddb6dadc30
Update BACKERS.md 2019-09-11 19:41:30 +02:00
billz 009f51c20c Parse/set dhcpcd & dnsmasq values from system config #329 2019-09-08 16:28:01 +01:00
billz 7938069841 Minor: mode change 2019-09-08 16:13:45 +01:00
billz e399450cef Minor: mode change 2019-09-08 16:13:31 +01:00
billz b641e963a9 Minor: mode change 2019-09-08 16:13:25 +01:00
billz 80aa640ac4 Minor: mode change 2019-09-08 16:12:51 +01:00
billz 8be24381a8 Processed with phpcbf for PSR-2 coding standard 2019-09-07 16:42:31 +01:00
billz ef406edc61 Added check for monitor setting. Resolves #378 2019-09-07 09:55:42 +01:00
billz bfc0dba6ad Added monitor option. Resolves #378 2019-09-07 09:53:37 +01:00
Bill Zimmerman 57f46e50e6
Create BACKERS.md 2019-09-03 09:14:59 +02:00
billz 485e33b84b Merge branch 'glaszig-feature/templates' 2019-08-27 16:41:36 +01:00
billz 48c9880a92 Update panel class fix 2019-08-27 16:40:57 +01:00
Bill Zimmerman f59faabf1d
Merge branch 'master' into feature/templates 2019-08-27 15:16:56 +02:00
Bill Zimmerman fb23c98d9f
Merge pull request #389 from glaszig/patch-1
fix panel heading style in network config
2019-08-21 12:03:34 +02:00
Bill Zimmerman d50e0f0fac
Merge pull request #388 from glaszig/fix/hostapd-log
fix hostapd log permissions
2019-08-21 11:54:10 +02:00
glaszig 452ad764d9
fix panel heading style in network config 2019-08-20 22:32:18 +02:00
glaszig 9182c5509c allow raspap to read hostapd log without elevated privileges 2019-08-20 22:17:27 +02:00
Bill Zimmerman 9dcea9c97a
Updated screenshot 2019-08-20 14:50:17 +02:00
Bill Zimmerman 4b4e2514f7
Updated mobile screenshots 2019-08-20 12:42:25 +02:00
Bill Zimmerman cd6cfd1406
Updated screenshot 2019-08-20 11:59:18 +02:00
Bill Zimmerman f2001d4027
Update release version 2019-08-20 11:24:05 +02:00
billz 595a7eafcd Updated version 2019-08-20 10:18:25 +01:00
billz 40d196c9cd Updated version and project title 2019-08-20 10:18:12 +01:00
glaszig 61f38ceda6 removed obosolete js file 2019-08-19 22:37:22 +02:00
glaszig 26fbd78156 replaced CheckPSK dom level 1 events with level 2 event listener-driven implementation 2019-08-19 22:37:22 +02:00
glaszig 611d953141 no need for js to reload the page 2019-08-19 22:37:22 +02:00
glaszig c775744db5 improved password toggle 2019-08-19 22:37:22 +02:00
glaszig 259d3838b5 improved theme dropdown, selected theme detection 2019-08-19 22:37:22 +02:00
glaszig b93763cef8 fixed up themes template 2019-08-19 22:37:22 +02:00
glaszig 2c64ff0b3e removed logic from system template 2019-08-19 22:37:22 +02:00
glaszig 680fa1de87 status messages always render in div tags; wrapping them in p tags is illegal in html 2019-08-19 22:37:22 +02:00
glaszig df429064c6 fixed up dhcp template 2019-08-19 22:37:22 +02:00
glaszig b04661171a fixed up data usage template 2019-08-19 22:37:22 +02:00
glaszig 82274ed1c9 fixed up about template 2019-08-19 22:37:22 +02:00
glaszig 2cd2082499 fixed up networking template 2019-08-19 22:37:22 +02:00
glaszig 89f3330606 use template for network page 2019-08-19 22:37:22 +02:00
glaszig 33b99c0ae7 use template for hostapd page 2019-08-19 22:37:22 +02:00
glaszig 9defff1cf4 use template for dhcp page 2019-08-19 22:37:22 +02:00
glaszig c1f75a696a use template for data usage page 2019-08-19 22:37:22 +02:00
glaszig 7fcdd5e89c use template for dashboard 2019-08-19 22:37:22 +02:00
glaszig d7ee29aeee use template for configure client page 2019-08-19 22:37:22 +02:00
glaszig e4e9b5c5c1 use template for admin page 2019-08-19 22:35:30 +02:00
glaszig 2215b11c21 use template for themes page 2019-08-19 22:35:29 +02:00
glaszig 0608b6cb22 use template for system page 2019-08-19 22:35:29 +02:00
glaszig 10dd214b17 add class for system information 2019-08-19 22:35:29 +02:00
glaszig 76f905fe9d use template for about page 2019-08-19 22:35:29 +02:00
glaszig 5a49768614 fix renderTemplate() function to allow data-less rendering 2019-08-19 22:35:29 +02:00
Bill Zimmerman 6985322ca0
Merge pull request #387 from glaszig/fix/wifi-stations
restore configuration of multiple networks
2019-08-19 18:50:58 +02:00
glaszig 1c8931c63b restore configuration of multiple networks
fucked up in 993dc633a9
2019-08-19 18:06:15 +02:00
Bill Zimmerman aaa2225e6c
Merge pull request #385 from glaszig/fix/csrf-xhr-race-condition
fix csrf token xhr race condition
2019-08-19 12:16:45 +02:00
glaszig 20d9e919c3 generate only one csrf token per session
some pages issue xhr which lead to new
tokens in the session and a future check
is garuanteed to fail.
2019-08-19 03:12:37 +01:00
Bill Zimmerman df81ce2a07
Deprecated in favor of new issue template workflow 2019-08-17 17:01:06 +02:00
Bill Zimmerman 3ea96f716d Update issue templates 2019-08-17 16:59:20 +02:00
Bill Zimmerman 9531b09335
Update ISSUE_TEMPLATE.md 2019-08-17 16:50:59 +02:00
billz f634617dcb Minor: fixed indents 2019-08-17 14:53:14 +01:00
billz 82d5b45cdd Added min-height to .js-wifi-stations, fixed indents 2019-08-17 14:52:52 +01:00
Bill Zimmerman 5858971762
Merge pull request #372 from glaszig/ui/xhr-load-cached-wifi-stations
load wifi stations via ajax, cache the scan result
2019-08-17 09:53:13 +02:00
Bill Zimmerman 1746d5b034
Merge pull request #376 from glaszig/fix/csrf-token-field-tags
fix csrf token field tags
2019-08-17 00:57:36 +02:00
glaszig d2bb1b02b5 move CSRFTokenFieldTag up to the opening form tag
for style and discoverability
2019-08-14 02:44:13 +02:00
glaszig f5e3b717ff add missing CSRFTokenFieldTag's 2019-08-14 02:41:58 +02:00
billz 99b0c04ef2 Bugfix in sudoers. Resolves #373 2019-08-13 00:11:10 +01:00
billz 9cb564a15f Processed with phpcs for PSR-2 coding standard 2019-08-12 11:02:40 +01:00
Bill Zimmerman 5b041e6899
Merge pull request #375 from glaszig/fix/network-config-display
network config: properly check radio buttons
2019-08-12 11:25:15 +02:00
Bill Zimmerman d124e68275 Processed with phpcs for PSR-2 2019-08-12 11:22:06 +02:00
Bill Zimmerman 6d347f9a52
Merge pull request #374 from glaszig/feature/rpi4b
add RPI 4
2019-08-12 11:12:26 +02:00
glaszig 63c3fc57f0 parse interface config ini the same as in 6e33e4c (#348)
when showing network config. this makes the proper
radio button be checked.
2019-08-10 12:38:44 +02:00
Bill Zimmerman e2f07044b4
Merge pull request #362 from glaszig/feature/ap-client-limit
make hostapd's max_num_sta configurable
2019-08-10 12:13:30 +02:00
sunnybank101 f3e3beb0ce add RPI 4 2019-08-10 12:09:04 +02:00
glaszig 3f9d176793 show current nax_num_sta as input value,
make field description translatable
2019-08-10 11:57:10 +02:00
Bill Zimmerman 6286595898
Merge pull request #369 from glaszig/fix/arp-speed
speed up dashboard
2019-08-09 18:02:54 +02:00
Bill Zimmerman b878e87cae
Merge pull request #371 from glaszig/ui/layout-fixes
layout improvements
2019-08-09 16:34:14 +02:00
glaszig 916072f7fd bootstrap panel-footer goes directly after panel-body
https://getbootstrap.com/docs/3.3/components/#panels-footer
2019-08-09 16:21:58 +02:00
billz 165b9865cf Apply service-status to theme 2019-08-08 22:14:21 +01:00
billz 97efe3a516 Update unstyled elements 2019-08-08 22:07:05 +01:00
Bill Zimmerman a00f1be009
Merge pull request #366 from glaszig/feature/improved-service-status-indicator
improved service status display
2019-08-08 20:55:04 +02:00
glaszig 993dc633a9 load wifi stations via ajax, cache the scan result
until the "rescan" button is pressed. speeds up
"configure client" page massively.
2019-08-08 03:44:28 +02:00
Bill Zimmerman 7dd80f6098
Merge pull request #370 from glaszig/fix/csrf
fix csrf verification
2019-08-08 00:23:58 +02:00
glaszig 56097d5629 send proper csrf header 2019-08-08 00:14:12 +02:00
glaszig 1fddad190f fix require paths 2019-08-07 23:51:22 +02:00
glaszig c1da509053 remove superfluous, overly nested html (mainly bootstrap panels) 2019-08-07 23:16:56 +02:00
sunnybank101 62c7e99465 arp can take for ever
added -n to the arp command to speed it up!
2019-08-07 22:48:59 +02:00
billz b5f875cce7 Updated CSRFTokenFieldTag 2019-08-07 21:01:05 +01:00
Bill Zimmerman f6f85d1c11
Merge pull request #356 from glaszig/security/always-verify-csrf-token
always verify csrf token for resource-modifying requests
2019-08-07 21:53:39 +02:00
billz e4757a06ae Minor: use install_log for raspap.service 2019-08-07 09:28:20 +01:00
billz 10e0aaf1ab Update .gitignore 2019-08-06 23:01:15 +01:00
Bill Zimmerman d4d6dbd79b
Merge pull request #360 from glaszig/installer/cp-instead-of-mv
installation: do not move files out of git tree
2019-08-06 22:45:01 +02:00
glaszig 47cc1bdc33 cleaner jquery ready callback 2019-08-06 22:42:50 +02:00
glaszig 752e8ccf66 improve global ajax event handling 2019-08-06 22:41:29 +02:00
glaszig c70433585a move all other favicon-types into dist/icons folder,
point to icons via link and meta tags,
leave favicon.ico in root old browsers,
added custom jekyll layout file to use the icons
for the project website as well.

https://help.github.com/en/articles/customizing-css-and-html-in-your-jekyll-theme
https://github.com/pages-themes/minimal/blob/master/_layouts/default.html
https://stackoverflow.com/a/48969053
2019-08-06 22:24:13 +02:00
glaszig 2104ccb91a favicons and sorts can stay in subdirectories
and be pointed to by proper meta tags.
do not copy these around during installation and poison the git tree.
2019-08-06 21:36:52 +02:00
glaszig 748348f407 during installation copy files from the git working tree
to their destinations instead of moving them and making
git think they got deleted
2019-08-06 21:36:52 +02:00
glaszig da69d3d768 send CSRF token in a response header,
update the page's CSRF tokens with the new token
from the response header,
verify csrf token in ajax endpoints,
initialize a session for every endpoint
2019-08-06 21:34:58 +02:00
glaszig 8f3489cd4a remove id attribute from csrf token field due to obsolescence
and if there's multiple form's on the page it would lead to
multiple elements with the same id which is illegal in html
2019-08-06 20:55:16 +02:00
glaszig f36b08c10a rename CSRFToken() to the more apt CSRFTokenFieldTag() 2019-08-06 20:55:16 +02:00
glaszig 0a255e8b49 don't write the csrf token field to the output buffer
but return and echo it
2019-08-06 20:55:16 +02:00
glaszig 6f1ae104f3 improve CSRFToken() implementation 2019-08-06 20:55:16 +02:00
glaszig 2f6dc2cc05 remove superfluous semi-colon 2019-08-06 20:55:16 +02:00
glaszig 964dc00fab generate a new csrf token for each request 2019-08-06 20:55:16 +02:00
glaszig 7898dc24c8 mcrypt_create_iv is deprecated, openssl_random_pseudo_bytes
depends on openssl. php7 has the platform-independent
`random_bytes` to generate "cryptographically secure"
random data. use that for csrf token.
2019-08-06 20:55:16 +02:00
glaszig 490cb14acd removing superfluous call to CSRFToken() which
just put the hidden input onto the page for js
to have access to it. this is now handled with
a meta tag.
2019-08-06 20:55:16 +02:00
glaszig b38dbb82ab do net send csrf tokens individually with post xhr
since we set it in a `beforeSend` callback
2019-08-06 20:55:16 +02:00
glaszig b9e9b7fe39 move csrf token initialization into function 2019-08-06 20:55:16 +02:00
glaszig d53517a34a removed useless line of code 2019-08-06 20:55:16 +02:00
glaszig 0967a53152 validate token value from csrf token header
if supplied and not overridden by post request param
2019-08-06 20:55:16 +02:00
glaszig ce3ec131a6 add csrf token header to all resource-modifying xhr 2019-08-06 20:55:16 +02:00
glaszig 20bb9fe42f add csrf meta tag (for use with xhr, for example) 2019-08-06 20:55:16 +02:00
glaszig 87fe8948b8 remove splattered, duplicated csrf validation code
since we do that always and early, now.
2019-08-06 20:55:16 +02:00
glaszig f989b8060b always verify csrf token for resource-modifying requests,
that is post, put, patch, delete
2019-08-06 20:55:16 +02:00
Bill Zimmerman 93b458197a
Merge pull request #365 from glaszig/feature/connect-hidden-ssid
enable wifi client to connect to hidden ssid
2019-08-05 16:04:29 +02:00
Bill Zimmerman 9b66c2cd03
Merge pull request #363 from glaszig/fix/hostapd-wmm
properly enable wmm by fixing a typo
2019-08-05 15:46:10 +02:00
billz c0cfcfa117 Bugfix, resolves #367 2019-08-05 14:26:55 +01:00
glaszig 1152637120 puts service status as label into panel heading 2019-08-02 23:40:06 +02:00
Bill Zimmerman 02c3703392
Merge pull request #355 from glaszig/ui/escape-interface-settings
show network interface settings pre block, properly escaped
2019-08-02 18:25:27 +02:00
Bill Zimmerman ff21343751
Merge branch 'master' into ui/escape-interface-settings 2019-08-02 18:18:19 +02:00
Bill Zimmerman fe35742519
Merge pull request #361 from glaszig/feature/static-dhcp-hosts
static dhcp leases
2019-08-02 17:49:29 +02:00
glaszig 493269e061
enable wifi client to connect to hidden ssid
according to the docs:
For finding networks using hidden SSID, scan_ssid=1 in the network block can be used with nl80211.

and

scan_ssid:
	0 = do not scan this SSID with specific Probe Request frames (default)
	1 = scan with SSID-specific Probe Request frames (this can be used to
	    find APs that do not accept broadcast SSID or use multiple SSIDs;
	    this will add latency to scanning, so enable this only when needed)

https://w1.fi/cgit/hostap/plain/wpa_supplicant/wpa_supplicant.conf

see billz/raspap-webgui#345
2019-08-02 14:42:15 +02:00
Bill Zimmerman 2ded7be76b
Merge pull request #364 from glaszig/feature/improved-hostapd-hw-mode-select-labeling
improved 802.11 mode dropdown
2019-08-02 07:36:04 +02:00
glaszig b52f290020 improved 802.11 standard select option labels in hostapd ui 2019-08-01 23:01:31 +02:00
glaszig 0e9ed7d833 make hostapd's max_num_sta configurable 2019-08-01 22:42:52 +02:00
glaszig ab7f990d13
properly enable wmm by fixing a typo
if `ieee80211n=1`, `wmm_enabled=1` should be configured as well
according to the docs, quote:

# ieee80211n: Whether IEEE 802.11n (HT) is enabled
# 0 = disabled (default)
# 1 = enabled
# Note: You will also need to enable WMM for full HT functionality.
# Note: hw_mode=g (2.4 GHz) and hw_mode=a (5 GHz) is used to specify the band.

https://w1.fi/cgit/hostap/plain/hostapd/hostapd.conf
2019-08-01 22:19:46 +02:00
glaszig afbc50d1ee click the "add" button on the static dhcp lease form
for people that forgot to click that button to add their lease
2019-08-01 18:15:32 +02:00
glaszig d18dbd7def add ui to manage static dhcp leases
* add support to parse duplicate options in ParseConfig()
* add logic, html and js to edit dhcp leases
2019-08-01 18:15:32 +02:00
glaszig e02557af3a add pre.unstyled css rule
in bootstrap, pre blocks have background and borders.
this removes them with a special class named `unstyled`
just like `ul.unstyled`.
2019-07-31 04:04:38 +02:00
glaszig 3db99c7d21 * escape html entities in network interface settings
the command `ip address show eth0` returns
special characters like "<" and ">" which, if left
unescaped and shown on the page, will create
arbitrary html elements and hide information.

* show interface settings inside unstyled pre block

interface properties should be parsed and displayed
in a proprietary and pretty manner. until then, give
use the raw output of `ip address show`
2019-07-31 04:04:38 +02:00
Bill Zimmerman 1b32ed53d6
Merge pull request #358 from glaszig/fix/dashboard-ipv6-addresses
fix display of ip addresses in dashboard
2019-07-30 19:03:32 -07:00
Bill Zimmerman 809051165b
Merge pull request #357 from glaszig/security/command-injection
SECURITY ISSUE! fix command injection
2019-07-30 19:01:11 -07:00
glaszig c2ed6c6e02 fix display of multiple ipv4 addresses, netmasks on dashboard 2019-07-30 23:15:08 +02:00
glaszig 4a5a39c2bc fix display of ipv6 addresses 2019-07-30 22:49:35 +02:00
glaszig 81a67c0121 better filename 2019-07-30 21:21:16 +02:00
glaszig a6d3336212 fix command injection issue. fixes #354. 2019-07-30 21:21:16 +02:00
Bill Zimmerman d81d1b0a10
Update README.md 2019-07-29 17:36:54 -07:00
Bill Zimmerman 24a7d0ac95
Merge pull request #348 from ozbotics/fix-issue-347
Changes made using the 'Configure networking' page are not reflected in the actual network configuration Issue #347
2019-07-25 09:14:17 -07:00
Jon van Noort 6e33e4c882 changed call to parse_ini_file() to use INI_SCANNER_RAW, so that ini values are parsed as expected 2019-07-18 04:17:19 +08:00
billz 76d23e33f9 Hotfix 2019-07-10 07:46:58 +01:00
Bill Zimmerman be635e773c
Update manual install steps 2019-07-09 00:20:18 +02:00
Bill Zimmerman a280c9df89
Updated to support Buster "stable" release 2019-07-08 21:49:38 +02:00
Bill Zimmerman 40a1b46dfc
Update README.md 2019-06-29 10:14:25 +02:00
Bill Zimmerman 4940255cc6
Minor update to version_msg 2019-06-29 09:54:29 +02:00
Bill Zimmerman acd58ce557
Minor update to version_msg 2019-06-29 09:51:36 +02:00
Bill Zimmerman 38ac3f904c
Update manual install steps for Buster 2019-06-28 10:12:07 +02:00
Bill Zimmerman 374192ebe1
Update README.md 2019-06-28 10:08:32 +02:00
billz f9b5a8f126 Updated php version for Raspbian 10.0 (Buster) 2019-06-25 07:40:08 +00:00
billz 913ce3b5c0 Updated php version for Raspbian 10.0 (Buster) 2019-06-25 07:40:02 +00:00
billz de8bdef908 Updated to detect Raspbian 10.0 (Buster) 2019-06-24 22:14:38 +00:00
billz 13aa0864d0 Updated to detect Raspbian 10.0 (Buster). Resolves #337 2019-06-24 21:57:49 +00:00
billz cdf1406aba Added prompt to remove installed packages. Resolves #336 2019-06-24 21:42:15 +00:00
Bill Zimmerman 463b1978d0
Update README.md 2019-06-12 21:16:34 +02:00
Bill Zimmerman 470d6ac707 Updated minor version 2019-06-12 21:14:26 +02:00
Bill Zimmerman f5e3b0dd31 Updated minor version 2019-06-12 21:14:12 +02:00
Bill Zimmerman 202804c294
Update README.md 2019-06-11 12:37:29 +02:00
Bill Zimmerman 42ecbde838
Updated supported translations 2019-06-10 11:37:39 +02:00
billz a741f003e0 Updated with translator credit. Thanks Cuqer! 2019-06-10 09:28:45 +00:00
billz 679051b219 Added locale support for Türkçe. Thanks Cuqer! 2019-06-10 09:27:42 +00:00
billz 6866cfb266 Added locale support for Türkçe. Thanks Cuqer! 2019-06-10 09:27:17 +00:00
Bill Zimmerman 2435e0e639 Compiled .mo file for Türkçe translation 2019-06-10 10:55:36 +02:00
Bill Zimmerman d811f49cfc Added Türkçe language translation. Thanks Cuqer 2019-06-10 10:54:59 +02:00
Bill Zimmerman c0f2e45e13 Recompiled .mo file 2019-06-10 10:53:12 +02:00
Bill Zimmerman b7b477dcdb Fixed .po file encoding 2019-06-10 10:52:56 +02:00
Bill Zimmerman 9436a56e71
Update README.md 2019-06-06 14:56:15 +02:00
Bill Zimmerman 475fc347d2
Update README.md 2019-06-06 13:43:21 +02:00
billz 445ba5c36c Fix for auth protocols, thanks @furest. Fixed open wifi network form element. Resolves #326 2019-05-05 11:08:47 +00:00
billz 3f9b422f5f Update safefilerewrite with PHP_EOL 2019-04-30 22:57:12 +00:00
billz 1008f83cc4 Update write_php_ini 2019-04-30 22:36:35 +00:00
billz fc2375ab18 Bugfix + cleanup 2019-04-30 22:19:34 +00:00
billz ce93faa277 Update write_php_ini 2019-04-30 22:18:44 +00:00
billz 93e1fff5d5 Update read WifiManaged interface from config. Resolves #323 2019-04-30 18:30:26 +00:00
billz 1a23316abd Write wifi managed interface to config 2019-04-30 18:29:09 +00:00
billz 5ef015ee88 Merge branch 'master' of https://github.com/billz/raspap-webgui 2019-04-24 22:36:08 +00:00
billz 8d80fc9add Retain some favicons for github pages support 2019-04-24 22:35:15 +00:00
Bill Zimmerman 6045f0a505
Update README.md 2019-04-25 00:24:26 +02:00
billz d247f3fb90 Updated download_latest_files() 2019-04-24 22:20:41 +00:00
billz 8796b5d359 Moved favicons to dist/icons. Updated installer 2019-04-24 22:11:43 +00:00
billz a179ef05e0 Updated with hi-res icons. Resolves #321 2019-04-23 21:30:00 +00:00
Bill Zimmerman eab0ea9f11
Update README.md 2019-04-21 20:27:06 +02:00
billz be24aa2a20 Added prompt to install raspap.service 2019-04-21 10:59:36 +00:00
billz b54289098e Check for presence of raspap/hostapd.ini 2019-04-19 12:23:05 +00:00
billz f73dcd4e99 Install raspap.service daemon 2019-04-19 11:36:09 +00:00
billz 57f42f2019 Added check for WifiAPEnable flag 2019-04-19 11:35:03 +00:00
billz 1e93189a65 Initial commit, RaspAP daemon 2019-04-19 11:33:18 +00:00
Bill Zimmerman f9dee64cdd
Update README.md 2019-04-17 22:14:14 +02:00
Bill Zimmerman 2ccddf3f0a
Update README.md 2019-04-16 15:47:42 +02:00
Bill Zimmerman 29775f0374
Update README.md 2019-04-15 23:03:01 +02:00
Bill Zimmerman 86a3796321
Update README.md 2019-04-15 09:18:20 +02:00
billz c07a41fc61 Connected devices not shown for uap0. Fixes #312 2019-04-13 21:49:48 +00:00
Bill Zimmerman 10c795edf4
Update ISSUE_TEMPLATE.md 2019-04-13 18:39:51 +02:00
Bill Zimmerman 732d88a65d
Update ISSUE_TEMPLATE.md 2019-04-13 18:17:59 +02:00
Bill Zimmerman 7b4717e9f0
Update ISSUE_TEMPLATE.md 2019-04-13 18:16:01 +02:00
Bill Zimmerman b9f9aaa51d
Update README.md 2019-04-13 18:08:21 +02:00
Bill Zimmerman bb97cd4b87
Update README.md 2019-04-13 17:26:15 +02:00
billz dd63294a37 Updated version number 2019-04-13 15:19:13 +00:00
Bill Zimmerman 1c23389270
Update README.md 2019-04-10 11:18:44 +02:00
Bill Zimmerman e9a18d23bb
Update README.md 2019-04-10 11:16:04 +02:00
Bill Zimmerman 272af5ffd2
Updated manual installation 2019-04-10 11:12:32 +02:00
billz 713f52fac4 Minor, fixed indent 2019-04-10 09:02:28 +00:00
Bill Zimmerman fcf4c4dc1f
Update README.md 2019-04-10 10:57:47 +02:00
billz c0570b616e Processed with phpcs for PSR-2 coding standard 2019-04-10 08:37:35 +00:00
Bill Zimmerman 89852cc633
Update README.md 2019-04-09 23:51:50 +02:00
Bill Zimmerman d25002e91e
Update README.md 2019-04-09 21:56:19 +02:00
Bill Zimmerman 969a40d67a
Update README.md 2019-04-09 21:54:15 +02:00
Bill Zimmerman 96717deea1
Merge pull request #297 from billz/wificlient-ap
Wifi client AP mode
2019-04-08 20:22:02 +02:00
billz 2a7891891e Update & recompile messages 2019-04-08 16:01:13 +00:00
billz ffbeb681fe Updated messages 2019-04-08 15:54:18 +00:00
billz 4d2d79b404 Conditional prompt for reboot 2019-04-07 22:13:05 +00:00
billz cc6fe6f2ac Added restart rc-local.service 2019-04-06 08:52:36 +01:00
billz c83f2883ce bugfix: added slashes to iptables rules 2019-04-06 08:36:36 +01:00
Bill Zimmerman 1dd203e974
Update README.md 2019-04-04 16:11:41 +02:00
Bill Zimmerman 078c8d4a4f
Update README.md 2019-04-04 15:11:06 +02:00
Bill Zimmerman 3961d63bad Recomplied .mo file 2019-04-03 08:45:28 +02:00
Bill Zimmerman a586113572
Merge pull request #308 from baba747/patch-2
Little Change To Better Translation #002
2019-04-03 08:42:20 +02:00
Bastien STEVENOOT 91cdbe7108
Little Change To Better Translation #002 2019-04-02 17:47:53 +02:00
Bill Zimmerman 1ac85c5c78 Recomplied .mo file 2019-04-02 16:51:47 +02:00
Bill Zimmerman afab28d0e0
Merge pull request #307 from baba747/patch-1
Little change to Better Translation
2019-04-02 16:48:24 +02:00
Bastien STEVENOOT b4436367a9
Little change to Better Translation 2019-03-31 18:32:43 +02:00
Bill Zimmerman f565bd0caa
New screenshot 2019-03-18 17:09:33 +01:00
Bill Zimmerman 8b4a4842af
Merge pull request #302 from BenjiLeblond08/master
Connected Devices list on Dashboard
2019-03-18 16:58:21 +01:00
billz 2d94a912d5 Updated messages with new dashboard string 2019-03-18 15:53:56 +00:00
billz 10be910657 Bugfix: replaced wlan0 with constant 2019-03-17 20:14:08 +00:00
Benjamin LEBLOND 3d561b1925
Change hard "wlan0" to RASPI_WIFI_CLIENT_INTERFACE 2019-03-17 14:19:13 +01:00
Benjamin LEBLOND 24cb51d2b9
connected device list on dashboard
Display a list of connected devices on dashboard, and update some html
2019-03-17 13:38:08 +01:00
Benjamin LEBLOND 2bcee2145f
Update table raw html markup 2019-03-17 13:33:24 +01:00
billz 8cc5f3a33b Added 8-bit authors image 2019-03-15 12:40:08 +00:00
billz 1e5dd6011b Updated with about page 2019-03-15 12:39:03 +00:00
billz cbb37ff7f5 Initial commit 2019-03-15 12:31:02 +00:00
Bill Zimmerman 57a73e39bd
Update README.md 2019-03-14 19:22:46 +01:00
Bill Zimmerman be1929117a
Bugfix, patch sudoers 2019-03-14 10:50:12 +01:00
Bill Zimmerman 215266874b
Update ISSUE_TEMPLATE.md 2019-03-12 19:28:47 +01:00
Bill Zimmerman 3efe21df5b
Update ISSUE_TEMPLATE.md 2019-03-12 19:28:05 +01:00
Bill Zimmerman cc95befa11
Update ISSUE_TEMPLATE.md 2019-03-12 19:25:23 +01:00
billz d55f83ce16 Deleted servicesdisable.sh 2019-03-12 15:30:09 +00:00
Bill Zimmerman 5f66ff8c4d
Update README.md 2019-03-12 08:45:40 +01:00
billz 8267c9b10a Bugfix 2019-03-12 07:32:17 +00:00
billz b012bae759 bugfix 2019-03-12 00:11:29 +00:00
billz 7d98d12e3b WIP, rewite configs 2019-03-12 00:03:18 +00:00
billz a9cc4a0c2a Removed servicesdisable.sh from sudoers 2019-03-12 00:02:52 +00:00
billz 113f3bfcb8 WIP, config rewriting 2019-03-11 23:47:09 +00:00
billz 96ffbf8374 Added constant for dhcpcd.conf 2019-03-11 23:44:18 +00:00
billz e30fb10da7 Added /bin/cp /etc/dhcpcd.conf to sudoers 2019-03-11 23:43:39 +00:00
Bill Zimmerman 795838662d
Update README.md 2019-03-11 23:38:42 +01:00
billz 9abf79b23c Merge branch 'master' into wificlient-ap 2019-03-09 21:11:54 +00:00
Bill Zimmerman ba7a2904ea
Hotfix: enable hostapd.service 2019-03-09 19:45:27 +01:00
billz e83e99656d Hotfix: unmask hostapd.service 2019-03-09 17:48:51 +00:00
billz bdc5958c4f Cleanup, typo fix 2019-03-07 22:14:27 +00:00
billz 6cf96fd65d Increased sleep value 2019-03-07 22:12:38 +00:00
Bill Zimmerman 61d2aa534f
Merge pull request #293 from BenjiLeblond08/data-usage-hourly
Data Usage : Hourly
2019-03-07 19:20:56 +01:00
billz 192a849cd5 Update default dnsmasq settings 2019-03-07 18:11:58 +00:00
billz 47a2b7c346 Paramaterized service start, handles both uap0 and default 2019-03-07 10:17:16 +00:00
billz a2829dcf78 Added iptables nat rules for uap0 config 2019-03-07 10:15:51 +00:00
billz 1df86a78a9 Updated with paramaterized servicestart 2019-03-07 10:13:40 +00:00
billz b022777e55 Merge branch 'wificlient-ap' of https://github.com/billz/raspap-webgui into wificlient-ap 2019-03-07 10:12:55 +00:00
billz 8a41731513 Added todo for restarting hostapd 2019-03-06 20:07:54 +00:00
billz 12a0675cad Merge branch 'wificlient-ap' of https://github.com/billz/raspap-webgui into wificlient-ap 2019-03-06 19:36:50 +00:00
Bill Zimmerman b851f5d761
Delete services.sh 2019-03-06 20:36:18 +01:00
Bill Zimmerman 667e594984
Delete hostapdstart.sh 2019-03-06 20:36:05 +01:00
Bill Zimmerman 94ad1f75d6
Delete servicesstart.sh 2019-03-06 20:35:44 +01:00
billz 521088b10c Merge branch 'wificlient-ap' of https://github.com/billz/raspap-webgui into wificlient-ap 2019-03-06 19:34:37 +00:00
billz cd3ac06bf1 Renamed 2019-03-06 19:33:40 +00:00
billz c8b2737fbf Renamed 2019-03-06 19:14:17 +00:00
billz 39e9037593 Renamed 2019-03-06 19:14:04 +00:00
billz 5bb549868b Minor: move service control script 2019-03-06 19:13:17 +00:00
billz b9ed8c472e Service renamed 2019-03-06 19:12:32 +00:00
billz 9e95863cce Persist WifiAPEnable to ini, enable uap0 interface in dnsmasq.conf 2019-03-06 18:42:13 +00:00
billz d6bd7d2c4a WIP: WifiAPEnable handling 2019-03-06 13:24:51 +00:00
billz 66a3944039 Minor, updated for rename 2019-03-06 13:22:16 +00:00
billz 7fcf22e4c3 Update create_hostapd_scripts, sudoers 2019-03-06 10:48:18 +00:00
billz 0dbfa71a96 WIP: Advanced options 2019-03-06 10:44:43 +00:00
billz 6b0373dee5 Added bootstrap-toggle css+js 2019-03-06 10:43:36 +00:00
Bill Zimmerman 61a34349a6 Added bootstrap-toggle 2019-03-06 10:02:32 +01:00
Bill Zimmerman 18d60ee1f9 Updated dependencies 2019-03-06 09:59:03 +01:00
Bill Zimmerman ef20f3dd6f Minor, edit comments 2019-03-06 09:58:37 +01:00
Bill Zimmerman d0e9854f46
Update prerequisites 2019-03-06 01:34:34 +01:00
Bill Zimmerman f9f0924d34 Initial commit 2019-03-06 00:57:49 +01:00
Bill Zimmerman bf4f61d536 Added support for wireless client AP mode 2019-03-06 00:55:31 +01:00
Bill Zimmerman bf8b47eaf9 Added uap0 config to support wireless client AP mode 2019-03-06 00:55:01 +01:00
Bill Zimmerman 2d21830143 Added uap0 config 2019-03-06 00:54:29 +01:00
billz 479ac2ce1c Updated list of translations 2019-03-04 23:17:03 +00:00
billz b98837a8a2 Added utility for compiling .mo files 2019-03-04 23:15:00 +00:00
billz b758ac161d Added support for Finnish & Sinhala locales 2019-03-04 23:12:01 +00:00
billz b0c4e54aec Added support for Finnish & Sinhala locales 2019-03-04 23:11:31 +00:00
billz 4f61501794 Added messages for Finish, thanks M4ra 2019-03-04 23:10:29 +00:00
billz c0ae734988 Added messages for Sinhala, thanks Damith 2019-03-04 23:08:41 +00:00
billz 36da039a01 Update minor version number 2019-03-01 10:44:34 +00:00
billz 6a01eed166 (re)fix of #188. Resolves #290 2019-03-01 09:49:15 +00:00
Benjamin Leblond a295cf87c0 new feature data usage hourly 2019-02-27 20:42:36 +01:00
Bill Zimmerman fb003a9e29
Updated release version 2019-02-08 12:21:58 +01:00
Bill Zimmerman dc89e3e240
Merge pull request #285 from dalmago/revision_code
Updating revision code list
2019-02-07 11:02:20 +01:00
Bill Zimmerman ce4ad73ae3
Update ISSUE_TEMPLATE.md 2019-02-07 09:35:29 +01:00
Matheus Dal Mago d9306443f3 Updating revision code list 2019-02-04 15:08:14 -02:00
billz d1edf51c82 Added option to enable/disable wifi client config 2019-01-27 20:23:57 +00:00
billz b00b71e2e3 Added constant to toggle availability of wifi client config. Resolves #279 2019-01-27 20:22:49 +00:00
Bill Zimmerman 68f1ce5f0a
Update README.md
Updated screenshot
2019-01-21 11:43:45 +01:00
Bill Zimmerman 04c778a92c
Update README.md
Updated screenshot
2019-01-21 11:38:25 +01:00
billz 67811c078b Updated list of supported translations 2019-01-13 08:56:48 +00:00
billz 5f9ed542f8 Added support for Español, thanks @lafm1990 2019-01-13 08:53:16 +00:00
billz 7b604a99a7 Added support for Español, thanks @lafm1990 2019-01-13 08:52:29 +00:00
billz fc489f554c Added messages for Español, thanks @lafm1990 2019-01-13 08:51:21 +00:00
Bill Zimmerman 16161dd7b0
Update README.md 2018-11-19 18:26:44 +01:00
billz 1b1aa4b6d9 Added support for Russian, thanks Betep 2018-11-19 16:44:44 +00:00
billz d512219fb0 Added support for Russian, thanks Betep 2018-11-19 16:44:15 +00:00
billz 68163ac177 Added messages for Russian, thanks Betep 2018-11-19 16:42:48 +00:00
billz 1694dd31b9 Updated styles for configure_client UI elements 2018-11-16 07:34:34 +00:00
billz 6a9ffa36a6 Minor corrections to messages 2018-11-15 22:21:55 +00:00
billz d2fc5e4213 Several enhancements, thanks @PRO2XY & @njkeng. Resolves #168, Resolves #261 2018-11-13 22:32:41 +00:00
billz 22976669ee Added wpa_cli -i wlan[0-9] select_network, thanks @PRO2XY 2018-11-13 22:21:02 +00:00
billz 211208e7a7 Mode change for consistency 2018-11-13 11:20:03 +00:00
Bill Zimmerman d912eb5a12
Update manual installation steps
Resolves #245
2018-11-08 11:20:29 +01:00
Bill Zimmerman 940194107c
Merge pull request #254 from D9ping/dashboard-fixes
Dashboard use of ip & iw instead of ifconfig & iwconfig.
2018-11-05 14:56:39 +05:30
Bill Zimmerman cda61222e2
Update README.md 2018-11-04 18:02:04 +01:00
billz 81a3eb5824 Added messages for Czech, thanks @rvallo 2018-11-04 09:00:37 +00:00
billz 4a7f3cc7cd Added locale support for Czech, thanks @rvallo 2018-11-04 08:59:01 +00:00
billz 8e22f8857d Added messages for Czech, thanks @rvallo 2018-11-04 08:58:25 +00:00
Bill Zimmerman b8db06e4f5 Updated RASPI_VERSION to latest release 2018-11-02 13:19:43 +01:00
Bill Zimmerman f3f1e97e72
Updated release version 1.4.0 2018-11-02 13:17:13 +01:00
Bill Zimmerman c366ef0abb
Merge pull request #259 from D9ping/Branch_D9ping
Fix incorrect escaping break lines of WPA and WPA2 secured networks.
2018-10-31 19:19:18 +05:30
D9ping 54e55775ea Fix incorrect escaping break lines of WPA and WPA2 secured networks.
Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-10-24 01:42:47 +02:00
D9ping 6b05989498 Showing multiple IPv4/IPv6 addresses.
Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-10-23 11:57:55 +02:00
D9ping f81bae5f35 Don't use ifconfig for checking interface state.
Made several strings translatable in dashboard.

Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-10-20 14:41:58 +02:00
D9ping 25f362dc19 Use ip and iw instead of ipconfig and iwconfig. #152 #249
Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-10-20 00:15:16 +02:00
Bill Zimmerman d9b2d20e28
Update README.md 2018-10-17 17:56:21 +02:00
billz e6c3b4031f Merge branch 'master' of https://github.com/billz/raspap-webgui 2018-10-17 15:53:08 +00:00
billz fca391b7c5 Added locale support for Chinese simplified, thanks @BANKA2017 2018-10-17 15:51:59 +00:00
billz 5e374f3b84 Added locale support for Chinese simplified, thanks @BANKA2017 2018-10-17 15:51:27 +00:00
billz 8ff5c045f4 Added messages for Chinese simplified, thanks @BANKA2017 2018-10-17 15:50:14 +00:00
Bill Zimmerman 3a7de3d734 Merge branch 'master' of https://github.com:443/billz/raspap-webgui 2018-10-14 11:25:23 +02:00
billz 5c6768d880 Merge branch 'master' of https://github.com/billz/raspap-webgui 2018-10-14 09:19:21 +00:00
Bill Zimmerman 24101440b9
Update ISSUE_TEMPLATE.md 2018-10-14 10:39:28 +02:00
Bill Zimmerman 3b9c478a7d
Merge pull request #248 from D9ping/hidden-ssid
Hidden SSID and not secured hotspot.
2018-10-14 10:21:29 +02:00
D9ping 9f5cf8a069 Allow empty passphrase to be entered on no security. #208
Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-10-14 03:22:54 +02:00
D9ping 2104f620bc Allow creating not secured wi-fi. Fixes #208
Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-10-12 13:05:15 +02:00
billz bba1e172d9 Merge branch 'master' of https://github.com/billz/raspap-webgui 2018-10-11 21:16:17 +00:00
D9ping ee41ed7e0f Added support for hidding SSID. Implement idea from #247.
Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-10-10 20:11:10 +02:00
D9ping 92f02fb698 Merge branch 'master' of https://github.com/D9ping/raspap-webgui 2018-10-07 22:45:02 +02:00
Bill Zimmerman 1000412a34
Merge pull request #243 from D9ping/802.11N
Support for enabling 802.11N
2018-10-06 11:52:14 +02:00
billz ce21f2ac57 Merge branch 'master' of https://github.com/billz/raspap-webgui 2018-10-06 09:42:29 +00:00
D9ping 28f0c18c5a Merge branch 'master' into 802.11N 2018-10-04 18:07:07 +02:00
D9ping 73f5e4f2da Properly use for attribute for label tags on hostapd page.
Added support for id attribute for SelectorOptions function.

Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-10-03 22:20:06 +02:00
Bill Zimmerman 45a7d0a574
Merge pull request #242 from D9ping/patch-1
Fix xss in interface parameter.
2018-10-03 16:58:07 +02:00
D9ping b10b538896 Allow channel 14 for Japan in 802.11b mode.
Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-10-03 16:40:45 +02:00
D9ping bf638dc2f2 Added support for selecting to use 802.11N
Limit channel selection for north america.

Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-10-03 14:40:55 +02:00
Tom ec1f8022fe
Fix xss in interface parameter. 2018-10-02 12:58:50 +02:00
D9ping 34f2926317 Merge branch 'master' of https://github.com/billz/raspap-webgui 2018-10-02 01:05:34 +02:00
Bill Zimmerman c9377c1c04
Merge pull request #241 from D9ping/Branch_D9ping
Deal with infinite lease time DHCP leases
2018-09-26 18:24:21 +02:00
billz 84fa5b845c Merge branch 'master' of https://github.com/billz/raspap-webgui 2018-09-26 16:21:18 +00:00
D9ping f925a01807 Properly selected ininite lease if ininite is selected.
Made time units translatable.

Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-09-25 21:49:54 +02:00
D9ping b9a1692d61 Merge branch 'master' into Branch_D9ping 2018-09-25 21:33:50 +02:00
D9ping b292ee218c Fix for #240
Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-09-25 21:32:31 +02:00
Bill Zimmerman 3b52d0f211
Update README.md 2018-09-22 13:02:02 +02:00
Bill Zimmerman 78557aaf6b Added messages for Data usage 2018-09-19 10:24:31 +02:00
Bill Zimmerman 046a440029 Added messages for Data usage 2018-09-19 10:23:49 +02:00
billz 6e6567b925 Merge branch 'master' of https://github.com/billz/raspap-webgui 2018-09-19 08:15:11 +00:00
billz 1a8b114edf Added strings for Data usage 2018-09-19 07:29:45 +00:00
D9ping 93ce6b9d09 Merge branch 'master' of https://github.com/billz/raspap-webgui 2018-09-18 20:12:08 +02:00
Bill Zimmerman da1f602f86
Added vnstat to list of dependencies 2018-09-17 22:23:44 +02:00
billz 99a451a3e9 Style additions for data usage UI 2018-09-17 11:37:19 +00:00
Bill Zimmerman c0152612bf
Merge pull request #231 from D9ping/bandwidthmonitoring
Data usage monitoring page
2018-09-17 10:20:45 +02:00
D9ping 183f04f53f Enable data usage page by default.
Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-09-14 01:07:23 +02:00
D9ping 3bf4a74f3b Renamed bandwidth.php to data_usage.php.
Removed unused status_messages.php include in data_usage.php.
Use single quote style in bandwidthcharts.js.

Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-09-14 01:06:13 +02:00
D9ping 79e6270dba Merge branch 'master' of https://github.com/billz/raspap-webgui 2018-09-14 00:20:10 +02:00
Bill Zimmerman 39605c14db
Merge pull request #233 from D9ping/translation-dutch
Bug fix should check http header, not session.
2018-09-13 23:33:59 +02:00
D9ping 1526ae6b86 Fixed check client http header, not session.
Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-09-13 00:23:08 +02:00
D9ping 5113cfac88 Merge branch 'master' of https://github.com/billz/raspap-webgui 2018-09-13 00:16:35 +02:00
Bill Zimmerman 7eec560a7c
Updated translations with Nederlands (thx @D9ping) 2018-09-12 19:15:05 +02:00
Bill Zimmerman 988533a743
Merge pull request #232 from D9ping/translation-dutch
Dutch translations.
2018-09-12 17:25:50 +02:00
D9ping e4107870e8 Add dutch translations.
Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-09-12 16:43:23 +02:00
D9ping b3d7c06c60 Translatable strings in bandwidthcharts.js.
Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-09-11 21:00:23 +02:00
D9ping 23d2718854 Renamed vnstat.php to bandwidth.php.
Disabled bandwidth page by default.

Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-09-11 16:15:31 +02:00
D9ping 7c3820d9ab Use seperate container for chart and datatable.
Cleanup unused code comments.

Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-09-10 21:41:35 +02:00
D9ping 7b2f42f326 Added Morris.Js chart and jquery.datatable to bandwidth page.
Use ajax for getting bandwidth data.
Added support for adding extra scripts in footer if needed.

Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-09-10 16:53:05 +02:00
D9ping 6397852591 Merge branch 'master' of https://github.com/billz/raspap-webgui 2018-09-07 20:30:17 +02:00
D9ping 76a1236eb6 Merge branch 'master' into bandwidthmonitoring 2018-09-06 23:12:41 +02:00
D9ping e90b9899a3 Merge branch 'master' of https://github.com/billz/raspap-webgui into bandwidthmonitoring 2018-09-06 21:31:38 +02:00
billz 8000364d70 Merge branch 'D9ping-Branch_D9ping' 2018-09-06 08:13:07 +00:00
billz e6784d7d2b Merge branch 'Branch_D9ping' of https://github.com/D9ping/raspap-webgui into D9ping-Branch_D9ping 2018-09-06 08:12:30 +00:00
Tom a492829052
Merge pull request #1 from billz/D9ping-Branch_D9ping
Mods to branch d9ping
2018-09-05 20:49:26 +02:00
billz 22c791e1f3 Standardized messages, modified php config install order 2018-09-05 12:59:49 +00:00
D9ping d67df7ebe7 Merge branch 'master' of https://github.com/billz/raspap-webgui into Branch_D9ping 2018-09-04 21:54:33 +02:00
Bill Zimmerman 9da474af43
Merge pull request #135 from matthova/master
Added access point walkthrough
2018-09-04 17:34:44 +02:00
billz e0e78cb0f9 Merge branch 'Branch_D9ping' of https://github.com/D9ping/raspap-webgui into D9ping-Branch_D9ping 2018-09-03 08:31:38 +00:00
D9ping 03f2620e48 Backup php.ini to $raspap_dir/backups folder.
Ask for before changing php configuration of httpOnly and opcache.
Do not change session.use_strict_mode, no extra question.
Ask to restore backup of php.ini from $raspap_dir/backups folder in uninstall.sh.

Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-08-31 23:38:30 +02:00
D9ping e428271ef2 Fix for #225, (Credits to DrStacheWH)
Removed duplicated create_logging_scripts function.

Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-08-27 23:10:56 +02:00
D9ping 6d37fd79fa Added RASPI_VNSTAT_ENABLED to config.php.
Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-08-24 21:16:05 +02:00
D9ping aa96780c0b Backup php configuration before changing it.
Removed support for disabling php extensions.

Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-08-24 10:36:20 +02:00
D9ping 8355c1cbfe Use sed regular expressions to deal with changing php configuration.
Don't try turn on not existing Zend Opcache under php 5<=
Turn on session.use_strict_mode if off.
Don't change decreated expose_php.

Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-08-23 00:44:12 +02:00
D9ping 19f123b0c4 WIP: Php default configuration hardening.
Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-08-21 23:43:50 +02:00
D9ping d6d89df024 Display bandwidth use total per day, week, month from vnstat.
Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-08-21 16:42:04 +02:00
Bill Zimmerman 1ac167bf29
Merge pull request #223 from D9ping/Branch_D9ping
Fixed stray html option end tag.
2018-08-16 07:20:48 -07:00
D9ping 5988dab56e Fixed html option end tag.
Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-08-16 14:48:47 +02:00
Bill Zimmerman a02b525fc1 Added missing double-quote. Fixes #222. Thanks @seebz 2018-08-15 11:30:24 -07:00
Bill Zimmerman 833690a1b8
Merge pull request #220 from D9ping/Branch_D9ping
Multiple security fixes
2018-08-06 16:39:28 +02:00
D9ping 182a6509e9 Don't allow to read ini file everywhere on filesystem.
Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-08-06 15:02:57 +02:00
D9ping fb7ba20055 Fixed php notices log messages.
Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-08-06 01:18:11 +02:00
D9ping bbea02cc54 Fix for #212
Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-08-04 14:03:14 +02:00
D9ping 2b03fa316d Escape client input, console output etc. before doing any echo.
Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-08-04 02:05:56 +02:00
billz 6be3680f8f Merge branch 'randyoo-master'. Related to #196. Thanks @randyoo 2018-08-02 12:43:24 +00:00
billz 52b227992b Merge branch 'master' of https://github.com/randyoo/raspap-webgui into randyoo-master 2018-08-02 12:41:59 +00:00
billz 417f11ea1a Merge feature branch. Fixes #210 & #217. Thanks @D9ping 2018-08-02 12:36:55 +00:00
D9ping a86c8e4553 Fix for #211.
Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-07-31 23:51:15 +02:00
D9ping 2ad03e1035 Fix for #210.
Signed-off-by: D9ping <D9ping@users.noreply.github.com>
2018-07-31 23:37:52 +02:00
randyoo ecfac9464f
Merge pull request #1 from randyoo/randyoo-wlan1
support secondary (or more) wlan interfaces
2018-07-06 11:10:41 -06:00
randyoo 2805e6eb6d
support secondary (or more) wlan interfaces
patch installer.sh with /etc/sudoer commands that support wlan1 - wlan9.
2018-07-06 11:09:57 -06:00
randyoo 2649991675
add wlan1 scan capability to sudoers commands 2018-06-29 14:22:39 -06:00
billz 55c6e332cc Label change, thanks Tino 2018-06-16 21:55:12 +00:00
Bill Zimmerman de672f7be5
Update README.md 2018-06-16 23:48:00 +02:00
Bill Zimmerman 31e6230112
Update README.md 2018-06-15 20:41:57 +02:00
billz 9dd2fc2b65 Added locale support for de_DE, thanks Tino 2018-06-15 18:23:47 +00:00
billz b72ec32f4a Added de_DE messages, thanks Tino 2018-06-15 18:23:06 +00:00
billz ff4385753c Fixes #188. Thanks @bluthen 2018-06-12 17:08:27 +00:00
billz ae171cfe46 Initial caps for locales in select list 2018-06-12 16:45:11 +00:00
Bill Zimmerman ad83685796
Added multilingual support 2018-06-01 20:19:07 +02:00
Bill Zimmerman f3a1c7c872 Updated LC_MESSAGES 2018-05-30 13:04:30 +02:00
billz af5ede9028 Updated LC_MESSAGES 2018-05-29 22:47:16 +00:00
billz 74842aac62 Minor nav label change 2018-05-29 22:44:18 +00:00
billz 65f38845a3 Added local support for sv_SE 2018-05-29 22:20:08 +00:00
billz b4c3fe1bd3 Added locale support for sv_SE 2018-05-29 22:19:27 +00:00
billz 14ac92b33e Updated sv_SE messages, thx @ImEmil 2018-05-29 22:18:26 +00:00
billz ca2bcf1013 Updated sv_SE messages, thx @ImEmil 2018-05-29 22:18:24 +00:00
Bill Zimmerman c3a24c2fe6 Added sv_SE messages, thx @ImEmil 2018-05-29 23:58:01 +02:00
Bill Zimmerman 6c1af8aa16 Added sv_SE messages, thx @ImEmil 2018-05-29 23:57:58 +02:00
billz 8e59edc584 Merge branch 'master' of https://github.com/billz/raspap-webgui 2018-05-29 19:19:00 +00:00
billz 534d44c03d Added language tab and selector 2018-05-29 19:16:40 +00:00
billz 2b8e37880e Bugfix: set locale SESSION var 2018-05-29 18:55:08 +00:00
billz c1fab759e4 Moved session_start() before includes 2018-05-29 18:52:41 +00:00
Bill Zimmerman 24b0b6a5d2
Update README.md
Added external site link
2018-05-29 10:45:16 +02:00
billz f92b7ebcf3 Added pt_BR messages, thx @dalmago 2018-05-28 20:40:24 +00:00
billz abdb7782d9 Added pt_BR messages, thx @dalmago 2018-05-28 20:40:20 +00:00
billz 53cdbd2528 Added support for pt_BR, thx @dalmago 2018-05-28 20:36:08 +00:00
billz e317d3014f Added pt_BR messages, thx @dalmago 2018-05-28 20:35:21 +00:00
Bill Zimmerman e29dc74e06 Fix indents 2018-05-27 22:41:21 +02:00
Bill Zimmerman c054d47731
Merge pull request #125 from billz/i18n
Internationalization (i18n)
2018-05-27 18:12:11 +02:00
billz 264ccdd34f Compiled message catalog with new translations 2018-05-27 15:55:05 +00:00
billz 1f3e5231f7 Updated messages with new UI labels 2018-05-27 15:53:53 +00:00
billz 23b7a76c6a Replaced strings with gettext() alias 2018-05-27 15:52:14 +00:00
billz b674f4f209 Mode change 2018-05-27 15:51:43 +00:00
billz be4ccda6f7 Replaced strings with gettext() alias 2018-05-27 15:51:06 +00:00
billz 244148cbee Cleaned up locale detection 2018-05-27 15:50:16 +00:00
billz 628a60893d Replaced strings with gettext alias 2018-05-27 15:48:42 +00:00
billz a21d633a77 added version to constants 2018-05-27 15:47:09 +00:00
Bill Zimmerman 164fd733b9
Updated with locale settings 2018-05-27 10:45:34 +02:00
Bill Zimmerman d8f4f15db8
Merge branch 'master' into i18n 2018-05-27 10:42:54 +02:00
Bill Zimmerman fc5a999e11
Merge pull request #186 from Pack3tL0ss/patch-1
Update README.md
2018-05-27 10:17:34 +02:00
Bill Zimmerman 47d19fbc59
Update README.md
added linebreak
2018-05-26 20:32:24 +02:00
Bill Zimmerman 2480259520
Update README.md
Added support us section
2018-05-26 20:19:02 +02:00
Bill Zimmerman ca02e28f3b
Update README.md
Added links to external tutorials, deprecated twitter links
2018-05-26 15:11:00 +02:00
Bill Zimmerman b3903d284d
Update README.md
Added badge + link to awesome RPi (⌐■_■)
2018-05-26 13:35:57 +02:00
billz 36d98c5cd0 Merge branch 'master' of https://github.com/billz/raspap-webgui 2018-05-23 15:17:21 +00:00
billz a438a13bad updated static domain_name_server, resolves #185 thx @jensjakob 2018-05-23 15:16:05 +00:00
Bill Zimmerman 51d76ec758
Merge pull request #189 from alibo/patch-1
Use --depth option during cloning the repo
2018-04-23 10:55:42 +02:00
Ali Borhani 088bf99637
Use --depth option during cloning the repo 2018-04-23 01:02:07 +04:30
Pack3tL0ss 5dc1545573
Update README.md
Updated Optional Services to reference define statements in config.php vs index.php
2018-04-17 10:45:08 -04:00
Bill Zimmerman f3fffd534a Revert "Update _config.yml"
This reverts commit a3b406f12e.
2018-04-10 12:34:57 +02:00
Bill Zimmerman a3b406f12e
Update _config.yml 2018-04-10 12:09:55 +02:00
Bill Zimmerman ba1d065733 Create CNAME 2018-04-10 11:41:57 +02:00
Bill Zimmerman 729a02b2f9 Set theme jekyll-theme-minimal 2018-04-10 11:31:29 +02:00
billz f873073570 Hotfix: specify interface with wpa_cli in patch_system_files(). Addresses #163 2018-03-28 10:13:44 +00:00
billz 2a05284be6 Specifies interface with -i option and wpa_cli. Resolves #163 2018-03-28 10:09:58 +00:00
Bill Zimmerman 1b387b0f6d
Updated version 2018-03-20 12:36:53 +01:00
Bill Zimmerman 98ace52351 bug fixes to default_configuration(). Resolves #174. Thanks @Austin-RR 2018-03-19 12:43:24 +01:00
Bill Zimmerman b9bd1cf46f
Merge pull request #171 from billz/bower_update
Update SB Admin 2, improved dependency organization + gulp support
2018-03-10 10:57:12 +02:00
billz 2176988898 Updated with minified sb-admin-2.css 2018-03-09 10:08:52 +00:00
billz 376653224d Cleaned up npm-folders local install 2018-03-09 02:08:40 +00:00
billz 902281294f Added vendor directory & gulp support for better dependency organization + compiling less & js files. added gulp
support for a browser sync task as well for easier development
2018-03-09 02:03:53 +00:00
Bill Zimmerman 659e21f00b
Merge pull request #164 from rmarshall31/priority
preserve priority in wpa_supplicant.conf
2018-02-25 22:00:43 +01:00
Russ Marshall d6778b3ff0 Merge branch 'priority' of https://github.com/rmarshall31/raspap-webgui into priority 2018-02-25 09:36:58 -05:00
Russ Marshall 5c04c1dbca preserve priority in wpa_supplicant.conf 2018-02-25 09:08:21 -05:00
Bill Zimmerman e171efa2f4
Merge pull request #161 from rmarshall31/master
support for 5GHz channels
2018-02-25 11:10:46 +01:00
Bill Zimmerman 3157d59132
Merge pull request #160 from jbishop129/patch-1
Fix /etc/sudoers entries
2018-02-25 10:43:51 +01:00
Russ Marshall f8a71403a3 preserve priority in wpa_supplicant.conf 2018-02-22 20:07:52 -05:00
Russ Marshall ff36dbb3b4 support for 5GHz channels 2018-02-19 08:13:20 -05:00
Joe ba9d6cba59
Fix /etc/sudoers entries
- symlink to hook wpa_supplicant if multiple wireless adapters. Otherwise, "wpa_cli" cmds fail if you have more than one wlan device
- set cmds array items to double quotes
- added entries for wlan1 interfaces, to be able to control more than one wireless adapter
- updated if statement checking the number of lines in /etc/sudoers
- added IFS in do loop, to handle spaces in array items properly (current method truncates the line if it finds a space)
2018-02-16 07:31:04 -07:00
Bill Zimmerman 75f6d53555
Merge pull request #140 from emmanuelgeoffray/master
Select wireless interface for wifi client, add globals to select services, memory output fix
2018-02-11 11:14:01 +01:00
Bill Zimmerman 0bf1654476
Create ISSUE_TEMPLATE.md 2018-01-16 16:12:38 +01:00
Bill Zimmerman a942dc120d
Merge pull request #143 from arduino-man/patch-1
Patch dashboard.php to take dots in ESSID's
2018-01-04 07:47:23 -08:00
arduino-man d4010bd866
Patch dashboard.php to take dots in ESSID's
Patched dashboard.php so that the dashboard can display ESSID's that have dots in their names such as "kayton-2.4G". This was done by modifying the regex on line 38.
2017-12-26 11:55:30 -07:00
Emmanuel Geoffray 4325f9a9cf
Fixed memory used 2017-12-07 20:49:12 +01:00
Emmanuel Geoffray 674c38a54e
Reset to default config 2017-12-07 20:14:20 +01:00
Emmanuel Geoffray 3bcf16a3ba add globals to select visible services 2017-12-07 19:12:35 +00:00
Emmanuel Geoffray 3228114dd8 add global to select wireless interface for wifi client 2017-12-07 19:00:48 +00:00
billz d22cdd6e68 Updated manual installation steps 2017-11-17 07:11:18 +00:00
billz 5d9d58630c Merge branch 'master' of https://github.com/billz/raspap-webgui 2017-11-16 22:38:54 +00:00
billz 951228275c Fixes #138 2017-11-16 22:38:03 +00:00
Bill Zimmerman 6e2c6de8a6
Merge pull request #124 from billz/new-php-pa
Installs php7.0-cgi for Stretch. Maintains backward compatibility with Jessie. Resolves #118 #109
2017-11-16 18:22:30 +01:00
Bill Zimmerman 6dc944603c
Merge branch 'master' into new-php-pa 2017-11-16 02:28:59 +01:00
billz 0f7658221e Installs php7.0-cgi on Stretch, maintains backwards compatibility 2017-11-16 01:24:02 +00:00
billz 0c696e061f Applied style to label 2017-11-13 23:16:18 +00:00
billz b950a1966d Fixed permission error. Resolves #136 2017-11-08 08:23:02 +00:00
Matt Hova 45c96cbc04
Added access point walkthrough
Added link for setting up access point on Raspbian Stretch
2017-11-07 12:05:22 -08:00
billz 17e737792f Fixed path 2017-11-07 17:05:09 +00:00
billz e18b488bbb Fixed typo 2017-11-06 16:09:38 +00:00
billz e389d8f760 Updated for latest release + new screenshots 2017-11-06 15:45:27 +00:00
billz 3b8a832cae Modified column class for better mobile compatibility 2017-11-06 12:38:57 +00:00
billz bb7481c1a4 Applied style to btn states 2017-11-06 12:14:28 +00:00
billz 0a57cd8001 Applied style to webconsole 2017-11-05 17:57:00 +00:00
billz af9f997eb0 Applied style to .alert-danger 2017-11-05 15:00:40 +00:00
billz ea6737e1be Applied style to missing elements 2017-11-05 12:09:04 +00:00
Lawrence 5cb5cf1d6a
Merge pull request #131 from SirLagz/master
Created interface to configure Static / DHCP settings
2017-11-05 19:29:22 +08:00
billz d38ae7f334 Standardize UI elements 2017-11-04 20:24:23 +00:00
billz f6cfd65a55 Moved sublevel item to top level (for now) 2017-11-04 20:23:55 +00:00
Lawrence 28513a91ee Removing conflict 2017-11-04 12:56:51 +08:00
Lawrence 39d743ae89 merge from upstream 2017-11-04 12:53:29 +08:00
Lawrence 068c4c519e Merge from Upstream 2017-11-04 12:49:48 +08:00
Bill Zimmerman ef9dcbe06c
Merge branch 'master' into i18n 2017-11-02 23:41:33 +01:00
Bill Zimmerman a4d8b04590
Merge pull request #133 from billz/hostapd-logging
Hostapd logging
2017-11-02 22:07:42 +01:00
billz 19a32f53ba Applied theme styles to log output 2017-11-02 21:05:40 +00:00
billz 8d1370e2fd Removed debug output 2017-11-02 20:46:46 +00:00
billz c88d027ec6 Added standard div wrapper to new tab 2017-11-02 18:43:52 +00:00
Lawrence 7b93326478 updated stylesheet and installer with left out stuff 2017-11-02 22:48:15 +08:00
Lawrence f61cc31b20 Created new branch off master to help troubleshoot with #132 2017-11-02 22:43:41 +08:00
Lawrence 604b28130f Updating to help troubleshoot #132
Added the scripts to disable and enable logging for hostapd
Updated sudoers to allow running scripts
2017-11-02 22:33:11 +08:00
Lawrence 7845c8908b Initial commit to enable logging for hostapd 2017-11-02 22:13:36 +08:00
billz 03b5c6a695 Fixed typo. Thanks @bebora for catching it 2017-10-29 22:59:14 +00:00
billz 564e9c1f77 Fixed typo. Thanks @bebora for catching it 2017-10-29 22:56:50 +00:00
Lawrence 8d77295fd3 Updated sudoers to accomodate restarting dhcpcd to apply network settings.
Updated installer to insert new lines
Created files to generate / modify / save dhcpcd files and networking configuration
2017-10-30 02:21:34 +08:00
billz 3c45992ced Added Italian translation 2017-10-29 08:53:21 +00:00
Lawrence db8e201624 Merge from Upstream/Master https://github.com/billz/raspap-webgui 2017-10-29 12:32:36 +08:00
Lawrence 6e786e41c2 Updating index to create new menu, custom.js with new code, moved config parameters from index.php to its own file 2017-10-29 12:31:51 +08:00
Lawrence 85c0c29923
Merge pull request #129 from billz/fix-a-fix
Fix properly
2017-10-29 12:25:31 +08:00
Joseph Haig c8f863aeaf Fix properly 2017-10-28 20:59:17 +01:00
Lawrence 52e7f04882
Merge pull request #128 from billz/fix-fastcgi
Fix fastcgi-php setup for fresh install
2017-10-29 01:00:47 +08:00
Joseph Haig f0f4f16438 Fix fastcgi-php setup for fresh install 2017-10-28 12:00:15 +00:00
Lawrence d42e265365 Updated version number to reflect big functionality update 2017-10-28 02:44:45 +08:00
Lawrence fe60945949 Removed commented out code from index.php. configuratin parameters have been moved to includes/config.php 2017-10-28 02:42:40 +08:00
Lawrence 7749b79e2f Implemented start of web interface to update Static IP addresses or use DHCP.
Currently saves to files in /etc/raspap/networking, still need to build something to generate a working config for dhcpcd
2017-10-28 02:40:30 +08:00
Lawrence e905a862b2 Merge from upstream 2017-10-26 20:47:04 +08:00
billz cf149fd498 Fixed typo 2017-10-25 23:45:18 +00:00
billz fc0df01a19 Adding gettext() to form button 2017-10-24 21:07:03 +00:00
billz c00377ef3d Recompiled machine object files 2017-10-24 13:58:23 +00:00
billz efa8cb1452 Added msgid/msgstr pairs 2017-10-24 13:58:02 +00:00
billz ac106538ae Added msgid/msgstr pairs 2017-10-24 13:57:51 +00:00
billz f43ecbeb95 Formatting 2017-10-24 13:51:12 +00:00
billz 1d41ef6da2 Updated static labels with gettext() 2017-10-24 13:50:43 +00:00
billz 4c94d29668 Updated static labels with gettext() 2017-10-24 13:50:30 +00:00
billz ff18f84fd8 Updated static labels with gettext() 2017-10-24 13:50:17 +00:00
billz e6eb7f2b46 Recompiled machine object files 2017-10-24 10:30:21 +00:00
Bill Zimmerman d0c5137d66 Added strings for status messages 2017-10-24 12:27:34 +02:00
Bill Zimmerman 81c5abf769 Updated header + fixed msgid 2017-10-24 12:26:39 +02:00
Bill Zimmerman 0374e41b62 Fixed typo in message 2017-10-24 12:26:00 +02:00
Bill Zimmerman 2e9779b49b Merge branch 'i18n' of https://github.com:443/billz/raspap-webgui into i18n 2017-10-24 10:35:09 +02:00
billz 039c00b0e2 Typo in description 2017-10-24 08:34:20 +00:00
billz d5e77d8207 Recompiled machine object file 2017-10-24 08:33:01 +00:00
billz 1e92e9f22a Updated .po with missing strings 2017-10-24 08:32:31 +00:00
Bill Zimmerman d6aad98e5a Merge branch 'i18n' of https://github.com:443/billz/raspap-webgui into i18n 2017-10-24 10:07:44 +02:00
billz ebe2d4d3a4 Added es_ES to list of supported languages 2017-10-24 07:18:23 +00:00
Bill Zimmerman 7d938de1a4 Create CONTRIBUTING.md 2017-10-23 23:52:43 +02:00
billz 1212ef51f7 Added constants for locales 2017-10-23 20:02:39 +00:00
billz 062d5aeb4f Replaced interface labels with gettext() 2017-10-23 19:51:34 +00:00
billz 1aa5c17654 Additional msgid/msgstr pairs 2017-10-23 19:50:14 +00:00
billz 57cd26b6cc Additional msgid/msgstr pairs 2017-10-23 19:50:12 +00:00
billz aec857dd96 Initial commit 2017-10-23 19:48:50 +00:00
billz 7137f6c814 Initial commit 2017-10-23 19:48:46 +00:00
billz 6fb18e1649 Added gettext for i18n support 2017-10-23 17:37:59 +00:00
billz c8ca228dad initial commit 2017-10-23 17:28:51 +00:00
billz 81eee567e6 mode change for consistency 2017-10-23 17:28:51 +00:00
billz 5cc5d2528e mode change for consistency 2017-10-23 17:28:51 +00:00
billz 89e0e3f38a mode change for consistency 2017-10-23 17:28:50 +00:00
billz 81cd6391a4 mode change for consistency 2017-10-23 17:28:50 +00:00
billz ce96cfcf15 initial commit of machine object file 2017-10-23 17:28:49 +00:00
billz 943ce23180 initial commit of base en_US strings 2017-10-23 17:28:49 +00:00
Lawrence 64a7cb9d62 Merging upstream to repo 2017-10-23 00:27:33 +08:00
Lawrence 77316709e1 Creating networking interface to change between Static / Dynamic IPs 2017-10-23 00:26:49 +08:00
Lawrence 6d9029340f Merge pull request #123 from SirLagz/master
Updated Install/Uninstall scripts to resolve #120
2017-10-22 20:49:33 +08:00
Lawrence a0a4f842b4 Updating install script and removing unneeded configuration file 2017-10-22 19:46:52 +08:00
Joseph Haig 354b387327 Change php5-cgi to php-cgi 2017-10-22 11:10:28 +01:00
Lawrence 908f0de8cb Updated install and uninstall scripts to append to rc.local rather than overwrite the file 2017-10-21 22:39:29 +08:00
Lawrence 6fefbf7a2d Updated webconsole styling 2017-10-21 20:35:59 +08:00
Lawrence 5c6991dfe5 Merge pull request #119 from SirLagz/master
Added a Web Console
2017-10-21 20:35:37 +08:00
Lawrence 241e3ddff9 Updating layout of webconsole page 2017-10-21 20:30:15 +08:00
billz 9265f89e6d Merge branch 'master' of https://github.com/billz/raspap-webgui 2017-10-18 17:00:19 +00:00
Lawrence f18b5785c8 Merge branch 'master' of https://github.com/SirLagz/raspap-webgui 2017-10-14 12:56:23 +08:00
Lawrence 4d04155895 Added webconsole to system pane, added tabs to system pane to allow for webconsole to be hidden/shown 2017-10-14 12:55:42 +08:00
Lawrence a24d3d8f86 Moved RASPI_ADMIN_DETAILS file check to the admin.php page which will now create the file if it doesn't exist - to resolve #116. Commented out check on index.php 2017-10-14 11:36:42 +08:00
billz 822136bf03 Applied style to navbar toggle 2017-10-09 22:26:21 +00:00
billz 8a501c075f Persist selected theme in dropdown 2017-10-09 14:04:59 +00:00
billz f6c983d8ff Applied missing style to th element 2017-10-09 08:49:12 +00:00
Bill Zimmerman b6fe00b880 Merge pull request #115 from billz/theme-support
Support for themes
2017-10-08 18:19:11 +02:00
billz 557a0b6ce0 Added VT100 scan line effect 2017-10-06 23:46:58 +00:00
billz faeaa99a14 Updated for minor version release 2017-10-06 23:22:04 +00:00
billz 63dc84764f Removed inline style 2017-10-06 23:18:42 +00:00
billz 508110a9c0 Support for themes 2017-10-06 23:08:06 +00:00
Lawrence 04acb817b4 Updating version numbers, uninstall script 2017-10-04 01:37:39 +08:00
Lawrence ecdf34467b Updating version and sudoers 2017-10-04 01:34:44 +08:00
Lawrence afa8e2d4aa Merge branch 'master' of https://github.com/billz/raspap-webgui 2017-10-04 01:30:16 +08:00
Lawrence 1fc0615452 Updated install script with new sudoers lines required. Updated uninstall script to resolve lighttpd directory contents not being removed
Updated dashboard.php file to remove IP addresses when taking wlan0 down.
2017-10-04 01:28:57 +08:00
billz 56c9fccda7 Fixed style class for rescan btn 2017-10-03 17:22:48 +00:00
Lawrence 0be196d708 Updated version numbers. Fixed up Sudoers file to include latest ip commands. 2017-10-04 01:06:47 +08:00
Lawrence 0936541ccc Merge pull request #113 from SirLagz/master
Migrating from ifconfig to ip, resolves ip/netmask/mac address display issues
2017-10-04 00:23:13 +08:00
Lawrence 0d456d3540 Merge branch 'master' into master 2017-10-04 00:22:19 +08:00
Lawrence 1fcb82ff8d Still removing debug code 2017-10-04 00:19:43 +08:00
Lawrence 29aabf1bbe Removing debug code 2017-10-04 00:15:53 +08:00
Lawrence 47f6366bf9 Changed the dashboard to use ip rather than ifconfig for Jessie/Stretch compatibility 2017-10-04 00:09:50 +08:00
Lawrence aa675ae12b Merge pull request #103 from universalism/master
FIX - wlan0 status doesn't contain RUNNING only UP
2017-10-04 00:08:01 +08:00
Bill Zimmerman fa2dba4cf9 Merge pull request #111 from billz/uninstaller
Created the uninstall script
2017-10-03 10:50:47 +02:00
Bill Zimmerman 4c540a5486 Merge pull request #110 from SirLagz/master
Updating dashboard to use ip rather than ifdown/up
2017-10-03 10:49:09 +02:00
Lawrence f507a0b8cf Created the uninstall script 2017-10-03 13:09:55 +08:00
Lawrence 42381a2aef Updating dashboard to use ip rather than ifconfig 2017-10-03 12:46:02 +08:00
Lawrence 18fa472d2c Fixed email address typo 2017-10-03 12:32:30 +08:00
Lawrence 73231e248f Merge branch 'master' of https://github.com/billz/raspap-webgui 2017-10-03 12:23:32 +08:00
Lawrence 0b7b0a4d96 Updated installer to properly make symlinks to latest backup 2017-10-03 12:19:35 +08:00
Lawrence 34c22e43a8 Merge pull request #105 from royord/resetButtonOnly
Reset button only
2017-10-03 11:53:33 +08:00
Lawrence 036b7a3050 I forgot a couple of renames. Fixed 2017-10-02 03:36:51 +08:00
Lawrence de7303883b Updated installer script to backup more configuration files and appends dates when renaming old installation files when doing an inplace reinstall 2017-10-02 03:34:14 +08:00
Lawrence 61d450d1c7 Fixed up a whole bunch of undefined variable warnings. Added a check to make sure raspap.auth exists before trying to include it. 2017-10-02 03:10:04 +08:00
Lawrence a6b1d85013 Fixed up installation script to allow for reinstalls over existing installs. 2017-10-01 23:22:07 +08:00
Lawrence a36e525f98 Fixed up PHP notices. Added text when IP Address, MAC Address, and Subnet mask aren't found.
Also added function to backup configuration files /etc/network/interfaces and /etc/hostapd/hostapd.conf files if found.
2017-10-01 20:54:16 +08:00
universalism 5447c1a0dc FIX - wlan0 status doesn't contain RUNNING only UP
Tested on RPi3 Raspbian Jessie
2017-09-23 11:56:08 +02:00
royord df8f15acba rescan button moved into a better home 2017-09-15 04:42:49 +00:00
royord 348e3a07b4 added rescan 2017-09-15 04:27:25 +00:00
Bill Zimmerman 97fd8dc13e Merge pull request #88 from SolidRhino/patch-1
Update README.md
2017-07-20 11:21:59 -07:00
Solid Rhino cc622f211e Update README.md
Add git to install command
2017-07-18 14:52:48 +02:00
Bill Zimmerman 7048a991c8 Resolves #76 2017-06-03 14:25:11 +00:00
Bill Zimmerman 85992a67b7 Moved alert above tabs for consistency 2017-05-25 09:40:37 +00:00
Bill Zimmerman 58c6b67f49 Added welcome + clarified install dirs 2017-05-19 16:33:01 +00:00
Bill Zimmerman aa08e64043 Fixed misplaced /div 2017-05-19 14:56:07 +00:00
Bill Zimmerman 66a211429b Resolves #60 2017-05-19 14:00:47 +00:00
Bill Zimmerman d9baf397d4 Resolves #66 2017-05-19 13:44:51 +00:00
Bill Zimmerman 261c90473d Resolves #49 2017-05-19 13:25:47 +00:00
Joseph Haig 80fd46ff82 Merge pull request #59 from Headhunterzpw/master
Update dhcp.php
2017-03-20 16:01:37 +00:00
Joseph Haig 0eab5247a6 Merge pull request #58 from PureGrain/patch-1
Update system.php
2017-03-20 16:01:14 +00:00
Joseph Haig 451b03ad4c Merge pull request #57 from PureGrain/master
RasPi3-WiFi
2017-03-20 16:00:35 +00:00
Jesse Geerts ee288c32ca Update dhcp.php
Added ( ) for the 's' in the minutes, hours and days to make it look nicer
2017-03-17 18:40:41 +01:00
Challon Holt 0dce1fefcb Update system.php
Added Revision for Pi Zero 1.3 and PiZero W
2017-03-08 16:24:42 -05:00
Bill Zimmerman a4d012d1d0 Merge pull request #55 from billz/bugfixes
Various small fixes
2017-02-06 07:14:21 -08:00
Challon Holt ed65084653 Merge pull request #1 from PureGrain/PureGrain-RasPi3-Wifi
Added support for RasPi 3 Wifi
2017-02-06 10:01:46 -05:00
Challon Holt 7039463d88 Added support for RasPi 3 Wifi
Added support for RasPi 3 on board Wifi
2017-02-06 09:59:25 -05:00
Challon Holt f2247e7844 Update hostapd.conf
Added support for Raspberry Pi 3 on board wifi/wlan adapter.
2017-02-06 09:54:59 -05:00
Joe Haig cc96885ec9 Fix 'else' clause 2017-01-27 09:31:26 +00:00
Joe Haig bfb635636b Various small fixes
* Append `.old` to old web directory instead of moving to `/tmp`
* Do not give the user a choice of install location
* Better detection of Debian version
* List username and password in Quick Start instructions
2017-01-27 09:21:53 +00:00
Bill Zimmerman 265b6e5af0 Merge pull request #43 from billz/fix_default_setup
Fix default setup
2016-11-13 19:32:38 +01:00
Joe Haig 9410821c8c Fix default - really turn on WPA! 2016-11-13 18:15:03 +00:00
Joe Haig f0cf084202 Add rc.local file to set up NAT routing 2016-11-13 17:42:50 +00:00
Bill Zimmerman ce5220deb7 Added link to @jrmhaig's Twitter 2016-10-24 11:48:02 +02:00
Bill Zimmerman 4b1144b61b Updated version info 2016-10-24 11:40:47 +02:00
Bill Zimmerman cf69055d3c Merge pull request #42 from billz/improve_installer
Improve installer
2016-10-24 10:58:39 +02:00
Joe Haig 92cba363c8 Show default configuration details 2016-10-23 21:39:22 +01:00
Joe Haig 2d992fb4ac Revert back to using /etc/init.d
Don't change too many things at once.
2016-10-23 20:08:17 +01:00
Joe Haig d089dbfe43 Fix sudo lines for 'service' 2016-10-23 18:31:45 +01:00
Joe Haig c5cb30f9e7 Install dnsmasq 2016-10-23 18:25:07 +01:00
Joe Haig 0880ce388c Fix wpa_pairwise setting 2016-10-23 17:58:06 +01:00
Joe Haig ec03171e74 Reboot at end of installation 2016-10-23 17:37:29 +01:00
Joe Haig 294ed85707 Correct ctrl_interface in default configuration 2016-10-23 17:36:52 +01:00
Joe Haig a3ea51077d Some more default config files
* /etc/default/hostapd
* /etc/dhcpcd.conf
* /etc/dnsmasq.conf
2016-10-23 17:02:52 +01:00
Joe Haig a3bfa51c70 Default hostapd configuration 2016-10-23 16:39:33 +01:00
Joe Haig 58bd439b4d Replace /etc.init.d with service 2016-10-22 22:02:39 +01:00
Joe Haig 5f748c4b84 Add hostapd install to manual install instructions 2016-10-21 22:47:04 +01:00
Joe Haig fd20d867dc Install hostapd as a dependency 2016-10-21 22:31:51 +01:00
Joe Haig b8b3fd1d31 Move old install directory if it exists 2016-10-21 22:28:00 +01:00
Bill Zimmerman 3a958e3f3b Merge pull request #37 from jrmhaig/split_sudo
Make /etc/visudo file a bit more readable
2016-09-18 18:23:32 +02:00
Joe Haig 54ef4de291 Make /etc/visudo file a bit more readable 2016-09-18 16:00:27 +00:00
Joseph Haig fad6f8ee82 Merge pull request #36 from jrmhaig/visudo_typo
Fix typo
2016-09-11 21:49:34 +01:00
Joe Haig bf2002e72f Fix typo 2016-09-11 21:48:26 +01:00
Joseph Haig d5e296b85e Merge pull request #35 from jrmhaig/subdirectory
Set form actions correctly
2016-09-11 20:52:27 +01:00
Joe Haig 8e179f0614 Set form actions correctly 2016-09-11 20:48:12 +01:00
Bill Zimmerman c8cca832c8 Merge branch 'master' of https://github.com/billz/raspap-webgui 2016-08-31 16:30:44 +02:00
Bill Zimmerman 17d1b69805 Detect Raspian version and set lighttpd webroot. Fixes #29 2016-08-31 16:30:28 +02:00
Bill Zimmerman 103eaff832 Merge pull request #28 from jrmhaig/lighttpd_home
Update README for changed lighttpd directory
2016-08-31 13:27:57 +02:00
Joseph Haig dc6bdc028c Add missing / 2016-08-31 09:48:56 +01:00
Joseph Haig 0a9b2363de Correct markdown for bold 2016-08-31 09:48:02 +01:00
Joe Haig 9ceaa90530 Change lighttpd default directory 2016-08-31 09:45:00 +01:00
Bill Zimmerman 52d569d7f3 Merge pull request #24 from jrmhaig/dashboard
Move dashboard function to separate file
2016-08-17 10:16:05 -07:00
Joe Haig 20eb3b0107 Merge branch 'master' into dashboard 2016-08-16 20:44:22 +01:00
Bill Zimmerman d47a939649 Merge pull request #23 from jrmhaig/client
Redo wireless client configuration
2016-08-16 11:36:24 -07:00
Joe Haig 66d6f3766c Find bitrate and signal level correctly
Also, display signal level as just a number rather than a graph
2016-08-15 12:45:37 +00:00
Joe Haig f730aa1ffb Use status class 2016-08-15 12:25:20 +00:00
Joe Haig 9492330196 Indicated connected network 2016-08-14 17:25:53 +00:00
Joe Haig b353dd77a8 Add password length check
Also remove most of the rest of the javascript as it is unused.
2016-08-14 16:56:13 +00:00
Joe Haig e953e68556 Redo 'Configure client' page 2016-08-14 16:40:59 +00:00
Joe Haig a87d7ee869 Allow open networks 2016-08-12 21:22:21 +00:00
Joe Haig ad76f7651a Split out php from html 2016-08-12 20:53:44 +00:00
Joe Haig c7ed97dd8b Change method of calculating channel and security 2016-08-12 17:29:56 +00:00
Joe Haig fe3b0e9513 Move client wifi configuration into separate file 2016-08-12 17:00:43 +00:00
Bill Zimmerman 4c587bb911 Merge pull request #22 from jrmhaig/system
Add Raspberry Pi version to system page
2016-08-09 06:38:29 -07:00
Joe Haig c391314ef9 Merge branch 'master' into dashboard 2016-08-08 21:38:53 +01:00
Joe Haig 15780821c8 Merge branch 'master' into system 2016-08-08 21:38:41 +01:00
Joe Haig 4611bcc615 Change tabs to spaces 2016-08-08 21:37:44 +01:00
Bill Zimmerman 0b41c39a65 Merge pull request #19 from jrmhaig/master
Validations on HostAPD fields
2016-08-08 10:58:10 -07:00
Joe Haig 095e1afa8c Move Dashboard function to separate file 2016-08-08 12:48:16 +00:00
Joe Haig bdfcf270a7 Show Raspberry Pi revision information 2016-08-08 12:38:15 +00:00
Joe Haig 7406a5050c Move system page into separate file 2016-08-08 12:31:19 +00:00
Joe Haig bff9dfbbbc Some validation on POST data 2016-08-05 20:38:02 +00:00
Joe Haig 671016e685 Add CSRF to hostapd config
And tidy things up a bit
2016-08-05 15:50:05 +01:00
Joe Haig 15a4ece433 Move function to save HostAPD config too 2016-07-27 20:48:27 +00:00
Joe Haig bfb1332cdf Move HostAPD into separate file 2016-07-27 20:43:40 +00:00
Joe Haig 2131842fe7 Tidy up some whitespace
Sorry, I don't like tab indentation.
(and I definitely don't like a mixture of tab and space indentation)
2016-07-27 20:34:56 +00:00
Bill Zimmerman 9df326b338 Merge pull request #16 from jrmhaig/csrf
Adding CSRF verification to DHCP form
2016-07-10 23:22:05 +02:00
Joseph Haig bfae272b0f Better checking 2016-07-09 03:46:21 +01:00
Joseph Haig 46894ef91e Fix checking dnsmasq starting/stopping 2016-07-09 03:34:48 +01:00
Joseph Haig 3b043950de Add CSRF to DHCP form
Also, separate out into separate file and refactor
2016-07-09 01:26:13 +01:00
Joseph Haig c65ddd010f Tabs to spaces 2016-07-09 01:00:53 +01:00
Joseph Haig a28b926b3a Move status messages into new class 2016-07-09 00:55:03 +01:00
Bill Zimmerman 14f9fd27e3 Merge pull request #15 from jrmhaig/csrf
Guard against CSRF
2016-06-27 23:43:53 +02:00
Bill Zimmerman 23cb583178 Merge pull request #14 from jrmhaig/master
Fix password update form
2016-06-26 21:34:08 +02:00
Joseph Haig 2c86f262ba Merge branch 'master' into csrf
Conflicts:
	includes/admin.php
2016-06-26 17:26:58 +01:00
Joseph Haig d92b01e8f2 Fix tabbing 2016-06-26 17:25:59 +01:00
Joe Haig 0e16207422 Fix password update form 2016-06-26 17:22:07 +01:00
Joe Haig 5c2492e785 Add CSRF token to password change page 2016-06-24 22:39:39 +01:00
Bill Zimmerman f98af5c60b Merge pull request #11 from jrmhaig/master
A few minor fixes
2016-06-20 20:44:00 +02:00
Joe Haig d431c3f767 Permit flags in the config 2016-06-19 23:23:03 +01:00
Joe Haig 443c75390a Set $status to avoid error 2016-06-19 23:01:22 +01:00
Joe Haig 2e8c97d421 Correctly find Received Bytes 2016-06-19 22:50:36 +01:00
Joe Haig 098caa1262 Remove spurious ' character 2016-06-19 22:16:32 +01:00
Bill Zimmerman 0ba25b9857 Merge pull request #10 from ReadmeCritic/master
Update README URLs based on HTTP redirects
2016-06-18 19:32:51 +02:00
ReadmeCritic 74b6e80728 Update README URLs based on HTTP redirects 2016-06-18 10:30:46 -07:00
Bill Zimmerman 8d33a049ed Modified system package update 2016-06-17 10:15:58 +02:00
Bill Zimmerman d9f1f35dd9 Updated with quick install 2016-06-16 17:02:47 +02:00
Bill Zimmerman 975a7942cc Updated error message 2016-06-16 15:32:43 +02:00
Bill Zimmerman b041bd6eda Intial commit 2016-06-16 15:16:54 +02:00
Bill Zimmerman bd4d7af732 Intial commit 2016-06-16 15:16:19 +02:00
Bill Zimmerman 6f1df5fe9e Initial commit 2016-06-16 12:03:29 +02:00
Bill Zimmerman 43d17f2a96 Updated phpDoc header 2016-06-14 21:00:17 +02:00
Bill Zimmerman 818e833a93 Updated to reflect minor release 2016-06-14 13:18:48 +02:00
Bill Zimmerman 94a7465395 Updated panel icon 2016-06-14 13:06:19 +02:00
Bill Zimmerman 18a9fd8999 Updated panel icon + standarized label 2016-06-14 13:05:39 +02:00
Bill Zimmerman dc76fd4d4a Updated panel icons + simplified header 2016-06-14 13:04:45 +02:00
Bill Zimmerman 26210318a1 Minor tweaks 2016-06-14 12:59:52 +02:00
Bill Zimmerman a0f647b3bd Updated screenshots 2016-06-14 12:59:05 +02:00
Bill Zimmerman d8f23eeda8 Merge pull request #9 from zlolz/add-system-controls
Add System Info and System Control (foundation)
2016-06-12 20:10:39 +02:00
zlolz 638f2e6d3d add cpu load bar, colour mem and cpu bars baased values (ok, warning, danger) 2016-06-12 04:16:59 +00:00
zlolz de7c0f7d79 Add System Info and System Control (foundation) 2016-06-12 00:17:44 +00:00
Bill Zimmerman f3ebe5ea4f Merge pull request #7 from zlolz/fix-interfaces
hostapd & dhcpd -- ensure all interfaces are selectable
2016-06-11 10:22:54 +02:00
Bill Zimmerman e93f853ee0 Merge pull request #8 from zlolz/fix-instructions
fix instructions - dirname and filename typos
2016-06-11 07:40:23 +02:00
zlolz 089c986d0a fix instructions - dirname and filename typos 2016-06-11 05:29:49 +00:00
zlolz 96e179e501 hostapd & dhcpd -- ensure all interfaces are selectable 2016-06-11 05:17:47 +00:00
Bill Zimmerman 250d1f58be Merge pull request #6 from jrmhaig/master
A bugfix and adding authentication
2016-06-01 21:14:27 +02:00
Joe Haig a3e37866e6 Clean up 2016-05-29 17:45:07 +01:00
Joseph Haig 2bfd7be098 Merge pull request #1 from jrmhaig/authentication
Add simple authentication
2016-05-29 17:42:17 +01:00
Joseph Haig 4e77adce33 Add simple authentication 2016-05-29 16:38:43 +01:00
Joe Haig 926d7ba13b Add more PHP_EOLs 2016-05-28 21:12:02 +01:00
Joe Haig 98a9822897 Avoid breaking hostapd config file with tabs 2016-05-28 20:19:19 +01:00
Bill Zimmerman a321910f24 Fixes #5 2016-05-01 08:54:24 +02:00
Bill Zimmerman ba9a3355df Replaced short tags for compatibility 2015-11-04 11:52:13 +01:00
Bill Zimmerman 763b22df0e Updated README 2015-05-04 10:16:07 +02:00
Bill Zimmerman bc13b6c375 Updated README 2015-03-11 14:33:04 +01:00
Bill Zimmerman 14f7960430 Updated README 2015-03-11 12:42:21 +01:00
Bill Zimmerman 34de49c6aa Updated README 2015-03-11 12:21:21 +01:00
Bill Zimmerman 4a083a7275 Updated README 2015-03-11 12:18:45 +01:00
Bill Zimmerman cdd78f01e6 Updated README 2015-03-11 12:17:03 +01:00
Bill Zimmerman 1f16791d55 Updated README 2015-03-11 11:34:35 +01:00
Bill Zimmerman d0811df89a Intial commit 2015-03-02 13:39:45 +01:00
2641 changed files with 187122 additions and 145391 deletions

2
.github/FUNDING.yml vendored Normal file
View File

@ -0,0 +1,2 @@
github: RaspAP

59
.github/ISSUE_TEMPLATE/bug_report.md vendored Normal file
View File

@ -0,0 +1,59 @@
---
name: Bug report
about: Create a report to help us improve RaspAP
title: ''
labels: ''
assignees: ''
---
<!-- These comments will NOT appear in your issue, so it's OK to ignore them -->
<!--
Thanks for reporting a bug for RaspAP.
Important: If you are NOT using a clean installation of a compatible OS, start with a fresh SD card, install RaspAP and replicate your bug BEFORE reporting an issue.
All submitters MUST read the issue policy and reporting guidelines:
https://docs.raspap.com/issues/
Refer to the frequently asked questions (FAQ) and official documentation:
https://docs.raspap.com/faq/
Do you have a question or want to suggest a new feature? Start a Discussion here:
https://github.com/RaspAP/raspap-webgui/discussions
Be sure there are no issues similar to yours that are already open. You can check this by searching the issues in this repository. If there is a duplicate issue, please close this one and add a comment to the existing issue instead.
-->
<!-- Provide a general summary of the issue in the Title above -->
## Checklist
<!-- IMPORTANT! Fill in the boxes that apply by marking them like so: [x] -->
- [ ] This is a bug report
- [ ] I observed this bug on a clean install of the OS
- [ ] I have followed the project prerequisites
- [ ] I have searched this repository for existing issues
- [ ] I checked the FAQ and official documentation before creating this issue
- [ ] I have read and understand the issue reporting guidelines
## Bug description
<!-- Provide a detailed description of the issue -->
## Your environment
1. Operating System: **ENTER HERE** <!-- RPi OS 32-bit Lite, Armbian, Debian, etc. -->
2. Hardware and version: <!-- RPi Zero/3B+/4, OrangePi 3, etc. -->
3. RaspAP version: <!-- reported by the Quick Installer or About page -->
4. Clean install of a compatible operating system? <!-- Yes/No -->
5. RaspAP Quick Install or Manual setup? <!-- Quick Install/Manual -->
6. Using default configuration? <!-- Yes/No -->
7. Simultaneous AP and managed mode? <!-- Yes/No -->
8. Onboard wireless chipset or external adapter? <!-- Onboard/External -->
9. Other software or services running with RaspAP?
## Steps to reproduce
<!-- Tell us how to reproduce this issue. Provide as much detailed information as possible -->
## Screenshots
<!-- If applicable, add screenshots to help explain your problem -->
## Additional context
<!-- Add any other context about the problem here -->

1
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@ -0,0 +1 @@
blank_issues_enabled: false

View File

@ -0,0 +1,20 @@
---
name: Feature request
about: Suggest an idea for this project
title: ''
labels: ''
assignees: ''
---
## Is your feature request related to a problem?
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
## Describe the solution you'd like
A clear and concise description of what you want to happen.
## Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
## Additional context
Add any other context or screenshots about the feature request here.

18
.github/stale.yml vendored Normal file
View File

@ -0,0 +1,18 @@
# Number of days of inactivity before an issue becomes stale
daysUntilStale: 60
# Number of days of inactivity before a stale issue is closed
daysUntilClose: 7
# Issues with these labels will never be considered stale
exemptLabels:
- pinned
- enhancement
- feature request
# Label to use when marking an issue as stale
staleLabel: stale
# Comment to post when marking an issue as stale. Set to `false` to disable
markComment: >
This issue has been automatically marked as stale because it has not had
recent activity. It will be closed if no further activity occurs. Thank you
for your contributions.
# Comment to post when closing a stale issue. Set to `false` to disable
closeComment: false

67
.github/workflows/codeql-analysis.yml vendored Normal file
View File

@ -0,0 +1,67 @@
# For most projects, this workflow file will not need changing; you simply need
# to commit it to your repository.
#
# You may wish to alter this file to override the set of languages analyzed,
# or to provide custom queries or build logic.
#
# ******** NOTE ********
# We have attempted to detect the languages in your repository. Please check
# the `language` matrix defined below to confirm you have the correct set of
# supported CodeQL languages.
#
name: "CodeQL"
on:
push:
branches: [ master ]
pull_request:
# The branches below must be a subset of the branches above
branches: [ master ]
schedule:
- cron: '17 9 * * 1'
jobs:
analyze:
name: Analyze
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
language: [ 'javascript', 'python' ]
# CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ]
# Learn more:
# https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed
steps:
- name: Checkout repository
uses: actions/checkout@v2
# Initializes the CodeQL tools for scanning.
- name: Initialize CodeQL
uses: github/codeql-action/init@v1
with:
languages: ${{ matrix.language }}
# If you wish to specify custom queries, you can do so here or in a config file.
# By default, queries listed here will override any specified in a config file.
# Prefix the list here with "+" to use these queries and those in the config file.
# queries: ./path/to/local/query, your-org/your-repo/queries@main
# Autobuild attempts to build any compiled languages (C/C++, C#, or Java).
# If this step fails, then you should remove it and run the build manually (see below)
- name: Autobuild
uses: github/codeql-action/autobuild@v1
# Command-line programs to run using the OS shell.
# 📚 https://git.io/JvXDl
# ✏️ If the Autobuild fails above, remove it and uncomment the following three lines
# and modify them (or add more) to build your code if your project
# uses a compiled language
#- run: |
# make bootstrap
# make release
- name: Perform CodeQL Analysis
uses: github/codeql-action/analyze@v1

16
.github/workflows/main.yml vendored Normal file
View File

@ -0,0 +1,16 @@
on:
issues:
types: [opened, edited]
jobs:
auto_close_issues:
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v1
- name: Automatically close issues that don't follow the issue template
uses: lucasbento/auto-close-issues@v1.0.2
with:
github-token: ${{ secrets.GITHUB_TOKEN }}
issue-close-message: "@${issue.user.login}: hello! :wave:\n\nThis issue is being automatically closed because it does not follow the issue template.\nPlease review this project's issue policy https://docs.raspap.com/issues" # optional property
closed-issues-label: "invalid" # optional property

6
.gitignore vendored
View File

@ -1 +1,7 @@
.DS_Store .DS_Store
node_modules
yarn-error.log
*.swp
includes/config.php
rootCA.pem
vendor

23
.travis.yml Normal file
View File

@ -0,0 +1,23 @@
sudo: false
language: php
matrix:
fast_finish: true
include:
- php: '7.0'
- php: '7.1'
- php: '7.2'
- php: '7.3'
- php: '7.4'
- php: 'nightly'
allow_failures:
- php: nightly
before_script:
- composer install --prefer-source --quiet --no-interaction
# Run test script commands.
script:
- composer test

52
BACKERS.md Normal file
View File

@ -0,0 +1,52 @@
<img width="465" alt="Insiders logo" src="https://user-images.githubusercontent.com/229399/115766971-e19e1900-a3a8-11eb-8c6f-379deb4313d2.png">
Development of RaspAP is made possible thanks to a sponsorware release model. This means that new features are first exclusively released to sponsors as part of **Insiders**. Read on to learn how sponsorship works, and how easy it is to get access to Insiders.
## How sponsorship works
New features first land in **Insiders**, which means that *sponsors will have access to them immediately*. Every feature is tied to a funding goal in monthly subscriptions. When a funding goal is hit, the features that are tied to it are merged back into the [public RaspAP repository](https://github.com/RaspAP/raspap-webgui) and released for general availability. Bugfixes and minor enhancements are always released simultaneously in both editions.
Don't want to sponsor? No problem, RaspAP already has tons of features available, so chances are that most of your requirements are already satisfied. See the list of **exclusive features** to learn which features are currently only available to sponsors.
## How to become a sponsor
You can become a sponsor using your individual or organization's GitHub account. Just pick any tier from $10/month and complete the checkout. Then, after a few hours, you will be added as a team member to the super-secret private GitHub repository containing the Insiders edition, which has all exclusive features. In addition, you get access to Insiders-only team discussions and content.
**Important**: If you're sponsoring [RaspAP](https://github.com/RaspAP/sponsors) through a GitHub organization, please send a short email to [sponsors@raspap.com](mailto:sponsors@raspap.com) with the name of your organization and the account that should be added as a collaborator.
## Exclusive features
The following features are currently available exclusively to sponsors. A tangible side benefit of sponsorship is that Insiders are able to help steer future development of RaspAP. This is done through Insiders' access to discussions, feature requests, issues and pull requests in the private GitHub repository.
✅ [Network device management](https://docs.raspap.com/net-devices/)
✅ [Firewall settings](https://docs.raspap.com/firewall/)
✅ [WPA3-Personal AP security](https://docs.raspap.com/ap-basics/#wpa3-personal)
✅ [802.11w Protected Management Frames](https://docs.raspap.com/ap-basics/#80211w)
✅ [Printable Wi-Fi signs](https://docs.raspap.com/ap-basics/#printable-signs)
✅ [Drag & drop dashboard widgets](https://docs.raspap.com/ap-basics/#drag-drop-widgets)
✅ [MAC address cloning](https://docs.raspap.com/net-devices/#changing-the-mac-address)
✅ [Network diagnostics](https://docs.raspap.com/net-devices/#diagnostics)
✅ [WireGuard VPN kill switch](https://docs.raspap.com/wireguard/#kill-switch)
✅ [Dynamic DNS](https://docs.raspap.com/dynamicdns/)
✅ [Multiple WireGuard configs](https://docs.raspap.com/wireguard/#multiple-configs)
Look for the list above to grow as we add more exclusive features. Be sure to visit this page from time to time to learn about what's new, check the [Insiders docs page](https://docs.raspap.com/insiders/) and follow [@RaspAP on Twitter](https://twitter.com/rasp_ap) to stay updated.
## Funding targets
Below is a list of funding targets. When a funding target is reached, the features that are tied to it are merged back into RaspAP and released to the public for general availability.
### $1000
The second **Insiders Edition** includes the features listed above.
### $500
The [first Insiders Edition goal](https://docs.raspap.com/insiders/#500-1st-insiders-edition) was reached in December 2021. Thank you sponsors!
## Quarterly giving
Beginning in 2022, each quarter 15% of all proceeds from Insiders will be donated directly to the [Raspberry Pi Foundation](https://www.raspberrypi.org/). The Raspberry Pi Foundation is a UK-based charity that works to put the power of computing and digital making into the hands of people all over the world.
[![Get involved with the Raspberry Pi Foundation](https://img.youtube.com/vi/dEzg92g1LHw/0.jpg)](https://www.youtube.com/watch?v=dEzg92g1LHw)
When you become an Insider, not only do you support development of RaspAP but you also help inspire young people by harnessing the power of computing to solve problems and express themselves creatively.
## Frequently asked questions
We've covered all you need to know [here](https://docs.raspap.com/insiders/#frequently-asked-questions).
### Terms
See our [official project documentation](https://docs.raspap.com/insiders/#terms).

13
CONTRIBUTING.md Normal file
View File

@ -0,0 +1,13 @@
## How to contribute
1. Fork the project in your account and create a new branch: `your-great-feature`.
2. Open an issue in the repository describing the feature contribution you'd like to make. This will help us get you started on the right foot.
3. Commit changes in your feature branch.
4. Open a pull request and reference the initial issue in the pull request message.
### Coding standards
This project follows the [PSR-2](http://www.php-fig.org/psr/psr-2/) coding style guidelines. There are many ways to check your code for PSR-2. An excellent tool is [PHP_CodeSniffer](https://github.com/squizlabs/PHP_CodeSniffer). The command line tool phpcs can be run against any single file. [Phing](https://www.phing.info/), a PHP build tool, integrates nicely with `phpcs` to automate PSR-2 checks across all source files in a project.
### Development process
Development processes used by contributors to the project are described [on this page](https://docs.raspap.com/developers/). It does not endorse one over the other; rather it is meant to share two different approaches.

674
LICENSE Normal file
View File

@ -0,0 +1,674 @@
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.

211
README.md
View File

@ -1,63 +1,178 @@
![](http://i.imgur.com/xeKD93p.png) ![](https://i.imgur.com/xeKD93p.png)
# `$ raspap-webgui` [![Release 1.0](https://img.shields.io/badge/Release-1.0-green.svg)](https://github.com/billz/raspap-webgui/releases) [![Release 2.9.6](https://img.shields.io/badge/release-v2.9.6-green)](https://github.com/raspap/raspap-webgui/releases) [![Awesome](https://awesome.re/badge.svg)](https://github.com/thibmaek/awesome-raspberry-pi) [![Join Insiders](https://img.shields.io/static/v1?label=Join%20Insiders&message=%E2%9D%A4&logo=GitHub&color=ff69b4)](https://github.com/sponsors/RaspAP) [![Build Status](https://app.travis-ci.com/RaspAP/raspap-webgui.svg?branch=master)](https://app.travis-ci.com/RaspAP/raspap-webgui) [![Crowdin](https://badges.crowdin.net/raspap/localized.svg)](https://crowdin.com/project/raspap) [![Twitter URL](https://img.shields.io/twitter/url?label=%40RaspAP&logoColor=%23d8224c&url=https%3A%2F%2Ftwitter.com%2Frasp_ap)](https://twitter.com/rasp_ap) [![Subreddit subscribers](https://img.shields.io/reddit/subreddit-subscribers/RaspAP?style=social)](https://www.reddit.com/r/RaspAP/) [![Join the chat at https://app.gitter.im/#/room/#RaspAP:gitter.im](https://img.shields.io/badge/chat-on%20gitter-brightgreen)](https://app.gitter.im/#/room/#RaspAP:gitter.im)
A simple, responsive web interface to control wifi, hostapd and related services on the Raspberry Pi.
This project was inspired by a [**blog post**](http://sirlagz.net/2013/02/06/script-web-configuration-page-for-raspberry-pi/) by SirLagz about using a web page rather than ssh to configure wifi and hostapd settings on the Raspberry Pi. I mostly just prettified the UI by wrapping it in [**SB Admin 2**](https://github.com/IronSummitMedia/startbootstrap-sb-admin-2), a Bootstrap based admin theme :smile: RaspAP is feature-rich wireless router software that _just works_ on many popular [Debian-based devices](#supported-operating-systems), including the Raspberry Pi. Our popular [Quick installer](#quick-installer) creates a known-good default configuration for all current Raspberry Pis with onboard wireless. A fully responsive, mobile-ready interface gives you control over the relevant services and networking options. Advanced DHCP settings, WireGuard and OpenVPN support, [SSL certificates](https://docs.raspap.com/ssl-quick/), security audits, [captive portal integration](https://docs.raspap.com/captive/), themes and [multilingual options](https://docs.raspap.com/translations/) are included.
We'd be curious to hear about how you use this with your own Pi-powered access points. Ping us on Twitter ([**@billzimmerman**](https://twitter.com/billzimmerman) and [**@SirLagz**](https://twitter.com/SirLagz)). Until then, here's a screenshot: RaspAP has been featured on sites such as [Instructables](http://www.instructables.com/id/Raspberry-Pi-As-Completely-Wireless-Router/), [Adafruit](https://blog.adafruit.com/2016/06/24/raspap-wifi-configuration-portal-piday-raspberrypi-raspberry_pi/), [Raspberry Pi Weekly](https://www.raspberrypi.org/weekly/commander/) and [Awesome Raspberry Pi](https://project-awesome.org/thibmaek/awesome-raspberry-pi) and implemented in countless projects.
![](http://i.imgur.com/c09ZTQS.png) We hope you enjoy using RaspAP as much as we do creating it. Tell us how you use this with [your own projects](https://github.com/raspap/raspap-awesome).
![](https://i.imgur.com/uhBFoOB.png)
![](https://i.imgur.com/EiIpdOS.gif)
![](https://i.imgur.com/eCjUS1H.gif)
![](https://i.imgur.com/5FT2BcS.gif)
![](https://i.imgur.com/RKaBFrZ.gif)
## Contents ## Contents
- [Installation](#installation) - [Prerequisites](#prerequisites)
- [Quick installer](#quick-installer)
- [Join Insiders](#join-insiders)
- [WireGuard support](#wireguard-support)
- [OpenVPN support](#openvpn-support)
- [Ad Blocking](#ad-blocking)
- [Bridged AP](#bridged-ap)
- [Simultaneous AP and Wifi client](#simultaneous-ap-and-wifi-client)
- [Manual installation](#manual-installation)
- [802.11ac 5GHz support](#80211ac-5ghz-support)
- [Supported operating systems](#supported-operating-systems)
- [Multilingual support](#multilingual-support)
- [HTTPS support](#https-support)
- [How to contribute](#how-to-contribute) - [How to contribute](#how-to-contribute)
- [Reporting issues](#reporting-issues)
- [License](#license)
## Installation ## Prerequisites
Start off by installing lighttpd and php5. Start with a clean install of the [latest release of Raspberry Pi OS Lite](https://www.raspberrypi.com/software/operating-systems/). Both the 32- and 64-bit Lite versions are supported. The Raspberry Pi OS desktop distro is [unsupported](https://docs.raspap.com/faq/#distros).
```sh
$ apt-get install lighttpd php5-cgi
```
After that, enable PHP for lighttpd and restart it for the settings to take effect.
```sh
sudo lighty-enable-mod fastcgi-php
/etc/init.d/lighttpd restart
```
Now comes the fun part. For security reasons, the `www-data` user which lighttpd runs under is not allowed to start or stop daemons, or run commands like ifdown and ifup, all of which we want our page to do.
So what I have done is added the `www-data` user to the sudoers file, but with restrictions on what commands the user can run.
Add the following to the end of `/etc/sudoers`:
```sh 1. Update Raspbian, including the kernel and firmware, followed by a reboot:
www-data ALL=(ALL) NOPASSWD:/sbin/ifdown wlan0,/sbin/ifup wlan0,/bin/cat
/etc/wpa_supplicant/wpa_supplicant.conf,/bin/cp /tmp/wifidata
/etc/wpa_supplicant/wpa_supplicant.conf,/sbin/wpa_cli scan_results,
/sbin/wpa_cli scan,/bin/cp /tmp/hostapddata /etc/hostapd/hostapd.conf,
/etc/init.d/hostapd start,/etc/init.d/hostapd stop,/etc/init.d/dnsmasq start,
/etc/init.d/dnsmasq stop,/bin/cp /tmp/dhcpddata /etc/dnsmasq.conf
``` ```
sudo apt-get update
Once those modifications are done, git clone the files to `/var/www`. sudo apt-get full-upgrade
```sh
sudo git clone https://github.com/billz/raspap-webgui /var/www
```
Set the files ownership to `www-data` user.
```sh
sudo chown -R www-data:www-data /var/www
```
Reboot and it should be up and running!
```sh
sudo reboot sudo reboot
``` ```
## How to contribute 2. Set the "WLAN country" option in `raspi-config`'s **Localisation Options**: `sudo raspi-config`
1. File an issue in the repository, using the bug tracker, describing the 3. If you have a device without an onboard wireless chipset, the [**Edimax Wireless 802.11b/g/n nano USB adapter**](https://www.edimax.com/edimax/merchandise/merchandise_detail/data/edimax/global/wireless_adapters_n150/ew-7811un) is an excellent option it's small, cheap and has good driver support.
contribution you'd like to make. This will help us to get you started on the
right foot. With the prerequisites done, you can proceed with either the Quick installer or Manual installation steps below.
2. Fork the project in your account and create a new branch:
`your-great-feature`. ## Quick installer
3. Commit your changes in that branch. Install RaspAP from your device's shell prompt:
4. Open a pull request, and reference the initial issue in the pull request ```sh
message. curl -sL https://install.raspap.com | bash
```
The [installer](https://docs.raspap.com/quick/) will complete the steps in the manual installation (below) for you.
After the reboot at the end of the installation the wireless network will be
configured as an access point as follows:
* IP address: 10.3.141.1
* Username: admin
* Password: secret
* DHCP range: 10.3.141.50 — 10.3.141.254
* SSID: `raspi-webgui`
* Password: ChangeMe
**Note:** As the name suggests, the Quick Installer is a great way to quickly setup a new AP. However, it does not automagically detect the unique configuration of your system. Best results are obtained by connecting to ethernet (`eth0`) or as a WiFi client, also known as managed mode, with `wlan0`. For the latter, refer to [this FAQ](https://docs.raspap.com/faq/#headless). Special instructions for the Pi Zero W are [available here](https://docs.raspap.com/ap-sta/).
Please [read this](https://docs.raspap.com/issues/) before reporting an issue.
## Join Insiders
[![](https://i.imgur.com/eml7k0b.png)](https://github.com/sponsors/RaspAP/)
RaspAP is free software, but powered by _your_ support. If you find RaspAP useful for your personal or commercial projects, [become an Insider](https://github.com/sponsors/RaspAP/) and get early access to [exclusive features](https://docs.raspap.com/insiders/#exclusive-features) in the [Insiders Edition](https://docs.raspap.com/insiders/).
A tangible side benefit of sponsorship is that **Insiders** are able to help _steer future development of RaspAP_. This is done through Insiders' team access to discussions, feature requests, issues and more in the private GitHub repository.
## WireGuard support
![](https://i.imgur.com/5YDv37e.png)
WireGuard® is an extremely simple yet fast and modern VPN that utilizes state-of-the-art cryptography. It aims to be considerably more performant than OpenVPN, and is generally regarded as the most secure, easiest to use, and simplest VPN solution for modern Linux distributions.
WireGuard may be optionally installed by the [Quick Installer](https://docs.raspap.com/quick/). Once this is done, you can manage local (server) settings, create a peer configuration and control the `wg-quick` service with RaspAP.
Details are [provided here](https://docs.raspap.com/wireguard/).
## OpenVPN support
![](https://i.imgur.com/ta7tCon.png)
OpenVPN may be optionally installed by the Quick Installer. Once this is done, you can [manage client configurations](https://docs.raspap.com/openvpn/) and the `openvpn-client` service with RaspAP.
To configure an OpenVPN client, upload a valid .ovpn file and, optionally, specify your login credentials. RaspAP will store your client configuration and add firewall rules to forward traffic from OpenVPN's `tun0` interface to your configured wireless interface.
See our [OpenVPN documentation](https://docs.raspap.com/openvpn/) for more information.
## Ad Blocking
This feature uses DNS blacklisting to block requests for ads, trackers and other undesirable hosts. To enable ad blocking, simply respond to the prompt during the installation. As a beta release, we encourage testing and feedback from users of RaspAP.
Details are [provided here](https://docs.raspap.com/adblock/).
## Bridged AP
By default RaspAP configures a routed AP for your clients to connect to. A bridged AP configuration is also possible. Slide the **Bridged AP mode** toggle under the **Advanced** tab of **Configure hotspot**, then save and restart the hotspot.
**Note:** In bridged mode, all routing capabilities are handled by your upstream router. Because your router assigns IP addresses to your device's hotspot and its clients, you might not be able to reach the RaspAP web interface from the default `10.3.141.1` address. Instead use your RPi's hostname followed by `.local` to access the RaspAP web interface. With Raspbian default settings, this should look like `raspberrypi.local`. Alternate methods are [discussed here](https://www.raspberrypi.org/documentation/remote-access/ip-address.md).
More information on Bridged AP mode is provided [in our documentation](https://docs.raspap.com/bridged/).
## Simultaneous AP and Wifi client
RaspAP lets you create an AP with a Wifi client configuration, often called [AP-STA mode](https://docs.raspap.com/ap-sta/). With your system configured in managed mode, enable the AP from the **Advanced** tab of **Configure hotspot** by sliding the **Wifi client AP mode** toggle. Save settings and start the hotspot. The managed mode AP is functional without restart.
**Note:** This option is disabled until you configure your system as a wireless client. For a device operating in [managed mode](https://docs.raspap.com/faq/#headless) without an `eth0` connection, this configuration must be enabled [_before_ a reboot](https://docs.raspap.com/ap-sta/).
## Manual installation
Detailed manual setup instructions are provided [on our documentation site](https://docs.raspap.com/manual/).
## 802.11ac 5GHz support
RaspAP provides an 802.11ac wireless mode option for supported hardware (currently the RPi 3B+/4 and compatible Orange Pi models) and wireless regulatory domains. See [this FAQ](https://docs.raspap.com/faq/#80211ac) for more information.
## Supported operating systems
RaspAP was originally made for Raspbian, but now also installs on the following Debian-based distros.
| Distribution | Release | Architecture | Support |
|---|:---:|:---:|:---:|
| Raspberry Pi OS | (32-bit) Lite Bullseye | ARM | Official |
| Raspberry Pi OS | (64-bit) Lite Bullseye | ARM | Official |
| Armbian | Bullseye | [ARM](https://docs.armbian.com/#supported-socs) | Official |
| Debian | Bullseye | ARM / x86_64 | Beta |
| Ubuntu | 18.04 LTS / 19.10 | ARM / x86_64 | Beta |
![](https://i.imgur.com/luiyYNw.png)
We find Armbian particularly well-suited for this project. Please note that "supported" is not a guarantee. If you are able to improve support for your preferred distro, we encourage you to [actively contribute](#how-to-contribute) to the project.
## Multilingual support
RaspAP uses [GNU Gettext](https://www.gnu.org/software/gettext/) to manage multilingual messages. In order to use RaspAP with one of our supported translations, you must configure a corresponding language package on your RPi. To list languages currently installed on your system, use `locale -a` at the shell prompt. To generate new locales, run `sudo dpkg-reconfigure locales` and select any other desired locales. Details are provided on our [documentation site](https://docs.raspap.com/translations/).
See this list of [supported languages](https://docs.raspap.com/translations/#supported-languages) that are actively maintained by volunteer translators. If your language is not supported, why not [contribute a translation](https://docs.raspap.com/translations/#contributing-to-a-translation)? Contributors will receive credit as the original translators.
## HTTPS support
The Quick Installer may be used to [generate SSL certificates](https://docs.raspap.com/ssl-quick/) with `mkcert`. The installer automates the manual steps [described here](https://docs.raspap.com/ssl-manual/), including configuring lighttpd with SSL support.
Simply append the `-c` or `--cert` option to the Quick Installer, like so:
```sh
curl -sL https://install.raspap.com | bash -s -- --cert
```
**Note**: this only installs mkcert and generates an SSL certificate with the input you provide. It does *not* (re)install RaspAP.
More information on SSL certificates and HTTPS support is available [in our documentation](https://docs.raspap.com/ssl-quick/).
## How to contribute
1. Fork the project in your account and create a new branch: `your-great-feature`.
2. Open an issue in the repository describing the feature contribution you'd like to make.
3. Commit changes in your feature branch.
4. Open a pull request and reference the initial issue in the pull request message.
Find out more about our [coding style guidelines and recommended tools](CONTRIBUTING.md).
## Reporting issues
Please [read this](https://docs.raspap.com/issues/) before reporting a bug.
## Contributors
### Code Contributors
This project exists thanks to all the awesome people who [contribute](CONTRIBUTING.md) their time and expertise.
<a href="https://github.com/raspap/raspap-webgui/graphs/contributors"><img src="https://opencollective.com/raspap/contributors.svg?width=890&button=false" /></a>
### Financial Contributors
Development of RaspAP is made possible thanks to a sponsorware release model. This means that new features are first exclusively released to sponsors as part of [**Insiders**](https://github.com/sponsors/RaspAP).
Learn more about [how sponsorship works](https://docs.raspap.com/insiders/#how-sponsorship-works), and how easy it is to get access to Insiders.
## License ## License
See the [LICENSE](./LICENSE) file. See the [LICENSE](./LICENSE) file.

27
SECURITY.md Normal file
View File

@ -0,0 +1,27 @@
# Security Policy
The RaspAP team and community take all security vulnerabilities seriously. This document outlines security procedures and general policies for the RaspAP open source projects as found on https://github.com/RaspAP/.
If you believe you have found a security vulnerability in any RaspAP-owned repository, please report it to us as described below.
## Reporting a vulnerability in RaspAP
Thank you for improving the security of our open source software.
We appreciate your efforts and responsible disclosure, and will make every effort to acknowledge your contributions.
Please report (suspected) security vulnerabilities to [security@raspap.com](mailto:security@raspap.com). The requested information listed below will help us better understand the nature and scope of the possible issue:
1. Type of issue (eg. shell exploit, cross-site scripting, etc.)
2. Full paths of source file(s) related to the manifestation of the issue
3. The location of the affected source code (tag/branch/commit or direct URL)
4. Any special configuration required to reproduce the issue
5. Step-by-step instructions to reproduce the issue
6. Proof-of-concept or exploit code (if possible)
7. Impact of the issue, including how an attacker might exploit the issue
This information will help us triage your report more quickly.
You will receive a response from us within 48 hours. Developers may ask for additional information or clarity on your report.
If the issue is confirmed, we will release a patch as soon as possible depending on complexity, but historically within a few days.
## Third-party modules
Report security vulnerabilities in third-party modules to the person or team maintaining the module.

1
_config.yml Normal file
View File

@ -0,0 +1 @@
theme: jekyll-theme-minimal

74
_layouts/default.html Normal file
View File

@ -0,0 +1,74 @@
<!DOCTYPE html>
<html lang="{{ site.lang | default: "en-US" }}">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="msapplication-config" content="/app/icons/browserconfig.xml">
<meta name="msapplication-TileColor" content="#b91d47">
<link rel="icon" type="image/png" sizes="32x32" href="/app/icons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="/app/icons/favicon-16x16.png">
<link rel="icon" type="image/png" href="/app/icons/favicon.png" />
<link rel="apple-touch-icon" sizes="180x180" href="/app/icons/apple-touch-icon.png">
<link rel="mask-icon" href="/app/icons/safari-pinned-tab.svg" color="#b91d47">
<link rel="manifest" href="/app/icons/site.webmanifest">
{% seo %}
<link rel="stylesheet" href="{{ "/assets/css/style.css?v=" | append: site.github.build_revision | relative_url }}">
<!--[if lt IE 9]>
<script src="https://cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv.min.js"></script>
<![endif]-->
</head>
<body>
<div class="wrapper">
<header>
<h1><a href="{{ "/" | absolute_url }}">{{ site.title | default: site.github.repository_name }}</a></h1>
{% if site.logo %}
<img src="{{site.logo | relative_url}}" alt="Logo" />
{% endif %}
<p>{{ site.description | default: site.github.project_tagline }}</p>
{% if site.github.is_project_page %}
<p class="view"><a href="{{ site.github.repository_url }}">View the Project on GitHub <small>{{ site.github.repository_nwo }}</small></a></p>
{% endif %}
{% if site.github.is_user_page %}
<p class="view"><a href="{{ site.github.owner_url }}">View My GitHub Profile</a></p>
{% endif %}
{% if site.show_downloads %}
<ul class="downloads">
<li><a href="{{ site.github.zip_url }}">Download <strong>ZIP File</strong></a></li>
<li><a href="{{ site.github.tar_url }}">Download <strong>TAR Ball</strong></a></li>
<li><a href="{{ site.github.repository_url }}">View On <strong>GitHub</strong></a></li>
</ul>
{% endif %}
</header>
<section>
{{ content }}
</section>
<footer>
{% if site.github.is_project_page %}
<p>This project is maintained by <a href="{{ site.github.owner_url }}">{{ site.github.owner_name }}</a></p>
{% endif %}
<p><small>Hosted on GitHub Pages &mdash; Theme by <a href="https://github.com/orderedlist">orderedlist</a></small></p>
</footer>
</div>
<script src="{{ "/assets/js/scale.fix.js" | relative_url }}"></script>
{% if site.google_analytics %}
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', '{{ site.google_analytics }}', 'auto');
ga('send', 'pageview');
</script>
{% endif %}
</body>
</html>

View File

@ -0,0 +1,53 @@
<?php
require '../../includes/csrf.php';
require_once '../../includes/config.php';
if (isset($_POST['blocklist_id'])) {
$blocklist_id = escapeshellcmd($_POST['blocklist_id']);
switch ($blocklist_id) {
case "StevenBlack/hosts \(default\)":
$list_url = "https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts";
$dest_file = "hostnames.txt";
break;
case "badmojr/1Hosts \(Mini\)":
$list_url = "https://badmojr.github.io/1Hosts/mini/hosts.txt";
$dest_file = "hostnames.txt";
break;
case "badmojr/1Hosts \(Lite\)":
$list_url = "https://badmojr.github.io/1Hosts/Lite/hosts.txt";
$dest_file = "hostnames.txt";
break;
case "badmojr/1Hosts \(Pro\)":
$list_url = "https://badmojr.github.io/1Hosts/Pro/hosts.txt";
$dest_file = "hostnames.txt";
break;
case "badmojr/1Hosts \(Xtra\)":
$list_url = "https://badmojr.github.io/1Hosts/Xtra/hosts.txt";
$dest_file = "hostnames.txt";
break;
case "oisd/big \(default\)":
$list_url = "https://big.oisd.nl/dnsmasq";
$dest_file = "domains.txt";
break;
case "oisd/small":
$list_url = "https://small.oisd.nl/dnsmasq";
$dest_file = "domains.txt";
break;
case "oisd/nsfw":
$list_url = "https://nsfw.oisd.nl/dnsmasq";
$dest_file = "domains.txt";
break;
}
$blocklist = $list_url . $dest_file;
$dest = substr($dest_file, 0, strrpos($dest_file, "."));
exec("sudo /etc/raspap/adblock/update_blocklist.sh $list_url $dest_file " .RASPI_ADBLOCK_LISTPATH, $return);
$jsonData = ['return'=>$return,'list'=>$dest];
echo json_encode($jsonData);
} else {
$jsonData = ['return'=>2,'output'=>['Error getting data']];
echo json_encode($jsonData);
}

View File

@ -0,0 +1,85 @@
<?php
require '../../includes/csrf.php';
require_once '../../includes/config.php';
$interface = filter_input(INPUT_GET, 'inet', FILTER_SANITIZE_SPECIAL_CHARS);
if (empty($interface)) {
// Use first interface if inet parameter not provided.
exec("ip -o link show | awk -F ': ' '{print $2}' | grep -v lo ", $interfacesWlo);
if (count($interfacesWlo) > 0) {
$interface = $interfacesWlo[0];
} else {
exit('No network interfaces found.');
}
}
define('IFNAMSIZ', 16);
if (strlen($interface) > IFNAMSIZ) {
exit('Interface name too long.');
} elseif(!preg_match('/^[a-zA-Z0-9]+$/', $interface)) {
exit('Invalid interface name.');
}
require_once './get_bandwidth_hourly.php';
exec(
sprintf('vnstat -i %s --json ', escapeshellarg($interface)), $jsonstdoutvnstat,
$exitcodedaily
);
if ($exitcodedaily !== 0) {
exit('vnstat error');
}
$jsonobj = json_decode($jsonstdoutvnstat[0], true);
$timeunits = filter_input(INPUT_GET, 'tu');
if ($timeunits === 'm') {
// months
$jsonData = $jsonobj['interfaces'][0]['traffic']['month'];
} else {
// default: days
$jsonData = $jsonobj['interfaces'][0]['traffic']['day'];
}
$datasizeunits = filter_input(INPUT_GET, 'dsu');
$dsu_factor = $datasizeunits == "mb" ? 1024 * 1024 : 1024;
header('X-Content-Type-Options: nosniff');
header('Content-Type: application/json');
echo '[ ';
$firstelm = true;
for ($i = count($jsonData) - 1; $i >= 0; --$i) {
if ($timeunits === 'm') {
$dt = DateTime::createFromFormat(
'Y n', $jsonData[$i]['date']['year'].' '.
$jsonData[$i]['date']['month']
);
} else {
$dt = DateTime::createFromFormat(
'Y n j', $jsonData[$i]['date']['year'].' '.
$jsonData[$i]['date']['month'].' '.
$jsonData[$i]['date']['day']
);
}
if ($firstelm) {
$firstelm = false;
} else {
echo ',';
}
$datasend = round($jsonData[$i]['tx'] / $dsu_factor, 0);
$datareceived = round($jsonData[$i]['rx'] / $dsu_factor, 0);
if ($timeunits === 'm') {
echo '{ "date": "' , $dt->format('Y-m') , '", "rx": "' , $datareceived ,
'", "tx": "' , $datasend , '" }';
} else {
echo '{ "date": "' , $dt->format('Y-m-d') , '", "rx": "' , $datareceived ,
'", "tx": "' , $datasend , '" }';
}
}
echo ' ]';

View File

@ -0,0 +1,66 @@
<?php
require '../../includes/csrf.php';
if (filter_input(INPUT_GET, 'tu') == 'h') {
header('X-Content-Type-Options: nosniff');
header('Content-Type: application/json');
$data_template = array(
0 => array('date' => '00:00', 'rx' => 0, 'tx' => 0),
1 => array('date' => '01:00', 'rx' => 0, 'tx' => 0),
2 => array('date' => '02:00', 'rx' => 0, 'tx' => 0),
3 => array('date' => '03:00', 'rx' => 0, 'tx' => 0),
4 => array('date' => '04:00', 'rx' => 0, 'tx' => 0),
5 => array('date' => '05:00', 'rx' => 0, 'tx' => 0),
6 => array('date' => '06:00', 'rx' => 0, 'tx' => 0),
7 => array('date' => '07:00', 'rx' => 0, 'tx' => 0),
8 => array('date' => '08:00', 'rx' => 0, 'tx' => 0),
9 => array('date' => '09:00', 'rx' => 0, 'tx' => 0),
10 => array('date' => '10:00', 'rx' => 0, 'tx' => 0),
11 => array('date' => '11:00', 'rx' => 0, 'tx' => 0),
12 => array('date' => '12:00', 'rx' => 0, 'tx' => 0),
13 => array('date' => '13:00', 'rx' => 0, 'tx' => 0),
14 => array('date' => '14:00', 'rx' => 0, 'tx' => 0),
15 => array('date' => '15:00', 'rx' => 0, 'tx' => 0),
16 => array('date' => '16:00', 'rx' => 0, 'tx' => 0),
17 => array('date' => '17:00', 'rx' => 0, 'tx' => 0),
18 => array('date' => '18:00', 'rx' => 0, 'tx' => 0),
19 => array('date' => '19:00', 'rx' => 0, 'tx' => 0),
20 => array('date' => '20:00', 'rx' => 0, 'tx' => 0),
21 => array('date' => '21:00', 'rx' => 0, 'tx' => 0),
22 => array('date' => '22:00', 'rx' => 0, 'tx' => 0),
23 => array('date' => '23:00', 'rx' => 0, 'tx' => 0)
);
exec(sprintf('vnstat -i %s --json h', escapeshellarg($interface)), $jsonstdoutvnstat, $exitcodedaily);
if ($exitcodedaily !== 0) {
exit('vnstat error');
}
$datasizeunits = filter_input(INPUT_GET, 'dsu');
$dsu_factor = $datasizeunits == "mb" ? 1024 * 1024 : 1024;
$jsonobj = json_decode($jsonstdoutvnstat[0], true)['interfaces'][0];
$jsonData = $jsonobj['traffic']['hour'];
for ($i = count($jsonData) - 1; $i >= 0 && $i >= count($jsonData)-25; --$i) {
$data_template[$jsonData[$i]['time']['hour']]['rx'] = round($jsonData[$i]['rx'] / $dsu_factor, 0);
$data_template[$jsonData[$i]['time']['hour']]['tx'] = round($jsonData[$i]['tx'] / $dsu_factor, 0);
}
$data = array();
$hour = $jsonobj['updated']['time']['hour'];
foreach ($data_template as $key => $value) {
if ($key > $hour) {
array_push($data, $value);
}
}
foreach ($data_template as $key => $value) {
if ($key <= $hour) {
array_push($data, $value);
}
}
echo json_encode($data);
exit(0);
}

13
ajax/logging/clearlog.php Normal file
View File

@ -0,0 +1,13 @@
<?php
require '../../includes/csrf.php';
require_once '../../includes/config.php';
require_once '../../includes/functions.php';
if (isset($_POST['logfile'])) {
$logfile = escapeshellcmd($_POST['logfile']);
// truncate requested log file
exec("sudo truncate -s 0 $logfile", $return);
echo json_encode($return);
}

View File

@ -0,0 +1,35 @@
<?php
require_once '../../includes/config.php';
require_once '../../includes/session.php';
require_once '../../includes/functions.php';
if (isset($_POST['csrf_token'])) {
if (csrfValidateRequest() && !CSRFValidate()) {
handleInvalidCSRFToken();
}
$return = 0;
$path = "../../config";
$configs = array(
array("src" => $path .'/hostapd.conf', "tmp" => "/tmp/hostapddata", "dest" => RASPI_HOSTAPD_CONFIG),
array("src" => $path .'/dhcpcd.conf', "tmp" => "/tmp/dhcpddata", "dest" => RASPI_DHCPCD_CONFIG),
array("src" => $path .'/090_wlan0.conf', "tmp" => "/tmp/dnsmasqdata", "dest" => RASPI_DNSMASQ_PREFIX.'wlan0.conf'),
array("src" => $path .'/090_raspap.conf', "tmp" => "/tmp/dnsmasqdata", "dest" => RASPI_DNSMASQ_PREFIX.'raspap.conf'),
);
foreach ($configs as $config) {
try {
$tmp = file_get_contents($config["src"]);
file_put_contents($config["tmp"], $tmp);
system("sudo cp ".$config["tmp"]. " ".$config["dest"]);
} catch (Exception $e) {
$return = $e->getCode();
}
}
$jsonData = ['return'=>$return];
echo json_encode($jsonData);
} else {
handleInvalidCSRFToken();
}

View File

@ -0,0 +1,6 @@
<?php
require '../../includes/csrf.php';
exec("ls /sys/class/net | grep -v lo", $interfaces);
echo json_encode($interfaces);

View File

@ -0,0 +1,17 @@
<?php
require '../../includes/csrf.php';
require_once '../../includes/config.php';
exec('cat '. RASPI_HOSTAPD_CONFIG, $hostapdconfig);
$arrConfig = array();
foreach ($hostapdconfig as $hostapdconfigline) {
if (strlen($hostapdconfigline) === 0) {
continue;
}
$arrLine = explode("=", $hostapdconfigline);
$arrConfig[$arrLine[0]]=$arrLine[1];
};
$channel = intval($arrConfig['channel']);
echo json_encode($channel);

View File

@ -0,0 +1,43 @@
<?php
require '../../includes/csrf.php';
require_once '../../includes/config.php';
require_once '../../includes/locale.php';
if (isset($_POST['interface'])) {
define( 'NL80211_BAND_24GHZ', 0x1 );
define( 'NL80211_BAND_5GHZ', 0x2 );
$iface = escapeshellcmd($_POST['interface']);
$flags = 0;
// get physical device for selected interface
exec("iw dev | awk '/$iface/ {print line}{line = $0}'", $return);
$phy = $return[0];
// get frequencies supported by device
exec('iw '.$phy.' info | sed -rn "s/^.*\*\s([0-9]{4})\sMHz.*/\1/p"', $frequencies);
if (count(preg_grep('/^24[0-9]{2}/i', $frequencies)) >0) {
$flags += NL80211_BAND_24GHZ;
}
if (count(preg_grep('/^5[0-9]{3}/i', $frequencies)) >0) {
$flags += NL80211_BAND_5GHZ;
}
switch ($flags) {
case NL80211_BAND_24GHZ:
$msg = sprintf(_("The selected interface (%s) has support for the 2.4 GHz wireless band only."), $iface);
break;
case NL80211_BAND_5GHZ:
$msg = sprintf(_("The selected interface (%s) has support for the 5 GHz wireless band only."), $iface);
break;
case NL80211_BAND_24GHZ | NL80211_BAND_5GHZ:
$msg = sprintf(_("The selected interface (%s) has support for both the 2.4 and 5 GHz wireless bands."), $iface);
break;
default:
$msg = sprintf(_("The selected interface (%s) does not support wireless mode operation."), $iface);
}
echo json_encode($msg);
}

View File

@ -0,0 +1,16 @@
<?php
require '../../includes/csrf.php';
require_once '../../includes/functions.php';
if (isset($_POST['interface'])) {
$int = preg_replace('/[^a-z0-9]/', '', $_POST['interface']);
exec('ip a s '.$int, $intOutput, $intResult);
$intOutput = array_map('htmlentities', $intOutput);
$jsonData = ['return'=>$intResult,'output'=>$intOutput];
echo json_encode($jsonData);
} else {
$jsonData = ['return'=>2,'output'=>['Error getting data']];
echo json_encode($jsonData);
}

View File

@ -0,0 +1,60 @@
<?php
require '../../includes/csrf.php';
require_once '../../includes/config.php';
$interface = $_GET['iface'];
if (isset($interface)) {
// fetch dnsmasq.conf settings for interface
exec('cat '. escapeshellarg(RASPI_DNSMASQ_PREFIX.$interface.'.conf'), $return);
$conf = ParseConfig($return);
$dhcpdata['DHCPEnabled'] = empty($conf) ? false : true;
$arrRange = explode(",", $conf['dhcp-range']);
$dhcpdata['RangeStart'] = $arrRange[0];
$dhcpdata['RangeEnd'] = $arrRange[1];
$dhcpdata['RangeMask'] = $arrRange[2];
$dhcpdata['leaseTime'] = $arrRange[3];
$dhcpHost = $conf["dhcp-host"];
$dhcpHost = empty($dhcpHost) ? [] : $dhcpHost;
$dhcpdata['dhcpHost'] = is_array($dhcpHost) ? $dhcpHost : [ $dhcpHost ];
$upstreamServers = is_array($conf['server']) ? $conf['server'] : [ $conf['server'] ];
$dhcpdata['upstreamServersEnabled'] = empty($conf['server']) ? false: true;
$dhcpdata['upstreamServers'] = array_filter($upstreamServers);
preg_match('/([0-9]*)([a-z])/i', $dhcpdata['leaseTime'], $arrRangeLeaseTime);
$dhcpdata['leaseTime'] = $arrRangeLeaseTime[1];
$dhcpdata['leaseTimeInterval'] = $arrRangeLeaseTime[2];
if (isset($conf['dhcp-option'])) {
$arrDns = explode(",", $conf['dhcp-option']);
if ($arrDns[0] == '6') {
if (count($arrDns) > 1) {
$dhcpdata['DNS1'] = $arrDns[1];
}
if (count($arrDns) > 2) {
$dhcpdata['DNS2'] = $arrDns[2];
}
}
}
// fetch dhcpcd.conf settings for interface
$conf = file_get_contents(RASPI_DHCPCD_CONFIG);
preg_match('/^#\sRaspAP\s'.$interface.'\s.*?(?=\s*+$)/ms', $conf, $matched);
preg_match('/metric\s(\d*)/', $matched[0], $metric);
preg_match('/static\sip_address=(.*)/', $matched[0], $static_ip);
preg_match('/static\srouters=(.*)/', $matched[0], $static_routers);
preg_match('/static\sdomain_name_server=(.*)/', $matched[0], $static_dns);
preg_match('/fallback\sstatic_'.$interface.'/', $matched[0], $fallback);
preg_match('/(?:no)?gateway/', $matched[0], $gateway);
preg_match('/nohook\swpa_supplicant/', $matched[0], $nohook_wpa_supplicant);
$dhcpdata['Metric'] = $metric[1];
$dhcpdata['StaticIP'] = strpos($static_ip[1],'/') ? substr($static_ip[1], 0, strpos($static_ip[1],'/')) : $static_ip[1];
$dhcpdata['SubnetMask'] = cidr2mask($static_ip[1]);
$dhcpdata['StaticRouters'] = $static_routers[1];
$dhcpdata['StaticDNS'] = $static_dns[1];
$dhcpdata['FallbackEnabled'] = empty($fallback) ? false: true;
$dhcpdata['DefaultRoute'] = $gateway[0] == "gateway";
$dhcpdata['NoHookWPASupplicant'] = $nohook_wpa_supplicant[0] == "nohook wpa_supplicant";
echo json_encode($dhcpdata);
}

View File

@ -0,0 +1,9 @@
<?php
require '../../includes/csrf.php';
require_once '../../includes/config.php';
// fetch wg client.conf
exec('sudo cat '. RASPI_WIREGUARD_PATH.'client.conf', $return);
echo implode(PHP_EOL,$return);

View File

@ -0,0 +1,22 @@
<?php
require '../../includes/csrf.php';
require_once '../../includes/config.php';
$entity = escapeshellcmd($_POST['entity']);
if (isset($entity)) {
// generate public/private key pairs for entity
$pubkey = RASPI_WIREGUARD_PATH.$entity.'-public.key';
$privkey = RASPI_WIREGUARD_PATH.$entity.'-private.key';
$pubkey_tmp = '/tmp/'.$entity.'-public.key';
$privkey_tmp = '/tmp/'.$entity.'-private.key';
exec("sudo wg genkey | tee $privkey_tmp | wg pubkey > $pubkey_tmp", $return);
$wgdata['pubkey'] = str_replace("\n",'',file_get_contents($pubkey_tmp));
exec("sudo mv $privkey_tmp $privkey", $return);
exec("sudo mv $pubkey_tmp $pubkey", $return);
echo json_encode($wgdata);
}

View File

@ -0,0 +1,93 @@
<?php
/*
Save settings of network devices (type, name, PW, APN ...)
Called by js saveNetDeviceSettings (App/js/custom.js)
*/
require '../../includes/csrf.php';
require_once '../../includes/config.php';
require_once '../../includes/functions.php';
if (isset($_POST['interface'])) {
$int = $_POST['interface'];
$cfg = [];
$file = $RASPI_MOBILEDATA_CONFIG;
$cfgfile="/etc/wvdial.conf";
if ( $int == "mobiledata") {
$cfg['pin'] = $_POST["pin-mobile"];
$cfg['apn'] = $_POST["apn-mobile"];
$cfg['apn_user'] = $_POST["apn-user-mobile"];
$cfg['apn_pw'] = $_POST["apn-pw-mobile"];
$cfg['router_user'] = $cfg['apn_user'] ;
$cfg['router_pw'] = $cfg['apn_pw'] ;
if (file_exists($cfgfile)) {
if($cfg["pin"] !== "") exec('sudo /bin/sed -i "s/CPIN=\".*\"/CPIN=\"'.$cfg["pin"].'\"/gi" '.$cfgfile);
if($cfg["apn"] !== "") exec('sudo /bin/sed -i "s/\"IP\"\,\".*\"/\"IP\"\,\"'.$cfg["apn"].'\"/gi" '.$cfgfile);
if($cfg["apn_user"] !== "") exec('sudo /bin/sed -i "s/^username = .*$/Username = '.$cfg["apn_user"].'/gi" '.$cfgfile);
if($cfg["apn_pw"] !== "") exec('sudo /bin/sed -i "s/^password = .*$/Password = '.$cfg["apn_pw"].'/gi" '.$cfgfile);
}
if (write_php_ini($cfg, RASPI_MOBILEDATA_CONFIG)) {
$jsonData = ['return'=>0,'output'=>['Successfully saved mobile data settings']];
} else {
$jsonData = ['return'=>1,'output'=>['Error saving mobile data settings']];
}
} else if ( preg_match("/netdevices/",$int)) {
if(!isset($_POST['opts']) ) {
$jsonData = ['return'=>0,'output'=>['No valid data to add/delete udev rule ']];
echo json_encode($jsonData);
return;
} else {
$opts=explode(" ",$_POST['opts'] );
$dev=$opts[0];
$vid=$_POST["int-vid-".$dev];
$pid=$_POST["int-pid-".$dev];
$mac=$_POST["int-mac-".$dev];
$name=trim($_POST["int-name-".$dev]);
// limit device name to letters and numbers. Total length max 20
$name=preg_replace("/[^a-z0-9]/", "", strtolower($name));
$name=substr($name, 0, min(strlen($name),20));
$type=$_POST["int-type-".$dev];
$newtype=$_POST["int-new-type-".$dev];
$udevfile=$_SESSION["udevrules"]["udev_rules_file"]; // default file /etc/udev/rules.d/80-net-devices.rules";
// find the rule prototype and prefix
$rule = "";
foreach($_SESSION["udevrules"]["network_devices"] as $devt) {
if($devt["type"]==$newtype) {
$rulenew = $devt["udev_rule"];
$prefix = $devt["name_prefix"];
}
}
// check for an existing rule and delete lines with same MAC or same VID/PID
if (!empty($vid) && !empty($pid)) {
$rule = '^.*ATTRS{idVendor}==\"' . $vid . '\".*ATTRS{idProduct}==\"' . $pid . '\".*$';
exec('sudo sed -i "/'.$rule.'/Id" '.$udevfile); // clear all entries with this VID/PID
$rule = '^.*ATTRS{idProduct}==\"' . $pid . '\".*ATTRS{idVendor}==\"' . $vid . '\".*$';
exec('sudo sed -i "/'.$rule.'/Id" '.$udevfile); // clear all entries with this VID/PID
}
if (!empty($mac)) {
exec('sudo sed -i "/^.*'.$mac.'.*$/d" '.$udevfile); // clear all entries with same MAC
}
// create new entry
if ( ($type != $newtype) || !empty($name) ) { // new device type or new name
if (empty($name)) $name = $prefix."%n";
if (!empty($mac)) $rule = preg_replace("/\\\$MAC\\\$/i", $mac, $rulenew);
if (!empty($vid)) $rule = preg_replace("/\\\$IDVENDOR\\\$/i", $vid, $rule);
if (!empty($pid)) $rule = preg_replace("/\\\$IDPRODUCT\\\$/i", $pid, $rule);
if (!empty($name)) $rule = preg_replace("/\\\$DEVNAME\\\$/i",$name,$rule);
if (!empty($rule)) exec('echo \''.$rule.'\' | sudo /usr/bin/tee -a '.$udevfile);
}
$jsonData = ['return'=>0,'output'=>['Settings changed for device '.$dev. '<br>Changes will only be in effect after reconnecting the device' ] ];
}
} else {
$jsonData = ['return'=>1,'output'=>['Unknown network configuration']];
}
} else {
$jsonData = ['return'=>2,'output'=>'Unable to detect interface'];
}
echo json_encode($jsonData);

View File

@ -0,0 +1,23 @@
<?php
require '../../includes/csrf.php';
require_once '../../includes/config.php';
require_once '../../includes/defaults.php';
require_once '../../includes/functions.php';
require_once '../../includes/wifi_functions.php';
$networks = [];
$network = null;
$ssid = null;
knownWifiStations($networks);
nearbyWifiStations($networks, !isset($_REQUEST["refresh"]));
connectedWifiStations($networks);
sortNetworksByRSSI($networks);
foreach ($networks as $ssid => $network) $networks[$ssid]["ssidutf8"] = ssid2utf8( $ssid );
$connected = array_filter($networks, function($n) { return $n['connected']; } );
$known = array_filter($networks, function($n) { return !$n['connected'] && $n['configured']; } );
$nearby = array_filter($networks, function($n) { return !$n['configured']; } );
echo renderTemplate('wifi_stations', compact('networks', 'connected', 'known', 'nearby'), true);

View File

@ -0,0 +1,27 @@
<?php
require '../../includes/csrf.php';
require_once '../../includes/config.php';
require_once '../../includes/functions.php';
if (isset($_POST['cfg_id'])) {
$ovpncfg_id = escapeshellcmd($_POST['cfg_id']);
$ovpncfg_client = RASPI_OPENVPN_CLIENT_PATH.$ovpncfg_id.'_client.conf';
$ovpncfg_login = RASPI_OPENVPN_CLIENT_PATH.$ovpncfg_id.'_login.conf';
// remove existing client config +login and symbolically link the selected one
system("sudo rm ".RASPI_OPENVPN_CLIENT_CONFIG, $return);
system("sudo ln -s $ovpncfg_client ".RASPI_OPENVPN_CLIENT_CONFIG, $return);
system("sudo rm ".RASPI_OPENVPN_CLIENT_LOGIN, $return);
system("sudo ln -s $ovpncfg_login ".RASPI_OPENVPN_CLIENT_LOGIN, $return);
// restart service
exec("sudo /bin/systemctl stop openvpn-client@client", $return);
sleep(1);
exec("sudo /bin/systemctl enable openvpn-client@client", $return);
sleep(1);
exec("sudo /bin/systemctl start openvpn-client@client", $return);
echo json_encode($return);
}

View File

@ -0,0 +1,14 @@
<?php
require '../../includes/csrf.php';
require_once '../../includes/config.php';
require_once '../../includes/functions.php';
if (isset($_POST['cfg_id'])) {
$ovpncfg_id = escapeshellcmd($_POST['cfg_id']);
$ovpncfg_files = pathinfo(RASPI_OPENVPN_CLIENT_LOGIN, PATHINFO_DIRNAME).'/'.$ovpncfg_id.'_*.conf';
exec("sudo rm $ovpncfg_files", $return);
$jsonData = ['return'=>$return];
echo json_encode($jsonData);
}

View File

@ -0,0 +1,21 @@
<?php
require '../../includes/csrf.php';
$action = escapeshellcmd($_POST['a']);
if (isset($action)) {
switch($action) {
case "reboot":
$response = shell_exec("sudo /sbin/reboot");
break;
case "shutdown":
$response = shell_exec("sudo /sbin/shutdown -h now");
break;
default:
$response = 'Unknown action: '.$action;
}
echo json_encode($response);
}

235
app/css/all.css Normal file
View File

@ -0,0 +1,235 @@
/*
Name: all.css
Author: @billz
Author URI: https://github.com/billz
Description: Classes shared by all themes
License: GNU General Public License v3.0
*/
/* Small devices (portrait phones, up to 576px) */
@media (max-width: 576px) {
.container-fluid, .card-body, .col-md-6 { padding-left: 0.5rem; padding-right: 0.5rem; }
.card .card-header { padding: .75rem .5rem; font-size: 1.0rem; }
.row { margin-left: 0rem; margin-right: 0rem; }
.col-lg-12 { padding-right: 0.25rem; padding-left: 0.25rem; }
.form-group.col-md-6 { margin-left: -0.5rem; }
h4.mt-3 { margin-left: 0.5rem; }
}
.sidebar-brand-text {
text-transform: none;
color: #212529;
font-size: 2.0rem;
font-weight: 500;
font-family: Helvetica, Arial, sans-serif;
}
.h-underlined {
border-bottom: 1px solid #e3e6f0;
padding-bottom: 0.3rem;
}
.navbar-logo {
margin-top: 0.5em;
margin-left: 0.5em;
}
.page-header {
font-size: 26pt;
margin: 20px 0 20px;
}
.info-item {
text-transform: uppercase;
font-size: 0.7em;
color: #858796;
}
.info-value {
font-size: 0.7rem;
margin-left: 0.7rem;
}
.info-item-xs {
font-size: 0.7rem;
margin-left: 0.3rem;
}
.info-item-wifi {
width: 6rem;
float: left;
}
.service-status {
border-width: 0;
align-items: center;
}
.service-status-up {
color: #a1ec38 !important;
}
.service-status-warn {
color: #f6f044 !important;
}
.service-status-down {
color: #f80107 !important;
animation: flash 1s linear infinite;
}
@keyframes flash {
50% {
opacity: 0;
}
}
.logoutput {
width:100%;
height: 20rem;
border: 1px solid #d1d3e2;
border-radius: .35rem;
}
.dhcp-static-leases {
margin-top: 1em;
margin-bottom: 1em;
}
.dhcp-static-lease-row {
margin-top: 0.5em;
margin-bottom: 0.5em;
}
.loading-spinner {
background: url("../../app/img/loading-spinner.gif") no-repeat scroll center center transparent;
min-height: 450px;
width: 100%;
}
@media (min-width: 576px) {
.card-grid {
display: grid;
grid-template-columns: minmax(0, 1fr) 50%;
grid-gap: 1rem;
}
}
.toggle-off.btn {
padding-left: 1.2rem;
font-size: 0.9rem!important;
}
.toggle-on.btn {
font-size: 0.9rem!important;
}
canvas#divDBChartBandwidthhourly {
height: 350px!important;
}
.chart-container {
height: 150px;
width: 200px;
}
.dbChart {
display: flex;
height: 80%;
}
.table {
margin-bottom: 0rem;
}
.check-hidden {
visibility: hidden;
}
.check-progress {
color: #999;
}
.fa-check {
color: #90ee90;
}
.fa-times {
color: #ff4500;
}
button.btn.btn-light.js-toggle-password {
border: 1px solid lightgrey;
}
.signal-icon {
margin-top: 2px;
height: 16px;
width: 16px;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: baseline;
}
.signal-icon .signal-bar {
width: 4px;
border-radius: 1px;
opacity: 30%;
background: <?php echo $color; ?>;
}
.signal-icon .signal-bar:nth-child(1) { height: 40%; }
.signal-icon .signal-bar:nth-child(2) { height: 70%; }
.signal-icon .signal-bar:nth-child(3) { height: 100%; }
.signal-icon.weak .signal-bar:nth-child(1),
.signal-icon.medium .signal-bar:nth-child(1),
.signal-icon.medium .signal-bar:nth-child(2),
.signal-icon.strong .signal-bar:nth-child(1),
.signal-icon.strong .signal-bar:nth-child(2),
.signal-icon.strong .signal-bar:nth-child(3)
{ opacity: 100%; }.signal-icon {
margin-top: 2px;
height: 16px;
width: 16px;
display: flex;
flex-direction: row;
justify-content: space-between;
align-items: baseline;
}
.signal-icon .signal-bar {
width: 4px;
border-radius: 1px;
opacity: 30%;
}
.signal-icon .signal-bar:nth-child(1) { height: 40%; }
.signal-icon .signal-bar:nth-child(2) { height: 70%; }
.signal-icon .signal-bar:nth-child(3) { height: 100%; }
.signal-icon.weak .signal-bar:nth-child(1),
.signal-icon.medium .signal-bar:nth-child(1),
.signal-icon.medium .signal-bar:nth-child(2),
.signal-icon.strong .signal-bar:nth-child(1),
.signal-icon.strong .signal-bar:nth-child(2),
.signal-icon.strong .signal-bar:nth-child(3)
{ opacity: 100%; }
.gs-edit {
border: 1px dashed #ccc;
background-color: #f1faee;
border-radius: 4px;
}
figcaption.figure-caption a {
color: #858796;
}
button > i.fas {
pointer-events: none;
}
.close {
font-weight: 400;
font-size: 1.3rem;
}

115
app/css/custom.php Normal file
View File

@ -0,0 +1,115 @@
<?php header("Content-Type: text/css; charset=utf-8"); ?>
<?php
require_once '../../includes/functions.php';
$color = getColorOpt();
?>
/*
Theme Name: RaspAP default
Author: @billz
Author URI: https://github.com/billz
Description: Default theme for RaspAP
License: GNU General Public License v3.0
*/
@import url('all.css');
body {
color: #212529;
}
.sidebar {
background-color: #f8f9fc;
}
.sidebar .nav-item.active .nav-link {
font-weight: 500;
}
.card .card-header, .modal-header {
border-color: <?php echo $color; ?>;
color: #fff;
background-color: <?php echo $color; ?>;
}
.modal-header {
border-radius: 0px;
}
.btn-primary {
color: <?php echo $color; ?>;
border-color: <?php echo $color; ?>;
background-color: #fff;
}
.card-footer, .modal-footer {
background-color: #f2f1f0;
}
.nav-item {
font-size: 0.85rem;
}
.nav-tabs .nav-link.active,
.nav-tabs .nav-link {
font-size: 1.0rem;
}
.nav-tabs a.nav-link {
color: #6e707e;
}
a.nav-link.active {
font-weight: bolder;
}
.sidebar .nav-item .nav-link {
padding: 0.6rem 0.6rem 0.6rem 1.0rem;
}
.alert-success {
background-color: #d4edda;
}
.btn-primary {
background-color: #fff;
}
.btn-warning {
color: #333;
}
.btn-primary:hover {
background-color: <?php echo $color; ?>;
border-color: <?php echo $color; ?>;
}
i.fa.fa-bars {
color: #d1d3e2;
}
i.fa.fa-bars:hover{
color: #6e707e;
}
pre.unstyled {
border-width: 0;
background-color: transparent;
padding: 0;
}
.sidebar.toggled .nav-item .nav-link span {
display: none;
} .sidebar .nav-item .nav-link i,
.sidebar .nav-item .nav-link span {
font-size: 1.0rem;
}
.btn-warning:hover {
color: #000;
}
.signal-icon .signal-bar {
background: <?php echo $color; ?>;
}

160
app/css/hackernews.css Normal file
View File

@ -0,0 +1,160 @@
/*
Theme Name: HackerNews
Author: @billz
Author URI: https://github.com/billz
Description: A theme inspired by HackerNews for RaspAP
License: GNU General Public License v3.0
*/
@import url('all.css');
html * {
font-family: Verdana, Geneva, sans-serif;
color: #828282;
}
body {
color: #212529;
}
a:focus, a:hover {
color: #666;
}
h2 {
font-size: 2rem !important;
}
h4 {
font-size: 1.3rem;
color: #212529;
}
h5.card-title {
font-size: 1.2rem;
color: #212529;
}
.card, .modal-dialog {
border-radius: 3px;
border-color: #ff6600;
}
.card>.card-header, .modal-header {
border-color: #ff6600;
background-color: #ff6600;
color: #000;
font-size: 1.0rem;
font-weight: bold;
border-radius: unset;
}
.card-header .col {
color: #212529;
font-size: 1.0rem;
}
.card-header [class^="fa"], .modal-header [class^="fa"] {
color: #fff;
font-size: 1.0rem;
}
.modal-title {
color: #000;
font-size: 1.0rem;
}
.modal-content {
border-radius: 0px;
}
.sidebar-light hr.sidebar-divider {
padding-top: 0.5rem;
}
ul.nav-tabs, .nav-tabs .nav-link {
background-color: #f6f6ef;
border-bottom: 1px solid #dddfeb;
}
.sidebar .nav-item .nav-link {
padding: 0.6rem;
margin-left: 0.6rem;
}
.sidebar-light .nav-item.active .nav-link {
font-weight: 300;
}
#wrapper,#page-wrapper,
#wrapper #content-wrapper,
.nav>li>a,.nav {
background-color: #fff;
}
.card-body {
background-color: #f6f6ef;
}
.card-footer {
background-color: #eee;
}
.alert-success {
background-color: #d4edda;
}
.btn-primary, .btn-primary:hover {
color: #828282;
background-color: #fff;
border-color: #828282;
}
.btn-warning {
color: #333;
}
.progress {
background-color: #eee;
}
.progress-bar {
color: #eee;
}
.fas.fa-circle {
font-size: 0.7rem;
}
.logoutput {
width:100%;
height:300px;
}
pre.unstyled {
border-width: 0;
background-color: transparent;
padding: 0;
}
.sidebar.toggled .nav-item .nav-link {
text-align: center;
padding: .6rem 1rem;
width: 6.5rem;
}
.sidebar.toggled .nav-item .nav-link span {
display: none;
} .sidebar .nav-item .nav-link i,
.sidebar .nav-item .nav-link span {
font-size: 0.9rem;
}
.btn-warning:hover {
color: #000;
}
.signal-icon .signal-bar {
background: #ff6600;
}

360
app/css/lightsout.css Normal file
View File

@ -0,0 +1,360 @@
/*
Theme Name: Lights Out
Author: @billz
Author URI: https://github.com/billz
Description: A dark mode theme for RaspAP
License: GNU General Public License v3.0
*/
@import url('all.css');
html * {
font-family: Helvetica,Arial,sans-serif;
color: #afafaf;
}
h2 {
font-size: 2rem !important;
}
h4 {
font-size: 1.3rem;
}
h5.card-title {
font-size: 1.2rem;
}
.page-header {
border-left: .01rem solid #d2d2d2;
border-bottom: .01rem solid #d2d2d2;
}
.sidebar-light .nav-item.active .nav-link i {
color: #d2d2d2;
}
.sidebar .nav-item.active .nav-link {
font-weight: 400;
}
#wrapper #content-wrapper #content {
background-color: #202020;
}
.topbar {
background-color: #202020;
}
.nav-tabs {
border-bottom: 1px solid #404040;
}
.nav-tabs .nav-link.active,
.nav-tabs .nav-link {
font-size: 1.0rem;
}
.nav-tabs .nav-link:hover {
border-color: transparent;
}
.navbar-default .navbar-brand:hover {
color: #d2d2d2;
}
.navbar-default .navbar-toggle {
border-color: #d2d2d2;
}
.navbar-default .navbar-toggle .icon-bar {
background-color: #d2d2d2;
}
.navbar-default .navbar-toggle:focus,
.navbar-default .navbar-toggle:hover {
background-color: #202020;
}
#content, .navbar, .sidebar, .footer, .sticky-footer {
background-attachment: scroll;
background-repeat: repeat;
background-size: auto;
background-position: 0 0;
background-origin: padding-box;
background-clip: border-box;
}
.sticky-footer {
background-position: 30px 0;
}
.sidebar {
background-position: 0 20px;
}
.nav-tabs .nav-link.active {
color: #d2d2d2;
background-color: #141414;
border-color: #404040 #404040 #141414;
}
a:focus, a:hover {
color: #d2d2d2;
}
.card>.card-header, .modal-content, .modal-header {
border-color: #404040;
background-color: #202020;
color: #afafaf;
border-top-right-radius: 3px;
border-top-left-radius: 3px;
font-size: 1.0rem;
font-weight: 400;
}
.modal-body {
background-color: #141414;
}
.card>.card-header .fa {
color: #202020;
}
.card-header [class^="fa"] {
color: #afafaf;
font-size: 1.0rem;
}
.col {
color: #afafaf;
}
.card, .card-body {
border-color: #343434;
border-radius: 3px;
background-color: #141414;
}
hr {
border-top: .01rem solid #d2d2d2;
}
.sidebar-brand-text {
color: #2b8080 !important;
}
.ra-raspap:before {
color: #ac1b3d !important;
}
.sidebar-light #sidebarToggle {
background-color: #202020;
border: 1px solid #afafaf !important
}
.sidebar-light #sidebarToggle::after {
color: #afafaf;
}
.sidebar-light .nav-item .nav-link:hover i {
color: #d2d2d2;
}
.sidebar-light #sidebarToggle:hover {
background-color: #202020;
}
.sidebar.toggled .nav-item .nav-link span {
display: none;
}
.sidebar.toggled .nav-item .nav-link {
text-align: center;
padding: .6rem 1rem;
width: 6.5rem;
}
.card-footer, .modal-footer {
background-color: #202020;
border-top: 0px;
}
.modal-footer {
border-radius: 0.3rem;
}
.card>.card-header::before, .navbar-default::before {
content: " ";
display: block;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
z-index: 2;
background-size: 100% 2px, 3px 100%;
pointer-events: none;
}
.sidebar-light, .sticky-footer {
background-color: #202020;
}
.sidebar-light .nav-item .nav-link i {
color: rgba(230, 230, 230, .3);
}
.sidebar .nav-item .nav-link {
padding: 0.6rem;
padding-left: 1.2rem;
}
.sidebar-light hr.sidebar-divider {
border-top: 1px solid #404040;
padding-top: 0.5rem;
}
.sidebar .nav-item .nav-link span {
font-size: 1.0rem;
}
.topbar .topbar-divider {
border-right: 1px solid #404040;
}
.label-warning {
background-color: #d2d2d2;
}
span.label.label-warning {
color: #202020;
}
.table>tbody>tr>td,
.table>tbody>tr>th,
.table>tfoot>tr>td,
.table>tfoot>tr>th,
.table>thead>tr>td,
.table>thead>tr>th {
background-color: #202020;
border-top: .01rem solid #202020;
}
.table>thead>tr>th {
vertical-align: bottom;
border-bottom: .01rem solid #d2d2d2;
}
[class*="btn"], [class*="btn"]:focus, [class*="btn"]:disabled {
background-color: #202020;
border-color: #404040;
border-radius: 3px;
color: #d2d2d2;
}
[class*="btn"]:hover {
border-radius: 3px;
color: #d2d2d2;
background-color: #202020;
border-color: #afafaf;
}
[class*="btn"]:hover .disabled {
background-color:red;
}
[class*="alert"] {
border-radius: .35rem;
color: #d2d2d2;
background-color: #202020;
border: 1px solid #404040;
}
.close {
font-size: 1.2em;
font-weight: 400;
text-shadow: none;
color: #d2d2d2;
}
.form-control,
.form-control:focus,
.custom-select {
color: #d2d2d2;
background-color: #202020;
border: 1px solid #404040;
border-radius: 3px;
}
.form-control:disabled,
.form-control[readonly] {
background-color: #202020;
opacity: 0.5;
}
.form-control::-webkit-input-placeholder { color: #d2d2d2; }
.form-control:-moz-placeholder { color: #d2d2d2; }
.form-control::-moz-placeholder { color: #d2d2d2; }
.form-control:-ms-input-placeholder { color: #d2d2d2; }
.form-control::-ms-input-placeholder { color: #d2d2d2; }
input[type="text"]{
color: #d2d2d2 !important
}
.progress {
background-color: #202020;
border-radius: 0px;
}
.progress-bar {
color: #202020;
}
.progress-bar.progress-bar-info.progress-bar-striped.active {
background-color: #d2d2d2;
}
.figure-img {
filter: opacity(0.7);
}
.ra-wireguard:before {
color: #404040 !important;
}
.ra-wireguard:hover:before {
color: #d1d3e2 !important;
}
.sidebar .nav-item.active .nav-link span.ra-wireguard:before {
color: #d2d2d2 !important;
}
.logoutput {
background-color: #202020;
border-color: #404040;
}
.text-muted {
font-size: 0.8rem;
}
.fas.fa-circle {
font-size: 0.7rem;
}
pre {
background-color: #202020;
border: #202020;
}
button.btn.btn-light.js-toggle-password {
border: 1px solid #343434;
}
.signal-icon .signal-bar {
background: #2b8080;
}

627
app/css/material-dark.php Normal file
View File

@ -0,0 +1,627 @@
<?php header("Content-Type: text/css; charset=utf-8"); ?>
<?php
require_once '../../includes/functions.php';
$color = getColorOpt();
?>
/*
Theme Name: Material Dark
Author: @marek-guran
Author URI: https://github.com/marek-guran
Description: Inspired by Google's Material You Design
License: GNU General Public License v3.0
*/
<?php
// Base color
$baseColor = $color;
// Function to darken a color by a percentage
function darkenColor($color, $percent)
{
$percent /= 100;
$r = hexdec(substr($color, 1, 2));
$g = hexdec(substr($color, 3, 2));
$b = hexdec(substr($color, 5, 2));
$r = round($r * (1 - $percent));
$g = round($g * (1 - $percent));
$b = round($b * (1 - $percent));
return sprintf("#%02x%02x%02x", $r, $g, $b);
}
// Function to lighten a color by a percentage
function lightenColor($color, $percent)
{
$percent /= 100;
$r = hexdec(substr($color, 1, 2));
$g = hexdec(substr($color, 3, 2));
$b = hexdec(substr($color, 5, 2));
$r = round($r + (255 - $r) * $percent);
$g = round($g + (255 - $g) * $percent);
$b = round($b + (255 - $b) * $percent);
return sprintf("#%02x%02x%02x", $r, $g, $b);
}
$textColor = lightenColor($baseColor, 95);
// Create other color variables
$cardsColor = darkenColor($baseColor, 60);
$secondaryColor = lightenColor($baseColor, 30);
$primaryColor = $baseColor;
$backgroundColor = darkenColor($baseColor, 90);
?>
@import url('all.css');
body {
background-color: <?php echo $backgroundColor; ?>;
}
html * {
font-family: Helvetica,Arial,sans-serif;
color: <?php echo $textColor; ?>;
}
.nav-item.active .nav-link {
position: relative;
background-color: <?php echo $secondaryColor; ?>;
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
border-top-right-radius: 18px;
border-bottom-right-radius: 18px;
}
h2 {
font-size: 2rem !important;
}
h4 {
font-size: 1.3rem;
}
h5.card-title {
font-size: 1.2rem;
}
.page-header {
border-left: .01rem solid <?php echo $secondaryColor; ?>;
border-bottom: .01rem solid <?php echo $secondaryColor; ?>;
}
.sidebar-light .nav-item.active .nav-link i {
color: <?php echo $textColor; ?>;
}
.sidebar .nav-item.active .nav-link {
font-weight: 400;
}
.sidebar .nav-item .nav-link span:hover {
color: <?php echo $textColor; ?>!important;
}
#wrapper #content-wrapper #content {
background-color: <?php echo $backgroundColor; ?>;
}
.topbar {
background-color: <?php echo $backgroundColor; ?>;
}
.col {
color: <?php echo $textColor; ?>;
}
.card-header .col i.fa-tachometer-alt,
.card-header .col i.fa-dot-circle,
.card-header .col i.fa-wifi,
.card-header .col i.fa-exchange-alt,
.card-header .col i.fa-hand-paper,
.card-header .col i.fa-network-wired,
.card-header .col i.fa-key,
.card-header .ra-wireguard,
.card-header .ra-wireguard:before,
.card-header .col i.fa-user-lock,
.card-header .col i.fa-chart-bar,
.card-header .col i.fa-cube,
.card-header .col i.fa-info-circle,
.card-header .col i.fa-globe,
.card-header .col i.fa-shield-alt {
color: <?php echo $textColor; ?>;
}
i.fa-bars {
color: <?php echo $primaryColor; ?>;
}
.nav-tabs {
border-bottom: 1px solid <?php echo $secondaryColor; ?>;
}
.nav-tabs .nav-link.active,
.nav-tabs .nav-link {
font-size: 1.0rem;
border-top-left-radius: 18px;
border-top-right-radius: 18px;
}
.nav-tabs .nav-link:hover {
border-color: transparent;
}
.navbar-default .navbar-brand:hover {
color: #d2d2d2;
}
.navbar-default .navbar-toggle {
border-color: transparent;
}
.navbar-default .navbar-toggle .icon-bar {
background-color: #d2d2d2;
}
.navbar-default .navbar-toggle:focus,
.navbar-default .navbar-toggle:hover {
background-color: <?php echo $backgroundColor; ?>;
}
#content, .navbar, .sidebar, .footer, .sticky-footer {
background-attachment: scroll;
background-repeat: repeat;
background-size: auto;
background-position: 0 0;
background-origin: padding-box;
background-clip: border-box;
}
.sticky-footer {
background-position: 30px 0;
}
.sidebar {
background-position: 0 20px;
}
.nav-tabs .nav-link.active {
color: <?php echo $textColor; ?>;
background-color: <?php echo $secondaryColor; ?>;
border-color: transparent;
}
a:focus, a:hover {
color: #d2d2d2;
}
.card>.card-header, .modal-content, .modal-header {
border-color: transparent;
background-color: <?php echo $primaryColor; ?>;
color: <?php echo $textColor; ?>;
border-radius: 18px;
font-size: 1.0rem;
font-weight: 400;
}
.modal-body {
background-color: <?php echo $backgroundColor; ?>;
}
.card-header {
border-bottom-left-radius: 0px!important;
border-bottom-right-radius: 0px!important;
position: relative;
margin-bottom: -18px;
}
.card>.card-header .fa {
color: <?php echo $backgroundColor; ?>;
}
.card-header [class^="fa"] {
color: <?php echo $textColor; ?>;
font-size: 1.0rem;
}
.card, .card-body {
border-color: transparent;
border-radius: 18px;
background-color: <?php echo $cardsColor; ?>;
box-shadow: 0px -5px 5px rgba(0, 0, 0, 0.1),
0px 4px 6px rgba(0, 0, 0, 0.1);
}
.card-body {
padding-top: 36px; /* 18px to move down + 18px space at the top */
padding-bottom: 36px; /* 18px space at the bottom */
}
.unstyled {
background-color: <?php echo $cardsColor; ?>;
color: <?php echo $textColor; ?>;
}
hr {
border-top: .01rem solid <?php echo $secondaryColor; ?>;
}
.sidebar-brand-text {
color: <?php echo $secondaryColor; ?>;
}
.ra-raspap:before {
color: #ac1b3d !important;
}
.sidebar-light #sidebarToggle {
background-color: <?php echo $primaryColor; ?>;
border: 1px solid <?php echo $secondaryColor; ?>; !important
}
.sidebar-light #sidebarToggle::after {
color: <?php echo $textColor; ?>;
}
.sidebar-light .nav-item .nav-link:hover i {
color: <?php echo $textColor; ?>;
}
.sidebar-light #sidebarToggle:hover {
background-color: <?php echo $secondaryColor; ?>;
}
.sidebar.toggled .nav-item .nav-link span {
display: none;
}
.sidebar.toggled .nav-item .nav-link {
text-align: center;
padding: .6rem 1rem;
width: 6.5rem;
}
.card-footer, .modal-footer {
background-color: <?php echo $primaryColor; ?>;
color: <?php echo $textColor; ?>;
border-top: 0px;
border-bottom-right-radius: 18px!important;
border-bottom-left-radius: 18px!important;
position: relative;
margin-top: -18px;
}
.modal-footer {
border-radius: 18px;
}
.card>.card-header::before, .navbar-default::before {
content: " ";
display: block;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
z-index: 2;
background-size: 100% 2px, 3px 100%;
pointer-events: none;
}
.sidebar-light, .sticky-footer {
background-color: <?php echo $backgroundColor; ?>;
}
.sidebar-light .nav-item .nav-link i {
color: rgba(230, 230, 230, .3);
}
.sidebar .nav-item .nav-link {
padding: 0.6rem;
padding-left: 1.2rem;
}
.sidebar-light hr.sidebar-divider {
border-top: 1px solid <?php echo $secondaryColor; ?>;
padding-top: 0.5rem;
}
.sidebar .nav-item .nav-link span {
font-size: 1.0rem;
}
.topbar .topbar-divider {
border-right: 1px solid <?php echo $secondaryColor; ?>;
}
.label-warning {
background-color: #d2d2d2;
}
span.label.label-warning {
color: <?php echo $backgroundColor; ?>;
}
.table>tbody>tr>td,
.table>tbody>tr>th,
.table>tfoot>tr>td,
.table>tfoot>tr>th,
.table>thead>tr>td,
.table>thead>tr>th {
background-color: <?php echo $primaryColor; ?>;
border-top: .01rem solid <?php echo $backgroundColor; ?>;
}
.table{
border-radius: 18px;
overflow: hidden;
}
.table>thead>tr>th {
vertical-align: bottom;
border-bottom: 0 solid <?php echo $secondaryColor; ?>;
}
[class*="btn"], [class*="btn"]:focus, [class*="btn"]:disabled {
background-color: <?php echo $secondaryColor; ?>;
border-color: transparent;
border-radius: 18px;
color: <?php echo $textColor; ?>;
}
[class*="btn"]:hover {
border-radius: 18px;
color: <?php echo $textColor; ?>;
background-color: <?php echo $backgroundColor; ?>;
border-color: transparent;
}
[class*="btn"]:hover .disabled {
background-color:red;
}
[class*="alert"] {
border-radius: 18px;
color: <?php echo $textColor; ?>;
background-color: <?php echo $backgroundColor; ?>;
border: 1px solid #404040;
}
.close {
font-size: 1.2em;
font-weight: 400;
text-shadow: none;
color: <?php echo $textColor; ?>;
}
.form-control,
.form-control:focus,
.custom-select {
color: <?php echo $textColor; ?>;
background-color: <?php echo $backgroundColor; ?>;
border: 1px solid <?php echo $secondaryColor; ?>;
border-radius: 18px;
}
.form-control:disabled,
.form-control[readonly] {
background-color: <?php echo $backgroundColor; ?>;
opacity: 0.5;
}
.form-control::-webkit-input-placeholder { color: #d2d2d2; }
.form-control:-moz-placeholder { color: #d2d2d2; }
.form-control::-moz-placeholder { color: #d2d2d2; }
.form-control:-ms-input-placeholder { color: #d2d2d2; }
.form-control::-ms-input-placeholder { color: #d2d2d2; }
.form-control option {
font-size: 1em;
}
input[type="text"]{
color: <?php echo $textColor; ?>; !important
}
.progress {
background-color: <?php echo $backgroundColor; ?>;
border-radius: 18px;
}
.progress-bar {
color: <?php echo $backgroundColor; ?>;
}
#progressBar {
background-color: <?php echo $secondaryColor; ?>!important;
}
.progress-bar.bg-success {
background-color: <?php echo $primaryColor; ?>!important;
color: <?php echo $textColor; ?>!important;
}
.progress .progress-bar {
padding-left: 5px;
}
.progress-bar.progress-bar-info.progress-bar-striped.active {
background-color: <?php echo $secondaryColor; ?>;
}
.figure-img {
filter: opacity(0.7);
}
.ra-wireguard:before {
color: #404040 !important;
}
.ra-wireguard:hover:before {
color: #d1d3e2 !important;
}
.sidebar .nav-item.active .nav-link span.ra-wireguard:before {
color: #d2d2d2 !important;
}
.custom-control-input:checked ~ .custom-control-label::before {
background-color: <?php echo $secondaryColor; ?>;
}
.custom-control-input:checked ~ .custom-control-label::before {
background-color: <?php echo $primaryColor; ?>;
border-color: <?php echo $primaryColor; ?>;
}
.wg-keygen {
background-color: <?php echo $primaryColor; ?>;
border: 1px solid yellow <?php echo $secondaryColor; ?>;
border-top-right-radius: 18px !important;
border-bottom-right-radius: 18px !important;
}
.btn.btn-outline-secondary.js-add-dhcp-upstream-server {
background-color: <?php echo $primaryColor; ?>;
border: 1px solid <?php echo $secondaryColor; ?>;
border-top-right-radius: 18px !important;
border-bottom-right-radius: 18px !important;
}
.btn.btn-outline-success.js-add-dhcp-static-lease {
border: 1px solid <?php echo $secondaryColor; ?>;
}
.btn.btn-outline-success.js-add-dhcp-static-lease:hover {
background-color: <?php echo $primaryColor; ?>;
}
.text-muted {
font-size: 0.8rem;
}
.fas.fa-circle {
font-size: 0.7rem;
}
pre {
background-color: <?php echo $backgroundColor; ?>;
border: <?php echo $backgroundColor; ?>;
}
button.btn.btn-light.js-toggle-password {
border: 1px solid <?php echo $secondaryColor; ?>;
}
.btn-primary {
border-color: transparent;
background-color: <?php echo $primaryColor; ?>;
}
.btn-primary:hover {
background-color: <?php echo $secondaryColor; ?>;
border-color: transparent;
}
.btn.service-status {
background-color: <?php echo $backgroundColor; ?>;
}
input.btn.btn-success {
background-color: <?php echo $secondaryColor; ?>;
}
input.btn.btn-success:hover {
background-color: <?php echo $backgroundColor; ?>;
border-color: transparent;
}
.signal-icon .signal-bar {
background: <?php echo $secondaryColor; ?>;
}
.figure-img {
border-radius: 18px;
}
.logoutput {
border-radius: 18px!important;
background-color: <?php echo $backgroundColor; ?>;
border: 1px solid <?php echo $primaryColor; ?>!important;
}
.btn-sm {
border-top-right-radius: 18px!important;
border-bottom-right-radius: 18px!important;
}
.signal-icon .signal-bar {
background: <?php echo $secondaryColor; ?>;
}
input.btn.btn-warning {
background-color: <?php echo $secondaryColor; ?>;
}
input.btn.btn-warning:hover {
background-color: <?php echo $backgroundColor; ?>;!important
}
button.btn.btn-danger {
background-color: <?php echo $secondaryColor; ?>;
}
button.btn.btn-danger:hover {
background-color: <?php echo $backgroundColor; ?>;!important
}
.btn-group label.active {
background-color: <?php echo $primaryColor; ?>!important;
border-color:transparent!important;
color: <?php echo $textColor; ?>;!important
}
.btn-group {
background-color: <?php echo $cardsColor; ?>;!important
}
.btn-group:hover {
background-color: <?php echo $cardsColor; ?>;!important
}
.btn.btn-outline-secondary#gen_wpa_passphrase {
background-color: <?php echo $primaryColor; ?>;
border: 1px solid <?php echo $secondaryColor; ?>;
border-top-right-radius: 18px !important;
border-bottom-right-radius: 18px !important;
}
a.scroll-to-top.rounded {
display: inline;
background-color: <?php echo $secondaryColor; ?>;
border-radius: 18px!important;
}
a.scroll-to-top.rounded i.fas.fa-angle-up {
color: <?php echo $textColor; ?>;
}
.btn.btn-sm.btn-outline-secondary.rounded-right {
border: 1px solid <?php echo $secondaryColor; ?>;
background-color: <?php echo $primaryColor; ?>;
}
.info-item.col-xs-3 {
color: <?php echo $textColor; ?>;
}
.text-muted {
color: <?php echo $textColor; ?>!important;
}
.grid-stack-item-content {
width: 100%;
height: 100%;
padding: 5px;
box-sizing: border-box;
}

633
app/css/material-light.php Normal file
View File

@ -0,0 +1,633 @@
<?php header("Content-Type: text/css; charset=utf-8"); ?>
<?php
require_once '../../includes/functions.php';
$color = getColorOpt();
?>
/*
Theme Name: Material Light
Author: @marek-guran
Author URI: https://github.com/marek-guran
Description: Inspired by Google's Material You Design
License: GNU General Public License v3.0
*/
<?php
// Base color
$baseColor = $color;
// Function to darken a color by a percentage
function darkenColor($color, $percent)
{
$percent /= 100;
$r = hexdec(substr($color, 1, 2));
$g = hexdec(substr($color, 3, 2));
$b = hexdec(substr($color, 5, 2));
$r = round($r * (1 - $percent));
$g = round($g * (1 - $percent));
$b = round($b * (1 - $percent));
return sprintf("#%02x%02x%02x", $r, $g, $b);
}
// Function to lighten a color by a percentage
function lightenColor($color, $percent)
{
$percent /= 100;
$r = hexdec(substr($color, 1, 2));
$g = hexdec(substr($color, 3, 2));
$b = hexdec(substr($color, 5, 2));
$r = round($r + (255 - $r) * $percent);
$g = round($g + (255 - $g) * $percent);
$b = round($b + (255 - $b) * $percent);
return sprintf("#%02x%02x%02x", $r, $g, $b);
}
$textColor = lightenColor($baseColor, 95);
// Create other color variables
$cardsColor = lightenColor($baseColor, 50);
$secondaryColor = lightenColor($baseColor, 30);
$primaryColor = $baseColor;
$backgroundColor = lightenColor($baseColor, 60);
?>
@import url('all.css');
body {
background-color: <?php echo $backgroundColor; ?>;
}
html * {
font-family: Helvetica,Arial,sans-serif;
color: <?php echo $textColor; ?>;
}
.nav-item.active .nav-link {
position: relative;
background-color: <?php echo $secondaryColor; ?>;
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
border-top-right-radius: 18px;
border-bottom-right-radius: 18px;
}
h2 {
font-size: 2rem !important;
}
h4 {
font-size: 1.3rem;
}
h5.card-title {
font-size: 1.2rem;
}
.page-header {
border-left: .01rem solid <?php echo $secondaryColor; ?>;
border-bottom: .01rem solid <?php echo $secondaryColor; ?>;
}
.sidebar-light .nav-item.active .nav-link i {
color: <?php echo $textColor; ?>;
}
.sidebar .nav-item.active .nav-link {
font-weight: 400;
color: <?php echo $primaryColor; ?>;
}
#wrapper #content-wrapper #content {
background-color: <?php echo $backgroundColor; ?>;
}
.topbar {
background-color: <?php echo $backgroundColor; ?>;
}
.col {
color: <?php echo $textColor; ?>;
}
.card-header .col i.fa-tachometer-alt,
.card-header .col i.fa-dot-circle,
.card-header .col i.fa-wifi,
.card-header .col i.fa-exchange-alt,
.card-header .col i.fa-hand-paper,
.card-header .col i.fa-network-wired,
.card-header .col i.fa-key,
.card-header .ra-wireguard,
.card-header .ra-wireguard:before,
.card-header .col i.fa-user-lock,
.card-header .col i.fa-chart-bar,
.card-header .col i.fa-cube,
.card-header .col i.fa-info-circle,
.card-header .col i.fa-globe,
.card-header .col i.fa-shield-alt {
color: <?php echo $textColor; ?>;
}
i.fa-bars {
color: <?php echo $primaryColor; ?>;
}
.nav-tabs {
border-bottom: 1px solid <?php echo $secondaryColor; ?>;
}
.nav-tabs .nav-link.active,
.nav-tabs .nav-link {
font-size: 1.0rem;
border-top-left-radius: 18px;
border-top-right-radius: 18px;
}
.nav-tabs .nav-link:hover {
border-color: transparent;
}
.navbar-default .navbar-brand:hover {
color: #d2d2d2;
}
.navbar-default .navbar-toggle {
border-color: transparent;
}
.navbar-default .navbar-toggle .icon-bar {
background-color: #d2d2d2;
}
.navbar-default .navbar-toggle:focus,
.navbar-default .navbar-toggle:hover {
background-color: <?php echo $backgroundColor; ?>;
}
#content, .navbar, .sidebar, .footer, .sticky-footer {
background-attachment: scroll;
background-repeat: repeat;
background-size: auto;
background-position: 0 0;
background-origin: padding-box;
background-clip: border-box;
}
.sticky-footer {
background-position: 30px 0;
}
.sidebar {
background-position: 0 20px;
}
.nav-tabs .nav-link.active {
color: <?php echo $textColor; ?>;
background-color: <?php echo $secondaryColor; ?>;
border-color: transparent;
}
a:focus, a:hover {
color: #d2d2d2;
}
.card>.card-header, .modal-content, .modal-header {
border-color: transparent;
background-color: <?php echo $primaryColor; ?>;
color: <?php echo $textColor; ?>;
border-radius: 18px;
font-size: 1.0rem;
font-weight: 400;
}
.modal-body {
background-color: <?php echo $backgroundColor; ?>;
}
.card-header {
border-bottom-left-radius: 0px!important;
border-bottom-right-radius: 0px!important;
position: relative;
margin-bottom: -18px;
}
.card>.card-header .fa {
color: <?php echo $backgroundColor; ?>;
}
.card-header [class^="fa"] {
color: <?php echo $textColor; ?>;
font-size: 1.0rem;
}
.card, .card-body {
border-color: transparent;
border-radius: 18px;
background-color: <?php echo $cardsColor; ?>;
box-shadow: 0px -5px 5px rgba(0, 0, 0, 0.1),
0px 4px 6px rgba(0, 0, 0, 0.1);
}
.card-body {
padding-top: 36px; /* 18px to move down + 18px space at the top */
padding-bottom: 36px; /* 18px space at the bottom */
}
.unstyled {
background-color: <?php echo $cardsColor; ?>;
color: <?php echo $textColor; ?>;
}
hr {
border-top: .01rem solid <?php echo $secondaryColor; ?>;
}
.sidebar-brand-text {
color: <?php echo $primaryColor; ?>;
}
.ra-raspap:before {
color: #ac1b3d !important;
}
.sidebar-light #sidebarToggle {
background-color: <?php echo $primaryColor; ?>;
border: 1px solid <?php echo $secondaryColor; ?>; !important
}
.sidebar-light #sidebarToggle::after {
color: <?php echo $textColor; ?>;
}
.sidebar-light .nav-item .nav-link:hover i {
color: <?php echo $primaryColor; ?>;
}
.sidebar-light #sidebarToggle:hover {
background-color: <?php echo $secondaryColor; ?>;
}
.sidebar.toggled .nav-item .nav-link span {
display: none;
}
.sidebar.toggled .nav-item .nav-link {
text-align: center;
padding: .6rem 1rem;
width: 6.5rem;
}
.card-footer, .modal-footer {
background-color: <?php echo $primaryColor; ?>;
color: <?php echo $textColor; ?>;
border-top: 0px;
border-bottom-right-radius: 18px!important;
border-bottom-left-radius: 18px!important;
position: relative;
margin-top: -18px;
}
.modal-footer {
border-radius: 18px;
}
.card>.card-header::before, .navbar-default::before {
content: " ";
display: block;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
z-index: 2;
background-size: 100% 2px, 3px 100%;
pointer-events: none;
}
.sidebar-light, .sticky-footer {
background-color: <?php echo $backgroundColor; ?>;
}
.sidebar-light .nav-item .nav-link i {
color: <?php echo $textColor; ?>;;
}
.sidebar .nav-item .nav-link {
padding: 0.6rem;
padding-left: 1.2rem;
}
.sidebar-light hr.sidebar-divider {
border-top: 1px solid <?php echo $secondaryColor; ?>;
padding-top: 0.5rem;
}
.sidebar .nav-item .nav-link span {
font-size: 1.0rem;
}
.sidebar .nav-item .nav-link span:hover {
color: <?php echo $primaryColor; ?>!important;
}
.topbar .topbar-divider {
border-right: 1px solid <?php echo $secondaryColor; ?>;
}
.label-warning {
background-color: #d2d2d2;
}
span.label.label-warning {
color: <?php echo $backgroundColor; ?>;
}
.table>tbody>tr>td,
.table>tbody>tr>th,
.table>tfoot>tr>td,
.table>tfoot>tr>th,
.table>thead>tr>td,
.table>thead>tr>th {
background-color: <?php echo $primaryColor; ?>;
border-top: .01rem solid <?php echo $backgroundColor; ?>;
}
.table{
border-radius: 18px;
overflow: hidden;
}
.table>thead>tr>th {
vertical-align: bottom;
border-bottom: 0 solid <?php echo $secondaryColor; ?>;
}
[class*="btn"], [class*="btn"]:focus, [class*="btn"]:disabled {
background-color: <?php echo $secondaryColor; ?>;
border-color: transparent;
border-radius: 18px;
color: <?php echo $textColor; ?>;
}
[class*="btn"]:hover {
border-radius: 18px;
color: <?php echo $textColor; ?>;
background-color: <?php echo $backgroundColor; ?>;
border-color: transparent;
}
[class*="btn"]:hover .disabled {
background-color:red;
}
[class*="alert"] {
border-radius: 18px;
color: <?php echo $textColor; ?>;
background-color: <?php echo $backgroundColor; ?>;
border: 1px solid #404040;
}
.close {
font-size: 1.2em;
font-weight: 400;
text-shadow: none;
color: <?php echo $textColor; ?>;
}
.form-control,
.form-control:focus,
.custom-select {
color: <?php echo $textColor; ?>;
background-color: <?php echo $backgroundColor; ?>;
border: 1px solid <?php echo $secondaryColor; ?>;
border-radius: 18px;
}
.form-control:disabled,
.form-control[readonly] {
background-color: <?php echo $backgroundColor; ?>;
opacity: 0.5;
}
.form-control::-webkit-input-placeholder { color: #d2d2d2; }
.form-control:-moz-placeholder { color: #d2d2d2; }
.form-control::-moz-placeholder { color: #d2d2d2; }
.form-control:-ms-input-placeholder { color: #d2d2d2; }
.form-control::-ms-input-placeholder { color: #d2d2d2; }
.form-control option {
font-size: 1em;
}
.form-control::placeholder {
color: <?php echo $textColor; ?>;
}
input[type="text"]{
color: <?php echo $textColor; ?>; !important
}
.progress {
background-color: <?php echo $backgroundColor; ?>;
border-radius: 18px;
}
.progress-bar {
color: <?php echo $backgroundColor; ?>;
}
#progressBar {
background-color: <?php echo $secondaryColor; ?>!important;
}
.progress-bar.bg-success {
background-color: <?php echo $primaryColor; ?>!important;
color: <?php echo $textColor; ?>!important;
}
.progress .progress-bar {
padding-left: 5px;
}
.progress-bar.progress-bar-info.progress-bar-striped.active {
background-color: <?php echo $secondaryColor; ?>;
}
.figure-img {
filter: opacity(0.7);
}
.ra-wireguard:before {
color: <?php echo $textColor; ?>!important;
}
.ra-wireguard:hover:before {
color: <?php echo $primaryColor; ?>!important;
}
.sidebar .nav-item.active .nav-link span.ra-wireguard:before {
color: <?php echo $textColor; ?>!important;
}
.custom-control-input:checked ~ .custom-control-label::before {
background-color: <?php echo $secondaryColor; ?>;
}
.custom-control-input:checked ~ .custom-control-label::before {
background-color: <?php echo $primaryColor; ?>;
border-color: <?php echo $primaryColor; ?>;
}
.wg-keygen {
background-color: <?php echo $primaryColor; ?>;
border: 1px solid yellow <?php echo $secondaryColor; ?>;
border-top-right-radius: 18px !important;
border-bottom-right-radius: 18px !important;
}
.btn.btn-outline-secondary.js-add-dhcp-upstream-server {
background-color: <?php echo $primaryColor; ?>;
border: 1px solid <?php echo $secondaryColor; ?>;
border-top-right-radius: 18px !important;
border-bottom-right-radius: 18px !important;
}
.btn.btn-outline-success.js-add-dhcp-static-lease {
border: 1px solid <?php echo $secondaryColor; ?>;
}
.btn.btn-outline-success.js-add-dhcp-static-lease:hover {
background-color: <?php echo $primaryColor; ?>;
}
.text-muted {
font-size: 0.8rem;
}
.fas.fa-circle {
font-size: 0.7rem;
}
pre {
background-color: <?php echo $backgroundColor; ?>;
border: <?php echo $backgroundColor; ?>;
}
button.btn.btn-light.js-toggle-password {
border: 1px solid <?php echo $secondaryColor; ?>;
}
.btn-primary {
border-color: transparent;
background-color: <?php echo $primaryColor; ?>;
}
.btn-primary:hover {
background-color: <?php echo $secondaryColor; ?>;
border-color: transparent;
}
.btn.service-status {
background-color: <?php echo $secondaryColor; ?>;
}
input.btn.btn-success {
background-color: <?php echo $secondaryColor; ?>;
}
input.btn.btn-success:hover {
background-color: <?php echo $backgroundColor; ?>;
border-color: transparent;
}
.signal-icon .signal-bar {
background: <?php echo $secondaryColor; ?>;
}
.figure-img {
border-radius: 18px;
}
.logoutput {
border-radius: 18px!important;
background-color: <?php echo $backgroundColor; ?>;
border: 1px solid <?php echo $primaryColor; ?>!important;
}
.btn-sm {
border-top-right-radius: 18px!important;
border-bottom-right-radius: 18px!important;
}
.signal-icon .signal-bar {
background: <?php echo $secondaryColor; ?>;
}
input.btn.btn-warning {
background-color: <?php echo $secondaryColor; ?>;
}
input.btn.btn-warning:hover {
background-color: <?php echo $backgroundColor; ?>;!important
}
button.btn.btn-danger {
background-color: <?php echo $secondaryColor; ?>;
}
button.btn.btn-danger:hover {
background-color: <?php echo $backgroundColor; ?>;!important
}
.btn-group label.active {
background-color: <?php echo $primaryColor; ?>!important;
border-color:transparent!important;
color: <?php echo $textColor; ?>;!important
}
.btn-group {
background-color: <?php echo $cardsColor; ?>;!important
}
.btn-group:hover {
background-color: <?php echo $cardsColor; ?>;!important
}
.btn.btn-outline-secondary#gen_wpa_passphrase {
background-color: <?php echo $primaryColor; ?>;
border: 1px solid <?php echo $secondaryColor; ?>;
border-top-right-radius: 18px !important;
border-bottom-right-radius: 18px !important;
}
a.scroll-to-top.rounded {
display: inline;
background-color: <?php echo $secondaryColor; ?>;
border-radius: 18px!important;
}
a.scroll-to-top.rounded i.fas.fa-angle-up {
color: <?php echo $textColor; ?>;
}
.btn.btn-sm.btn-outline-secondary.rounded-right {
border: 1px solid <?php echo $secondaryColor; ?>;
background-color: <?php echo $primaryColor; ?>;
}
.info-item.col-xs-3 {
color: <?php echo $textColor; ?>;
}
.text-muted {
color: <?php echo $textColor; ?>!important;
}
.grid-stack-item-content {
width: 100%;
height: 100%;
padding: 5px;
box-sizing: border-box;
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -0,0 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
<msapplication>
<tile>
<square150x150logo src="/dist/icons/mstile-150x150.png"/>
<TileColor>#b91d47</TileColor>
</tile>
</msapplication>
</browserconfig>

BIN
app/icons/favicon-16x16.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
app/icons/favicon-32x32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

Before

Width:  |  Height:  |  Size: 1.7 KiB

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

View File

@ -0,0 +1,48 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
width="240.000000pt" height="240.000000pt" viewBox="0 0 240.000000 240.000000"
preserveAspectRatio="xMidYMid meet">
<metadata>
Created by potrace 1.11, written by Peter Selinger 2001-2013
</metadata>
<g transform="translate(0.000000,240.000000) scale(0.100000,-0.100000)"
fill="#000000" stroke="none">
<path d="M867 2334 c-3 -3 -3 -20 -1 -37 2 -18 6 -54 8 -82 2 -27 5 -53 5 -56
1 -4 31 -6 69 -6 63 0 162 -9 207 -19 11 -2 31 -6 45 -8 14 -2 59 -14 100 -27
41 -13 80 -23 85 -24 6 0 12 -2 15 -5 3 -3 37 -20 75 -38 161 -78 335 -219
436 -357 55 -74 121 -175 115 -175 -3 0 10 -30 28 -67 18 -38 37 -81 41 -98 5
-16 9 -34 11 -40 27 -94 44 -173 48 -237 2 -15 19 -20 99 -23 95 -5 101 -1 86
60 -4 17 -10 48 -13 70 -27 197 -131 443 -258 613 -52 69 -252 272 -269 272
-5 0 -18 8 -28 18 -37 32 -50 42 -61 42 -5 0 -10 4 -10 8 0 4 -15 15 -32 23
-18 9 -53 27 -78 41 -95 52 -303 123 -390 133 -19 2 -46 7 -60 10 -34 8 -266
15 -273 9z"/>
<path d="M895 1867 c3 -50 6 -92 8 -93 1 -1 40 -4 87 -8 114 -8 139 -12 212
-37 272 -91 470 -300 547 -578 11 -39 17 -71 13 -71 -3 0 -2 -4 4 -10 5 -5 50
-12 100 -15 l91 -6 -3 26 c-15 141 -91 333 -182 460 -47 65 -152 170 -222 222
-164 122 -367 191 -582 198 l-79 2 6 -90z"/>
<path d="M747 1604 c-1 -2 -14 -5 -27 -7 -245 -47 -453 -199 -562 -412 -47
-91 -81 -232 -81 -340 -1 -88 19 -215 34 -215 5 0 6 -7 3 -15 -4 -8 -2 -21 3
-28 5 -6 20 -38 33 -70 12 -31 26 -57 31 -57 5 0 9 -6 9 -13 0 -7 9 -23 20
-35 11 -12 20 -25 20 -29 0 -12 80 -93 91 -93 6 0 8 -4 5 -8 -11 -18 215 -159
235 -147 5 4 9 2 9 -4 0 -20 189 -58 280 -56 87 2 213 25 245 44 6 3 12 6 15
6 21 3 50 18 50 26 0 6 5 7 10 4 13 -8 128 67 193 125 67 60 164 196 159 223
-1 4 1 7 6 7 8 0 31 47 36 76 3 11 9 32 15 47 24 62 33 251 17 344 -21 123
-93 271 -181 371 -49 54 -156 142 -174 142 -6 0 -11 4 -11 9 0 18 -180 85
-260 97 -43 7 -218 13 -223 8z m243 -199 c30 -9 62 -17 70 -18 8 -1 20 -5 25
-10 6 -4 37 -25 70 -46 71 -45 165 -135 174 -166 1 -5 15 -33 31 -61 78 -136
85 -368 15 -504 -8 -16 -15 -33 -14 -36 0 -4 -3 -10 -8 -13 -5 -3 -23 -26 -40
-51 -25 -37 -102 -113 -148 -148 -15 -12 -117 -59 -145 -68 -97 -31 -220 -35
-310 -11 -8 2 -28 7 -45 12 -16 4 -51 19 -77 32 -27 13 -51 24 -55 26 -4 1
-18 12 -31 24 -14 13 -30 20 -36 16 -6 -3 -8 -3 -4 1 9 10 -34 55 -46 48 -5
-3 -6 0 -2 6 3 6 -2 17 -12 24 -10 7 -27 28 -37 46 -11 17 -24 32 -29 32 -5 0
-6 3 -3 7 4 3 -2 20 -12 37 -27 43 -49 111 -56 176 -8 60 -7 158 0 170 3 4 7
25 10 46 5 45 56 152 97 205 15 20 28 42 28 48 0 6 4 10 8 8 4 -1 26 16 48 38
22 22 49 45 60 51 55 32 123 65 140 69 10 2 42 10 69 18 63 17 193 13 265 -8z"/>
<path d="M717 1231 c-299 -97 -383 -476 -154 -691 23 -22 48 -40 54 -40 7 0
13 -4 13 -9 0 -17 116 -53 185 -57 130 -8 228 29 320 121 49 49 66 75 89 135
33 89 38 197 11 270 -9 25 -17 50 -19 57 -6 30 -85 124 -133 157 -104 73 -248
95 -366 57z"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

@ -0,0 +1,14 @@
{
"name": "RaspAP",
"short_name": "RaspAP",
"icons": [
{
"src": "/app/icons/android-chrome-192x192.png",
"sizes": "192x192",
"type": "image/png"
}
],
"theme_color": "#ffffff",
"background_color": "#ffffff",
"display": "standalone"
}

BIN
app/img/insiders.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.8 KiB

BIN
app/img/loading-spinner.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

51
app/img/raspAP-logo.php Normal file
View File

@ -0,0 +1,51 @@
<?php header("Content-Type: image/svg+xml; charset=utf-8"); ?>
<?php
require_once '../../includes/functions.php';
$color = getColorOpt();
?>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
viewBox="0 0 490.66666 487.11066"
height="487.11066"
width="490.66666"
xml:space="preserve"
id="svg2"
version="1.1"><metadata
id="metadata8"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><defs
id="defs6"><clipPath
id="clipPath18"
clipPathUnits="userSpaceOnUse"><path
id="path16"
d="M 0,365.333 H 368 V 0 H 0 Z" /></clipPath></defs><g
transform="matrix(1.3333333,0,0,-1.3333333,0,487.11067)"
id="g10"><g
id="g12"><g
clip-path="url(#clipPath18)"
id="g14"><g
transform="translate(192.6768,123.4365)"
id="g20"><path
id="path22"
style="fill:<?php echo $color; ?>;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 0,0 c 0,-37.169 -30.128,-67.3 -67.296,-67.3 -37.167,0 -67.294,30.131 -67.294,67.3 0,37.165 30.127,67.296 67.294,67.296 C -30.128,67.296 0,37.165 0,0" /></g><g
transform="translate(125.3823,219.0791)"
id="g24"><path
id="path26"
style="fill:<?php echo $color; ?>;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 0,0 c -52.737,0 -95.641,-42.905 -95.641,-95.643 0,-52.74 42.904,-95.647 95.641,-95.647 52.737,0 95.642,42.907 95.642,95.647 C 95.642,-42.905 52.737,0 0,0 m 0,-217.29 c -67.073,0 -121.641,54.571 -121.641,121.647 C -121.641,-28.569 -67.073,26 0,26 67.074,26 121.642,-28.569 121.642,-95.643 121.642,-162.719 67.074,-217.29 0,-217.29" /></g><g
transform="translate(144.4277,271.9385)"
id="g28"><path
id="path30"
style="fill:<?php echo $color; ?>;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 0,0 c 66.188,0 121.118,-49.055 130.392,-112.714 l 28.259,-1.874 C 150.044,-34.655 82.181,27.791 0,27.791 c -3.892,0 -7.75,-0.147 -11.571,-0.423 L -9.73,-0.397 C -6.513,-0.161 -3.275,0 0,0" /></g><g
transform="translate(144.4883,334.7588)"
id="g32"><path
id="path34"
style="fill:<?php echo $color; ?>;fill-opacity:1;fill-rule:nonzero;stroke:none"
d="m 0,0 c 101.94,0 185.667,-79.438 192.56,-179.664 l 27.962,-1.857 C 214.513,-65.087 117.899,27.791 0,27.791 c -5.31,0 -10.576,-0.2 -15.792,-0.571 l 1.84,-27.728 C -9.343,-0.177 -4.691,0 0,0" /></g></g></g></g></svg>

BIN
app/img/raspAP-logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

28
app/img/wg-qr-code.php Normal file
View File

@ -0,0 +1,28 @@
<?php
require_once '../../includes/config.php';
require_once '../../includes/defaults.php';
require_once '../../includes/functions.php';
// prevent direct file access
if (!isset($_SERVER['HTTP_REFERER'])) {
header('HTTP/1.0 403 Forbidden');
exit;
}
exec("sudo cat " .RASPI_WIREGUARD_PATH.'client.conf', $return);
$peer_conf = implode(PHP_EOL,$return);
$peer_conf.= PHP_EOL;
$command = "qrencode -t svg -m 0 -o - " . mb_escapeshellarg($peer_conf);
$svg = shell_exec($command);
$etag = hash('sha256', $peer_conf);
$content_length = strlen($svg);
$last_modified = date("Y-m-d H:i:s");
header("Content-Type: image/svg+xml");
header("Content-Length: $content_length");
header("Last-Modified: $last_modified");
header("ETag: \"$etag\"");
header("X-QR-Code-Content: $peer_conf");
echo shell_exec($command);

54
app/img/wifi-qr-code.php Normal file
View File

@ -0,0 +1,54 @@
<?php
require_once '../../includes/config.php';
require_once '../../includes/defaults.php';
require_once '../../includes/functions.php';
// prevent direct file access
if (!isset($_SERVER['HTTP_REFERER'])) {
header('HTTP/1.0 403 Forbidden');
exit;
}
$hostapd = parse_ini_file(RASPI_HOSTAPD_CONFIG, false, INI_SCANNER_RAW);
// assume wpa encryption and get the passphrase
$type = "WPA";
$password = isset($hostapd['wpa_psk']) ? $hostapd['wpa_psk'] : $hostapd['wpa_passphrase'];
// use wep if configured
$wep_default_key = intval($hostapd['wep_default_key']);
$wep_key = 'wep_key' . $wep_default_key;
if (array_key_exists($wep_key, $hostapd)) {
$type = "WEP";
$password = $hostapd[$wep_key];
}
// if password is still empty, assume nopass
if (empty($password)) {
$type = "nopass";
}
$ssid = $hostapd['ssid'];
$hidden = intval($hostapd['ignore_broadcast_ssid']) != 0 ? "H:true" : "";
$ssid = qr_encode($ssid);
$password = qr_encode($password);
$data = "WIFI:S:$ssid;T:$type;P:$password;$hidden;";
$command = "qrencode -t svg -m 1 -o - " . mb_escapeshellarg($data);
$svg = shell_exec($command);
$config_mtime = filemtime(RASPI_HOSTAPD_CONFIG);
$last_modified = gmdate('D, d M Y H:i:s ', $config_mtime) . 'GMT';
$etag = hash('sha256', $data);
$content_length = strlen($svg);
header("Content-Type: image/svg+xml");
header("Content-Length: $content_length");
header("Last-Modified: $last_modified");
header("Content-Disposition: attachment; filename=\"qr.svg\"");
header("ETag: \"$etag\"");
header("X-QR-Code-Content: $data");
echo $svg;

147
app/js/bandwidthcharts.js Normal file
View File

@ -0,0 +1,147 @@
(function($, _t) {
"use strict";
/**
* Create a Chart.js barchart.
*/
function CreateChart(ctx, labels) {
var barchart = new Chart(ctx,{
type: 'line',
options: {
responsive: true,
scales: {
xAxes: [{
scaleLabel: {
display: true,
labelString: 'date',
},
ticks: {
maxRotation: 90,
minRotation: 80
}
}],
yAxes: [{
id: 'y-axis-1',
type: 'linear',
display: true,
position: 'left',
ticks: {
beginAtZero: true
}
}]
}
},
data: {
labels: labels,
datasets: []
}
});
return barchart;
}
/**
* Create a jquery bootstrap datatable.
*/
function CreateDataTable(placeholder, timeunits) {
$("#"+placeholder).append('<table id="tableBandwidth'+timeunits+
'" class="table table-striped"><thead>'+
'<tr><th>date</th><th>rx</th><th>tx</th></tr></thead><tbody></tbody></table>');
}
/**
* Figure out which tab is selected and remove all existing charts and then
* construct the proper barchart.
*/
function ShowBandwidthChartHandler(e) {
// Remove all chartjs charts
$('#divChartBandwidthhourly').empty();
$('#divChartBandwidthdaily').empty();
$('#divChartBandwidthmonthly').empty();
// Remove all datatables
$('#divTableBandwidthhourly').empty();
$('#divTableBandwidthdaily').empty();
$('#divTableBandwidthmonthly').empty();
// Construct ajax uri for getting the proper data.
var timeunit = $('ul#tabbarBandwidth li.nav-item a.nav-link.active').attr('href').substr(1);
var uri = 'ajax/bandwidth/get_bandwidth.php?';
uri += 'inet=';
uri += encodeURIComponent($('#cbxInterface'+timeunit+' option:selected').text());
uri += '&tu=';
uri += encodeURIComponent(timeunit.substr(0, 1));
var datasizeunits = 'mb';
uri += '&dsu='+encodeURIComponent(datasizeunits);
// Init. datatable html
var datatable = CreateDataTable('divTableBandwidth'+timeunit, timeunit);
// Get data for chart
$.ajax({
url: uri,
dataType: 'json',
beforeSend: function() {
$('#divLoaderBandwidth'+timeunit).show();
}
}).done(function(jsondata) {
$('#divLoaderBandwidth'+timeunit).hide();
// Map json values to label array
var labels = jsondata.map(function(e) {
return e.date;
});
// Init. chart with label series
var barchart = CreateChart('divChartBandwidth'+timeunit, labels);
var dataRx = jsondata.map(function(e) {
return e.rx;
});
var dataTx = jsondata.map(function(e) {
return e.tx;
});
addData(barchart, dataRx, dataTx, datasizeunits);
$('#tableBandwidth'+timeunit).DataTable({
'searching': false,
'paging': false,
'data': jsondata,
'order': [[ 0, 'ASC' ]],
'columns': [
{ 'data': 'date' },
{ 'data': 'rx', "title": _t['receive']+' '+datasizeunits.toUpperCase() },
{ 'data': 'tx', "title": _t['send']+' '+datasizeunits.toUpperCase() }]
});
}).fail(function(xhr, textStatus) {
if (window.console) {
console.error('server error');
} else {
alert("server error");
}
});
}
/**
* Add data array to datasets of current chart.
*/
function addData(chart, dataRx, dataTx, datasizeunits) {
chart.data.datasets.push({
label: 'Receive'+' '+datasizeunits.toUpperCase(),
yAxisID: 'y-axis-1',
borderColor: 'rgba(75, 192, 192, 1)',
backgroundColor: 'rgba(75, 192, 192, 0.2)',
data: dataRx
});
chart.data.datasets.push({
label: 'Send'+' '+datasizeunits.toUpperCase(),
yAxisID: 'y-axis-1',
borderColor: 'rgba(192, 192, 192, 1)',
backgroundColor: 'rgba(192, 192, 192, 0.2)',
data: dataTx
});
chart.update();
}
$(document).ready(function() {
$('#tabbarBandwidth a[data-toggle="tab"]').on('shown.bs.tab', ShowBandwidthChartHandler);
$('#cbxInterfacehourly').on('change', ShowBandwidthChartHandler);
$('#cbxInterfacedaily').on('change', ShowBandwidthChartHandler);
$('#cbxInterfacemonthly').on('change', ShowBandwidthChartHandler);
ShowBandwidthChartHandler();
});
})(jQuery, t);

7
app/js/bandwidthcharts.min.js vendored Normal file
View File

@ -0,0 +1,7 @@
/*!
* RaspAP - RaspAP WiFi Configuration Portal v1.6.1 (https://github.com/billz/raspap-webgui)
* Copyright 2013-2019 RaspAP Developers
* Licensed under MIT (https://github.com/raspap-webgui/raspap-webgui/blob/master/LICENSE)
*/
!function(r,i){"use strict";function t(t){r("#divChartBandwidthhourly").empty(),r("#divChartBandwidthdaily").empty(),r("#divChartBandwidthmonthly").empty(),r("#divTableBandwidthhourly").empty(),r("#divTableBandwidthdaily").empty(),r("#divTableBandwidthmonthly").empty();var e=r("ul#tabbarBandwidth li.active a").attr("href").substr(1),a="ajax/bandwidth/get_bandwidth.php?";a+="inet=",a+=encodeURIComponent(r("#cbxInterface"+e+" option:selected").text()),a+="&tu=",a+=encodeURIComponent(e.substr(0,1));var d="mb";a+="&dsu="+encodeURIComponent(d);var n=function(t,e){return new Morris.Bar({element:t,xkey:"date",ykeys:["rx","tx"],labels:[i.receive+" "+e.toUpperCase(),i.send+" "+e.toUpperCase()]})}("divChartBandwidth"+e,d);!function(t,e){r("#"+t).append('<table id="tableBandwidth'+e+'" class="table table-responsive table-striped container-fluid"><thead><tr><th>date</th><th>rx</th><th>tx</th></tr></thead><tbody></tbody></table>')}("divTableBandwidth"+e,e);r.ajax({url:a,dataType:"json",beforeSend:function(){r("#divLoaderBandwidth"+e).removeClass("hidden")}}).done(function(t){r("#divLoaderBandwidth"+e).addClass("hidden"),n.setData(t),r("#tableBandwidth"+e).DataTable({searching:!1,paging:!1,data:t,order:[[0,"ASC"]],columns:[{data:"date"},{data:"rx",title:i.receive+" "+d.toUpperCase()},{data:"tx",title:i.send+" "+d.toUpperCase()}]})}).fail(function(t,e){window.console?console.error("server error"):alert("server error")})}r(document).ready(function(){r('#tabbarBandwidth a[data-toggle="tab"]').on("shown.bs.tab",t),r("#cbxInterfacehourly").on("change",t),r("#cbxInterfacedaily").on("change",t),r("#cbxInterfacemonthly").on("change",t),t()})}(jQuery,t);

646
app/js/custom.js Normal file
View File

@ -0,0 +1,646 @@
function msgShow(retcode,msg) {
if(retcode == 0) { var alertType = 'success';
} else if(retcode == 2 || retcode == 1) {
var alertType = 'danger';
}
var htmlMsg = '<div class="alert alert-'+alertType+' alert-dismissible" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>'+msg+'</div>';
return htmlMsg;
}
function createNetmaskAddr(bitCount) {
var mask=[];
for(i=0;i<4;i++) {
var n = Math.min(bitCount, 8);
mask.push(256 - Math.pow(2, 8-n));
bitCount -= n;
}
return mask.join('.');
}
function loadSummary(strInterface) {
var csrfToken = $('meta[name=csrf_token]').attr('content');
$.post('ajax/networking/get_ip_summary.php',{'interface': strInterface, 'csrf_token': csrfToken},function(data){
jsonData = JSON.parse(data);
if(jsonData['return'] == 0) {
$('#'+strInterface+'-summary').html(jsonData['output'].join('<br />'));
} else if(jsonData['return'] == 2) {
$('#'+strInterface+'-summary').append('<div class="alert alert-danger alert-dismissible" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>'+jsonData['output'].join('<br />')+'</div>');
}
});
}
function getAllInterfaces() {
$.get('ajax/networking/get_all_interfaces.php',function(data){
jsonData = JSON.parse(data);
$.each(jsonData,function(ind,value){
loadSummary(value)
});
});
}
function setupTabs() {
$('a[data-toggle="tab"]').on('shown.bs.tab',function(e){
var target = $(e.target).attr('href');
if(!target.match('summary')) {
var int = target.replace("#","");
loadCurrentSettings(int);
}
});
}
$(document).on("click", ".js-add-dhcp-static-lease", function(e) {
e.preventDefault();
var container = $(".js-new-dhcp-static-lease");
var mac = $("input[name=mac]", container).val().trim();
var ip = $("input[name=ip]", container).val().trim();
var comment = $("input[name=comment]", container).val().trim();
if (mac == "" || ip == "") {
return;
}
var row = $("#js-dhcp-static-lease-row").html()
.replace("{{ mac }}", mac)
.replace("{{ ip }}", ip)
.replace("{{ comment }}", comment);
$(".js-dhcp-static-lease-container").append(row);
$("input[name=mac]", container).val("");
$("input[name=ip]", container).val("");
$("input[name=comment]", container).val("");
});
$(document).on("click", ".js-remove-dhcp-static-lease", function(e) {
e.preventDefault();
$(this).parents(".js-dhcp-static-lease-row").remove();
});
$(document).on("submit", ".js-dhcp-settings-form", function(e) {
$(".js-add-dhcp-static-lease").trigger("click");
});
$(document).on("click", ".js-add-dhcp-upstream-server", function(e) {
e.preventDefault();
var field = $("#add-dhcp-upstream-server-field")
var row = $("#dhcp-upstream-server").html().replace("{{ server }}", field.val())
if (field.val().trim() == "") { return }
$(".js-dhcp-upstream-servers").append(row)
field.val("")
});
$(document).on("click", ".js-remove-dhcp-upstream-server", function(e) {
e.preventDefault();
$(this).parents(".js-dhcp-upstream-server").remove();
});
$(document).on("submit", ".js-dhcp-settings-form", function(e) {
$(".js-add-dhcp-upstream-server").trigger("click");
});
/**
* mark a form field, e.g. a select box, with the class `.js-field-preset`
* and give it an attribute `data-field-preset-target` with a text field's
* css selector.
*
* now, if the element marked `.js-field-preset` receives a `change` event,
* its value will be copied to all elements matching the selector in
* data-field-preset-target.
*/
$(document).on("change", ".js-field-preset", function(e) {
var selector = this.getAttribute("data-field-preset-target")
var value = "" + this.value
var syncValue = function(el) { el.value = value }
if (value.trim() === "") { return }
document.querySelectorAll(selector).forEach(syncValue)
});
$(document).on("click", "#gen_wpa_passphrase", function(e) {
$('#txtwpapassphrase').val(genPassword(63));
});
$(document).on("click", "#js-clearhostapd-log", function(e) {
var csrfToken = $('meta[name=csrf_token]').attr('content');
$.post('ajax/logging/clearlog.php?',{'logfile':'/tmp/hostapd.log', 'csrf_token': csrfToken},function(data){
jsonData = JSON.parse(data);
$("#hostapd-log").val("");
});
});
$(document).on("click", "#js-cleardnsmasq-log", function(e) {
var csrfToken = $('meta[name=csrf_token]').attr('content');
$.post('ajax/logging/clearlog.php?',{'logfile':'/var/log/dnsmasq.log', 'csrf_token': csrfToken},function(data){
jsonData = JSON.parse(data);
$("#dnsmasq-log").val("");
});
});
$(document).on("click", "#js-clearopenvpn-log", function(e) {
var csrfToken = $('meta[name=csrf_token]').attr('content');
$.post('ajax/logging/clearlog.php?',{'logfile':'/tmp/openvpn.log', 'csrf_token': csrfToken},function(data){
jsonData = JSON.parse(data);
$("#openvpn-log").val("");
});
});
// Enable Bootstrap tooltips
$(function () {
$('[data-toggle="tooltip"]').tooltip()
})
function genPassword(pwdLen) {
var pwdChars = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
var rndPass = Array(pwdLen).fill(pwdChars).map(function(x) { return x[Math.floor(Math.random() * x.length)] }).join('');
return rndPass;
}
function setupBtns() {
$('#btnSummaryRefresh').click(function(){getAllInterfaces();});
$('.intsave').click(function(){
var int = $(this).data('int');
saveNetworkSettings(int);
});
$('.intapply').click(function(){
applyNetworkSettings();
});
}
function setCSRFTokenHeader(event, xhr, settings) {
var csrfToken = $('meta[name=csrf_token]').attr('content');
if (/^(POST|PATCH|PUT|DELETE)$/i.test(settings.type)) {
xhr.setRequestHeader("X-CSRF-Token", csrfToken);
}
}
function contentLoaded() {
pageCurrent = window.location.href.split("/").pop();
switch(pageCurrent) {
case "network_conf":
getAllInterfaces();
setupTabs();
setupBtns();
break;
case "hostapd_conf":
loadChannel();
setHardwareModeTooltip();
break;
case "dhcpd_conf":
loadInterfaceDHCPSelect();
break;
}
}
function loadWifiStations(refresh) {
return function() {
var complete = function() { $(this).removeClass('loading-spinner'); }
var qs = refresh === true ? '?refresh' : '';
$('.js-wifi-stations')
.addClass('loading-spinner')
.empty()
.load('ajax/networking/wifi_stations.php'+qs, complete);
};
}
$(".js-reload-wifi-stations").on("click", loadWifiStations(true));
/*
Populates the DHCP server form fields
Option toggles are set dynamically depending on the loaded configuration
*/
function loadInterfaceDHCPSelect() {
var strInterface = $('#cbxdhcpiface').val();
$.get('ajax/networking/get_netcfg.php?iface='+strInterface,function(data){
jsonData = JSON.parse(data);
$('#dhcp-iface')[0].checked = jsonData.DHCPEnabled;
$('#txtipaddress').val(jsonData.StaticIP);
$('#txtsubnetmask').val(jsonData.SubnetMask);
$('#txtgateway').val(jsonData.StaticRouters);
$('#chkfallback')[0].checked = jsonData.FallbackEnabled;
$('#default-route').prop('checked', jsonData.DefaultRoute);
if (strInterface.startsWith("wl")) {
$('#nohook-wpa-supplicant').parent().parent().parent().show()
$('#nohook-wpa-supplicant').prop('checked', jsonData.NoHookWPASupplicant);
} else {
$('#nohook-wpa-supplicant').parent().parent().parent().hide()
}
$('#txtrangestart').val(jsonData.RangeStart);
$('#txtrangeend').val(jsonData.RangeEnd);
$('#txtrangeleasetime').val(jsonData.leaseTime);
$('#txtdns1').val(jsonData.DNS1);
$('#txtdns2').val(jsonData.DNS2);
$('#cbxrangeleasetimeunits').val(jsonData.leaseTimeInterval);
$('#no-resolv')[0].checked = jsonData.upstreamServersEnabled;
$('#cbxdhcpupstreamserver').val(jsonData.upstreamServers[0]);
$('#txtmetric').val(jsonData.Metric);
if (jsonData.StaticIP !== null && jsonData.StaticIP !== '' && !jsonData.FallbackEnabled) {
$('#chkstatic').closest('.btn').button('toggle');
$('#chkstatic').closest('.btn').button('toggle').blur();
$('#chkstatic').blur();
$('#chkfallback').prop('disabled', true);
} else {
$('#chkdhcp').closest('.btn').button('toggle');
$('#chkdhcp').closest('.btn').button('toggle').blur();
$('#chkdhcp').blur();
$('#chkfallback').prop('disabled', false);
}
if (jsonData.FallbackEnabled || $('#chkdhcp').is(':checked')) {
$('#dhcp-iface').prop('disabled', true);
}
});
}
function setDHCPToggles(state) {
if ($('#chkfallback').is(':checked') && state) {
$('#chkfallback').prop('checked', state);
}
if ($('#dhcp-iface').is(':checked') && !state) {
$('#dhcp-iface').prop('checked', state);
}
$('#chkfallback').prop('disabled', state);
$('#dhcp-iface').prop('disabled', !state);
//$('#dhcp-iface').prop('checked', state);
}
function loadChannel() {
$.get('ajax/networking/get_channel.php',function(data){
jsonData = JSON.parse(data);
loadChannelSelect(jsonData);
});
}
$('#hostapdModal').on('shown.bs.modal', function (e) {
var seconds = 9;
var countDown = setInterval(function(){
if(seconds <= 0){
clearInterval(countDown);
}
var pct = Math.floor(100-(seconds*100/9));
document.getElementsByClassName('progress-bar').item(0).setAttribute('style','width:'+Number(pct)+'%');
seconds --;
}, 1000);
});
$('#configureClientModal').on('shown.bs.modal', function (e) {
});
$('#ovpn-confirm-delete').on('click', '.btn-delete', function (e) {
var cfg_id = $(this).data('recordId');
var csrfToken = $('meta[name=csrf_token]').attr('content');
$.post('ajax/openvpn/del_ovpncfg.php',{'cfg_id':cfg_id, 'csrf_token': csrfToken},function(data){
jsonData = JSON.parse(data);
$("#ovpn-confirm-delete").modal('hide');
var row = $(document.getElementById("openvpn-client-row-" + cfg_id));
row.fadeOut( "slow", function() {
row.remove();
});
});
});
$('#ovpn-confirm-delete').on('show.bs.modal', function (e) {
var data = $(e.relatedTarget).data();
$('.btn-delete', this).data('recordId', data.recordId);
});
$('#ovpn-confirm-activate').on('click', '.btn-activate', function (e) {
var cfg_id = $(this).data('record-id');
var csrfToken = $('meta[name=csrf_token]').attr('content');
$.post('ajax/openvpn/activate_ovpncfg.php',{'cfg_id':cfg_id, 'csrf_token': csrfToken},function(data){
jsonData = JSON.parse(data);
$("#ovpn-confirm-activate").modal('hide');
setTimeout(function(){
window.location.reload();
},300);
});
});
$('#ovpn-confirm-activate').on('shown.bs.modal', function (e) {
var data = $(e.relatedTarget).data();
$('.btn-activate', this).data('recordId', data.recordId);
});
$('#ovpn-userpw,#ovpn-certs').on('click', function (e) {
if (this.id == 'ovpn-userpw') {
$('#PanelCerts').hide();
$('#PanelUserPW').show();
} else if (this.id == 'ovpn-certs') {
$('#PanelUserPW').hide();
$('#PanelCerts').show();
}
});
$('#js-system-reset-confirm').on('click', function (e) {
var progressText = $('#js-system-reset-confirm').attr('data-message');
var successHtml = $('#system-reset-message').attr('data-message');
var closeHtml = $('#js-system-reset-cancel').attr('data-message');
var csrfToken = $('meta[name=csrf_token]').attr('content');
var progressHtml = $('<div>').text(progressText).html() + '<i class="fas fa-cog fa-spin ml-2"></i>';
$('#system-reset-message').html(progressHtml);
$.post('ajax/networking/do_sys_reset.php?',{'csrf_token':csrfToken},function(data){
setTimeout(function(){
jsonData = JSON.parse(data);
if(jsonData['return'] == 0) {
$('#system-reset-message').text(successHtml);
} else {
$('#system-reset-message').text('Error occured: '+ jsonData['return']);
}
$("#js-system-reset-confirm").hide();
$("#js-system-reset-cancel").text(closeHtml);
},750);
});
});
$('#js-sys-reboot, #js-sys-shutdown').on('click', function (e) {
e.preventDefault();
var csrfToken = $('meta[name=csrf_token]').attr('content');
var action = $(this).data('action');
$.post('ajax/system/sys_actions.php?',{'a': action, 'csrf_token': csrfToken},function(data){
var response = JSON.parse(data);
});
});
$(document).ready(function(){
$("#PanelManual").hide();
});
$('#wg-upload,#wg-manual').on('click', function (e) {
if (this.id == 'wg-upload') {
$('#PanelManual').hide();
$('#PanelUpload').show();
} else if (this.id == 'wg-manual') {
$('#PanelUpload').hide();
$('#PanelManual').show();
}
});
// Add the following code if you want the name of the file appear on select
$(".custom-file-input").on("change", function() {
var fileName = $(this).val().split("\\").pop();
$(this).siblings(".custom-file-label").addClass("selected").html(fileName);
});
/*
Sets the wirelss channel select options based on hw_mode and country_code.
Methodology: In North America up to channel 11 is the maximum allowed WiFi 2.4Ghz channel,
except for the US that allows channel 12 & 13 in low power mode with additional restrictions.
Canada allows channel 12 in low power mode. Because it's unsure if low powered mode can be
supported the channels are not selectable for those countries. Also Uzbekistan and Colombia
allow up to channel 11 as maximum channel on the 2.4Ghz WiFi band.
Source: https://en.wikipedia.org/wiki/List_of_WLAN_channels
Additional: https://git.kernel.org/pub/scm/linux/kernel/git/sforshee/wireless-regdb.git
*/
function loadChannelSelect(selected) {
// Fetch wireless regulatory data
$.getJSON("config/wireless.json", function(json) {
var hw_mode = $('#cbxhwmode').val();
var country_code = $('#cbxcountries').val();
var channel_select = $('#cbxchannel');
var data = json["wireless_regdb"];
var selectablechannels = Array.range(1,14);
// Assign array of countries to valid frequencies (channels)
var countries_2_4Ghz_max11ch = data["2_4GHz_max11ch"].countries;
var countries_2_4Ghz_max14ch = data["2_4GHz_max14ch"].countries;
var countries_5Ghz_max48ch = data["5Ghz_max48ch"].countries;
// Map selected hw_mode and country to determine channel list
if (hw_mode === 'a') {
selectablechannels = data["5Ghz_max48ch"].channels;
} else if (($.inArray(country_code, countries_2_4Ghz_max11ch) !== -1) && (hw_mode !== 'ac') ) {
selectablechannels = data["2_4GHz_max11ch"].channels;
} else if (($.inArray(country_code, countries_2_4Ghz_max14ch) !== -1) && (hw_mode === 'b')) {
selectablechannels = data["2_4GHz_max14ch"].channels;
} else if (($.inArray(country_code, countries_5Ghz_max48ch) !== -1) && (hw_mode === 'ac')) {
selectablechannels = data["5Ghz_max48ch"].channels;
}
// Set channel select with available values
selected = (typeof selected === 'undefined') ? selectablechannels[0] : selected;
channel_select.empty();
$.each(selectablechannels, function(key,value) {
channel_select.append($("<option></option>").attr("value", value).text(value));
});
channel_select.val(selected);
});
}
/* Sets hardware mode tooltip text for selected interface.
*/
function setHardwareModeTooltip() {
var iface = $('#cbxinterface').val();
var hwmodeText = '';
var csrfToken = $('meta[name=csrf_token]').attr('content');
// Explanatory text if 802.11ac is disabled
if ($('#cbxhwmode').find('option[value="ac"]').prop('disabled') == true ) {
var hwmodeText = $('#hwmode').attr('data-tooltip');
}
$.post('ajax/networking/get_frequencies.php?',{'interface': iface, 'csrf_token': csrfToken},function(data){
var responseText = JSON.parse(data);
$('#tiphwmode').attr('data-original-title', responseText + '\n' + hwmodeText );
});
}
/* Updates the selected blocklist
* Request is passed to an ajax handler to download the associated list.
* Interface elements are updated to indicate current progress, status.
*/
function updateBlocklist() {
var opt = $('#cbxblocklist option:selected');
var blocklist_id = opt.val();
var csrfToken = $('meta[name=csrf_token]').attr('content');
if (blocklist_id == '') { return; }
$('#cbxblocklist-status').find('i').removeClass('fas fa-check').addClass('fas fa-cog fa-spin');
$('#cbxblocklist-status').removeClass('check-hidden').addClass('check-progress');
$.post('ajax/adblock/update_blocklist.php',{ 'blocklist_id':blocklist_id, 'csrf_token': csrfToken},function(data){
var jsonData = JSON.parse(data);
if (jsonData['return'] == '0') {
$('#cbxblocklist-status').find('i').removeClass('fas fa-cog fa-spin').addClass('fas fa-check');
$('#cbxblocklist-status').removeClass('check-progress').addClass('check-updated').delay(500).animate({ opacity: 1 }, 700);
$('#blocklist-'+jsonData['list']).text("Just now");
}
})
}
function clearBlocklistStatus() {
$('#cbxblocklist-status').removeClass('check-updated').addClass('check-hidden');
}
// Handler for the wireguard generate key button
$('.wg-keygen').click(function(){
var entity_pub = $(this).parent('div').prev('input[type="text"]');
var entity_priv = $(this).parent('div').next('input[type="hidden"]');
var updated = entity_pub.attr('name')+"-pubkey-status";
var csrfToken = $('meta[name=csrf_token]').attr('content');
$.post('ajax/networking/get_wgkey.php',{'entity':entity_pub.attr('name'), 'csrf_token': csrfToken},function(data){
var jsonData = JSON.parse(data);
entity_pub.val(jsonData.pubkey);
$('#' + updated).removeClass('check-hidden').addClass('check-updated').delay(500).animate({ opacity: 1 }, 700);
})
})
// Handler for wireguard client.conf download
$('.wg-client-dl').click(function(){
var req = new XMLHttpRequest();
var url = 'ajax/networking/get_wgcfg.php';
req.open('get', url, true);
req.responseType = 'blob';
req.setRequestHeader('Content-type', 'text/plain; charset=UTF-8');
req.onreadystatechange = function (event) {
if(req.readyState == 4 && req.status == 200) {
var blob = req.response;
var link=document.createElement('a');
link.href=window.URL.createObjectURL(blob);
link.download = 'client.conf';
link.click();
}
}
req.send();
})
// Event listener for Bootstrap's form validation
window.addEventListener('load', function() {
// Fetch all the forms we want to apply custom Bootstrap validation styles to
var forms = document.getElementsByClassName('needs-validation');
// Loop over them and prevent submission
var validation = Array.prototype.filter.call(forms, function(form) {
form.addEventListener('submit', function(event) {
if (form.checkValidity() === false) {
event.preventDefault();
event.stopPropagation();
}
form.classList.add('was-validated');
}, false);
});
}, false);
// Static Array method
Array.range = (start, end) => Array.from({length: (end - start)}, (v, k) => k + start);
$(document).on("click", ".js-toggle-password", function(e) {
var button = $(e.target)
var field = $(button.data("target"));
if (field.is(":input")) {
e.preventDefault();
if (!button.data("__toggle-with-initial")) {
$("i", this).removeClass("fas fa-eye").addClass(button.attr("data-toggle-with"));
}
if (field.attr("type") === "password") {
field.attr("type", "text");
} else {
$("i", this).removeClass("fas fa-eye-slash").addClass("fas fa-eye");
field.attr("type", "password");
}
}
});
$(function() {
$('#theme-select').change(function() {
var theme = themes[$( "#theme-select" ).val() ];
set_theme(theme);
});
});
function set_theme(theme) {
$('link[title="main"]').attr('href', 'app/css/' + theme);
// persist selected theme in cookie
setCookie('theme',theme,90);
}
$(function() {
var currentTheme = getCookie('theme');
// Check if the current theme is a dark theme
var isDarkTheme = currentTheme === 'lightsout.css' || currentTheme === 'material-dark.php';
$('#night-mode').prop('checked', isDarkTheme);
$('#night-mode').change(function() {
var state = $(this).is(':checked');
var currentTheme = getCookie('theme');
if (state == true) {
if (currentTheme == 'custom.php') {
set_theme('lightsout.css');
} else if (currentTheme == 'material-light.php') {
set_theme('material-dark.php');
}
} else {
if (currentTheme == 'lightsout.css') {
set_theme('custom.php');
} else if (currentTheme == 'material-dark.php') {
set_theme('material-light.php');
}
}
});
});
function setCookie(cname, cvalue, exdays) {
var d = new Date();
d.setTime(d.getTime() + (exdays*24*60*60*1000));
var expires = "expires="+ d.toUTCString();
document.cookie = cname + "=" + cvalue + ";" + expires + ";path=/";
}
function getCookie(cname) {
var regx = new RegExp(cname + "=([^;]+)");
var value = regx.exec(document.cookie);
return (value != null) ? unescape(value[1]) : null;
}
// Define themes
var themes = {
"default": "custom.php",
"hackernews" : "hackernews.css",
"lightsout" : "lightsout.css",
"material-light" : "material-light.php",
"material-dark" : "material-dark.php",
}
// Toggles the sidebar navigation.
// Overrides the default SB Admin 2 behavior
$("#sidebarToggleTopbar").on('click', function(e) {
$("body").toggleClass("sidebar-toggled");
$(".sidebar").toggleClass("toggled d-none");
});
// Overrides SB Admin 2
$("#sidebarToggle, #sidebarToggleTop").on('click', function(e) {
var toggled = $(".sidebar").hasClass("toggled");
// Persist state in cookie
setCookie('sidebarToggled',toggled, 90);
});
$(function() {
if ($(window).width() < 768) {
$('.sidebar').addClass('toggled');
setCookie('sidebarToggled',false, 90);
}
});
$(window).on("load resize",function(e) {
if ($(window).width() > 768) {
$('.sidebar').removeClass('d-none d-md-block');
if (getCookie('sidebarToggled') == 'false') {
$('.sidebar').removeClass('toggled');
}
}
});
// Adds active class to current nav-item
$(window).bind("load", function() {
var url = window.location;
$('ul.navbar-nav a').filter(function() {
return this.href == url;
}).parent().addClass('active');
});
$(document)
.ajaxSend(setCSRFTokenHeader)
.ready(contentLoaded)
.ready(loadWifiStations());

7
app/js/custom.min.js vendored Normal file
View File

@ -0,0 +1,7 @@
/*!
* RaspAP - RaspAP WiFi Configuration Portal v1.6.1 (https://github.com/billz/raspap-webgui)
* Copyright 2013-2019 RaspAP Developers
* Licensed under MIT (https://github.com/raspap-webgui/raspap-webgui/blob/master/LICENSE)
*/
function msgShow(t,a){if(0==t)var e="success";else if(2==t||1==t)e="danger";return'<div class="alert alert-'+e+' alert-dismissible" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>'+a+"</div>"}function createNetmaskAddr(t){var a=[];for(i=0;i<4;i++){var e=Math.min(t,8);a.push(256-Math.pow(2,8-e)),t-=e}return a.join(".")}function loadSummary(a){$.post("/ajax/networking/get_ip_summary.php",{interface:a},function(t){jsonData=JSON.parse(t),console.log(jsonData),0==jsonData.return?$("#"+a+"-summary").html(jsonData.output.join("<br />")):2==jsonData.return&&$("#"+a+"-summary").append('<div class="alert alert-danger alert-dismissible" role="alert"><button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>'+jsonData.output.join("<br />")+"</div>")})}function getAllInterfaces(){$.get("/ajax/networking/get_all_interfaces.php",function(t){jsonData=JSON.parse(t),$.each(jsonData,function(t,a){loadSummary(a)})})}function setupTabs(){$('a[data-toggle="tab"]').on("shown.bs.tab",function(t){var a=$(t.target).attr("href");a.match("summary")||loadCurrentSettings(a.replace("#",""))})}function loadCurrentSettings(t){$.post("/ajax/networking/get_int_config.php",{interface:t},function(t){jsonData=JSON.parse(t),$.each(jsonData.output,function(t,a){var n=a.interface;$.each(a,function(t,a){switch(t){case"static":"true"==a?($("#"+n+"-static").click(),$("#"+n+"-nofailover").click()):$("#"+n+"-dhcp").click();break;case"failover":"true"===a?$("#"+n+"-failover").click():$("#"+n+"-nofailover").click();break;case"ip_address":var e=a.split("/");$("#"+n+"-ipaddress").val(e[0]),$("#"+n+"-netmask").val(createNetmaskAddr(e[1]));break;case"routers":$("#"+n+"-gateway").val(a);break;case"domain_name_server":svrsDNS=a.split(" "),$("#"+n+"-dnssvr").val(svrsDNS[0]),$("#"+n+"-dnssvralt").val(svrsDNS[1])}})})})}function saveNetworkSettings(t){var a=$("#frm-"+t).find(":input"),e={};$.each(a,function(t,a){"radio"==$(a).attr("type")?e[$(a).attr("id")]=$(a).prop("checked"):e[$(a).attr("id")]=$(a).val()}),e.interface=t,$.post("/ajax/networking/save_int_config.php",e,function(t){var a=JSON.parse(t);$("#msgNetworking").html(msgShow(a.return,a.output))})}function applyNetworkSettings(){$(this).data("int");arrFormData={generate:""},$.post("/ajax/networking/gen_int_config.php",arrFormData,function(t){console.log(t);var a=JSON.parse(t);$("#msgNetworking").html(msgShow(a.return,a.output))})}function setupBtns(){$("#btnSummaryRefresh").click(function(){getAllInterfaces()}),$(".intsave").click(function(){saveNetworkSettings($(this).data("int"))}),$(".intapply").click(function(){applyNetworkSettings()})}function setCSRFTokenHeader(t,a,e){var n=$("meta[name=csrf_token]").attr("content");/^(POST|PATCH|PUT|DELETE)$/i.test(e.type)&&a.setRequestHeader("X-CSRF-Token",n)}function contentLoaded(){switch(pageCurrent=window.location.href.split("?")[1].split("=")[1],pageCurrent=pageCurrent.replace("#",""),$("#side-menu").metisMenu(),pageCurrent){case"network_conf":getAllInterfaces(),setupTabs(),setupBtns()}}function loadWifiStations(a){return function(){var t=!0===a?"?refresh":"";$(".js-wifi-stations").addClass("loading-spinner").empty().load("/ajax/networking/wifi_stations.php"+t,function(){$(this).removeClass("loading-spinner")})}}$(document).on("click",".js-add-dhcp-static-lease",function(t){t.preventDefault();var a=$(".js-new-dhcp-static-lease"),e=$("input[name=mac]",a).val().trim(),n=$("input[name=ip]",a).val().trim();if(""!=e&&""!=n){var i=$("#js-dhcp-static-lease-row").html().replace("{{ mac }}",e).replace("{{ ip }}",n);$(".js-dhcp-static-lease-container").append(i),$("input[name=mac]",a).val(""),$("input[name=ip]",a).val("")}}),$(document).on("click",".js-remove-dhcp-static-lease",function(t){t.preventDefault(),$(this).parents(".js-dhcp-static-lease-row").remove()}),$(document).on("submit",".js-dhcp-settings-form",function(t){$(".js-add-dhcp-static-lease").trigger("click")}),$(".js-reload-wifi-stations").on("click",loadWifiStations(!0)),$(document).on("click",".js-toggle-password",function(t){var a=$(t.target),e=$(a.data("target"));e.is(":input")&&(t.preventDefault(),a.data("__toggle-with-initial")||a.data("__toggle-with-initial",a.text()),"password"===e.attr("type")?(a.text(a.data("toggle-with")),e.attr("type","text")):(a.text(a.data("__toggle-with-initial")),e.attr("type","password")))}),$(document).on("keyup",".js-validate-psk",function(t){var a=$(t.target),e=a.data("colors").split(","),n=$(a.data("target"));a.val().length<8||63<a.val().length?(a.css("backgroundColor",e[0]),n.attr("disabled",!0)):(a.css("backgroundColor",e[1]),n.attr("disabled",!1))}),$(document).ajaxSend(setCSRFTokenHeader).ready(contentLoaded).ready(loadWifiStations());

106
app/js/dashboardchart.js Normal file
View File

@ -0,0 +1,106 @@
(function($, _t) {
"use strict";
/**
* Create a Chart.js barchart.
*/
function CreateChart(ctx, labels) {
var barchart = new Chart(ctx,{
type: 'line',
options: {
responsive: true,
maintainAspectRatio: false,
scales: {
xAxes: [{
scaleLabel: {
display: true
},
ticks: {
maxRotation: 0,
minRotation: 0
}
}],
yAxes: [{
id: 'y-axis-1',
type: 'linear',
display: true,
position: 'left',
ticks: {
beginAtZero: true
}
}]
}
},
data: {
labels: labels,
datasets: []
}
});
return barchart;
}
function ShowBandwidthChartHandler(e) {
// Remove hourly chartjs chart
$('#divDBChartBandwidthhourly').empty();
// Construct ajax uri for getting the proper data
var timeunit = 'hourly';
var uri = 'ajax/bandwidth/get_bandwidth.php?';
uri += 'inet=';
uri += encodeURIComponent($('#divInterface').text());
uri += '&tu=';
uri += encodeURIComponent(timeunit.substr(0, 1));
var datasizeunits = 'mb';
uri += '&dsu='+encodeURIComponent(datasizeunits);
// Get data for chart
$.ajax({
url: uri,
dataType: 'json',
beforeSend: function() {}
}).done(function(jsondata) {
// Map json values to label array
var labels = jsondata.map(function(e) {
return e.date;
});
// Init. chart with label series
var barchart = CreateChart('divDBChartBandwidth'+timeunit, labels);
var dataRx = jsondata.map(function(e) {
return e.rx;
});
var dataTx = jsondata.map(function(e) {
return e.tx;
});
addData(barchart, dataTx, dataRx, datasizeunits);
}).fail(function(xhr, textStatus) {
if (window.console) {
console.error('server error');
} else {
alert("server error");
}
});
}
/**
* Add data array to datasets of current chart.
*/
function addData(chart, dataTx, dataRx, datasizeunits) {
chart.data.datasets.push({
label: 'Send'+' '+datasizeunits.toUpperCase(),
yAxisID: 'y-axis-1',
borderColor: 'rgba(75, 192, 192, 1)',
backgroundColor: 'rgba(75, 192, 192, 0.2)',
data: dataTx
});
chart.data.datasets.push({
label: 'Receive'+' '+datasizeunits.toUpperCase(),
yAxisID: 'y-axis-1',
borderColor: 'rgba(192, 192, 192, 1)',
backgroundColor: 'rgba(192, 192, 192, 0.2)',
data: dataRx
});
chart.update();
}
$(document).ready(function() {
ShowBandwidthChartHandler();
});
})(jQuery, t);

22
app/js/huebee.js Normal file
View File

@ -0,0 +1,22 @@
// Initialize Huebee color picker
var elem = document.querySelector('.color-input');
var hueb = new Huebee( elem, {
notation: 'hex',
saturations: 2,
customColors: [ '#d8224c', '#dd4814', '#ea0', '#19f', '#333' ],
className: 'light-picker',
hue0: 210
});
// Set custom color if defined
var color = getCookie('color');
if (color == null || color == '') {
color = '#2b8080';
}
hueb.setColor(color);
// Change event
hueb.on( 'change', function( color, hue, sat, lum ) {
setCookie('color',color,90);
})

88
app/js/linkquality.js Normal file
View File

@ -0,0 +1,88 @@
// Link quality gauge for ChartJS
// Support for dark theme
theme = getCookie('theme');
if (theme == 'lightsout.css') {
var borderColor = 'rgba(37, 153, 63, 1)';
var labelColor = 'rgba(37, 153, 63, 1)';
} else if (theme == 'material-light.php') {
var borderColor = '#f2f2fb';
var labelColor = '#f2f2fb';
} else if (theme == 'material-dark.php') {
var borderColor = '#f2f2fb';
var labelColor = '#f2f2fb';
} else {
var borderColor = 'rgba(147, 210, 162, 1)';
var labelColor = 'rgba(130, 130, 130, 1)';
}
let data1 = {
datasets: [{
data: [linkQ, 100-linkQ],
backgroundColor: 'transparent',
borderColor: borderColor,
}],
};
let config = {
type: 'doughnut',
data: data1,
options: {
aspectRatio: 2,
responsive: true,
maintainAspectRatio: false,
tooltips: {enabled: false},
hover: {mode: null},
legend: {
display: false,
},
rotation: (2/3)*Math.PI,//2+(1/3),
circumference: (1+(2/3)) * Math.PI, // * Math.PI,
cutoutPercentage: 80,
animation: {
animateScale: false,
animateRotate: true
},
tooltips: {
enabled: false
}
},
centerText: {
display: true,
text: linkQ + "%"
},
plugins: [{
beforeDraw: function(chart) {
if (chart.config.centerText.display !== null &&
typeof chart.config.centerText.display !== 'undefined' &&
chart.config.centerText.display) {
drawLinkQ(chart);
}
}
}]
};
function drawLinkQ(chart) {
let width = chart.chart.width;
let height = chart.chart.height;
let ctx = chart.chart.ctx;
ctx.restore();
let fontSize = (height / 100).toFixed(2);
ctx.font = fontSize + "em sans-serif";
ctx.fillStyle = labelColor;
ctx.textBaseline = "middle";
let text = chart.config.centerText.text;
let textX = Math.round((width - ctx.measureText(text).width) * 0.5);
let textY = height / 2;
ctx.fillText(text, textX, textY);
ctx.save();
}
window.onload = function() {
let ctx = document.getElementById("divChartLinkQ").getContext("2d");
var chart = new Chart(ctx, config);
};

1994
app/lib/Parsedown.php Normal file

File diff suppressed because it is too large Load Diff

98
app/pitft/stats.py Normal file
View File

@ -0,0 +1,98 @@
# -*- coding: utf-8 -*-
#
# Author: @billz
# Author URI: https://github.com/billz
# Description: RaspAP stats display for the Adafruit Mini PiTFT,
# a 135x240 Color TFT add-on for the Raspberry Pi.
# Based on Adafruit's rgb_display_ministats.py
# See: https://github.com/adafruit/Adafruit_CircuitPython_RGB_Display
# License: MIT License
import time
import subprocess
import digitalio
import board
from PIL import Image, ImageDraw, ImageFont
import adafruit_rgb_display.st7789 as st7789
# Configuration for CS and DC pins
cs_pin = digitalio.DigitalInOut(board.CE0)
dc_pin = digitalio.DigitalInOut(board.D25)
reset_pin = None
# Config for display baudrate (default max is 24mhz)
BAUDRATE = 64000000
# Setup SPI bus using hardware SPI
spi = board.SPI()
# Create the ST7789 display
disp = st7789.ST7789(spi, cs=cs_pin, dc=dc_pin, rst=reset_pin, baudrate=BAUDRATE,
width=135, height=240, x_offset=53, y_offset=40)
# Create blank image with mode 'RGB'
height = disp.width # swap height/width to rotate it to landscape
width = disp.height
image = Image.new('RGB', (width, height))
rotation = 90
# Get a drawing object and clear the image
draw = ImageDraw.Draw(image)
draw.rectangle((0, 0, width, height), outline=0, fill=(0, 0, 0))
disp.image(image,rotation)
# Define some constants
padding = -2
top = padding
bottom = height-padding
# Move left to right keeping track of the current x position
x = 0
# Load DejaVu TTF Font
# Install with: sudo apt-get install ttf-dejavu
font = ImageFont.truetype('/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf', 24)
# Turn on the backlight
backlight = digitalio.DigitalInOut(board.D22)
backlight.switch_to_output()
backlight.value = True
while True:
# Draw a black filled box to clear the image
draw.rectangle((0, 0, width, height), outline=0, fill=0)
# Collect basic system stats
cmd = "hostname -I | cut -d\' \' -f1"
IP = "IP: "+subprocess.check_output(cmd, shell=True).decode("utf-8")
cmd = "pidof hostapd | wc -l | awk '{printf \"Hotspot: %s\", $1 == 1 ? \"Active\" : \"Down\"}'"
Hostapd = subprocess.check_output(cmd, shell=True).decode("utf-8")
cmd = "vnstat -i wlan0 | grep tx: | awk '{printf \"Data Tx: %d %s\", $5,$6}'"
DataTx = subprocess.check_output(cmd, shell=True).decode("utf-8")
cmd = "top -bn1 | grep load | awk '{printf \"CPU Load: %.2f\", $(NF-2)}'"
CPU = subprocess.check_output(cmd, shell=True).decode("utf-8")
cmd = "free -m | awk 'NR==2{printf \"Mem: %sMB %.2f%%\", $3,$3*100/$2 }'"
MemUsage = subprocess.check_output(cmd, shell=True).decode("utf-8")
cmd = "cat /sys/class/thermal/thermal_zone0/temp | awk \'{printf \"CPU Temp: %.1f C\", $(NF-0) / 1000}\'" # pylint: disable=line-too-long
Temp = subprocess.check_output(cmd, shell=True).decode("utf-8")
# Write five lines of stats
y = top
draw.text((x, y), IP, font=font, fill="#ffaaaa")
y += font.getsize(IP)[1]
draw.text((x, y), Hostapd, font=font, fill="#d46a6a")
y += font.getsize(Hostapd)[1]
draw.text((x, y), DataTx, font=font, fill="#aa3939")
y += font.getsize(DataTx)[1]
draw.text((x, y), MemUsage, font=font, fill="#801515")
y += font.getsize(MemUsage)[1]
draw.text((x, y), Temp, font=font, fill="#550000")
# Display image
disp.image(image, rotation)
time.sleep(.1)

View File

@ -1,41 +0,0 @@
{
"name": "startbootstrap-sb-admin-2",
"version": "1.0.4",
"homepage": "http://startbootstrap.com/template-overviews/sb-admin-2/",
"authors": [
"David Miller"
],
"description": "A free, open source, Bootstrap admin theme created by Start Bootstrap",
"keywords": [
"bootstrap",
"theme"
],
"license": "Apache",
"ignore": [
"**/.*",
"node_modules",
"bower_components",
"test",
"tests",
"pages",
"index.html",
"/js"
],
"main": [
"dist/css/sb-admin-2.css",
"dist/js/sb-admin-2.js"
],
"dependencies": {
"bootstrap": "~3.3.1",
"datatables": "~1.10.4",
"datatables-plugins": "~1.0.1",
"flot": "~0.8.3",
"font-awesome": "~4.2.0",
"holderjs": "~2.4.1",
"metisMenu": "~1.1.3",
"morrisjs": "~0.5.1",
"datatables-responsive": "~1.0.3",
"bootstrap-social": "~4.8.0",
"flot.tooltip": "~0.8.4"
}
}

View File

@ -1,26 +0,0 @@
{
"name": "bootstrap-social",
"main": "bootstrap-social.css",
"licence": "MIT",
"ignore": [
"assets",
"index.html",
"LICENCE"
],
"dependencies": {
"bootstrap": "~3",
"font-awesome": "~4.2"
},
"homepage": "https://github.com/lipis/bootstrap-social",
"version": "4.8.0",
"_release": "4.8.0",
"_resolution": {
"type": "version",
"tag": "4.8.0",
"commit": "918fc55c3c938377a7618ec0f115846e50d4b883"
},
"_source": "git://github.com/lipis/bootstrap-social.git",
"_target": "~4.8.0",
"_originalSource": "bootstrap-social",
"_direct": true
}

View File

@ -1,11 +0,0 @@
# editorconfig.org
root = true
[*]
indent_style = space
indent_size = 2
end_of_line = lf
charset = utf-8
trim_trailing_whitespace = true
insert_final_newline = true

View File

@ -1,2 +0,0 @@
.DS_Store
dev

View File

@ -1,58 +0,0 @@
Social Buttons for Bootstrap
============================
Social Buttons made in pure CSS based on
[Bootstrap](http://twbs.github.io/bootstrap/) and
[Font Awesome](http://fortawesome.github.io/Font-Awesome/)!
[Check the live demo!](http://lipis.github.io/bootstrap-social)
Installation
------------
Include the `bootstrap-social.css` or `bootstrap-social.less` in your project, or
install it through [Bower](http://bower.io/):
bower install bootstrap-social
Available classes
-----------------
- `btn-adn`
- `btn-bitbucket`
- `btn-dropbox`
- `btn-facebook`
- `btn-flickr`
- `btn-foursquare`
- `btn-github`
- `btn-google-plus`
- `btn-instagram`
- `btn-linkedin`
- `btn-microsoft`
- `btn-openid`
- `btn-reddit`
- `btn-soundcloud`
- `btn-tumblr`
- `btn-twitter`
- `btn-vimeo`
- `btn-vk`
- `btn-yahoo`
Examples
--------
```html
<a class="btn btn-block btn-social btn-twitter">
<i class="fa fa-twitter"></i>
Sign in with Twitter
</a>
<a class="btn btn-social-icon btn-twitter">
<i class="fa fa-twitter"></i>
</a>
```
Pull Requests
-------------
If you are about to create a new **Pull Request** for adding a new button don't
update the minified `bootstrap-social.css` file. It will be generated
automatically after a successful merge.

View File

@ -1,101 +0,0 @@
/*
* Social Buttons for Bootstrap
*
* Copyright 2013-2014 Panayiotis Lipiridis
* Licensed under the MIT License
*
* https://github.com/lipis/bootstrap-social
*/
.btn-social{position:relative;padding-left:44px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.btn-social>:first-child{position:absolute;left:0;top:0;bottom:0;width:32px;line-height:34px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2)}
.btn-social.btn-lg{padding-left:61px}.btn-social.btn-lg :first-child{line-height:45px;width:45px;font-size:1.8em}
.btn-social.btn-sm{padding-left:38px}.btn-social.btn-sm :first-child{line-height:28px;width:28px;font-size:1.4em}
.btn-social.btn-xs{padding-left:30px}.btn-social.btn-xs :first-child{line-height:20px;width:20px;font-size:1.2em}
.btn-social-icon{position:relative;padding-left:44px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;height:34px;width:34px;padding:0}.btn-social-icon>:first-child{position:absolute;left:0;top:0;bottom:0;width:32px;line-height:34px;font-size:1.6em;text-align:center;border-right:1px solid rgba(0,0,0,0.2)}
.btn-social-icon.btn-lg{padding-left:61px}.btn-social-icon.btn-lg :first-child{line-height:45px;width:45px;font-size:1.8em}
.btn-social-icon.btn-sm{padding-left:38px}.btn-social-icon.btn-sm :first-child{line-height:28px;width:28px;font-size:1.4em}
.btn-social-icon.btn-xs{padding-left:30px}.btn-social-icon.btn-xs :first-child{line-height:20px;width:20px;font-size:1.2em}
.btn-social-icon :first-child{border:none;text-align:center;width:100% !important}
.btn-social-icon.btn-lg{height:45px;width:45px;padding-left:0;padding-right:0}
.btn-social-icon.btn-sm{height:30px;width:30px;padding-left:0;padding-right:0}
.btn-social-icon.btn-xs{height:22px;width:22px;padding-left:0;padding-right:0}
.btn-adn{color:#fff;background-color:#d87a68;border-color:rgba(0,0,0,0.2)}.btn-adn:hover,.btn-adn:focus,.btn-adn:active,.btn-adn.active,.open>.dropdown-toggle.btn-adn{color:#fff;background-color:#ce563f;border-color:rgba(0,0,0,0.2)}
.btn-adn:active,.btn-adn.active,.open>.dropdown-toggle.btn-adn{background-image:none}
.btn-adn.disabled,.btn-adn[disabled],fieldset[disabled] .btn-adn,.btn-adn.disabled:hover,.btn-adn[disabled]:hover,fieldset[disabled] .btn-adn:hover,.btn-adn.disabled:focus,.btn-adn[disabled]:focus,fieldset[disabled] .btn-adn:focus,.btn-adn.disabled:active,.btn-adn[disabled]:active,fieldset[disabled] .btn-adn:active,.btn-adn.disabled.active,.btn-adn[disabled].active,fieldset[disabled] .btn-adn.active{background-color:#d87a68;border-color:rgba(0,0,0,0.2)}
.btn-adn .badge{color:#d87a68;background-color:#fff}
.btn-bitbucket{color:#fff;background-color:#205081;border-color:rgba(0,0,0,0.2)}.btn-bitbucket:hover,.btn-bitbucket:focus,.btn-bitbucket:active,.btn-bitbucket.active,.open>.dropdown-toggle.btn-bitbucket{color:#fff;background-color:#163758;border-color:rgba(0,0,0,0.2)}
.btn-bitbucket:active,.btn-bitbucket.active,.open>.dropdown-toggle.btn-bitbucket{background-image:none}
.btn-bitbucket.disabled,.btn-bitbucket[disabled],fieldset[disabled] .btn-bitbucket,.btn-bitbucket.disabled:hover,.btn-bitbucket[disabled]:hover,fieldset[disabled] .btn-bitbucket:hover,.btn-bitbucket.disabled:focus,.btn-bitbucket[disabled]:focus,fieldset[disabled] .btn-bitbucket:focus,.btn-bitbucket.disabled:active,.btn-bitbucket[disabled]:active,fieldset[disabled] .btn-bitbucket:active,.btn-bitbucket.disabled.active,.btn-bitbucket[disabled].active,fieldset[disabled] .btn-bitbucket.active{background-color:#205081;border-color:rgba(0,0,0,0.2)}
.btn-bitbucket .badge{color:#205081;background-color:#fff}
.btn-dropbox{color:#fff;background-color:#1087dd;border-color:rgba(0,0,0,0.2)}.btn-dropbox:hover,.btn-dropbox:focus,.btn-dropbox:active,.btn-dropbox.active,.open>.dropdown-toggle.btn-dropbox{color:#fff;background-color:#0d6aad;border-color:rgba(0,0,0,0.2)}
.btn-dropbox:active,.btn-dropbox.active,.open>.dropdown-toggle.btn-dropbox{background-image:none}
.btn-dropbox.disabled,.btn-dropbox[disabled],fieldset[disabled] .btn-dropbox,.btn-dropbox.disabled:hover,.btn-dropbox[disabled]:hover,fieldset[disabled] .btn-dropbox:hover,.btn-dropbox.disabled:focus,.btn-dropbox[disabled]:focus,fieldset[disabled] .btn-dropbox:focus,.btn-dropbox.disabled:active,.btn-dropbox[disabled]:active,fieldset[disabled] .btn-dropbox:active,.btn-dropbox.disabled.active,.btn-dropbox[disabled].active,fieldset[disabled] .btn-dropbox.active{background-color:#1087dd;border-color:rgba(0,0,0,0.2)}
.btn-dropbox .badge{color:#1087dd;background-color:#fff}
.btn-facebook{color:#fff;background-color:#3b5998;border-color:rgba(0,0,0,0.2)}.btn-facebook:hover,.btn-facebook:focus,.btn-facebook:active,.btn-facebook.active,.open>.dropdown-toggle.btn-facebook{color:#fff;background-color:#2d4373;border-color:rgba(0,0,0,0.2)}
.btn-facebook:active,.btn-facebook.active,.open>.dropdown-toggle.btn-facebook{background-image:none}
.btn-facebook.disabled,.btn-facebook[disabled],fieldset[disabled] .btn-facebook,.btn-facebook.disabled:hover,.btn-facebook[disabled]:hover,fieldset[disabled] .btn-facebook:hover,.btn-facebook.disabled:focus,.btn-facebook[disabled]:focus,fieldset[disabled] .btn-facebook:focus,.btn-facebook.disabled:active,.btn-facebook[disabled]:active,fieldset[disabled] .btn-facebook:active,.btn-facebook.disabled.active,.btn-facebook[disabled].active,fieldset[disabled] .btn-facebook.active{background-color:#3b5998;border-color:rgba(0,0,0,0.2)}
.btn-facebook .badge{color:#3b5998;background-color:#fff}
.btn-flickr{color:#fff;background-color:#ff0084;border-color:rgba(0,0,0,0.2)}.btn-flickr:hover,.btn-flickr:focus,.btn-flickr:active,.btn-flickr.active,.open>.dropdown-toggle.btn-flickr{color:#fff;background-color:#cc006a;border-color:rgba(0,0,0,0.2)}
.btn-flickr:active,.btn-flickr.active,.open>.dropdown-toggle.btn-flickr{background-image:none}
.btn-flickr.disabled,.btn-flickr[disabled],fieldset[disabled] .btn-flickr,.btn-flickr.disabled:hover,.btn-flickr[disabled]:hover,fieldset[disabled] .btn-flickr:hover,.btn-flickr.disabled:focus,.btn-flickr[disabled]:focus,fieldset[disabled] .btn-flickr:focus,.btn-flickr.disabled:active,.btn-flickr[disabled]:active,fieldset[disabled] .btn-flickr:active,.btn-flickr.disabled.active,.btn-flickr[disabled].active,fieldset[disabled] .btn-flickr.active{background-color:#ff0084;border-color:rgba(0,0,0,0.2)}
.btn-flickr .badge{color:#ff0084;background-color:#fff}
.btn-foursquare{color:#fff;background-color:#f94877;border-color:rgba(0,0,0,0.2)}.btn-foursquare:hover,.btn-foursquare:focus,.btn-foursquare:active,.btn-foursquare.active,.open>.dropdown-toggle.btn-foursquare{color:#fff;background-color:#f71752;border-color:rgba(0,0,0,0.2)}
.btn-foursquare:active,.btn-foursquare.active,.open>.dropdown-toggle.btn-foursquare{background-image:none}
.btn-foursquare.disabled,.btn-foursquare[disabled],fieldset[disabled] .btn-foursquare,.btn-foursquare.disabled:hover,.btn-foursquare[disabled]:hover,fieldset[disabled] .btn-foursquare:hover,.btn-foursquare.disabled:focus,.btn-foursquare[disabled]:focus,fieldset[disabled] .btn-foursquare:focus,.btn-foursquare.disabled:active,.btn-foursquare[disabled]:active,fieldset[disabled] .btn-foursquare:active,.btn-foursquare.disabled.active,.btn-foursquare[disabled].active,fieldset[disabled] .btn-foursquare.active{background-color:#f94877;border-color:rgba(0,0,0,0.2)}
.btn-foursquare .badge{color:#f94877;background-color:#fff}
.btn-github{color:#fff;background-color:#444;border-color:rgba(0,0,0,0.2)}.btn-github:hover,.btn-github:focus,.btn-github:active,.btn-github.active,.open>.dropdown-toggle.btn-github{color:#fff;background-color:#2b2b2b;border-color:rgba(0,0,0,0.2)}
.btn-github:active,.btn-github.active,.open>.dropdown-toggle.btn-github{background-image:none}
.btn-github.disabled,.btn-github[disabled],fieldset[disabled] .btn-github,.btn-github.disabled:hover,.btn-github[disabled]:hover,fieldset[disabled] .btn-github:hover,.btn-github.disabled:focus,.btn-github[disabled]:focus,fieldset[disabled] .btn-github:focus,.btn-github.disabled:active,.btn-github[disabled]:active,fieldset[disabled] .btn-github:active,.btn-github.disabled.active,.btn-github[disabled].active,fieldset[disabled] .btn-github.active{background-color:#444;border-color:rgba(0,0,0,0.2)}
.btn-github .badge{color:#444;background-color:#fff}
.btn-google-plus{color:#fff;background-color:#dd4b39;border-color:rgba(0,0,0,0.2)}.btn-google-plus:hover,.btn-google-plus:focus,.btn-google-plus:active,.btn-google-plus.active,.open>.dropdown-toggle.btn-google-plus{color:#fff;background-color:#c23321;border-color:rgba(0,0,0,0.2)}
.btn-google-plus:active,.btn-google-plus.active,.open>.dropdown-toggle.btn-google-plus{background-image:none}
.btn-google-plus.disabled,.btn-google-plus[disabled],fieldset[disabled] .btn-google-plus,.btn-google-plus.disabled:hover,.btn-google-plus[disabled]:hover,fieldset[disabled] .btn-google-plus:hover,.btn-google-plus.disabled:focus,.btn-google-plus[disabled]:focus,fieldset[disabled] .btn-google-plus:focus,.btn-google-plus.disabled:active,.btn-google-plus[disabled]:active,fieldset[disabled] .btn-google-plus:active,.btn-google-plus.disabled.active,.btn-google-plus[disabled].active,fieldset[disabled] .btn-google-plus.active{background-color:#dd4b39;border-color:rgba(0,0,0,0.2)}
.btn-google-plus .badge{color:#dd4b39;background-color:#fff}
.btn-instagram{color:#fff;background-color:#3f729b;border-color:rgba(0,0,0,0.2)}.btn-instagram:hover,.btn-instagram:focus,.btn-instagram:active,.btn-instagram.active,.open>.dropdown-toggle.btn-instagram{color:#fff;background-color:#305777;border-color:rgba(0,0,0,0.2)}
.btn-instagram:active,.btn-instagram.active,.open>.dropdown-toggle.btn-instagram{background-image:none}
.btn-instagram.disabled,.btn-instagram[disabled],fieldset[disabled] .btn-instagram,.btn-instagram.disabled:hover,.btn-instagram[disabled]:hover,fieldset[disabled] .btn-instagram:hover,.btn-instagram.disabled:focus,.btn-instagram[disabled]:focus,fieldset[disabled] .btn-instagram:focus,.btn-instagram.disabled:active,.btn-instagram[disabled]:active,fieldset[disabled] .btn-instagram:active,.btn-instagram.disabled.active,.btn-instagram[disabled].active,fieldset[disabled] .btn-instagram.active{background-color:#3f729b;border-color:rgba(0,0,0,0.2)}
.btn-instagram .badge{color:#3f729b;background-color:#fff}
.btn-linkedin{color:#fff;background-color:#007bb6;border-color:rgba(0,0,0,0.2)}.btn-linkedin:hover,.btn-linkedin:focus,.btn-linkedin:active,.btn-linkedin.active,.open>.dropdown-toggle.btn-linkedin{color:#fff;background-color:#005983;border-color:rgba(0,0,0,0.2)}
.btn-linkedin:active,.btn-linkedin.active,.open>.dropdown-toggle.btn-linkedin{background-image:none}
.btn-linkedin.disabled,.btn-linkedin[disabled],fieldset[disabled] .btn-linkedin,.btn-linkedin.disabled:hover,.btn-linkedin[disabled]:hover,fieldset[disabled] .btn-linkedin:hover,.btn-linkedin.disabled:focus,.btn-linkedin[disabled]:focus,fieldset[disabled] .btn-linkedin:focus,.btn-linkedin.disabled:active,.btn-linkedin[disabled]:active,fieldset[disabled] .btn-linkedin:active,.btn-linkedin.disabled.active,.btn-linkedin[disabled].active,fieldset[disabled] .btn-linkedin.active{background-color:#007bb6;border-color:rgba(0,0,0,0.2)}
.btn-linkedin .badge{color:#007bb6;background-color:#fff}
.btn-microsoft{color:#fff;background-color:#2672ec;border-color:rgba(0,0,0,0.2)}.btn-microsoft:hover,.btn-microsoft:focus,.btn-microsoft:active,.btn-microsoft.active,.open>.dropdown-toggle.btn-microsoft{color:#fff;background-color:#125acd;border-color:rgba(0,0,0,0.2)}
.btn-microsoft:active,.btn-microsoft.active,.open>.dropdown-toggle.btn-microsoft{background-image:none}
.btn-microsoft.disabled,.btn-microsoft[disabled],fieldset[disabled] .btn-microsoft,.btn-microsoft.disabled:hover,.btn-microsoft[disabled]:hover,fieldset[disabled] .btn-microsoft:hover,.btn-microsoft.disabled:focus,.btn-microsoft[disabled]:focus,fieldset[disabled] .btn-microsoft:focus,.btn-microsoft.disabled:active,.btn-microsoft[disabled]:active,fieldset[disabled] .btn-microsoft:active,.btn-microsoft.disabled.active,.btn-microsoft[disabled].active,fieldset[disabled] .btn-microsoft.active{background-color:#2672ec;border-color:rgba(0,0,0,0.2)}
.btn-microsoft .badge{color:#2672ec;background-color:#fff}
.btn-openid{color:#fff;background-color:#f7931e;border-color:rgba(0,0,0,0.2)}.btn-openid:hover,.btn-openid:focus,.btn-openid:active,.btn-openid.active,.open>.dropdown-toggle.btn-openid{color:#fff;background-color:#da7908;border-color:rgba(0,0,0,0.2)}
.btn-openid:active,.btn-openid.active,.open>.dropdown-toggle.btn-openid{background-image:none}
.btn-openid.disabled,.btn-openid[disabled],fieldset[disabled] .btn-openid,.btn-openid.disabled:hover,.btn-openid[disabled]:hover,fieldset[disabled] .btn-openid:hover,.btn-openid.disabled:focus,.btn-openid[disabled]:focus,fieldset[disabled] .btn-openid:focus,.btn-openid.disabled:active,.btn-openid[disabled]:active,fieldset[disabled] .btn-openid:active,.btn-openid.disabled.active,.btn-openid[disabled].active,fieldset[disabled] .btn-openid.active{background-color:#f7931e;border-color:rgba(0,0,0,0.2)}
.btn-openid .badge{color:#f7931e;background-color:#fff}
.btn-pinterest{color:#fff;background-color:#cb2027;border-color:rgba(0,0,0,0.2)}.btn-pinterest:hover,.btn-pinterest:focus,.btn-pinterest:active,.btn-pinterest.active,.open>.dropdown-toggle.btn-pinterest{color:#fff;background-color:#9f191f;border-color:rgba(0,0,0,0.2)}
.btn-pinterest:active,.btn-pinterest.active,.open>.dropdown-toggle.btn-pinterest{background-image:none}
.btn-pinterest.disabled,.btn-pinterest[disabled],fieldset[disabled] .btn-pinterest,.btn-pinterest.disabled:hover,.btn-pinterest[disabled]:hover,fieldset[disabled] .btn-pinterest:hover,.btn-pinterest.disabled:focus,.btn-pinterest[disabled]:focus,fieldset[disabled] .btn-pinterest:focus,.btn-pinterest.disabled:active,.btn-pinterest[disabled]:active,fieldset[disabled] .btn-pinterest:active,.btn-pinterest.disabled.active,.btn-pinterest[disabled].active,fieldset[disabled] .btn-pinterest.active{background-color:#cb2027;border-color:rgba(0,0,0,0.2)}
.btn-pinterest .badge{color:#cb2027;background-color:#fff}
.btn-reddit{color:#000;background-color:#eff7ff;border-color:rgba(0,0,0,0.2)}.btn-reddit:hover,.btn-reddit:focus,.btn-reddit:active,.btn-reddit.active,.open>.dropdown-toggle.btn-reddit{color:#000;background-color:#bcddff;border-color:rgba(0,0,0,0.2)}
.btn-reddit:active,.btn-reddit.active,.open>.dropdown-toggle.btn-reddit{background-image:none}
.btn-reddit.disabled,.btn-reddit[disabled],fieldset[disabled] .btn-reddit,.btn-reddit.disabled:hover,.btn-reddit[disabled]:hover,fieldset[disabled] .btn-reddit:hover,.btn-reddit.disabled:focus,.btn-reddit[disabled]:focus,fieldset[disabled] .btn-reddit:focus,.btn-reddit.disabled:active,.btn-reddit[disabled]:active,fieldset[disabled] .btn-reddit:active,.btn-reddit.disabled.active,.btn-reddit[disabled].active,fieldset[disabled] .btn-reddit.active{background-color:#eff7ff;border-color:rgba(0,0,0,0.2)}
.btn-reddit .badge{color:#eff7ff;background-color:#000}
.btn-soundcloud{color:#fff;background-color:#f50;border-color:rgba(0,0,0,0.2)}.btn-soundcloud:hover,.btn-soundcloud:focus,.btn-soundcloud:active,.btn-soundcloud.active,.open>.dropdown-toggle.btn-soundcloud{color:#fff;background-color:#c40;border-color:rgba(0,0,0,0.2)}
.btn-soundcloud:active,.btn-soundcloud.active,.open>.dropdown-toggle.btn-soundcloud{background-image:none}
.btn-soundcloud.disabled,.btn-soundcloud[disabled],fieldset[disabled] .btn-soundcloud,.btn-soundcloud.disabled:hover,.btn-soundcloud[disabled]:hover,fieldset[disabled] .btn-soundcloud:hover,.btn-soundcloud.disabled:focus,.btn-soundcloud[disabled]:focus,fieldset[disabled] .btn-soundcloud:focus,.btn-soundcloud.disabled:active,.btn-soundcloud[disabled]:active,fieldset[disabled] .btn-soundcloud:active,.btn-soundcloud.disabled.active,.btn-soundcloud[disabled].active,fieldset[disabled] .btn-soundcloud.active{background-color:#f50;border-color:rgba(0,0,0,0.2)}
.btn-soundcloud .badge{color:#f50;background-color:#fff}
.btn-tumblr{color:#fff;background-color:#2c4762;border-color:rgba(0,0,0,0.2)}.btn-tumblr:hover,.btn-tumblr:focus,.btn-tumblr:active,.btn-tumblr.active,.open>.dropdown-toggle.btn-tumblr{color:#fff;background-color:#1c2d3f;border-color:rgba(0,0,0,0.2)}
.btn-tumblr:active,.btn-tumblr.active,.open>.dropdown-toggle.btn-tumblr{background-image:none}
.btn-tumblr.disabled,.btn-tumblr[disabled],fieldset[disabled] .btn-tumblr,.btn-tumblr.disabled:hover,.btn-tumblr[disabled]:hover,fieldset[disabled] .btn-tumblr:hover,.btn-tumblr.disabled:focus,.btn-tumblr[disabled]:focus,fieldset[disabled] .btn-tumblr:focus,.btn-tumblr.disabled:active,.btn-tumblr[disabled]:active,fieldset[disabled] .btn-tumblr:active,.btn-tumblr.disabled.active,.btn-tumblr[disabled].active,fieldset[disabled] .btn-tumblr.active{background-color:#2c4762;border-color:rgba(0,0,0,0.2)}
.btn-tumblr .badge{color:#2c4762;background-color:#fff}
.btn-twitter{color:#fff;background-color:#55acee;border-color:rgba(0,0,0,0.2)}.btn-twitter:hover,.btn-twitter:focus,.btn-twitter:active,.btn-twitter.active,.open>.dropdown-toggle.btn-twitter{color:#fff;background-color:#2795e9;border-color:rgba(0,0,0,0.2)}
.btn-twitter:active,.btn-twitter.active,.open>.dropdown-toggle.btn-twitter{background-image:none}
.btn-twitter.disabled,.btn-twitter[disabled],fieldset[disabled] .btn-twitter,.btn-twitter.disabled:hover,.btn-twitter[disabled]:hover,fieldset[disabled] .btn-twitter:hover,.btn-twitter.disabled:focus,.btn-twitter[disabled]:focus,fieldset[disabled] .btn-twitter:focus,.btn-twitter.disabled:active,.btn-twitter[disabled]:active,fieldset[disabled] .btn-twitter:active,.btn-twitter.disabled.active,.btn-twitter[disabled].active,fieldset[disabled] .btn-twitter.active{background-color:#55acee;border-color:rgba(0,0,0,0.2)}
.btn-twitter .badge{color:#55acee;background-color:#fff}
.btn-vimeo{color:#fff;background-color:#1ab7ea;border-color:rgba(0,0,0,0.2)}.btn-vimeo:hover,.btn-vimeo:focus,.btn-vimeo:active,.btn-vimeo.active,.open>.dropdown-toggle.btn-vimeo{color:#fff;background-color:#1295bf;border-color:rgba(0,0,0,0.2)}
.btn-vimeo:active,.btn-vimeo.active,.open>.dropdown-toggle.btn-vimeo{background-image:none}
.btn-vimeo.disabled,.btn-vimeo[disabled],fieldset[disabled] .btn-vimeo,.btn-vimeo.disabled:hover,.btn-vimeo[disabled]:hover,fieldset[disabled] .btn-vimeo:hover,.btn-vimeo.disabled:focus,.btn-vimeo[disabled]:focus,fieldset[disabled] .btn-vimeo:focus,.btn-vimeo.disabled:active,.btn-vimeo[disabled]:active,fieldset[disabled] .btn-vimeo:active,.btn-vimeo.disabled.active,.btn-vimeo[disabled].active,fieldset[disabled] .btn-vimeo.active{background-color:#1ab7ea;border-color:rgba(0,0,0,0.2)}
.btn-vimeo .badge{color:#1ab7ea;background-color:#fff}
.btn-vk{color:#fff;background-color:#587ea3;border-color:rgba(0,0,0,0.2)}.btn-vk:hover,.btn-vk:focus,.btn-vk:active,.btn-vk.active,.open>.dropdown-toggle.btn-vk{color:#fff;background-color:#466482;border-color:rgba(0,0,0,0.2)}
.btn-vk:active,.btn-vk.active,.open>.dropdown-toggle.btn-vk{background-image:none}
.btn-vk.disabled,.btn-vk[disabled],fieldset[disabled] .btn-vk,.btn-vk.disabled:hover,.btn-vk[disabled]:hover,fieldset[disabled] .btn-vk:hover,.btn-vk.disabled:focus,.btn-vk[disabled]:focus,fieldset[disabled] .btn-vk:focus,.btn-vk.disabled:active,.btn-vk[disabled]:active,fieldset[disabled] .btn-vk:active,.btn-vk.disabled.active,.btn-vk[disabled].active,fieldset[disabled] .btn-vk.active{background-color:#587ea3;border-color:rgba(0,0,0,0.2)}
.btn-vk .badge{color:#587ea3;background-color:#fff}
.btn-yahoo{color:#fff;background-color:#720e9e;border-color:rgba(0,0,0,0.2)}.btn-yahoo:hover,.btn-yahoo:focus,.btn-yahoo:active,.btn-yahoo.active,.open>.dropdown-toggle.btn-yahoo{color:#fff;background-color:#500a6f;border-color:rgba(0,0,0,0.2)}
.btn-yahoo:active,.btn-yahoo.active,.open>.dropdown-toggle.btn-yahoo{background-image:none}
.btn-yahoo.disabled,.btn-yahoo[disabled],fieldset[disabled] .btn-yahoo,.btn-yahoo.disabled:hover,.btn-yahoo[disabled]:hover,fieldset[disabled] .btn-yahoo:hover,.btn-yahoo.disabled:focus,.btn-yahoo[disabled]:focus,fieldset[disabled] .btn-yahoo:focus,.btn-yahoo.disabled:active,.btn-yahoo[disabled]:active,fieldset[disabled] .btn-yahoo:active,.btn-yahoo.disabled.active,.btn-yahoo[disabled].active,fieldset[disabled] .btn-yahoo.active{background-color:#720e9e;border-color:rgba(0,0,0,0.2)}
.btn-yahoo .badge{color:#720e9e;background-color:#fff}

View File

@ -1,114 +0,0 @@
/*
* Social Buttons for Bootstrap
*
* Copyright 2013-2014 Panayiotis Lipiridis
* Licensed under the MIT License
*
* https://github.com/lipis/bootstrap-social
*/
@bs-height-base: (@line-height-computed + @padding-base-vertical * 2);
@bs-height-lg: (floor(@font-size-large * @line-height-base) + @padding-large-vertical * 2);
@bs-height-sm: (floor(@font-size-small * 1.5) + @padding-small-vertical * 2);
@bs-height-xs: (floor(@font-size-small * 1.2) + @padding-small-vertical + 1);
.btn-social {
position: relative;
padding-left: (@bs-height-base + @padding-base-horizontal);
text-align: left;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
> :first-child {
position: absolute;
left: 0;
top: 0;
bottom: 0;
width: @bs-height-base;
line-height: (@bs-height-base + 2);
font-size: 1.6em;
text-align: center;
border-right: 1px solid rgba(0, 0, 0, 0.2);
}
&.btn-lg {
padding-left: (@bs-height-lg + @padding-large-horizontal);
:first-child {
line-height: @bs-height-lg;
width: @bs-height-lg;
font-size: 1.8em;
}
}
&.btn-sm {
padding-left: (@bs-height-sm + @padding-small-horizontal);
:first-child {
line-height: @bs-height-sm;
width: @bs-height-sm;
font-size: 1.4em;
}
}
&.btn-xs {
padding-left: (@bs-height-xs + @padding-small-horizontal);
:first-child {
line-height: @bs-height-xs;
width: @bs-height-xs;
font-size: 1.2em;
}
}
}
.btn-social-icon {
.btn-social;
height: (@bs-height-base + 2);
width: (@bs-height-base + 2);
padding: 0;
:first-child {
border: none;
text-align: center;
width: 100%!important;
}
&.btn-lg {
height: @bs-height-lg;
width: @bs-height-lg;
padding-left: 0;
padding-right: 0;
}
&.btn-sm {
height: (@bs-height-sm + 2);
width: (@bs-height-sm + 2);
padding-left: 0;
padding-right: 0;
}
&.btn-xs {
height: (@bs-height-xs + 2);
width: (@bs-height-xs + 2);
padding-left: 0;
padding-right: 0;
}
}
.btn-social(@color-bg, @color: #fff) {
background-color: @color-bg;
.button-variant(@color, @color-bg, rgba(0,0,0,.2));
}
.btn-adn { .btn-social(#d87a68); }
.btn-bitbucket { .btn-social(#205081); }
.btn-dropbox { .btn-social(#1087dd); }
.btn-facebook { .btn-social(#3b5998); }
.btn-flickr { .btn-social(#ff0084); }
.btn-foursquare { .btn-social(#f94877); }
.btn-github { .btn-social(#444444); }
.btn-google-plus { .btn-social(#dd4b39); }
.btn-instagram { .btn-social(#3f729b); }
.btn-linkedin { .btn-social(#007bb6); }
.btn-microsoft { .btn-social(#2672ec); }
.btn-openid { .btn-social(#f7931e); }
.btn-pinterest { .btn-social(#cb2027); }
.btn-reddit { .btn-social(#eff7ff, #000); }
.btn-soundcloud { .btn-social(#ff5500); }
.btn-tumblr { .btn-social(#2c4762); }
.btn-twitter { .btn-social(#55acee); }
.btn-vimeo { .btn-social(#1ab7ea); }
.btn-vk { .btn-social(#587ea3); }
.btn-yahoo { .btn-social(#720e9e); }

View File

@ -1,114 +0,0 @@
/*
* Social Buttons for Bootstrap
*
* Copyright 2013-2014 Panayiotis Lipiridis
* Licensed under the MIT License
*
* https://github.com/lipis/bootstrap-social
*/
$bs-height-base: ($line-height-computed + $padding-base-vertical * 2);
$bs-height-lg: (floor($font-size-large * $line-height-base) + $padding-large-vertical * 2);
$bs-height-sm: (floor($font-size-small * 1.5) + $padding-small-vertical * 2);
$bs-height-xs: (floor($font-size-small * 1.2) + $padding-small-vertical + 1);
.btn-social {
position: relative;
padding-left: ($bs-height-base + $padding-base-horizontal);
text-align: left;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
> :first-child {
position: absolute;
left: 0;
top: 0;
bottom: 0;
width: $bs-height-base;
line-height: ($bs-height-base + 2);
font-size: 1.6em;
text-align: center;
border-right: 1px solid rgba(0, 0, 0, 0.2);
}
&.btn-lg {
padding-left: ($bs-height-lg + $padding-large-horizontal);
:first-child {
line-height: $bs-height-lg;
width: $bs-height-lg;
font-size: 1.8em;
}
}
&.btn-sm {
padding-left: ($bs-height-sm + $padding-small-horizontal);
:first-child {
line-height: $bs-height-sm;
width: $bs-height-sm;
font-size: 1.4em;
}
}
&.btn-xs {
padding-left: ($bs-height-xs + $padding-small-horizontal);
:first-child {
line-height: $bs-height-xs;
width: $bs-height-xs;
font-size: 1.2em;
}
}
}
.btn-social-icon {
@extend .btn-social;
height: ($bs-height-base + 2);
width: ($bs-height-base + 2);
padding: 0;
:first-child {
border: none;
text-align: center;
width: 100%!important;
}
&.btn-lg {
height: $bs-height-lg;
width: $bs-height-lg;
padding-left: 0;
padding-right: 0;
}
&.btn-sm {
height: ($bs-height-sm + 2);
width: ($bs-height-sm + 2);
padding-left: 0;
padding-right: 0;
}
&.btn-xs {
height: ($bs-height-xs + 2);
width: ($bs-height-xs + 2);
padding-left: 0;
padding-right: 0;
}
}
@mixin btn-social($color-bg, $color: #fff) {
background-color: $color-bg;
@include button-variant($color, $color-bg, rgba(0,0,0,.2));
}
.btn-adn { @include btn-social(#d87a68); }
.btn-bitbucket { @include btn-social(#205081); }
.btn-dropbox { @include btn-social(#1087dd); }
.btn-facebook { @include btn-social(#3b5998); }
.btn-flickr { @include btn-social(#ff0084); }
.btn-foursquare { @include btn-social(#f94877); }
.btn-github { @include btn-social(#444444); }
.btn-google-plus { @include btn-social(#dd4b39); }
.btn-instagram { @include btn-social(#3f729b); }
.btn-linkedin { @include btn-social(#007bb6); }
.btn-microsoft { @include btn-social(#2672ec); }
.btn-openid { @include btn-social(#f7931e); }
.btn-pinterest { @include btn-social(#cb2027); }
.btn-reddit { @include btn-social(#eff7ff, #000); }
.btn-soundcloud { @include btn-social(#ff5500); }
.btn-tumblr { @include btn-social(#2c4762); }
.btn-twitter { @include btn-social(#55acee); }
.btn-vimeo { @include btn-social(#1ab7ea); }
.btn-vk { @include btn-social(#587ea3); }
.btn-yahoo { @include btn-social(#720e9e); }

View File

@ -1,14 +0,0 @@
{
"name": "bootstrap-social",
"main": "bootstrap-social.css",
"licence": "MIT",
"ignore": [
"assets",
"index.html",
"LICENCE"
],
"dependencies": {
"bootstrap": "~3",
"font-awesome": "~4.2"
}
}

View File

@ -1,47 +0,0 @@
{
"name": "bootstrap",
"description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
"version": "3.3.2",
"keywords": [
"css",
"js",
"less",
"mobile-first",
"responsive",
"front-end",
"framework",
"web"
],
"homepage": "http://getbootstrap.com",
"main": [
"less/bootstrap.less",
"dist/css/bootstrap.css",
"dist/js/bootstrap.js",
"dist/fonts/glyphicons-halflings-regular.eot",
"dist/fonts/glyphicons-halflings-regular.svg",
"dist/fonts/glyphicons-halflings-regular.ttf",
"dist/fonts/glyphicons-halflings-regular.woff"
],
"ignore": [
"/.*",
"_config.yml",
"CNAME",
"composer.json",
"CONTRIBUTING.md",
"docs",
"js/tests",
"test-infra"
],
"dependencies": {
"jquery": ">= 1.9.1"
},
"_release": "3.3.2",
"_resolution": {
"type": "version",
"tag": "v3.3.2",
"commit": "bcf7dd38b5ab180256e2e4fb5da0369551b3f082"
},
"_source": "git://github.com/twbs/bootstrap.git",
"_target": "~3.3.1",
"_originalSource": "bootstrap"
}

View File

@ -1,509 +0,0 @@
/*!
* Bootstrap's Gruntfile
* http://getbootstrap.com
* Copyright 2013-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
module.exports = function (grunt) {
'use strict';
// Force use of Unix newlines
grunt.util.linefeed = '\n';
RegExp.quote = function (string) {
return string.replace(/[-\\^$*+?.()|[\]{}]/g, '\\$&');
};
var fs = require('fs');
var path = require('path');
var npmShrinkwrap = require('npm-shrinkwrap');
var generateGlyphiconsData = require('./grunt/bs-glyphicons-data-generator.js');
var BsLessdocParser = require('./grunt/bs-lessdoc-parser.js');
var getLessVarsData = function () {
var filePath = path.join(__dirname, 'less/variables.less');
var fileContent = fs.readFileSync(filePath, { encoding: 'utf8' });
var parser = new BsLessdocParser(fileContent);
return { sections: parser.parseFile() };
};
var generateRawFiles = require('./grunt/bs-raw-files-generator.js');
var generateCommonJSModule = require('./grunt/bs-commonjs-generator.js');
var configBridge = grunt.file.readJSON('./grunt/configBridge.json', { encoding: 'utf8' });
Object.keys(configBridge.paths).forEach(function (key) {
configBridge.paths[key].forEach(function (val, i, arr) {
arr[i] = path.join('./docs/assets', val);
});
});
// Project configuration.
grunt.initConfig({
// Metadata.
pkg: grunt.file.readJSON('package.json'),
banner: '/*!\n' +
' * Bootstrap v<%= pkg.version %> (<%= pkg.homepage %>)\n' +
' * Copyright 2011-<%= grunt.template.today("yyyy") %> <%= pkg.author %>\n' +
' * Licensed under <%= pkg.license.type %> (<%= pkg.license.url %>)\n' +
' */\n',
jqueryCheck: configBridge.config.jqueryCheck.join('\n'),
jqueryVersionCheck: configBridge.config.jqueryVersionCheck.join('\n'),
// Task configuration.
clean: {
dist: 'dist',
docs: 'docs/dist'
},
jshint: {
options: {
jshintrc: 'js/.jshintrc'
},
grunt: {
options: {
jshintrc: 'grunt/.jshintrc'
},
src: ['Gruntfile.js', 'grunt/*.js']
},
core: {
src: 'js/*.js'
},
test: {
options: {
jshintrc: 'js/tests/unit/.jshintrc'
},
src: 'js/tests/unit/*.js'
},
assets: {
src: ['docs/assets/js/src/*.js', 'docs/assets/js/*.js', '!docs/assets/js/*.min.js']
}
},
jscs: {
options: {
config: 'js/.jscsrc'
},
grunt: {
src: '<%= jshint.grunt.src %>'
},
core: {
src: '<%= jshint.core.src %>'
},
test: {
src: '<%= jshint.test.src %>'
},
assets: {
options: {
requireCamelCaseOrUpperCaseIdentifiers: null
},
src: '<%= jshint.assets.src %>'
}
},
concat: {
options: {
banner: '<%= banner %>\n<%= jqueryCheck %>\n<%= jqueryVersionCheck %>',
stripBanners: false
},
bootstrap: {
src: [
'js/transition.js',
'js/alert.js',
'js/button.js',
'js/carousel.js',
'js/collapse.js',
'js/dropdown.js',
'js/modal.js',
'js/tooltip.js',
'js/popover.js',
'js/scrollspy.js',
'js/tab.js',
'js/affix.js'
],
dest: 'dist/js/<%= pkg.name %>.js'
}
},
uglify: {
options: {
preserveComments: 'some'
},
core: {
src: '<%= concat.bootstrap.dest %>',
dest: 'dist/js/<%= pkg.name %>.min.js'
},
customize: {
src: configBridge.paths.customizerJs,
dest: 'docs/assets/js/customize.min.js'
},
docsJs: {
src: configBridge.paths.docsJs,
dest: 'docs/assets/js/docs.min.js'
}
},
qunit: {
options: {
inject: 'js/tests/unit/phantom.js'
},
files: 'js/tests/index.html'
},
less: {
compileCore: {
options: {
strictMath: true,
sourceMap: true,
outputSourceFiles: true,
sourceMapURL: '<%= pkg.name %>.css.map',
sourceMapFilename: 'dist/css/<%= pkg.name %>.css.map'
},
src: 'less/bootstrap.less',
dest: 'dist/css/<%= pkg.name %>.css'
},
compileTheme: {
options: {
strictMath: true,
sourceMap: true,
outputSourceFiles: true,
sourceMapURL: '<%= pkg.name %>-theme.css.map',
sourceMapFilename: 'dist/css/<%= pkg.name %>-theme.css.map'
},
src: 'less/theme.less',
dest: 'dist/css/<%= pkg.name %>-theme.css'
}
},
autoprefixer: {
options: {
browsers: configBridge.config.autoprefixerBrowsers
},
core: {
options: {
map: true
},
src: 'dist/css/<%= pkg.name %>.css'
},
theme: {
options: {
map: true
},
src: 'dist/css/<%= pkg.name %>-theme.css'
},
docs: {
src: 'docs/assets/css/src/docs.css'
},
examples: {
expand: true,
cwd: 'docs/examples/',
src: ['**/*.css'],
dest: 'docs/examples/'
}
},
csslint: {
options: {
csslintrc: 'less/.csslintrc'
},
dist: [
'dist/css/bootstrap.css',
'dist/css/bootstrap-theme.css'
],
examples: [
'docs/examples/**/*.css'
],
docs: {
options: {
ids: false,
'overqualified-elements': false
},
src: 'docs/assets/css/src/docs.css'
}
},
cssmin: {
options: {
compatibility: 'ie8',
keepSpecialComments: '*',
advanced: false
},
minifyCore: {
src: 'dist/css/<%= pkg.name %>.css',
dest: 'dist/css/<%= pkg.name %>.min.css'
},
minifyTheme: {
src: 'dist/css/<%= pkg.name %>-theme.css',
dest: 'dist/css/<%= pkg.name %>-theme.min.css'
},
docs: {
src: [
'docs/assets/css/src/docs.css',
'docs/assets/css/src/pygments-manni.css'
],
dest: 'docs/assets/css/docs.min.css'
}
},
usebanner: {
options: {
position: 'top',
banner: '<%= banner %>'
},
files: {
src: 'dist/css/*.css'
}
},
csscomb: {
options: {
config: 'less/.csscomb.json'
},
dist: {
expand: true,
cwd: 'dist/css/',
src: ['*.css', '!*.min.css'],
dest: 'dist/css/'
},
examples: {
expand: true,
cwd: 'docs/examples/',
src: '**/*.css',
dest: 'docs/examples/'
},
docs: {
src: 'docs/assets/css/src/docs.css',
dest: 'docs/assets/css/src/docs.css'
}
},
copy: {
fonts: {
src: 'fonts/*',
dest: 'dist/'
},
docs: {
src: 'dist/*/*',
dest: 'docs/'
}
},
connect: {
server: {
options: {
port: 3000,
base: '.'
}
}
},
jekyll: {
options: {
config: '_config.yml'
},
docs: {},
github: {
options: {
raw: 'github: true'
}
}
},
jade: {
options: {
pretty: true,
data: getLessVarsData
},
customizerVars: {
src: 'docs/_jade/customizer-variables.jade',
dest: 'docs/_includes/customizer-variables.html'
},
customizerNav: {
src: 'docs/_jade/customizer-nav.jade',
dest: 'docs/_includes/nav/customize.html'
}
},
validation: {
options: {
charset: 'utf-8',
doctype: 'HTML5',
failHard: true,
reset: true,
relaxerror: [
'Element img is missing required attribute src.',
'Attribute autocomplete not allowed on element input at this point.',
'Attribute autocomplete not allowed on element button at this point.',
'Bad value separator for attribute role on element li.'
]
},
files: {
src: '_gh_pages/**/*.html'
}
},
watch: {
src: {
files: '<%= jshint.core.src %>',
tasks: ['jshint:src', 'qunit', 'concat']
},
test: {
files: '<%= jshint.test.src %>',
tasks: ['jshint:test', 'qunit']
},
less: {
files: 'less/**/*.less',
tasks: 'less'
}
},
sed: {
versionNumber: {
pattern: (function () {
var old = grunt.option('oldver');
return old ? RegExp.quote(old) : old;
})(),
replacement: grunt.option('newver'),
recursive: true
}
},
'saucelabs-qunit': {
all: {
options: {
build: process.env.TRAVIS_JOB_ID,
throttled: 10,
maxRetries: 3,
maxPollRetries: 4,
urls: ['http://127.0.0.1:3000/js/tests/index.html'],
browsers: grunt.file.readYAML('grunt/sauce_browsers.yml')
}
}
},
exec: {
npmUpdate: {
command: 'npm update'
}
},
compress: {
main: {
options: {
archive: 'bootstrap-<%= pkg.version %>-dist.zip',
mode: 'zip',
level: 9,
pretty: true
},
files: [
{
expand: true,
cwd: 'dist/',
src: ['**'],
dest: 'bootstrap-<%= pkg.version %>-dist'
}
]
}
}
});
// These plugins provide necessary tasks.
require('load-grunt-tasks')(grunt, { scope: 'devDependencies' });
require('time-grunt')(grunt);
// Docs HTML validation task
grunt.registerTask('validate-html', ['jekyll:docs', 'validation']);
var runSubset = function (subset) {
return !process.env.TWBS_TEST || process.env.TWBS_TEST === subset;
};
var isUndefOrNonZero = function (val) {
return val === undefined || val !== '0';
};
// Test task.
var testSubtasks = [];
// Skip core tests if running a different subset of the test suite
if (runSubset('core') &&
// Skip core tests if this is a Savage build
process.env.TRAVIS_REPO_SLUG !== 'twbs-savage/bootstrap') {
testSubtasks = testSubtasks.concat(['dist-css', 'dist-js', 'csslint:dist', 'test-js', 'docs']);
}
// Skip HTML validation if running a different subset of the test suite
if (runSubset('validate-html') &&
// Skip HTML5 validator on Travis when [skip validator] is in the commit message
isUndefOrNonZero(process.env.TWBS_DO_VALIDATOR)) {
testSubtasks.push('validate-html');
}
// Only run Sauce Labs tests if there's a Sauce access key
if (typeof process.env.SAUCE_ACCESS_KEY !== 'undefined' &&
// Skip Sauce if running a different subset of the test suite
runSubset('sauce-js-unit') &&
// Skip Sauce on Travis when [skip sauce] is in the commit message
isUndefOrNonZero(process.env.TWBS_DO_SAUCE)) {
testSubtasks.push('connect');
testSubtasks.push('saucelabs-qunit');
}
grunt.registerTask('test', testSubtasks);
grunt.registerTask('test-js', ['jshint:core', 'jshint:test', 'jshint:grunt', 'jscs:core', 'jscs:test', 'jscs:grunt', 'qunit']);
// JS distribution task.
grunt.registerTask('dist-js', ['concat', 'uglify:core', 'commonjs']);
// CSS distribution task.
grunt.registerTask('less-compile', ['less:compileCore', 'less:compileTheme']);
grunt.registerTask('dist-css', ['less-compile', 'autoprefixer:core', 'autoprefixer:theme', 'usebanner', 'csscomb:dist', 'cssmin:minifyCore', 'cssmin:minifyTheme']);
// Full distribution task.
grunt.registerTask('dist', ['clean:dist', 'dist-css', 'copy:fonts', 'dist-js']);
// Default task.
grunt.registerTask('default', ['clean:dist', 'copy:fonts', 'test']);
// Version numbering task.
// grunt change-version-number --oldver=A.B.C --newver=X.Y.Z
// This can be overzealous, so its changes should always be manually reviewed!
grunt.registerTask('change-version-number', 'sed');
grunt.registerTask('build-glyphicons-data', function () { generateGlyphiconsData.call(this, grunt); });
// task for building customizer
grunt.registerTask('build-customizer', ['build-customizer-html', 'build-raw-files']);
grunt.registerTask('build-customizer-html', 'jade');
grunt.registerTask('build-raw-files', 'Add scripts/less files to customizer.', function () {
var banner = grunt.template.process('<%= banner %>');
generateRawFiles(grunt, banner);
});
grunt.registerTask('commonjs', 'Generate CommonJS entrypoint module in dist dir.', function () {
var srcFiles = grunt.config.get('concat.bootstrap.src');
var destFilepath = 'dist/js/npm.js';
generateCommonJSModule(grunt, srcFiles, destFilepath);
});
// Docs task.
grunt.registerTask('docs-css', ['autoprefixer:docs', 'autoprefixer:examples', 'csscomb:docs', 'csscomb:examples', 'cssmin:docs']);
grunt.registerTask('lint-docs-css', ['csslint:docs', 'csslint:examples']);
grunt.registerTask('docs-js', ['uglify:docsJs', 'uglify:customize']);
grunt.registerTask('lint-docs-js', ['jshint:assets', 'jscs:assets']);
grunt.registerTask('docs', ['docs-css', 'lint-docs-css', 'docs-js', 'lint-docs-js', 'clean:docs', 'copy:docs', 'build-glyphicons-data', 'build-customizer']);
grunt.registerTask('prep-release', ['jekyll:github', 'compress']);
// Task for updating the cached npm packages used by the Travis build (which are controlled by test-infra/npm-shrinkwrap.json).
// This task should be run and the updated file should be committed whenever Bootstrap's dependencies change.
grunt.registerTask('update-shrinkwrap', ['exec:npmUpdate', '_update-shrinkwrap']);
grunt.registerTask('_update-shrinkwrap', function () {
var done = this.async();
npmShrinkwrap({ dev: true, dirname: __dirname }, function (err) {
if (err) {
grunt.fail.warn(err);
}
var dest = 'test-infra/npm-shrinkwrap.json';
fs.renameSync('npm-shrinkwrap.json', dest);
grunt.log.writeln('File ' + dest.cyan + ' updated.');
done();
});
});
};

View File

@ -1,21 +0,0 @@
The MIT License (MIT)
Copyright (c) 2011-2015 Twitter, Inc
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.

View File

@ -1,132 +0,0 @@
# [Bootstrap](http://getbootstrap.com)
![Bower version](https://img.shields.io/bower/v/bootstrap.svg?style=flat)
[![npm version](https://img.shields.io/npm/v/bootstrap.svg?style=flat)](https://www.npmjs.com/package/bootstrap)
[![Build Status](https://img.shields.io/travis/twbs/bootstrap/master.svg?style=flat)](https://travis-ci.org/twbs/bootstrap)
[![devDependency Status](https://img.shields.io/david/dev/twbs/bootstrap.svg?style=flat)](https://david-dm.org/twbs/bootstrap#info=devDependencies)
[![Selenium Test Status](https://saucelabs.com/browser-matrix/bootstrap.svg)](https://saucelabs.com/u/bootstrap)
Bootstrap is a sleek, intuitive, and powerful front-end framework for faster and easier web development, created by [Mark Otto](https://twitter.com/mdo) and [Jacob Thornton](https://twitter.com/fat), and maintained by the [core team](https://github.com/orgs/twbs/people) with the massive support and involvement of the community.
To get started, check out <http://getbootstrap.com>!
## Table of contents
- [Quick start](#quick-start)
- [Bugs and feature requests](#bugs-and-feature-requests)
- [Documentation](#documentation)
- [Contributing](#contributing)
- [Community](#community)
- [Versioning](#versioning)
- [Creators](#creators)
- [Copyright and license](#copyright-and-license)
## Quick start
Four quick start options are available:
- [Download the latest release](https://github.com/twbs/bootstrap/archive/v3.3.2.zip).
- Clone the repo: `git clone https://github.com/twbs/bootstrap.git`.
- Install with [Bower](http://bower.io): `bower install bootstrap`.
- Install with [npm](https://www.npmjs.org): `npm install bootstrap`.
Read the [Getting started page](http://getbootstrap.com/getting-started/) for information on the framework contents, templates and examples, and more.
### What's included
Within the download you'll find the following directories and files, logically grouping common assets and providing both compiled and minified variations. You'll see something like this:
```
bootstrap/
├── css/
│ ├── bootstrap.css
│ ├── bootstrap.css.map
│ ├── bootstrap.min.css
│ ├── bootstrap-theme.css
│ ├── bootstrap-theme.css.map
│ └── bootstrap-theme.min.css
├── js/
│ ├── bootstrap.js
│ └── bootstrap.min.js
└── fonts/
├── glyphicons-halflings-regular.eot
├── glyphicons-halflings-regular.svg
├── glyphicons-halflings-regular.ttf
├── glyphicons-halflings-regular.woff
└── glyphicons-halflings-regular.woff2
```
We provide compiled CSS and JS (`bootstrap.*`), as well as compiled and minified CSS and JS (`bootstrap.min.*`). CSS [source maps](https://developers.google.com/chrome-developer-tools/docs/css-preprocessors) (`bootstrap.*.map`) are available for use with certain browsers' developer tools. Fonts from Glyphicons are included, as is the optional Bootstrap theme.
## Bugs and feature requests
Have a bug or a feature request? Please first read the [issue guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md#using-the-issue-tracker) and search for existing and closed issues. If your problem or idea is not addressed yet, [please open a new issue](https://github.com/twbs/bootstrap/issues/new).
## Documentation
Bootstrap's documentation, included in this repo in the root directory, is built with [Jekyll](http://jekyllrb.com) and publicly hosted on GitHub Pages at <http://getbootstrap.com>. The docs may also be run locally.
### Running documentation locally
1. If necessary, [install Jekyll](http://jekyllrb.com/docs/installation) (requires v2.5.x).
- **Windows users:** Read [this unofficial guide](http://jekyll-windows.juthilo.com/) to get Jekyll up and running without problems.
2. Install the Ruby-based syntax highlighter, [Rouge](https://github.com/jneen/rouge), with `gem install rouge`.
3. From the root `/bootstrap` directory, run `jekyll serve` in the command line.
4. Open <http://localhost:9001> in your browser, and voilà.
Learn more about using Jekyll by reading its [documentation](http://jekyllrb.com/docs/home/).
### Documentation for previous releases
Documentation for v2.3.2 has been made available for the time being at <http://getbootstrap.com/2.3.2/> while folks transition to Bootstrap 3.
[Previous releases](https://github.com/twbs/bootstrap/releases) and their documentation are also available for download.
## Contributing
Please read through our [contributing guidelines](https://github.com/twbs/bootstrap/blob/master/CONTRIBUTING.md). Included are directions for opening issues, coding standards, and notes on development.
Moreover, if your pull request contains JavaScript patches or features, you must include relevant unit tests. All HTML and CSS should conform to the [Code Guide](https://github.com/mdo/code-guide), maintained by [Mark Otto](https://github.com/mdo).
Editor preferences are available in the [editor config](https://github.com/twbs/bootstrap/blob/master/.editorconfig) for easy use in common text editors. Read more and download plugins at <http://editorconfig.org>.
## Community
Keep track of development and community news.
- Follow [@twbootstrap on Twitter](https://twitter.com/twbootstrap).
- Read and subscribe to [The Official Bootstrap Blog](http://blog.getbootstrap.com).
- Chat with fellow Bootstrappers in IRC. On the `irc.freenode.net` server, in the `##bootstrap` channel.
- Implementation help may be found at Stack Overflow (tagged [`twitter-bootstrap-3`](http://stackoverflow.com/questions/tagged/twitter-bootstrap-3)).
## Versioning
For transparency into our release cycle and in striving to maintain backward compatibility, Bootstrap is maintained under [the Semantic Versioning guidelines](http://semver.org/). Sometimes we screw up, but we'll adhere to those rules whenever possible.
## Creators
**Mark Otto**
- <https://twitter.com/mdo>
- <https://github.com/mdo>
**Jacob Thornton**
- <https://twitter.com/fat>
- <https://github.com/fat>
## Copyright and license
Code and documentation copyright 2011-2015 Twitter, Inc. Code released under [the MIT license](https://github.com/twbs/bootstrap/blob/master/LICENSE). Docs released under [Creative Commons](https://github.com/twbs/bootstrap/blob/master/docs/LICENSE).

View File

@ -1,38 +0,0 @@
{
"name": "bootstrap",
"description": "The most popular front-end framework for developing responsive, mobile first projects on the web.",
"version": "3.3.2",
"keywords": [
"css",
"js",
"less",
"mobile-first",
"responsive",
"front-end",
"framework",
"web"
],
"homepage": "http://getbootstrap.com",
"main": [
"less/bootstrap.less",
"dist/css/bootstrap.css",
"dist/js/bootstrap.js",
"dist/fonts/glyphicons-halflings-regular.eot",
"dist/fonts/glyphicons-halflings-regular.svg",
"dist/fonts/glyphicons-halflings-regular.ttf",
"dist/fonts/glyphicons-halflings-regular.woff"
],
"ignore": [
"/.*",
"_config.yml",
"CNAME",
"composer.json",
"CONTRIBUTING.md",
"docs",
"js/tests",
"test-infra"
],
"dependencies": {
"jquery": ">= 1.9.1"
}
}

View File

@ -1,476 +0,0 @@
/*!
* Bootstrap v3.3.2 (http://getbootstrap.com)
* Copyright 2011-2015 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
.btn-default,
.btn-primary,
.btn-success,
.btn-info,
.btn-warning,
.btn-danger {
text-shadow: 0 -1px 0 rgba(0, 0, 0, .2);
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 1px rgba(0, 0, 0, .075);
}
.btn-default:active,
.btn-primary:active,
.btn-success:active,
.btn-info:active,
.btn-warning:active,
.btn-danger:active,
.btn-default.active,
.btn-primary.active,
.btn-success.active,
.btn-info.active,
.btn-warning.active,
.btn-danger.active {
-webkit-box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
box-shadow: inset 0 3px 5px rgba(0, 0, 0, .125);
}
.btn-default .badge,
.btn-primary .badge,
.btn-success .badge,
.btn-info .badge,
.btn-warning .badge,
.btn-danger .badge {
text-shadow: none;
}
.btn:active,
.btn.active {
background-image: none;
}
.btn-default {
text-shadow: 0 1px 0 #fff;
background-image: -webkit-linear-gradient(top, #fff 0%, #e0e0e0 100%);
background-image: -o-linear-gradient(top, #fff 0%, #e0e0e0 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#e0e0e0));
background-image: linear-gradient(to bottom, #fff 0%, #e0e0e0 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe0e0e0', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #dbdbdb;
border-color: #ccc;
}
.btn-default:hover,
.btn-default:focus {
background-color: #e0e0e0;
background-position: 0 -15px;
}
.btn-default:active,
.btn-default.active {
background-color: #e0e0e0;
border-color: #dbdbdb;
}
.btn-default.disabled,
.btn-default:disabled,
.btn-default[disabled] {
background-color: #e0e0e0;
background-image: none;
}
.btn-primary {
background-image: -webkit-linear-gradient(top, #337ab7 0%, #265a88 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #265a88 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#265a88));
background-image: linear-gradient(to bottom, #337ab7 0%, #265a88 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff265a88', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #245580;
}
.btn-primary:hover,
.btn-primary:focus {
background-color: #265a88;
background-position: 0 -15px;
}
.btn-primary:active,
.btn-primary.active {
background-color: #265a88;
border-color: #245580;
}
.btn-primary.disabled,
.btn-primary:disabled,
.btn-primary[disabled] {
background-color: #265a88;
background-image: none;
}
.btn-success {
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #419641 100%);
background-image: -o-linear-gradient(top, #5cb85c 0%, #419641 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#419641));
background-image: linear-gradient(to bottom, #5cb85c 0%, #419641 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff419641', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #3e8f3e;
}
.btn-success:hover,
.btn-success:focus {
background-color: #419641;
background-position: 0 -15px;
}
.btn-success:active,
.btn-success.active {
background-color: #419641;
border-color: #3e8f3e;
}
.btn-success.disabled,
.btn-success:disabled,
.btn-success[disabled] {
background-color: #419641;
background-image: none;
}
.btn-info {
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
background-image: -o-linear-gradient(top, #5bc0de 0%, #2aabd2 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#2aabd2));
background-image: linear-gradient(to bottom, #5bc0de 0%, #2aabd2 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2aabd2', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #28a4c9;
}
.btn-info:hover,
.btn-info:focus {
background-color: #2aabd2;
background-position: 0 -15px;
}
.btn-info:active,
.btn-info.active {
background-color: #2aabd2;
border-color: #28a4c9;
}
.btn-info.disabled,
.btn-info:disabled,
.btn-info[disabled] {
background-color: #2aabd2;
background-image: none;
}
.btn-warning {
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
background-image: -o-linear-gradient(top, #f0ad4e 0%, #eb9316 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#eb9316));
background-image: linear-gradient(to bottom, #f0ad4e 0%, #eb9316 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffeb9316', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #e38d13;
}
.btn-warning:hover,
.btn-warning:focus {
background-color: #eb9316;
background-position: 0 -15px;
}
.btn-warning:active,
.btn-warning.active {
background-color: #eb9316;
border-color: #e38d13;
}
.btn-warning.disabled,
.btn-warning:disabled,
.btn-warning[disabled] {
background-color: #eb9316;
background-image: none;
}
.btn-danger {
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
background-image: -o-linear-gradient(top, #d9534f 0%, #c12e2a 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c12e2a));
background-image: linear-gradient(to bottom, #d9534f 0%, #c12e2a 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc12e2a', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-color: #b92c28;
}
.btn-danger:hover,
.btn-danger:focus {
background-color: #c12e2a;
background-position: 0 -15px;
}
.btn-danger:active,
.btn-danger.active {
background-color: #c12e2a;
border-color: #b92c28;
}
.btn-danger.disabled,
.btn-danger:disabled,
.btn-danger[disabled] {
background-color: #c12e2a;
background-image: none;
}
.thumbnail,
.img-thumbnail {
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
}
.dropdown-menu > li > a:hover,
.dropdown-menu > li > a:focus {
background-color: #e8e8e8;
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
background-repeat: repeat-x;
}
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
background-color: #2e6da4;
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
background-repeat: repeat-x;
}
.navbar-default {
background-image: -webkit-linear-gradient(top, #fff 0%, #f8f8f8 100%);
background-image: -o-linear-gradient(top, #fff 0%, #f8f8f8 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fff), to(#f8f8f8));
background-image: linear-gradient(to bottom, #fff 0%, #f8f8f8 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff8f8f8', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
border-radius: 4px;
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .15), 0 1px 5px rgba(0, 0, 0, .075);
}
.navbar-default .navbar-nav > .open > a,
.navbar-default .navbar-nav > .active > a {
background-image: -webkit-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
background-image: -o-linear-gradient(top, #dbdbdb 0%, #e2e2e2 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#dbdbdb), to(#e2e2e2));
background-image: linear-gradient(to bottom, #dbdbdb 0%, #e2e2e2 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdbdbdb', endColorstr='#ffe2e2e2', GradientType=0);
background-repeat: repeat-x;
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
box-shadow: inset 0 3px 9px rgba(0, 0, 0, .075);
}
.navbar-brand,
.navbar-nav > li > a {
text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
}
.navbar-inverse {
background-image: -webkit-linear-gradient(top, #3c3c3c 0%, #222 100%);
background-image: -o-linear-gradient(top, #3c3c3c 0%, #222 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#3c3c3c), to(#222));
background-image: linear-gradient(to bottom, #3c3c3c 0%, #222 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff3c3c3c', endColorstr='#ff222222', GradientType=0);
filter: progid:DXImageTransform.Microsoft.gradient(enabled = false);
background-repeat: repeat-x;
}
.navbar-inverse .navbar-nav > .open > a,
.navbar-inverse .navbar-nav > .active > a {
background-image: -webkit-linear-gradient(top, #080808 0%, #0f0f0f 100%);
background-image: -o-linear-gradient(top, #080808 0%, #0f0f0f 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#080808), to(#0f0f0f));
background-image: linear-gradient(to bottom, #080808 0%, #0f0f0f 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff080808', endColorstr='#ff0f0f0f', GradientType=0);
background-repeat: repeat-x;
-webkit-box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
box-shadow: inset 0 3px 9px rgba(0, 0, 0, .25);
}
.navbar-inverse .navbar-brand,
.navbar-inverse .navbar-nav > li > a {
text-shadow: 0 -1px 0 rgba(0, 0, 0, .25);
}
.navbar-static-top,
.navbar-fixed-top,
.navbar-fixed-bottom {
border-radius: 0;
}
@media (max-width: 767px) {
.navbar .navbar-nav .open .dropdown-menu > .active > a,
.navbar .navbar-nav .open .dropdown-menu > .active > a:hover,
.navbar .navbar-nav .open .dropdown-menu > .active > a:focus {
color: #fff;
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
background-repeat: repeat-x;
}
}
.alert {
text-shadow: 0 1px 0 rgba(255, 255, 255, .2);
-webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, .25), 0 1px 2px rgba(0, 0, 0, .05);
}
.alert-success {
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
background-image: -o-linear-gradient(top, #dff0d8 0%, #c8e5bc 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#c8e5bc));
background-image: linear-gradient(to bottom, #dff0d8 0%, #c8e5bc 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffc8e5bc', GradientType=0);
background-repeat: repeat-x;
border-color: #b2dba1;
}
.alert-info {
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
background-image: -o-linear-gradient(top, #d9edf7 0%, #b9def0 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#b9def0));
background-image: linear-gradient(to bottom, #d9edf7 0%, #b9def0 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffb9def0', GradientType=0);
background-repeat: repeat-x;
border-color: #9acfea;
}
.alert-warning {
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
background-image: -o-linear-gradient(top, #fcf8e3 0%, #f8efc0 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#f8efc0));
background-image: linear-gradient(to bottom, #fcf8e3 0%, #f8efc0 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fff8efc0', GradientType=0);
background-repeat: repeat-x;
border-color: #f5e79e;
}
.alert-danger {
background-image: -webkit-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
background-image: -o-linear-gradient(top, #f2dede 0%, #e7c3c3 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#e7c3c3));
background-image: linear-gradient(to bottom, #f2dede 0%, #e7c3c3 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffe7c3c3', GradientType=0);
background-repeat: repeat-x;
border-color: #dca7a7;
}
.progress {
background-image: -webkit-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
background-image: -o-linear-gradient(top, #ebebeb 0%, #f5f5f5 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#ebebeb), to(#f5f5f5));
background-image: linear-gradient(to bottom, #ebebeb 0%, #f5f5f5 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffebebeb', endColorstr='#fff5f5f5', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar {
background-image: -webkit-linear-gradient(top, #337ab7 0%, #286090 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #286090 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#286090));
background-image: linear-gradient(to bottom, #337ab7 0%, #286090 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff286090', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-success {
background-image: -webkit-linear-gradient(top, #5cb85c 0%, #449d44 100%);
background-image: -o-linear-gradient(top, #5cb85c 0%, #449d44 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#5cb85c), to(#449d44));
background-image: linear-gradient(to bottom, #5cb85c 0%, #449d44 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5cb85c', endColorstr='#ff449d44', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-info {
background-image: -webkit-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
background-image: -o-linear-gradient(top, #5bc0de 0%, #31b0d5 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#5bc0de), to(#31b0d5));
background-image: linear-gradient(to bottom, #5bc0de 0%, #31b0d5 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff31b0d5', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-warning {
background-image: -webkit-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
background-image: -o-linear-gradient(top, #f0ad4e 0%, #ec971f 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f0ad4e), to(#ec971f));
background-image: linear-gradient(to bottom, #f0ad4e 0%, #ec971f 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff0ad4e', endColorstr='#ffec971f', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-danger {
background-image: -webkit-linear-gradient(top, #d9534f 0%, #c9302c 100%);
background-image: -o-linear-gradient(top, #d9534f 0%, #c9302c 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9534f), to(#c9302c));
background-image: linear-gradient(to bottom, #d9534f 0%, #c9302c 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9534f', endColorstr='#ffc9302c', GradientType=0);
background-repeat: repeat-x;
}
.progress-bar-striped {
background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
background-image: linear-gradient(45deg, rgba(255, 255, 255, .15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, .15) 50%, rgba(255, 255, 255, .15) 75%, transparent 75%, transparent);
}
.list-group {
border-radius: 4px;
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
box-shadow: 0 1px 2px rgba(0, 0, 0, .075);
}
.list-group-item.active,
.list-group-item.active:hover,
.list-group-item.active:focus {
text-shadow: 0 -1px 0 #286090;
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2b669a 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2b669a 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2b669a));
background-image: linear-gradient(to bottom, #337ab7 0%, #2b669a 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2b669a', GradientType=0);
background-repeat: repeat-x;
border-color: #2b669a;
}
.list-group-item.active .badge,
.list-group-item.active:hover .badge,
.list-group-item.active:focus .badge {
text-shadow: none;
}
.panel {
-webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
}
.panel-default > .panel-heading {
background-image: -webkit-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -o-linear-gradient(top, #f5f5f5 0%, #e8e8e8 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f5f5f5), to(#e8e8e8));
background-image: linear-gradient(to bottom, #f5f5f5 0%, #e8e8e8 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffe8e8e8', GradientType=0);
background-repeat: repeat-x;
}
.panel-primary > .panel-heading {
background-image: -webkit-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -o-linear-gradient(top, #337ab7 0%, #2e6da4 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#337ab7), to(#2e6da4));
background-image: linear-gradient(to bottom, #337ab7 0%, #2e6da4 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff337ab7', endColorstr='#ff2e6da4', GradientType=0);
background-repeat: repeat-x;
}
.panel-success > .panel-heading {
background-image: -webkit-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
background-image: -o-linear-gradient(top, #dff0d8 0%, #d0e9c6 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#dff0d8), to(#d0e9c6));
background-image: linear-gradient(to bottom, #dff0d8 0%, #d0e9c6 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffdff0d8', endColorstr='#ffd0e9c6', GradientType=0);
background-repeat: repeat-x;
}
.panel-info > .panel-heading {
background-image: -webkit-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
background-image: -o-linear-gradient(top, #d9edf7 0%, #c4e3f3 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#d9edf7), to(#c4e3f3));
background-image: linear-gradient(to bottom, #d9edf7 0%, #c4e3f3 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffd9edf7', endColorstr='#ffc4e3f3', GradientType=0);
background-repeat: repeat-x;
}
.panel-warning > .panel-heading {
background-image: -webkit-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
background-image: -o-linear-gradient(top, #fcf8e3 0%, #faf2cc 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#fcf8e3), to(#faf2cc));
background-image: linear-gradient(to bottom, #fcf8e3 0%, #faf2cc 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffcf8e3', endColorstr='#fffaf2cc', GradientType=0);
background-repeat: repeat-x;
}
.panel-danger > .panel-heading {
background-image: -webkit-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
background-image: -o-linear-gradient(top, #f2dede 0%, #ebcccc 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#f2dede), to(#ebcccc));
background-image: linear-gradient(to bottom, #f2dede 0%, #ebcccc 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2dede', endColorstr='#ffebcccc', GradientType=0);
background-repeat: repeat-x;
}
.well {
background-image: -webkit-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
background-image: -o-linear-gradient(top, #e8e8e8 0%, #f5f5f5 100%);
background-image: -webkit-gradient(linear, left top, left bottom, from(#e8e8e8), to(#f5f5f5));
background-image: linear-gradient(to bottom, #e8e8e8 0%, #f5f5f5 100%);
filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffe8e8e8', endColorstr='#fff5f5f5', GradientType=0);
background-repeat: repeat-x;
border-color: #dcdcdc;
-webkit-box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
box-shadow: inset 0 1px 3px rgba(0, 0, 0, .05), 0 1px 0 rgba(255, 255, 255, .1);
}
/*# sourceMappingURL=bootstrap-theme.css.map */

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -1,288 +0,0 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata></metadata>
<defs>
<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
<font-face units-per-em="1200" ascent="960" descent="-240" />
<missing-glyph horiz-adv-x="500" />
<glyph horiz-adv-x="0" />
<glyph horiz-adv-x="400" />
<glyph unicode=" " />
<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xa0;" />
<glyph unicode="&#xa5;" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
<glyph unicode="&#x2000;" horiz-adv-x="650" />
<glyph unicode="&#x2001;" horiz-adv-x="1300" />
<glyph unicode="&#x2002;" horiz-adv-x="650" />
<glyph unicode="&#x2003;" horiz-adv-x="1300" />
<glyph unicode="&#x2004;" horiz-adv-x="433" />
<glyph unicode="&#x2005;" horiz-adv-x="325" />
<glyph unicode="&#x2006;" horiz-adv-x="216" />
<glyph unicode="&#x2007;" horiz-adv-x="216" />
<glyph unicode="&#x2008;" horiz-adv-x="162" />
<glyph unicode="&#x2009;" horiz-adv-x="260" />
<glyph unicode="&#x200a;" horiz-adv-x="72" />
<glyph unicode="&#x202f;" horiz-adv-x="260" />
<glyph unicode="&#x205f;" horiz-adv-x="325" />
<glyph unicode="&#x20ac;" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
<glyph unicode="&#x20bd;" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
<glyph unicode="&#x2212;" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#x231b;" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
<glyph unicode="&#x2601;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
<glyph unicode="&#x26fa;" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
<glyph unicode="&#x2709;" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
<glyph unicode="&#x270f;" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
<glyph unicode="&#xe001;" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
<glyph unicode="&#xe002;" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
<glyph unicode="&#xe003;" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
<glyph unicode="&#xe005;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
<glyph unicode="&#xe006;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
<glyph unicode="&#xe007;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
<glyph unicode="&#xe008;" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
<glyph unicode="&#xe009;" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
<glyph unicode="&#xe010;" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe011;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
<glyph unicode="&#xe012;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe013;" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
<glyph unicode="&#xe014;" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
<glyph unicode="&#xe015;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe016;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe017;" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
<glyph unicode="&#xe018;" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe019;" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
<glyph unicode="&#xe020;" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
<glyph unicode="&#xe021;" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
<glyph unicode="&#xe022;" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
<glyph unicode="&#xe023;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe024;" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
<glyph unicode="&#xe025;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe026;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
<glyph unicode="&#xe027;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
<glyph unicode="&#xe028;" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
<glyph unicode="&#xe029;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
<glyph unicode="&#xe030;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
<glyph unicode="&#xe031;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
<glyph unicode="&#xe032;" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe033;" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
<glyph unicode="&#xe034;" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
<glyph unicode="&#xe035;" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
<glyph unicode="&#xe036;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
<glyph unicode="&#xe037;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
<glyph unicode="&#xe038;" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
<glyph unicode="&#xe039;" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
<glyph unicode="&#xe040;" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
<glyph unicode="&#xe041;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
<glyph unicode="&#xe042;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
<glyph unicode="&#xe043;" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
<glyph unicode="&#xe044;" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe045;" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
<glyph unicode="&#xe046;" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
<glyph unicode="&#xe047;" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
<glyph unicode="&#xe048;" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
<glyph unicode="&#xe049;" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
<glyph unicode="&#xe050;" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
<glyph unicode="&#xe051;" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
<glyph unicode="&#xe052;" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe053;" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
<glyph unicode="&#xe055;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe056;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe057;" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe058;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe059;" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
<glyph unicode="&#xe060;" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
<glyph unicode="&#xe062;" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
<glyph unicode="&#xe063;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
<glyph unicode="&#xe064;" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
<glyph unicode="&#xe065;" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
<glyph unicode="&#xe066;" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
<glyph unicode="&#xe067;" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
<glyph unicode="&#xe068;" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
<glyph unicode="&#xe069;" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe070;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe071;" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
<glyph unicode="&#xe072;" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
<glyph unicode="&#xe073;" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe074;" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
<glyph unicode="&#xe075;" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
<glyph unicode="&#xe076;" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe078;" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe079;" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
<glyph unicode="&#xe080;" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
<glyph unicode="&#xe081;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
<glyph unicode="&#xe082;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
<glyph unicode="&#xe083;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
<glyph unicode="&#xe084;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
<glyph unicode="&#xe085;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe086;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe087;" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
<glyph unicode="&#xe088;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
<glyph unicode="&#xe089;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
<glyph unicode="&#xe090;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
<glyph unicode="&#xe091;" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
<glyph unicode="&#xe092;" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
<glyph unicode="&#xe093;" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
<glyph unicode="&#xe094;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe095;" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
<glyph unicode="&#xe096;" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
<glyph unicode="&#xe097;" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
<glyph unicode="&#xe101;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe102;" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
<glyph unicode="&#xe103;" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
<glyph unicode="&#xe104;" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
<glyph unicode="&#xe105;" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
<glyph unicode="&#xe106;" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
<glyph unicode="&#xe107;" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
<glyph unicode="&#xe108;" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
<glyph unicode="&#xe109;" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
<glyph unicode="&#xe110;" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
<glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
<glyph unicode="&#xe112;" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
<glyph unicode="&#xe113;" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
<glyph unicode="&#xe114;" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
<glyph unicode="&#xe115;" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
<glyph unicode="&#xe116;" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
<glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
<glyph unicode="&#xe118;" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
<glyph unicode="&#xe119;" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
<glyph unicode="&#xe120;" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
<glyph unicode="&#xe121;" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
<glyph unicode="&#xe122;" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
<glyph unicode="&#xe123;" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
<glyph unicode="&#xe124;" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
<glyph unicode="&#xe125;" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe126;" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
<glyph unicode="&#xe127;" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe128;" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe129;" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe130;" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
<glyph unicode="&#xe131;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
<glyph unicode="&#xe132;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
<glyph unicode="&#xe133;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
<glyph unicode="&#xe134;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe135;" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
<glyph unicode="&#xe136;" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
<glyph unicode="&#xe138;" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
<glyph unicode="&#xe139;" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
<glyph unicode="&#xe140;" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
<glyph unicode="&#xe141;" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
<glyph unicode="&#xe142;" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
<glyph unicode="&#xe143;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
<glyph unicode="&#xe144;" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
<glyph unicode="&#xe145;" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
<glyph unicode="&#xe146;" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
<glyph unicode="&#xe148;" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
<glyph unicode="&#xe149;" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
<glyph unicode="&#xe150;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
<glyph unicode="&#xe151;" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
<glyph unicode="&#xe152;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
<glyph unicode="&#xe153;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
<glyph unicode="&#xe154;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
<glyph unicode="&#xe155;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
<glyph unicode="&#xe156;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
<glyph unicode="&#xe157;" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
<glyph unicode="&#xe158;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
<glyph unicode="&#xe159;" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
<glyph unicode="&#xe160;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
<glyph unicode="&#xe161;" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
<glyph unicode="&#xe162;" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
<glyph unicode="&#xe163;" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
<glyph unicode="&#xe164;" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
<glyph unicode="&#xe165;" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
<glyph unicode="&#xe166;" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
<glyph unicode="&#xe167;" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
<glyph unicode="&#xe168;" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
<glyph unicode="&#xe169;" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
<glyph unicode="&#xe170;" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
<glyph unicode="&#xe171;" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
<glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
<glyph unicode="&#xe173;" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
<glyph unicode="&#xe174;" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
<glyph unicode="&#xe175;" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe176;" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
<glyph unicode="&#xe177;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
<glyph unicode="&#xe178;" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
<glyph unicode="&#xe179;" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
<glyph unicode="&#xe180;" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
<glyph unicode="&#xe181;" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
<glyph unicode="&#xe182;" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
<glyph unicode="&#xe183;" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
<glyph unicode="&#xe184;" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe185;" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
<glyph unicode="&#xe186;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
<glyph unicode="&#xe187;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
<glyph unicode="&#xe188;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
<glyph unicode="&#xe189;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
<glyph unicode="&#xe190;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
<glyph unicode="&#xe191;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
<glyph unicode="&#xe192;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
<glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
<glyph unicode="&#xe194;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
<glyph unicode="&#xe195;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
<glyph unicode="&#xe197;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe198;" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
<glyph unicode="&#xe199;" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
<glyph unicode="&#xe200;" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
<glyph unicode="&#xe201;" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
<glyph unicode="&#xe202;" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
<glyph unicode="&#xe203;" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
<glyph unicode="&#xe204;" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
<glyph unicode="&#xe205;" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
<glyph unicode="&#xe206;" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
<glyph unicode="&#xe209;" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
<glyph unicode="&#xe210;" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe211;" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe212;" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe213;" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe214;" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe215;" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe216;" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
<glyph unicode="&#xe218;" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
<glyph unicode="&#xe219;" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
<glyph unicode="&#xe221;" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe223;" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
<glyph unicode="&#xe224;" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
<glyph unicode="&#xe225;" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe226;" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
<glyph unicode="&#xe227;" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
<glyph unicode="&#xe230;" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
<glyph unicode="&#xe231;" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
<glyph unicode="&#xe232;" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
<glyph unicode="&#xe233;" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
<glyph unicode="&#xe234;" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
<glyph unicode="&#xe235;" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
<glyph unicode="&#xe236;" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe237;" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
<glyph unicode="&#xe238;" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe239;" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
<glyph unicode="&#xe240;" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
<glyph unicode="&#xe241;" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
<glyph unicode="&#xe242;" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
<glyph unicode="&#xe243;" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
<glyph unicode="&#xe244;" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
<glyph unicode="&#xe245;" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
<glyph unicode="&#xe246;" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
<glyph unicode="&#xe247;" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe248;" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
<glyph unicode="&#xe249;" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe250;" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
<glyph unicode="&#xe251;" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
<glyph unicode="&#xe252;" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
<glyph unicode="&#xe253;" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
<glyph unicode="&#xe254;" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
<glyph unicode="&#xe255;" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
<glyph unicode="&#xe256;" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
<glyph unicode="&#xe257;" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
<glyph unicode="&#xe258;" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
<glyph unicode="&#xe259;" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
<glyph unicode="&#xe260;" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
<glyph unicode="&#xf8ff;" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
<glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
<glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
</font>
</defs></svg>

Before

Width:  |  Height:  |  Size: 106 KiB

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -1,13 +0,0 @@
// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.
require('../../js/transition.js')
require('../../js/alert.js')
require('../../js/button.js')
require('../../js/carousel.js')
require('../../js/collapse.js')
require('../../js/dropdown.js')
require('../../js/modal.js')
require('../../js/tooltip.js')
require('../../js/popover.js')
require('../../js/scrollspy.js')
require('../../js/tab.js')
require('../../js/affix.js')

View File

@ -1,288 +0,0 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata></metadata>
<defs>
<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
<font-face units-per-em="1200" ascent="960" descent="-240" />
<missing-glyph horiz-adv-x="500" />
<glyph horiz-adv-x="0" />
<glyph horiz-adv-x="400" />
<glyph unicode=" " />
<glyph unicode="*" d="M600 1100q15 0 34 -1.5t30 -3.5l11 -1q10 -2 17.5 -10.5t7.5 -18.5v-224l158 158q7 7 18 8t19 -6l106 -106q7 -8 6 -19t-8 -18l-158 -158h224q10 0 18.5 -7.5t10.5 -17.5q6 -41 6 -75q0 -15 -1.5 -34t-3.5 -30l-1 -11q-2 -10 -10.5 -17.5t-18.5 -7.5h-224l158 -158 q7 -7 8 -18t-6 -19l-106 -106q-8 -7 -19 -6t-18 8l-158 158v-224q0 -10 -7.5 -18.5t-17.5 -10.5q-41 -6 -75 -6q-15 0 -34 1.5t-30 3.5l-11 1q-10 2 -17.5 10.5t-7.5 18.5v224l-158 -158q-7 -7 -18 -8t-19 6l-106 106q-7 8 -6 19t8 18l158 158h-224q-10 0 -18.5 7.5 t-10.5 17.5q-6 41 -6 75q0 15 1.5 34t3.5 30l1 11q2 10 10.5 17.5t18.5 7.5h224l-158 158q-7 7 -8 18t6 19l106 106q8 7 19 6t18 -8l158 -158v224q0 10 7.5 18.5t17.5 10.5q41 6 75 6z" />
<glyph unicode="+" d="M450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-350h350q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-350v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v350h-350q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5 h350v350q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xa0;" />
<glyph unicode="&#xa5;" d="M825 1100h250q10 0 12.5 -5t-5.5 -13l-364 -364q-6 -6 -11 -18h268q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-100h275q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-125v-174q0 -11 -7.5 -18.5t-18.5 -7.5h-148q-11 0 -18.5 7.5t-7.5 18.5v174 h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h125v100h-275q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h118q-5 12 -11 18l-364 364q-8 8 -5.5 13t12.5 5h250q25 0 43 -18l164 -164q8 -8 18 -8t18 8l164 164q18 18 43 18z" />
<glyph unicode="&#x2000;" horiz-adv-x="650" />
<glyph unicode="&#x2001;" horiz-adv-x="1300" />
<glyph unicode="&#x2002;" horiz-adv-x="650" />
<glyph unicode="&#x2003;" horiz-adv-x="1300" />
<glyph unicode="&#x2004;" horiz-adv-x="433" />
<glyph unicode="&#x2005;" horiz-adv-x="325" />
<glyph unicode="&#x2006;" horiz-adv-x="216" />
<glyph unicode="&#x2007;" horiz-adv-x="216" />
<glyph unicode="&#x2008;" horiz-adv-x="162" />
<glyph unicode="&#x2009;" horiz-adv-x="260" />
<glyph unicode="&#x200a;" horiz-adv-x="72" />
<glyph unicode="&#x202f;" horiz-adv-x="260" />
<glyph unicode="&#x205f;" horiz-adv-x="325" />
<glyph unicode="&#x20ac;" d="M744 1198q242 0 354 -189q60 -104 66 -209h-181q0 45 -17.5 82.5t-43.5 61.5t-58 40.5t-60.5 24t-51.5 7.5q-19 0 -40.5 -5.5t-49.5 -20.5t-53 -38t-49 -62.5t-39 -89.5h379l-100 -100h-300q-6 -50 -6 -100h406l-100 -100h-300q9 -74 33 -132t52.5 -91t61.5 -54.5t59 -29 t47 -7.5q22 0 50.5 7.5t60.5 24.5t58 41t43.5 61t17.5 80h174q-30 -171 -128 -278q-107 -117 -274 -117q-206 0 -324 158q-36 48 -69 133t-45 204h-217l100 100h112q1 47 6 100h-218l100 100h134q20 87 51 153.5t62 103.5q117 141 297 141z" />
<glyph unicode="&#x20bd;" d="M428 1200h350q67 0 120 -13t86 -31t57 -49.5t35 -56.5t17 -64.5t6.5 -60.5t0.5 -57v-16.5v-16.5q0 -36 -0.5 -57t-6.5 -61t-17 -65t-35 -57t-57 -50.5t-86 -31.5t-120 -13h-178l-2 -100h288q10 0 13 -6t-3 -14l-120 -160q-6 -8 -18 -14t-22 -6h-138v-175q0 -11 -5.5 -18 t-15.5 -7h-149q-10 0 -17.5 7.5t-7.5 17.5v175h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v100h-267q-10 0 -13 6t3 14l120 160q6 8 18 14t22 6h117v475q0 10 7.5 17.5t17.5 7.5zM600 1000v-300h203q64 0 86.5 33t22.5 119q0 84 -22.5 116t-86.5 32h-203z" />
<glyph unicode="&#x2212;" d="M250 700h800q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#x231b;" d="M1000 1200v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-50v-100q0 -91 -49.5 -165.5t-130.5 -109.5q81 -35 130.5 -109.5t49.5 -165.5v-150h50q21 0 35.5 -14.5t14.5 -35.5v-150h-800v150q0 21 14.5 35.5t35.5 14.5h50v150q0 91 49.5 165.5t130.5 109.5q-81 35 -130.5 109.5 t-49.5 165.5v100h-50q-21 0 -35.5 14.5t-14.5 35.5v150h800zM400 1000v-100q0 -60 32.5 -109.5t87.5 -73.5q28 -12 44 -37t16 -55t-16 -55t-44 -37q-55 -24 -87.5 -73.5t-32.5 -109.5v-150h400v150q0 60 -32.5 109.5t-87.5 73.5q-28 12 -44 37t-16 55t16 55t44 37 q55 24 87.5 73.5t32.5 109.5v100h-400z" />
<glyph unicode="&#x25fc;" horiz-adv-x="500" d="M0 0z" />
<glyph unicode="&#x2601;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -206.5q0 -121 -85 -207.5t-205 -86.5h-750q-79 0 -135.5 57t-56.5 137q0 69 42.5 122.5t108.5 67.5q-2 12 -2 37q0 153 108 260.5t260 107.5z" />
<glyph unicode="&#x26fa;" d="M774 1193.5q16 -9.5 20.5 -27t-5.5 -33.5l-136 -187l467 -746h30q20 0 35 -18.5t15 -39.5v-42h-1200v42q0 21 15 39.5t35 18.5h30l468 746l-135 183q-10 16 -5.5 34t20.5 28t34 5.5t28 -20.5l111 -148l112 150q9 16 27 20.5t34 -5zM600 200h377l-182 112l-195 534v-646z " />
<glyph unicode="&#x2709;" d="M25 1100h1150q10 0 12.5 -5t-5.5 -13l-564 -567q-8 -8 -18 -8t-18 8l-564 567q-8 8 -5.5 13t12.5 5zM18 882l264 -264q8 -8 8 -18t-8 -18l-264 -264q-8 -8 -13 -5.5t-5 12.5v550q0 10 5 12.5t13 -5.5zM918 618l264 264q8 8 13 5.5t5 -12.5v-550q0 -10 -5 -12.5t-13 5.5 l-264 264q-8 8 -8 18t8 18zM818 482l364 -364q8 -8 5.5 -13t-12.5 -5h-1150q-10 0 -12.5 5t5.5 13l364 364q8 8 18 8t18 -8l164 -164q8 -8 18 -8t18 8l164 164q8 8 18 8t18 -8z" />
<glyph unicode="&#x270f;" d="M1011 1210q19 0 33 -13l153 -153q13 -14 13 -33t-13 -33l-99 -92l-214 214l95 96q13 14 32 14zM1013 800l-615 -614l-214 214l614 614zM317 96l-333 -112l110 335z" />
<glyph unicode="&#xe001;" d="M700 650v-550h250q21 0 35.5 -14.5t14.5 -35.5v-50h-800v50q0 21 14.5 35.5t35.5 14.5h250v550l-500 550h1200z" />
<glyph unicode="&#xe002;" d="M368 1017l645 163q39 15 63 0t24 -49v-831q0 -55 -41.5 -95.5t-111.5 -63.5q-79 -25 -147 -4.5t-86 75t25.5 111.5t122.5 82q72 24 138 8v521l-600 -155v-606q0 -42 -44 -90t-109 -69q-79 -26 -147 -5.5t-86 75.5t25.5 111.5t122.5 82.5q72 24 138 7v639q0 38 14.5 59 t53.5 34z" />
<glyph unicode="&#xe003;" d="M500 1191q100 0 191 -39t156.5 -104.5t104.5 -156.5t39 -191l-1 -2l1 -5q0 -141 -78 -262l275 -274q23 -26 22.5 -44.5t-22.5 -42.5l-59 -58q-26 -20 -46.5 -20t-39.5 20l-275 274q-119 -77 -261 -77l-5 1l-2 -1q-100 0 -191 39t-156.5 104.5t-104.5 156.5t-39 191 t39 191t104.5 156.5t156.5 104.5t191 39zM500 1022q-88 0 -162 -43t-117 -117t-43 -162t43 -162t117 -117t162 -43t162 43t117 117t43 162t-43 162t-117 117t-162 43z" />
<glyph unicode="&#xe005;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104z" />
<glyph unicode="&#xe006;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429z" />
<glyph unicode="&#xe007;" d="M407 800l131 353q7 19 17.5 19t17.5 -19l129 -353h421q21 0 24 -8.5t-14 -20.5l-342 -249l130 -401q7 -20 -0.5 -25.5t-24.5 6.5l-343 246l-342 -247q-17 -12 -24.5 -6.5t-0.5 25.5l130 400l-347 251q-17 12 -14 20.5t23 8.5h429zM477 700h-240l197 -142l-74 -226 l193 139l195 -140l-74 229l192 140h-234l-78 211z" />
<glyph unicode="&#xe008;" d="M600 1200q124 0 212 -88t88 -212v-250q0 -46 -31 -98t-69 -52v-75q0 -10 6 -21.5t15 -17.5l358 -230q9 -5 15 -16.5t6 -21.5v-93q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v93q0 10 6 21.5t15 16.5l358 230q9 6 15 17.5t6 21.5v75q-38 0 -69 52 t-31 98v250q0 124 88 212t212 88z" />
<glyph unicode="&#xe009;" d="M25 1100h1150q10 0 17.5 -7.5t7.5 -17.5v-1050q0 -10 -7.5 -17.5t-17.5 -7.5h-1150q-10 0 -17.5 7.5t-7.5 17.5v1050q0 10 7.5 17.5t17.5 7.5zM100 1000v-100h100v100h-100zM875 1000h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5t17.5 -7.5h550 q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM1000 1000v-100h100v100h-100zM100 800v-100h100v100h-100zM1000 800v-100h100v100h-100zM100 600v-100h100v100h-100zM1000 600v-100h100v100h-100zM875 500h-550q-10 0 -17.5 -7.5t-7.5 -17.5v-350q0 -10 7.5 -17.5 t17.5 -7.5h550q10 0 17.5 7.5t7.5 17.5v350q0 10 -7.5 17.5t-17.5 7.5zM100 400v-100h100v100h-100zM1000 400v-100h100v100h-100zM100 200v-100h100v100h-100zM1000 200v-100h100v100h-100z" />
<glyph unicode="&#xe010;" d="M50 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM50 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM650 500h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe011;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM850 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 700h200q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM850 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5 t35.5 14.5z" />
<glyph unicode="&#xe012;" d="M50 1100h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 1100h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200 q0 21 14.5 35.5t35.5 14.5zM50 700h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 700h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700 q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM50 300h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5zM450 300h700q21 0 35.5 -14.5t14.5 -35.5v-200 q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe013;" d="M465 477l571 571q8 8 18 8t17 -8l177 -177q8 -7 8 -17t-8 -18l-783 -784q-7 -8 -17.5 -8t-17.5 8l-384 384q-8 8 -8 18t8 17l177 177q7 8 17 8t18 -8l171 -171q7 -7 18 -7t18 7z" />
<glyph unicode="&#xe014;" d="M904 1083l178 -179q8 -8 8 -18.5t-8 -17.5l-267 -268l267 -268q8 -7 8 -17.5t-8 -18.5l-178 -178q-8 -8 -18.5 -8t-17.5 8l-268 267l-268 -267q-7 -8 -17.5 -8t-18.5 8l-178 178q-8 8 -8 18.5t8 17.5l267 268l-267 268q-8 7 -8 17.5t8 18.5l178 178q8 8 18.5 8t17.5 -8 l268 -267l268 268q7 7 17.5 7t18.5 -7z" />
<glyph unicode="&#xe015;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM425 900h150q10 0 17.5 -7.5t7.5 -17.5v-75h75q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5 t-17.5 -7.5h-75v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-75q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v75q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe016;" d="M507 1177q98 0 187.5 -38.5t154.5 -103.5t103.5 -154.5t38.5 -187.5q0 -141 -78 -262l300 -299q8 -8 8 -18.5t-8 -18.5l-109 -108q-7 -8 -17.5 -8t-18.5 8l-300 299q-119 -77 -261 -77q-98 0 -188 38.5t-154.5 103t-103 154.5t-38.5 188t38.5 187.5t103 154.5 t154.5 103.5t188 38.5zM506.5 1023q-89.5 0 -165.5 -44t-120 -120.5t-44 -166t44 -165.5t120 -120t165.5 -44t166 44t120.5 120t44 165.5t-44 166t-120.5 120.5t-166 44zM325 800h350q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-350q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe017;" d="M550 1200h100q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM800 975v166q167 -62 272 -209.5t105 -331.5q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5 t-184.5 123t-123 184.5t-45.5 224q0 184 105 331.5t272 209.5v-166q-103 -55 -165 -155t-62 -220q0 -116 57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5q0 120 -62 220t-165 155z" />
<glyph unicode="&#xe018;" d="M1025 1200h150q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM725 800h150q10 0 17.5 -7.5t7.5 -17.5v-750q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v750 q0 10 7.5 17.5t17.5 7.5zM425 500h150q10 0 17.5 -7.5t7.5 -17.5v-450q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v450q0 10 7.5 17.5t17.5 7.5zM125 300h150q10 0 17.5 -7.5t7.5 -17.5v-250q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5 v250q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe019;" d="M600 1174q33 0 74 -5l38 -152l5 -1q49 -14 94 -39l5 -2l134 80q61 -48 104 -105l-80 -134l3 -5q25 -44 39 -93l1 -6l152 -38q5 -43 5 -73q0 -34 -5 -74l-152 -38l-1 -6q-15 -49 -39 -93l-3 -5l80 -134q-48 -61 -104 -105l-134 81l-5 -3q-44 -25 -94 -39l-5 -2l-38 -151 q-43 -5 -74 -5q-33 0 -74 5l-38 151l-5 2q-49 14 -94 39l-5 3l-134 -81q-60 48 -104 105l80 134l-3 5q-25 45 -38 93l-2 6l-151 38q-6 42 -6 74q0 33 6 73l151 38l2 6q13 48 38 93l3 5l-80 134q47 61 105 105l133 -80l5 2q45 25 94 39l5 1l38 152q43 5 74 5zM600 815 q-89 0 -152 -63t-63 -151.5t63 -151.5t152 -63t152 63t63 151.5t-63 151.5t-152 63z" />
<glyph unicode="&#xe020;" d="M500 1300h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-75h-1100v75q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5zM500 1200v-100h300v100h-300zM1100 900v-800q0 -41 -29.5 -70.5t-70.5 -29.5h-700q-41 0 -70.5 29.5t-29.5 70.5 v800h900zM300 800v-700h100v700h-100zM500 800v-700h100v700h-100zM700 800v-700h100v700h-100zM900 800v-700h100v700h-100z" />
<glyph unicode="&#xe021;" d="M18 618l620 608q8 7 18.5 7t17.5 -7l608 -608q8 -8 5.5 -13t-12.5 -5h-175v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v375h-300v-375q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v575h-175q-10 0 -12.5 5t5.5 13z" />
<glyph unicode="&#xe022;" d="M600 1200v-400q0 -41 29.5 -70.5t70.5 -29.5h300v-650q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5h450zM1000 800h-250q-21 0 -35.5 14.5t-14.5 35.5v250z" />
<glyph unicode="&#xe023;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h50q10 0 17.5 -7.5t7.5 -17.5v-275h175q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe024;" d="M1300 0h-538l-41 400h-242l-41 -400h-538l431 1200h209l-21 -300h162l-20 300h208zM515 800l-27 -300h224l-27 300h-170z" />
<glyph unicode="&#xe025;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-450h191q20 0 25.5 -11.5t-7.5 -27.5l-327 -400q-13 -16 -32 -16t-32 16l-327 400q-13 16 -7.5 27.5t25.5 11.5h191v450q0 21 14.5 35.5t35.5 14.5zM1125 400h50q10 0 17.5 -7.5t7.5 -17.5v-350q0 -10 -7.5 -17.5t-17.5 -7.5 h-1050q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h50q10 0 17.5 -7.5t7.5 -17.5v-175h900v175q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe026;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM525 900h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -275q-13 -16 -32 -16t-32 16l-223 275q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z " />
<glyph unicode="&#xe027;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM632 914l223 -275q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5l223 275q13 16 32 16 t32 -16z" />
<glyph unicode="&#xe028;" d="M225 1200h750q10 0 19.5 -7t12.5 -17l186 -652q7 -24 7 -49v-425q0 -12 -4 -27t-9 -17q-12 -6 -37 -6h-1100q-12 0 -27 4t-17 8q-6 13 -6 38l1 425q0 25 7 49l185 652q3 10 12.5 17t19.5 7zM878 1000h-556q-10 0 -19 -7t-11 -18l-87 -450q-2 -11 4 -18t16 -7h150 q10 0 19.5 -7t11.5 -17l38 -152q2 -10 11.5 -17t19.5 -7h250q10 0 19.5 7t11.5 17l38 152q2 10 11.5 17t19.5 7h150q10 0 16 7t4 18l-87 450q-2 11 -11 18t-19 7z" />
<glyph unicode="&#xe029;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM540 820l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
<glyph unicode="&#xe030;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-362q0 -10 -7.5 -17.5t-17.5 -7.5h-362q-11 0 -13 5.5t5 12.5l133 133q-109 76 -238 76q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5h150q0 -117 -45.5 -224 t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117z" />
<glyph unicode="&#xe031;" d="M947 1060l135 135q7 7 12.5 5t5.5 -13v-361q0 -11 -7.5 -18.5t-18.5 -7.5h-361q-11 0 -13 5.5t5 12.5l134 134q-110 75 -239 75q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5h-150q0 117 45.5 224t123 184.5t184.5 123t224 45.5q192 0 347 -117zM1027 600h150 q0 -117 -45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5q-192 0 -348 118l-134 -134q-7 -8 -12.5 -5.5t-5.5 12.5v360q0 11 7.5 18.5t18.5 7.5h360q10 0 12.5 -5.5t-5.5 -12.5l-133 -133q110 -76 240 -76q116 0 214.5 57t155.5 155.5t57 214.5z" />
<glyph unicode="&#xe032;" d="M125 1200h1050q10 0 17.5 -7.5t7.5 -17.5v-1150q0 -10 -7.5 -17.5t-17.5 -7.5h-1050q-10 0 -17.5 7.5t-7.5 17.5v1150q0 10 7.5 17.5t17.5 7.5zM1075 1000h-850q-10 0 -17.5 -7.5t-7.5 -17.5v-850q0 -10 7.5 -17.5t17.5 -7.5h850q10 0 17.5 7.5t7.5 17.5v850 q0 10 -7.5 17.5t-17.5 7.5zM325 900h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 900h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 700h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 700h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 500h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 500h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5zM325 300h50q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM525 300h450q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-450q-10 0 -17.5 7.5t-7.5 17.5v50 q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe033;" d="M900 800v200q0 83 -58.5 141.5t-141.5 58.5h-300q-82 0 -141 -59t-59 -141v-200h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h900q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-100zM400 800v150q0 21 15 35.5t35 14.5h200 q20 0 35 -14.5t15 -35.5v-150h-300z" />
<glyph unicode="&#xe034;" d="M125 1100h50q10 0 17.5 -7.5t7.5 -17.5v-1075h-100v1075q0 10 7.5 17.5t17.5 7.5zM1075 1052q4 0 9 -2q16 -6 16 -23v-421q0 -6 -3 -12q-33 -59 -66.5 -99t-65.5 -58t-56.5 -24.5t-52.5 -6.5q-26 0 -57.5 6.5t-52.5 13.5t-60 21q-41 15 -63 22.5t-57.5 15t-65.5 7.5 q-85 0 -160 -57q-7 -5 -15 -5q-6 0 -11 3q-14 7 -14 22v438q22 55 82 98.5t119 46.5q23 2 43 0.5t43 -7t32.5 -8.5t38 -13t32.5 -11q41 -14 63.5 -21t57 -14t63.5 -7q103 0 183 87q7 8 18 8z" />
<glyph unicode="&#xe035;" d="M600 1175q116 0 227 -49.5t192.5 -131t131 -192.5t49.5 -227v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v300q0 127 -70.5 231.5t-184.5 161.5t-245 57t-245 -57t-184.5 -161.5t-70.5 -231.5v-300q0 -10 -7.5 -17.5t-17.5 -7.5h-50 q-10 0 -17.5 7.5t-7.5 17.5v300q0 116 49.5 227t131 192.5t192.5 131t227 49.5zM220 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460q0 8 6 14t14 6zM820 500h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14v460 q0 8 6 14t14 6z" />
<glyph unicode="&#xe036;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM900 668l120 120q7 7 17 7t17 -7l34 -34q7 -7 7 -17t-7 -17l-120 -120l120 -120q7 -7 7 -17 t-7 -17l-34 -34q-7 -7 -17 -7t-17 7l-120 119l-120 -119q-7 -7 -17 -7t-17 7l-34 34q-7 7 -7 17t7 17l119 120l-119 120q-7 7 -7 17t7 17l34 34q7 8 17 8t17 -8z" />
<glyph unicode="&#xe037;" d="M321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6 l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238q-6 8 -4.5 18t9.5 17l29 22q7 5 15 5z" />
<glyph unicode="&#xe038;" d="M967 1004h3q11 -1 17 -10q135 -179 135 -396q0 -105 -34 -206.5t-98 -185.5q-7 -9 -17 -10h-3q-9 0 -16 6l-42 34q-8 6 -9 16t5 18q111 150 111 328q0 90 -29.5 176t-84.5 157q-6 9 -5 19t10 16l42 33q7 5 15 5zM321 814l258 172q9 6 15 2.5t6 -13.5v-750q0 -10 -6 -13.5 t-15 2.5l-258 172q-21 14 -46 14h-250q-10 0 -17.5 7.5t-7.5 17.5v350q0 10 7.5 17.5t17.5 7.5h250q25 0 46 14zM766 900h4q10 -1 16 -10q96 -129 96 -290q0 -154 -90 -281q-6 -9 -17 -10l-3 -1q-9 0 -16 6l-29 23q-7 7 -8.5 16.5t4.5 17.5q72 103 72 229q0 132 -78 238 q-6 8 -4.5 18.5t9.5 16.5l29 22q7 5 15 5z" />
<glyph unicode="&#xe039;" d="M500 900h100v-100h-100v-100h-400v-100h-100v600h500v-300zM1200 700h-200v-100h200v-200h-300v300h-200v300h-100v200h600v-500zM100 1100v-300h300v300h-300zM800 1100v-300h300v300h-300zM300 900h-100v100h100v-100zM1000 900h-100v100h100v-100zM300 500h200v-500 h-500v500h200v100h100v-100zM800 300h200v-100h-100v-100h-200v100h-100v100h100v200h-200v100h300v-300zM100 400v-300h300v300h-300zM300 200h-100v100h100v-100zM1200 200h-100v100h100v-100zM700 0h-100v100h100v-100zM1200 0h-300v100h300v-100z" />
<glyph unicode="&#xe040;" d="M100 200h-100v1000h100v-1000zM300 200h-100v1000h100v-1000zM700 200h-200v1000h200v-1000zM900 200h-100v1000h100v-1000zM1200 200h-200v1000h200v-1000zM400 0h-300v100h300v-100zM600 0h-100v91h100v-91zM800 0h-100v91h100v-91zM1100 0h-200v91h200v-91z" />
<glyph unicode="&#xe041;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
<glyph unicode="&#xe042;" d="M500 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-682 682l1 475q0 10 7.5 17.5t17.5 7.5h474zM800 1200l682 -682q8 -8 8 -18t-8 -18l-464 -464q-8 -8 -18 -8t-18 8l-56 56l424 426l-700 700h150zM319.5 1024.5q-29.5 29.5 -71 29.5t-71 -29.5 t-29.5 -71.5t29.5 -71.5t71 -29.5t71 29.5t29.5 71.5t-29.5 71.5z" />
<glyph unicode="&#xe043;" d="M300 1200h825q75 0 75 -75v-900q0 -25 -18 -43l-64 -64q-8 -8 -13 -5.5t-5 12.5v950q0 10 -7.5 17.5t-17.5 7.5h-700q-25 0 -43 -18l-64 -64q-8 -8 -5.5 -13t12.5 -5h700q10 0 17.5 -7.5t7.5 -17.5v-950q0 -10 -7.5 -17.5t-17.5 -7.5h-850q-10 0 -17.5 7.5t-7.5 17.5v975 q0 25 18 43l139 139q18 18 43 18z" />
<glyph unicode="&#xe044;" d="M250 1200h800q21 0 35.5 -14.5t14.5 -35.5v-1150l-450 444l-450 -445v1151q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe045;" d="M822 1200h-444q-11 0 -19 -7.5t-9 -17.5l-78 -301q-7 -24 7 -45l57 -108q6 -9 17.5 -15t21.5 -6h450q10 0 21.5 6t17.5 15l62 108q14 21 7 45l-83 301q-1 10 -9 17.5t-19 7.5zM1175 800h-150q-10 0 -21 -6.5t-15 -15.5l-78 -156q-4 -9 -15 -15.5t-21 -6.5h-550 q-10 0 -21 6.5t-15 15.5l-78 156q-4 9 -15 15.5t-21 6.5h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-650q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h750q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5 t7.5 17.5v650q0 10 -7.5 17.5t-17.5 7.5zM850 200h-500q-10 0 -19.5 -7t-11.5 -17l-38 -152q-2 -10 3.5 -17t15.5 -7h600q10 0 15.5 7t3.5 17l-38 152q-2 10 -11.5 17t-19.5 7z" />
<glyph unicode="&#xe046;" d="M500 1100h200q56 0 102.5 -20.5t72.5 -50t44 -59t25 -50.5l6 -20h150q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5h150q2 8 6.5 21.5t24 48t45 61t72 48t102.5 21.5zM900 800v-100 h100v100h-100zM600 730q-95 0 -162.5 -67.5t-67.5 -162.5t67.5 -162.5t162.5 -67.5t162.5 67.5t67.5 162.5t-67.5 162.5t-162.5 67.5zM600 603q43 0 73 -30t30 -73t-30 -73t-73 -30t-73 30t-30 73t30 73t73 30z" />
<glyph unicode="&#xe047;" d="M681 1199l385 -998q20 -50 60 -92q18 -19 36.5 -29.5t27.5 -11.5l10 -2v-66h-417v66q53 0 75 43.5t5 88.5l-82 222h-391q-58 -145 -92 -234q-11 -34 -6.5 -57t25.5 -37t46 -20t55 -6v-66h-365v66q56 24 84 52q12 12 25 30.5t20 31.5l7 13l399 1006h93zM416 521h340 l-162 457z" />
<glyph unicode="&#xe048;" d="M753 641q5 -1 14.5 -4.5t36 -15.5t50.5 -26.5t53.5 -40t50.5 -54.5t35.5 -70t14.5 -87q0 -67 -27.5 -125.5t-71.5 -97.5t-98.5 -66.5t-108.5 -40.5t-102 -13h-500v89q41 7 70.5 32.5t29.5 65.5v827q0 24 -0.5 34t-3.5 24t-8.5 19.5t-17 13.5t-28 12.5t-42.5 11.5v71 l471 -1q57 0 115.5 -20.5t108 -57t80.5 -94t31 -124.5q0 -51 -15.5 -96.5t-38 -74.5t-45 -50.5t-38.5 -30.5zM400 700h139q78 0 130.5 48.5t52.5 122.5q0 41 -8.5 70.5t-29.5 55.5t-62.5 39.5t-103.5 13.5h-118v-350zM400 200h216q80 0 121 50.5t41 130.5q0 90 -62.5 154.5 t-156.5 64.5h-159v-400z" />
<glyph unicode="&#xe049;" d="M877 1200l2 -57q-83 -19 -116 -45.5t-40 -66.5l-132 -839q-9 -49 13 -69t96 -26v-97h-500v97q186 16 200 98l173 832q3 17 3 30t-1.5 22.5t-9 17.5t-13.5 12.5t-21.5 10t-26 8.5t-33.5 10q-13 3 -19 5v57h425z" />
<glyph unicode="&#xe050;" d="M1300 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM175 1000h-75v-800h75l-125 -167l-125 167h75v800h-75l125 167z" />
<glyph unicode="&#xe051;" d="M1100 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-650q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v650h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM1167 50l-167 -125v75h-800v-75l-167 125l167 125v-75h800v75z" />
<glyph unicode="&#xe052;" d="M50 1100h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe053;" d="M250 1100h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM250 500h700q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe054;" d="M500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000 q-21 0 -35.5 14.5t-14.5 35.5zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5zM0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5z" />
<glyph unicode="&#xe055;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 800h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 500h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe056;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 1100h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 800h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 500h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 500h800q21 0 35.5 -14.5t14.5 -35.5v-100 q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM350 200h800 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe057;" d="M400 0h-100v1100h100v-1100zM550 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM267 550l-167 -125v75h-200v100h200v75zM550 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM550 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe058;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM900 0h-100v1100h100v-1100zM50 800h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM1100 600h200v-100h-200v-75l-167 125l167 125v-75zM50 500h300q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5zM50 200h600 q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-600q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe059;" d="M75 1000h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53v650q0 31 22 53t53 22zM1200 300l-300 300l300 300v-600z" />
<glyph unicode="&#xe060;" d="M44 1100h1112q18 0 31 -13t13 -31v-1012q0 -18 -13 -31t-31 -13h-1112q-18 0 -31 13t-13 31v1012q0 18 13 31t31 13zM100 1000v-737l247 182l298 -131l-74 156l293 318l236 -288v500h-1000zM342 884q56 0 95 -39t39 -94.5t-39 -95t-95 -39.5t-95 39.5t-39 95t39 94.5 t95 39z" />
<glyph unicode="&#xe062;" d="M648 1169q117 0 216 -60t156.5 -161t57.5 -218q0 -115 -70 -258q-69 -109 -158 -225.5t-143 -179.5l-54 -62q-9 8 -25.5 24.5t-63.5 67.5t-91 103t-98.5 128t-95.5 148q-60 132 -60 249q0 88 34 169.5t91.5 142t137 96.5t166.5 36zM652.5 974q-91.5 0 -156.5 -65 t-65 -157t65 -156.5t156.5 -64.5t156.5 64.5t65 156.5t-65 157t-156.5 65z" />
<glyph unicode="&#xe063;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 173v854q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57z" />
<glyph unicode="&#xe064;" d="M554 1295q21 -72 57.5 -143.5t76 -130t83 -118t82.5 -117t70 -116t49.5 -126t18.5 -136.5q0 -71 -25.5 -135t-68.5 -111t-99 -82t-118.5 -54t-125.5 -23q-84 5 -161.5 34t-139.5 78.5t-99 125t-37 164.5q0 69 18 136.5t49.5 126.5t69.5 116.5t81.5 117.5t83.5 119 t76.5 131t58.5 143zM344 710q-23 -33 -43.5 -70.5t-40.5 -102.5t-17 -123q1 -37 14.5 -69.5t30 -52t41 -37t38.5 -24.5t33 -15q21 -7 32 -1t13 22l6 34q2 10 -2.5 22t-13.5 19q-5 4 -14 12t-29.5 40.5t-32.5 73.5q-26 89 6 271q2 11 -6 11q-8 1 -15 -10z" />
<glyph unicode="&#xe065;" d="M1000 1013l108 115q2 1 5 2t13 2t20.5 -1t25 -9.5t28.5 -21.5q22 -22 27 -43t0 -32l-6 -10l-108 -115zM350 1100h400q50 0 105 -13l-187 -187h-368q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v182l200 200v-332 q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM1009 803l-362 -362l-161 -50l55 170l355 355z" />
<glyph unicode="&#xe066;" d="M350 1100h361q-164 -146 -216 -200h-195q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-103q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M824 1073l339 -301q8 -7 8 -17.5t-8 -17.5l-340 -306q-7 -6 -12.5 -4t-6.5 11v203q-26 1 -54.5 0t-78.5 -7.5t-92 -17.5t-86 -35t-70 -57q10 59 33 108t51.5 81.5t65 58.5t68.5 40.5t67 24.5t56 13.5t40 4.5v210q1 10 6.5 12.5t13.5 -4.5z" />
<glyph unicode="&#xe067;" d="M350 1100h350q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-219q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5z M643 639l395 395q7 7 17.5 7t17.5 -7l101 -101q7 -7 7 -17.5t-7 -17.5l-531 -532q-7 -7 -17.5 -7t-17.5 7l-248 248q-7 7 -7 17.5t7 17.5l101 101q7 7 17.5 7t17.5 -7l111 -111q8 -7 18 -7t18 7z" />
<glyph unicode="&#xe068;" d="M318 918l264 264q8 8 18 8t18 -8l260 -264q7 -8 4.5 -13t-12.5 -5h-170v-200h200v173q0 10 5 12t13 -5l264 -260q8 -7 8 -17.5t-8 -17.5l-264 -265q-8 -7 -13 -5t-5 12v173h-200v-200h170q10 0 12.5 -5t-4.5 -13l-260 -264q-8 -8 -18 -8t-18 8l-264 264q-8 8 -5.5 13 t12.5 5h175v200h-200v-173q0 -10 -5 -12t-13 5l-264 265q-8 7 -8 17.5t8 17.5l264 260q8 7 13 5t5 -12v-173h200v200h-175q-10 0 -12.5 5t5.5 13z" />
<glyph unicode="&#xe069;" d="M250 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe070;" d="M50 1100h100q21 0 35.5 -14.5t14.5 -35.5v-438l464 453q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5 t-14.5 35.5v1000q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe071;" d="M1200 1050v-1000q0 -21 -10.5 -25t-25.5 10l-464 453v-438q0 -21 -10.5 -25t-25.5 10l-492 480q-15 14 -15 35t15 35l492 480q15 14 25.5 10t10.5 -25v-438l464 453q15 14 25.5 10t10.5 -25z" />
<glyph unicode="&#xe072;" d="M243 1074l814 -498q18 -11 18 -26t-18 -26l-814 -498q-18 -11 -30.5 -4t-12.5 28v1000q0 21 12.5 28t30.5 -4z" />
<glyph unicode="&#xe073;" d="M250 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM650 1000h200q21 0 35.5 -14.5t14.5 -35.5v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v800 q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe074;" d="M1100 950v-800q0 -21 -14.5 -35.5t-35.5 -14.5h-800q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5z" />
<glyph unicode="&#xe075;" d="M500 612v438q0 21 10.5 25t25.5 -10l492 -480q15 -14 15 -35t-15 -35l-492 -480q-15 -14 -25.5 -10t-10.5 25v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10z" />
<glyph unicode="&#xe076;" d="M1048 1102l100 1q20 0 35 -14.5t15 -35.5l5 -1000q0 -21 -14.5 -35.5t-35.5 -14.5l-100 -1q-21 0 -35.5 14.5t-14.5 35.5l-2 437l-463 -454q-14 -15 -24.5 -10.5t-10.5 25.5l-2 437l-462 -455q-15 -14 -25.5 -9.5t-10.5 24.5l-5 1000q0 21 10.5 25.5t25.5 -10.5l466 -450 l-2 438q0 20 10.5 24.5t25.5 -9.5l466 -451l-2 438q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe077;" d="M850 1100h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-464 -453q-15 -14 -25.5 -10t-10.5 25v1000q0 21 10.5 25t25.5 -10l464 -453v438q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe078;" d="M686 1081l501 -540q15 -15 10.5 -26t-26.5 -11h-1042q-22 0 -26.5 11t10.5 26l501 540q15 15 36 15t36 -15zM150 400h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe079;" d="M885 900l-352 -353l352 -353l-197 -198l-552 552l552 550z" />
<glyph unicode="&#xe080;" d="M1064 547l-551 -551l-198 198l353 353l-353 353l198 198z" />
<glyph unicode="&#xe081;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM650 900h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-150 q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5h150v-150q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v150h150q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-150v150q0 21 -14.5 35.5t-35.5 14.5z" />
<glyph unicode="&#xe082;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM850 700h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5 t35.5 -14.5h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5z" />
<glyph unicode="&#xe083;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM741.5 913q-12.5 0 -21.5 -9l-120 -120l-120 120q-9 9 -21.5 9 t-21.5 -9l-141 -141q-9 -9 -9 -21.5t9 -21.5l120 -120l-120 -120q-9 -9 -9 -21.5t9 -21.5l141 -141q9 -9 21.5 -9t21.5 9l120 120l120 -120q9 -9 21.5 -9t21.5 9l141 141q9 9 9 21.5t-9 21.5l-120 120l120 120q9 9 9 21.5t-9 21.5l-141 141q-9 9 -21.5 9z" />
<glyph unicode="&#xe084;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM546 623l-84 85q-7 7 -17.5 7t-18.5 -7l-139 -139q-7 -8 -7 -18t7 -18 l242 -241q7 -8 17.5 -8t17.5 8l375 375q7 7 7 17.5t-7 18.5l-139 139q-7 7 -17.5 7t-17.5 -7z" />
<glyph unicode="&#xe085;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM588 941q-29 0 -59 -5.5t-63 -20.5t-58 -38.5t-41.5 -63t-16.5 -89.5 q0 -25 20 -25h131q30 -5 35 11q6 20 20.5 28t45.5 8q20 0 31.5 -10.5t11.5 -28.5q0 -23 -7 -34t-26 -18q-1 0 -13.5 -4t-19.5 -7.5t-20 -10.5t-22 -17t-18.5 -24t-15.5 -35t-8 -46q-1 -8 5.5 -16.5t20.5 -8.5h173q7 0 22 8t35 28t37.5 48t29.5 74t12 100q0 47 -17 83 t-42.5 57t-59.5 34.5t-64 18t-59 4.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe086;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM675 1000h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5 t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5zM675 700h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h75v-200h-75q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h350q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5 t-17.5 7.5h-75v275q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe087;" d="M525 1200h150q10 0 17.5 -7.5t7.5 -17.5v-194q103 -27 178.5 -102.5t102.5 -178.5h194q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-194q-27 -103 -102.5 -178.5t-178.5 -102.5v-194q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v194 q-103 27 -178.5 102.5t-102.5 178.5h-194q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h194q27 103 102.5 178.5t178.5 102.5v194q0 10 7.5 17.5t17.5 7.5zM700 893v-168q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v168q-68 -23 -119 -74 t-74 -119h168q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-168q23 -68 74 -119t119 -74v168q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-168q68 23 119 74t74 119h-168q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h168 q-23 68 -74 119t-119 74z" />
<glyph unicode="&#xe088;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM759 823l64 -64q7 -7 7 -17.5t-7 -17.5l-124 -124l124 -124q7 -7 7 -17.5t-7 -17.5l-64 -64q-7 -7 -17.5 -7t-17.5 7l-124 124l-124 -124q-7 -7 -17.5 -7t-17.5 7l-64 64 q-7 7 -7 17.5t7 17.5l124 124l-124 124q-7 7 -7 17.5t7 17.5l64 64q7 7 17.5 7t17.5 -7l124 -124l124 124q7 7 17.5 7t17.5 -7z" />
<glyph unicode="&#xe089;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5t57 -214.5 t155.5 -155.5t214.5 -57t214.5 57t155.5 155.5t57 214.5t-57 214.5t-155.5 155.5t-214.5 57zM782 788l106 -106q7 -7 7 -17.5t-7 -17.5l-320 -321q-8 -7 -18 -7t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l197 197q7 7 17.5 7t17.5 -7z" />
<glyph unicode="&#xe090;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM600 1027q-116 0 -214.5 -57t-155.5 -155.5t-57 -214.5q0 -120 65 -225 l587 587q-105 65 -225 65zM965 819l-584 -584q104 -62 219 -62q116 0 214.5 57t155.5 155.5t57 214.5q0 115 -62 219z" />
<glyph unicode="&#xe091;" d="M39 582l522 427q16 13 27.5 8t11.5 -26v-291h550q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-550v-291q0 -21 -11.5 -26t-27.5 8l-522 427q-16 13 -16 32t16 32z" />
<glyph unicode="&#xe092;" d="M639 1009l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291h-550q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h550v291q0 21 11.5 26t27.5 -8z" />
<glyph unicode="&#xe093;" d="M682 1161l427 -522q13 -16 8 -27.5t-26 -11.5h-291v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v550h-291q-21 0 -26 11.5t8 27.5l427 522q13 16 32 16t32 -16z" />
<glyph unicode="&#xe094;" d="M550 1200h200q21 0 35.5 -14.5t14.5 -35.5v-550h291q21 0 26 -11.5t-8 -27.5l-427 -522q-13 -16 -32 -16t-32 16l-427 522q-13 16 -8 27.5t26 11.5h291v550q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe095;" d="M639 1109l522 -427q16 -13 16 -32t-16 -32l-522 -427q-16 -13 -27.5 -8t-11.5 26v291q-94 -2 -182 -20t-170.5 -52t-147 -92.5t-100.5 -135.5q5 105 27 193.5t67.5 167t113 135t167 91.5t225.5 42v262q0 21 11.5 26t27.5 -8z" />
<glyph unicode="&#xe096;" d="M850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5zM350 0h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249 q8 7 18 7t18 -7l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5z" />
<glyph unicode="&#xe097;" d="M1014 1120l106 -106q7 -8 7 -18t-7 -18l-249 -249l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l249 249q8 7 18 7t18 -7zM250 600h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-249 -249q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l249 249l-94 94q-14 14 -10 24.5t25 10.5z" />
<glyph unicode="&#xe101;" d="M600 1177q117 0 224 -45.5t184.5 -123t123 -184.5t45.5 -224t-45.5 -224t-123 -184.5t-184.5 -123t-224 -45.5t-224 45.5t-184.5 123t-123 184.5t-45.5 224t45.5 224t123 184.5t184.5 123t224 45.5zM704 900h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5 t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM675 400h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe102;" d="M260 1200q9 0 19 -2t15 -4l5 -2q22 -10 44 -23l196 -118q21 -13 36 -24q29 -21 37 -12q11 13 49 35l196 118q22 13 45 23q17 7 38 7q23 0 47 -16.5t37 -33.5l13 -16q14 -21 18 -45l25 -123l8 -44q1 -9 8.5 -14.5t17.5 -5.5h61q10 0 17.5 -7.5t7.5 -17.5v-50 q0 -10 -7.5 -17.5t-17.5 -7.5h-50q-10 0 -17.5 -7.5t-7.5 -17.5v-175h-400v300h-200v-300h-400v175q0 10 -7.5 17.5t-17.5 7.5h-50q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5h61q11 0 18 3t7 8q0 4 9 52l25 128q5 25 19 45q2 3 5 7t13.5 15t21.5 19.5t26.5 15.5 t29.5 7zM915 1079l-166 -162q-7 -7 -5 -12t12 -5h219q10 0 15 7t2 17l-51 149q-3 10 -11 12t-15 -6zM463 917l-177 157q-8 7 -16 5t-11 -12l-51 -143q-3 -10 2 -17t15 -7h231q11 0 12.5 5t-5.5 12zM500 0h-375q-10 0 -17.5 7.5t-7.5 17.5v375h400v-400zM1100 400v-375 q0 -10 -7.5 -17.5t-17.5 -7.5h-375v400h400z" />
<glyph unicode="&#xe103;" d="M1165 1190q8 3 21 -6.5t13 -17.5q-2 -178 -24.5 -323.5t-55.5 -245.5t-87 -174.5t-102.5 -118.5t-118 -68.5t-118.5 -33t-120 -4.5t-105 9.5t-90 16.5q-61 12 -78 11q-4 1 -12.5 0t-34 -14.5t-52.5 -40.5l-153 -153q-26 -24 -37 -14.5t-11 43.5q0 64 42 102q8 8 50.5 45 t66.5 58q19 17 35 47t13 61q-9 55 -10 102.5t7 111t37 130t78 129.5q39 51 80 88t89.5 63.5t94.5 45t113.5 36t129 31t157.5 37t182 47.5zM1116 1098q-8 9 -22.5 -3t-45.5 -50q-38 -47 -119 -103.5t-142 -89.5l-62 -33q-56 -30 -102 -57t-104 -68t-102.5 -80.5t-85.5 -91 t-64 -104.5q-24 -56 -31 -86t2 -32t31.5 17.5t55.5 59.5q25 30 94 75.5t125.5 77.5t147.5 81q70 37 118.5 69t102 79.5t99 111t86.5 148.5q22 50 24 60t-6 19z" />
<glyph unicode="&#xe104;" d="M653 1231q-39 -67 -54.5 -131t-10.5 -114.5t24.5 -96.5t47.5 -80t63.5 -62.5t68.5 -46.5t65 -30q-4 7 -17.5 35t-18.5 39.5t-17 39.5t-17 43t-13 42t-9.5 44.5t-2 42t4 43t13.5 39t23 38.5q96 -42 165 -107.5t105 -138t52 -156t13 -159t-19 -149.5q-13 -55 -44 -106.5 t-68 -87t-78.5 -64.5t-72.5 -45t-53 -22q-72 -22 -127 -11q-31 6 -13 19q6 3 17 7q13 5 32.5 21t41 44t38.5 63.5t21.5 81.5t-6.5 94.5t-50 107t-104 115.5q10 -104 -0.5 -189t-37 -140.5t-65 -93t-84 -52t-93.5 -11t-95 24.5q-80 36 -131.5 114t-53.5 171q-2 23 0 49.5 t4.5 52.5t13.5 56t27.5 60t46 64.5t69.5 68.5q-8 -53 -5 -102.5t17.5 -90t34 -68.5t44.5 -39t49 -2q31 13 38.5 36t-4.5 55t-29 64.5t-36 75t-26 75.5q-15 85 2 161.5t53.5 128.5t85.5 92.5t93.5 61t81.5 25.5z" />
<glyph unicode="&#xe105;" d="M600 1094q82 0 160.5 -22.5t140 -59t116.5 -82.5t94.5 -95t68 -95t42.5 -82.5t14 -57.5t-14 -57.5t-43 -82.5t-68.5 -95t-94.5 -95t-116.5 -82.5t-140 -59t-159.5 -22.5t-159.5 22.5t-140 59t-116.5 82.5t-94.5 95t-68.5 95t-43 82.5t-14 57.5t14 57.5t42.5 82.5t68 95 t94.5 95t116.5 82.5t140 59t160.5 22.5zM888 829q-15 15 -18 12t5 -22q25 -57 25 -119q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 59 23 114q8 19 4.5 22t-17.5 -12q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q22 -36 47 -71t70 -82t92.5 -81t113 -58.5t133.5 -24.5 t133.5 24t113 58.5t92.5 81.5t70 81.5t47 70.5q11 18 9 42.5t-14 41.5q-90 117 -163 189zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l35 34q14 15 12.5 33.5t-16.5 33.5q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
<glyph unicode="&#xe106;" d="M592 0h-148l31 120q-91 20 -175.5 68.5t-143.5 106.5t-103.5 119t-66.5 110t-22 76q0 21 14 57.5t42.5 82.5t68 95t94.5 95t116.5 82.5t140 59t160.5 22.5q61 0 126 -15l32 121h148zM944 770l47 181q108 -85 176.5 -192t68.5 -159q0 -26 -19.5 -71t-59.5 -102t-93 -112 t-129 -104.5t-158 -75.5l46 173q77 49 136 117t97 131q11 18 9 42.5t-14 41.5q-54 70 -107 130zM310 824q-70 -69 -160 -184q-13 -16 -15 -40.5t9 -42.5q18 -30 39 -60t57 -70.5t74 -73t90 -61t105 -41.5l41 154q-107 18 -178.5 101.5t-71.5 193.5q0 59 23 114q8 19 4.5 22 t-17.5 -12zM448 727l-35 -36q-15 -15 -19.5 -38.5t4.5 -41.5q37 -68 93 -116q16 -13 38.5 -11t36.5 17l12 11l22 86l-3 4q-44 44 -89 117q-11 18 -28 20t-32 -12z" />
<glyph unicode="&#xe107;" d="M-90 100l642 1066q20 31 48 28.5t48 -35.5l642 -1056q21 -32 7.5 -67.5t-50.5 -35.5h-1294q-37 0 -50.5 34t7.5 66zM155 200h345v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h345l-445 723zM496 700h208q20 0 32 -14.5t8 -34.5l-58 -252 q-4 -20 -21.5 -34.5t-37.5 -14.5h-54q-20 0 -37.5 14.5t-21.5 34.5l-58 252q-4 20 8 34.5t32 14.5z" />
<glyph unicode="&#xe108;" d="M650 1200q62 0 106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -93 100 -113v-64q0 -21 -13 -29t-32 1l-205 128l-205 -128q-19 -9 -32 -1t-13 29v64q0 20 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5v41 q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44z" />
<glyph unicode="&#xe109;" d="M850 1200h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-150h-1100v150q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-50h500v50q0 21 14.5 35.5t35.5 14.5zM1100 800v-750q0 -21 -14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v750h1100zM100 600v-100h100v100h-100zM300 600v-100h100v100h-100zM500 600v-100h100v100h-100zM700 600v-100h100v100h-100zM900 600v-100h100v100h-100zM100 400v-100h100v100h-100zM300 400v-100h100v100h-100zM500 400 v-100h100v100h-100zM700 400v-100h100v100h-100zM900 400v-100h100v100h-100zM100 200v-100h100v100h-100zM300 200v-100h100v100h-100zM500 200v-100h100v100h-100zM700 200v-100h100v100h-100zM900 200v-100h100v100h-100z" />
<glyph unicode="&#xe110;" d="M1135 1165l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-159l-600 -600h-291q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h209l600 600h241v150q0 21 10.5 25t24.5 -10zM522 819l-141 -141l-122 122h-209q-21 0 -35.5 14.5 t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h291zM1135 565l249 -230q15 -14 15 -35t-15 -35l-249 -230q-14 -14 -24.5 -10t-10.5 25v150h-241l-181 181l141 141l122 -122h159v150q0 21 10.5 25t24.5 -10z" />
<glyph unicode="&#xe111;" d="M100 1100h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5v600q0 41 29.5 70.5t70.5 29.5z" />
<glyph unicode="&#xe112;" d="M150 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM850 1200h200q21 0 35.5 -14.5t14.5 -35.5v-250h-300v250q0 21 14.5 35.5t35.5 14.5zM1100 800v-300q0 -41 -3 -77.5t-15 -89.5t-32 -96t-58 -89t-89 -77t-129 -51t-174 -20t-174 20 t-129 51t-89 77t-58 89t-32 96t-15 89.5t-3 77.5v300h300v-250v-27v-42.5t1.5 -41t5 -38t10 -35t16.5 -30t25.5 -24.5t35 -19t46.5 -12t60 -4t60 4.5t46.5 12.5t35 19.5t25 25.5t17 30.5t10 35t5 38t2 40.5t-0.5 42v25v250h300z" />
<glyph unicode="&#xe113;" d="M1100 411l-198 -199l-353 353l-353 -353l-197 199l551 551z" />
<glyph unicode="&#xe114;" d="M1101 789l-550 -551l-551 551l198 199l353 -353l353 353z" />
<glyph unicode="&#xe115;" d="M404 1000h746q21 0 35.5 -14.5t14.5 -35.5v-551h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v401h-381zM135 984l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-400h385l215 -200h-750q-21 0 -35.5 14.5 t-14.5 35.5v550h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
<glyph unicode="&#xe116;" d="M56 1200h94q17 0 31 -11t18 -27l38 -162h896q24 0 39 -18.5t10 -42.5l-100 -475q-5 -21 -27 -42.5t-55 -21.5h-633l48 -200h535q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-50q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-300v-50 q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v50h-31q-18 0 -32.5 10t-20.5 19l-5 10l-201 961h-54q-20 0 -35 14.5t-15 35.5t15 35.5t35 14.5z" />
<glyph unicode="&#xe117;" d="M1200 1000v-100h-1200v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500zM0 800h1200v-800h-1200v800z" />
<glyph unicode="&#xe118;" d="M200 800l-200 -400v600h200q0 41 29.5 70.5t70.5 29.5h300q42 0 71 -29.5t29 -70.5h500v-200h-1000zM1500 700l-300 -700h-1200l300 700h1200z" />
<glyph unicode="&#xe119;" d="M635 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-601h150q21 0 25 -10.5t-10 -24.5l-230 -249q-14 -15 -35 -15t-35 15l-230 249q-14 14 -10 24.5t25 10.5h150v601h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
<glyph unicode="&#xe120;" d="M936 864l249 -229q14 -15 14 -35.5t-14 -35.5l-249 -229q-15 -15 -25.5 -10.5t-10.5 24.5v151h-600v-151q0 -20 -10.5 -24.5t-25.5 10.5l-249 229q-14 15 -14 35.5t14 35.5l249 229q15 15 25.5 10.5t10.5 -25.5v-149h600v149q0 21 10.5 25.5t25.5 -10.5z" />
<glyph unicode="&#xe121;" d="M1169 400l-172 732q-5 23 -23 45.5t-38 22.5h-672q-20 0 -38 -20t-23 -41l-172 -739h1138zM1100 300h-1000q-41 0 -70.5 -29.5t-29.5 -70.5v-100q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v100q0 41 -29.5 70.5t-70.5 29.5zM800 100v100h100v-100h-100 zM1000 100v100h100v-100h-100z" />
<glyph unicode="&#xe122;" d="M1150 1100q21 0 35.5 -14.5t14.5 -35.5v-850q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v850q0 21 14.5 35.5t35.5 14.5zM1000 200l-675 200h-38l47 -276q3 -16 -5.5 -20t-29.5 -4h-7h-84q-20 0 -34.5 14t-18.5 35q-55 337 -55 351v250v6q0 16 1 23.5t6.5 14 t17.5 6.5h200l675 250v-850zM0 750v-250q-4 0 -11 0.5t-24 6t-30 15t-24 30t-11 48.5v50q0 26 10.5 46t25 30t29 16t25.5 7z" />
<glyph unicode="&#xe123;" d="M553 1200h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q19 0 33 -14.5t14 -35t-13 -40.5t-31 -27q-8 -4 -23 -9.5t-65 -19.5t-103 -25t-132.5 -20t-158.5 -9q-57 0 -115 5t-104 12t-88.5 15.5t-73.5 17.5t-54.5 16t-35.5 12l-11 4 q-18 8 -31 28t-13 40.5t14 35t33 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3.5 32t28.5 13zM498 110q50 -6 102 -6q53 0 102 6q-12 -49 -39.5 -79.5t-62.5 -30.5t-63 30.5t-39 79.5z" />
<glyph unicode="&#xe124;" d="M800 946l224 78l-78 -224l234 -45l-180 -155l180 -155l-234 -45l78 -224l-224 78l-45 -234l-155 180l-155 -180l-45 234l-224 -78l78 224l-234 45l180 155l-180 155l234 45l-78 224l224 -78l45 234l155 -180l155 180z" />
<glyph unicode="&#xe125;" d="M650 1200h50q40 0 70 -40.5t30 -84.5v-150l-28 -125h328q40 0 70 -40.5t30 -84.5v-100q0 -45 -29 -74l-238 -344q-16 -24 -38 -40.5t-45 -16.5h-250q-7 0 -42 25t-66 50l-31 25h-61q-45 0 -72.5 18t-27.5 57v400q0 36 20 63l145 196l96 198q13 28 37.5 48t51.5 20z M650 1100l-100 -212l-150 -213v-375h100l136 -100h214l250 375v125h-450l50 225v175h-50zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe126;" d="M600 1100h250q23 0 45 -16.5t38 -40.5l238 -344q29 -29 29 -74v-100q0 -44 -30 -84.5t-70 -40.5h-328q28 -118 28 -125v-150q0 -44 -30 -84.5t-70 -40.5h-50q-27 0 -51.5 20t-37.5 48l-96 198l-145 196q-20 27 -20 63v400q0 39 27.5 57t72.5 18h61q124 100 139 100z M50 1000h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM636 1000l-136 -100h-100v-375l150 -213l100 -212h50v175l-50 225h450v125l-250 375h-214z" />
<glyph unicode="&#xe127;" d="M356 873l363 230q31 16 53 -6l110 -112q13 -13 13.5 -32t-11.5 -34l-84 -121h302q84 0 138 -38t54 -110t-55 -111t-139 -39h-106l-131 -339q-6 -21 -19.5 -41t-28.5 -20h-342q-7 0 -90 81t-83 94v525q0 17 14 35.5t28 28.5zM400 792v-503l100 -89h293l131 339 q6 21 19.5 41t28.5 20h203q21 0 30.5 25t0.5 50t-31 25h-456h-7h-6h-5.5t-6 0.5t-5 1.5t-5 2t-4 2.5t-4 4t-2.5 4.5q-12 25 5 47l146 183l-86 83zM50 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v500 q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe128;" d="M475 1103l366 -230q2 -1 6 -3.5t14 -10.5t18 -16.5t14.5 -20t6.5 -22.5v-525q0 -13 -86 -94t-93 -81h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-85 0 -139.5 39t-54.5 111t54 110t138 38h302l-85 121q-11 15 -10.5 34t13.5 32l110 112q22 22 53 6zM370 945l146 -183 q17 -22 5 -47q-2 -2 -3.5 -4.5t-4 -4t-4 -2.5t-5 -2t-5 -1.5t-6 -0.5h-6h-6.5h-6h-475v-100h221q15 0 29 -20t20 -41l130 -339h294l106 89v503l-342 236zM1050 800h100q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5 v500q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe129;" d="M550 1294q72 0 111 -55t39 -139v-106l339 -131q21 -6 41 -19.5t20 -28.5v-342q0 -7 -81 -90t-94 -83h-525q-17 0 -35.5 14t-28.5 28l-9 14l-230 363q-16 31 6 53l112 110q13 13 32 13.5t34 -11.5l121 -84v302q0 84 38 138t110 54zM600 972v203q0 21 -25 30.5t-50 0.5 t-25 -31v-456v-7v-6v-5.5t-0.5 -6t-1.5 -5t-2 -5t-2.5 -4t-4 -4t-4.5 -2.5q-25 -12 -47 5l-183 146l-83 -86l236 -339h503l89 100v293l-339 131q-21 6 -41 19.5t-20 28.5zM450 200h500q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-500 q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe130;" d="M350 1100h500q21 0 35.5 14.5t14.5 35.5v100q0 21 -14.5 35.5t-35.5 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100q0 -21 14.5 -35.5t35.5 -14.5zM600 306v-106q0 -84 -39 -139t-111 -55t-110 54t-38 138v302l-121 -84q-15 -12 -34 -11.5t-32 13.5l-112 110 q-22 22 -6 53l230 363q1 2 3.5 6t10.5 13.5t16.5 17t20 13.5t22.5 6h525q13 0 94 -83t81 -90v-342q0 -15 -20 -28.5t-41 -19.5zM308 900l-236 -339l83 -86l183 146q22 17 47 5q2 -1 4.5 -2.5t4 -4t2.5 -4t2 -5t1.5 -5t0.5 -6v-5.5v-6v-7v-456q0 -22 25 -31t50 0.5t25 30.5 v203q0 15 20 28.5t41 19.5l339 131v293l-89 100h-503z" />
<glyph unicode="&#xe131;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM914 632l-275 223q-16 13 -27.5 8t-11.5 -26v-137h-275 q-10 0 -17.5 -7.5t-7.5 -17.5v-150q0 -10 7.5 -17.5t17.5 -7.5h275v-137q0 -21 11.5 -26t27.5 8l275 223q16 13 16 32t-16 32z" />
<glyph unicode="&#xe132;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM561 855l-275 -223q-16 -13 -16 -32t16 -32l275 -223q16 -13 27.5 -8 t11.5 26v137h275q10 0 17.5 7.5t7.5 17.5v150q0 10 -7.5 17.5t-17.5 7.5h-275v137q0 21 -11.5 26t-27.5 -8z" />
<glyph unicode="&#xe133;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM855 639l-223 275q-13 16 -32 16t-32 -16l-223 -275q-13 -16 -8 -27.5 t26 -11.5h137v-275q0 -10 7.5 -17.5t17.5 -7.5h150q10 0 17.5 7.5t7.5 17.5v275h137q21 0 26 11.5t-8 27.5z" />
<glyph unicode="&#xe134;" d="M600 1178q118 0 225 -45.5t184.5 -123t123 -184.5t45.5 -225t-45.5 -225t-123 -184.5t-184.5 -123t-225 -45.5t-225 45.5t-184.5 123t-123 184.5t-45.5 225t45.5 225t123 184.5t184.5 123t225 45.5zM675 900h-150q-10 0 -17.5 -7.5t-7.5 -17.5v-275h-137q-21 0 -26 -11.5 t8 -27.5l223 -275q13 -16 32 -16t32 16l223 275q13 16 8 27.5t-26 11.5h-137v275q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe135;" d="M600 1176q116 0 222.5 -46t184 -123.5t123.5 -184t46 -222.5t-46 -222.5t-123.5 -184t-184 -123.5t-222.5 -46t-222.5 46t-184 123.5t-123.5 184t-46 222.5t46 222.5t123.5 184t184 123.5t222.5 46zM627 1101q-15 -12 -36.5 -20.5t-35.5 -12t-43 -8t-39 -6.5 q-15 -3 -45.5 0t-45.5 -2q-20 -7 -51.5 -26.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79q-9 -34 5 -93t8 -87q0 -9 17 -44.5t16 -59.5q12 0 23 -5t23.5 -15t19.5 -14q16 -8 33 -15t40.5 -15t34.5 -12q21 -9 52.5 -32t60 -38t57.5 -11 q7 -15 -3 -34t-22.5 -40t-9.5 -38q13 -21 23 -34.5t27.5 -27.5t36.5 -18q0 -7 -3.5 -16t-3.5 -14t5 -17q104 -2 221 112q30 29 46.5 47t34.5 49t21 63q-13 8 -37 8.5t-36 7.5q-15 7 -49.5 15t-51.5 19q-18 0 -41 -0.5t-43 -1.5t-42 -6.5t-38 -16.5q-51 -35 -66 -12 q-4 1 -3.5 25.5t0.5 25.5q-6 13 -26.5 17.5t-24.5 6.5q1 15 -0.5 30.5t-7 28t-18.5 11.5t-31 -21q-23 -25 -42 4q-19 28 -8 58q6 16 22 22q6 -1 26 -1.5t33.5 -4t19.5 -13.5q7 -12 18 -24t21.5 -20.5t20 -15t15.5 -10.5l5 -3q2 12 7.5 30.5t8 34.5t-0.5 32q-3 18 3.5 29 t18 22.5t15.5 24.5q6 14 10.5 35t8 31t15.5 22.5t34 22.5q-6 18 10 36q8 0 24 -1.5t24.5 -1.5t20 4.5t20.5 15.5q-10 23 -31 42.5t-37.5 29.5t-49 27t-43.5 23q0 1 2 8t3 11.5t1.5 10.5t-1 9.5t-4.5 4.5q31 -13 58.5 -14.5t38.5 2.5l12 5q5 28 -9.5 46t-36.5 24t-50 15 t-41 20q-18 -4 -37 0zM613 994q0 -17 8 -42t17 -45t9 -23q-8 1 -39.5 5.5t-52.5 10t-37 16.5q3 11 16 29.5t16 25.5q10 -10 19 -10t14 6t13.5 14.5t16.5 12.5z" />
<glyph unicode="&#xe136;" d="M756 1157q164 92 306 -9l-259 -138l145 -232l251 126q6 -89 -34 -156.5t-117 -110.5q-60 -34 -127 -39.5t-126 16.5l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5t15 37.5l600 599q-34 101 5.5 201.5t135.5 154.5z" />
<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M100 1196h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 1096h-200v-100h200v100zM100 796h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 696h-500v-100h500v100zM100 396h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5v100q0 41 29.5 70.5t70.5 29.5zM1100 296h-300v-100h300v100z " />
<glyph unicode="&#xe138;" d="M150 1200h900q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM700 500v-300l-200 -200v500l-350 500h900z" />
<glyph unicode="&#xe139;" d="M500 1200h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5zM500 1100v-100h200v100h-200zM1200 400v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5v200h1200z" />
<glyph unicode="&#xe140;" d="M50 1200h300q21 0 25 -10.5t-10 -24.5l-94 -94l199 -199q7 -8 7 -18t-7 -18l-106 -106q-8 -7 -18 -7t-18 7l-199 199l-94 -94q-14 -14 -24.5 -10t-10.5 25v300q0 21 14.5 35.5t35.5 14.5zM850 1200h300q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -10.5 -25t-24.5 10l-94 94 l-199 -199q-8 -7 -18 -7t-18 7l-106 106q-7 8 -7 18t7 18l199 199l-94 94q-14 14 -10 24.5t25 10.5zM364 470l106 -106q7 -8 7 -18t-7 -18l-199 -199l94 -94q14 -14 10 -24.5t-25 -10.5h-300q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 10.5 25t24.5 -10l94 -94l199 199 q8 7 18 7t18 -7zM1071 271l94 94q14 14 24.5 10t10.5 -25v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -25 10.5t10 24.5l94 94l-199 199q-7 8 -7 18t7 18l106 106q8 7 18 7t18 -7z" />
<glyph unicode="&#xe141;" d="M596 1192q121 0 231.5 -47.5t190 -127t127 -190t47.5 -231.5t-47.5 -231.5t-127 -190.5t-190 -127t-231.5 -47t-231.5 47t-190.5 127t-127 190.5t-47 231.5t47 231.5t127 190t190.5 127t231.5 47.5zM596 1010q-112 0 -207.5 -55.5t-151 -151t-55.5 -207.5t55.5 -207.5 t151 -151t207.5 -55.5t207.5 55.5t151 151t55.5 207.5t-55.5 207.5t-151 151t-207.5 55.5zM454.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38.5 -16.5t-38.5 16.5t-16 39t16 38.5t38.5 16zM754.5 905q22.5 0 38.5 -16t16 -38.5t-16 -39t-38 -16.5q-14 0 -29 10l-55 -145 q17 -23 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5t-61.5 25.5t-25.5 61.5q0 32 20.5 56.5t51.5 29.5l122 126l1 1q-9 14 -9 28q0 23 16 39t38.5 16zM345.5 709q22.5 0 38.5 -16t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16zM854.5 709q22.5 0 38.5 -16 t16 -38.5t-16 -38.5t-38.5 -16t-38.5 16t-16 38.5t16 38.5t38.5 16z" />
<glyph unicode="&#xe142;" d="M546 173l469 470q91 91 99 192q7 98 -52 175.5t-154 94.5q-22 4 -47 4q-34 0 -66.5 -10t-56.5 -23t-55.5 -38t-48 -41.5t-48.5 -47.5q-376 -375 -391 -390q-30 -27 -45 -41.5t-37.5 -41t-32 -46.5t-16 -47.5t-1.5 -56.5q9 -62 53.5 -95t99.5 -33q74 0 125 51l548 548 q36 36 20 75q-7 16 -21.5 26t-32.5 10q-26 0 -50 -23q-13 -12 -39 -38l-341 -338q-15 -15 -35.5 -15.5t-34.5 13.5t-14 34.5t14 34.5q327 333 361 367q35 35 67.5 51.5t78.5 16.5q14 0 29 -1q44 -8 74.5 -35.5t43.5 -68.5q14 -47 2 -96.5t-47 -84.5q-12 -11 -32 -32 t-79.5 -81t-114.5 -115t-124.5 -123.5t-123 -119.5t-96.5 -89t-57 -45q-56 -27 -120 -27q-70 0 -129 32t-93 89q-48 78 -35 173t81 163l511 511q71 72 111 96q91 55 198 55q80 0 152 -33q78 -36 129.5 -103t66.5 -154q17 -93 -11 -183.5t-94 -156.5l-482 -476 q-15 -15 -36 -16t-37 14t-17.5 34t14.5 35z" />
<glyph unicode="&#xe143;" d="M649 949q48 68 109.5 104t121.5 38.5t118.5 -20t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-150 152.5t-126.5 127.5t-93.5 124.5t-33.5 117.5q0 64 28 123t73 100.5t104 64t119 20 t120.5 -38.5t104.5 -104zM896 972q-33 0 -64.5 -19t-56.5 -46t-47.5 -53.5t-43.5 -45.5t-37.5 -19t-36 19t-40 45.5t-43 53.5t-54 46t-65.5 19q-67 0 -122.5 -55.5t-55.5 -132.5q0 -23 13.5 -51t46 -65t57.5 -63t76 -75l22 -22q15 -14 44 -44t50.5 -51t46 -44t41 -35t23 -12 t23.5 12t42.5 36t46 44t52.5 52t44 43q4 4 12 13q43 41 63.5 62t52 55t46 55t26 46t11.5 44q0 79 -53 133.5t-120 54.5z" />
<glyph unicode="&#xe144;" d="M776.5 1214q93.5 0 159.5 -66l141 -141q66 -66 66 -160q0 -42 -28 -95.5t-62 -87.5l-29 -29q-31 53 -77 99l-18 18l95 95l-247 248l-389 -389l212 -212l-105 -106l-19 18l-141 141q-66 66 -66 159t66 159l283 283q65 66 158.5 66zM600 706l105 105q10 -8 19 -17l141 -141 q66 -66 66 -159t-66 -159l-283 -283q-66 -66 -159 -66t-159 66l-141 141q-66 66 -66 159.5t66 159.5l55 55q29 -55 75 -102l18 -17l-95 -95l247 -248l389 389z" />
<glyph unicode="&#xe145;" d="M603 1200q85 0 162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5v953q0 21 30 46.5t81 48t129 37.5t163 15zM300 1000v-700h600v700h-600zM600 254q-43 0 -73.5 -30.5t-30.5 -73.5t30.5 -73.5t73.5 -30.5t73.5 30.5 t30.5 73.5t-30.5 73.5t-73.5 30.5z" />
<glyph unicode="&#xe146;" d="M902 1185l283 -282q15 -15 15 -36t-14.5 -35.5t-35.5 -14.5t-35 15l-36 35l-279 -267v-300l-212 210l-308 -307l-280 -203l203 280l307 308l-210 212h300l267 279l-35 36q-15 14 -15 35t14.5 35.5t35.5 14.5t35 -15z" />
<glyph unicode="&#xe148;" d="M700 1248v-78q38 -5 72.5 -14.5t75.5 -31.5t71 -53.5t52 -84t24 -118.5h-159q-4 36 -10.5 59t-21 45t-40 35.5t-64.5 20.5v-307l64 -13q34 -7 64 -16.5t70 -32t67.5 -52.5t47.5 -80t20 -112q0 -139 -89 -224t-244 -97v-77h-100v79q-150 16 -237 103q-40 40 -52.5 93.5 t-15.5 139.5h139q5 -77 48.5 -126t117.5 -65v335l-27 8q-46 14 -79 26.5t-72 36t-63 52t-40 72.5t-16 98q0 70 25 126t67.5 92t94.5 57t110 27v77h100zM600 754v274q-29 -4 -50 -11t-42 -21.5t-31.5 -41.5t-10.5 -65q0 -29 7 -50.5t16.5 -34t28.5 -22.5t31.5 -14t37.5 -10 q9 -3 13 -4zM700 547v-310q22 2 42.5 6.5t45 15.5t41.5 27t29 42t12 59.5t-12.5 59.5t-38 44.5t-53 31t-66.5 24.5z" />
<glyph unicode="&#xe149;" d="M561 1197q84 0 160.5 -40t123.5 -109.5t47 -147.5h-153q0 40 -19.5 71.5t-49.5 48.5t-59.5 26t-55.5 9q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -26 13.5 -63t26.5 -61t37 -66q6 -9 9 -14h241v-100h-197q8 -50 -2.5 -115t-31.5 -95q-45 -62 -99 -112 q34 10 83 17.5t71 7.5q32 1 102 -16t104 -17q83 0 136 30l50 -147q-31 -19 -58 -30.5t-55 -15.5t-42 -4.5t-46 -0.5q-23 0 -76 17t-111 32.5t-96 11.5q-39 -3 -82 -16t-67 -25l-23 -11l-55 145q4 3 16 11t15.5 10.5t13 9t15.5 12t14.5 14t17.5 18.5q48 55 54 126.5 t-30 142.5h-221v100h166q-23 47 -44 104q-7 20 -12 41.5t-6 55.5t6 66.5t29.5 70.5t58.5 71q97 88 263 88z" />
<glyph unicode="&#xe150;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM935 1184l230 -249q14 -14 10 -24.5t-25 -10.5h-150v-900h-200v900h-150q-21 0 -25 10.5t10 24.5l230 249q14 15 35 15t35 -15z" />
<glyph unicode="&#xe151;" d="M1000 700h-100v100h-100v-100h-100v500h300v-500zM400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM801 1100v-200h100v200h-100zM1000 350l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150z " />
<glyph unicode="&#xe152;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 1050l-200 -250h200v-100h-300v150l200 250h-200v100h300v-150zM1000 0h-100v100h-100v-100h-100v500h300v-500zM801 400v-200h100v200h-100z " />
<glyph unicode="&#xe153;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1000 700h-100v400h-100v100h200v-500zM1100 0h-100v100h-200v400h300v-500zM901 400v-200h100v200h-100z" />
<glyph unicode="&#xe154;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1100 700h-100v100h-200v400h300v-500zM901 1100v-200h100v200h-100zM1000 0h-100v400h-100v100h200v-500z" />
<glyph unicode="&#xe155;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM900 1000h-200v200h200v-200zM1000 700h-300v200h300v-200zM1100 400h-400v200h400v-200zM1200 100h-500v200h500v-200z" />
<glyph unicode="&#xe156;" d="M400 300h150q21 0 25 -11t-10 -25l-230 -250q-14 -15 -35 -15t-35 15l-230 250q-14 14 -10 25t25 11h150v900h200v-900zM1200 1000h-500v200h500v-200zM1100 700h-400v200h400v-200zM1000 400h-300v200h300v-200zM900 100h-200v200h200v-200z" />
<glyph unicode="&#xe157;" d="M350 1100h400q162 0 256 -93.5t94 -256.5v-400q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5z" />
<glyph unicode="&#xe158;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-163 0 -256.5 92.5t-93.5 257.5v400q0 163 94 256.5t256 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM440 770l253 -190q17 -12 17 -30t-17 -30l-253 -190q-16 -12 -28 -6.5t-12 26.5v400q0 21 12 26.5t28 -6.5z" />
<glyph unicode="&#xe159;" d="M350 1100h400q163 0 256.5 -94t93.5 -256v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 163 92.5 256.5t257.5 93.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM350 700h400q21 0 26.5 -12t-6.5 -28l-190 -253q-12 -17 -30 -17t-30 17l-190 253q-12 16 -6.5 28t26.5 12z" />
<glyph unicode="&#xe160;" d="M350 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -163 -92.5 -256.5t-257.5 -93.5h-400q-163 0 -256.5 94t-93.5 256v400q0 165 92.5 257.5t257.5 92.5zM800 900h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5 v500q0 41 -29.5 70.5t-70.5 29.5zM580 693l190 -253q12 -16 6.5 -28t-26.5 -12h-400q-21 0 -26.5 12t6.5 28l190 253q12 17 30 17t30 -17z" />
<glyph unicode="&#xe161;" d="M550 1100h400q165 0 257.5 -92.5t92.5 -257.5v-400q0 -165 -92.5 -257.5t-257.5 -92.5h-400q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h450q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-450q-21 0 -35.5 14.5t-14.5 35.5v100 q0 21 14.5 35.5t35.5 14.5zM338 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
<glyph unicode="&#xe162;" d="M793 1182l9 -9q8 -10 5 -27q-3 -11 -79 -225.5t-78 -221.5l300 1q24 0 32.5 -17.5t-5.5 -35.5q-1 0 -133.5 -155t-267 -312.5t-138.5 -162.5q-12 -15 -26 -15h-9l-9 8q-9 11 -4 32q2 9 42 123.5t79 224.5l39 110h-302q-23 0 -31 19q-10 21 6 41q75 86 209.5 237.5 t228 257t98.5 111.5q9 16 25 16h9z" />
<glyph unicode="&#xe163;" d="M350 1100h400q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-450q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h450q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400 q0 165 92.5 257.5t257.5 92.5zM938 867l324 -284q16 -14 16 -33t-16 -33l-324 -284q-16 -14 -27 -9t-11 26v150h-250q-21 0 -35.5 14.5t-14.5 35.5v200q0 21 14.5 35.5t35.5 14.5h250v150q0 21 11 26t27 -9z" />
<glyph unicode="&#xe164;" d="M750 1200h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -10.5 -25t-24.5 10l-109 109l-312 -312q-15 -15 -35.5 -15t-35.5 15l-141 141q-15 15 -15 35.5t15 35.5l312 312l-109 109q-14 14 -10 24.5t25 10.5zM456 900h-156q-41 0 -70.5 -29.5t-29.5 -70.5v-500 q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v148l200 200v-298q0 -165 -93.5 -257.5t-256.5 -92.5h-400q-165 0 -257.5 92.5t-92.5 257.5v400q0 165 92.5 257.5t257.5 92.5h300z" />
<glyph unicode="&#xe165;" d="M600 1186q119 0 227.5 -46.5t187 -125t125 -187t46.5 -227.5t-46.5 -227.5t-125 -187t-187 -125t-227.5 -46.5t-227.5 46.5t-187 125t-125 187t-46.5 227.5t46.5 227.5t125 187t187 125t227.5 46.5zM600 1022q-115 0 -212 -56.5t-153.5 -153.5t-56.5 -212t56.5 -212 t153.5 -153.5t212 -56.5t212 56.5t153.5 153.5t56.5 212t-56.5 212t-153.5 153.5t-212 56.5zM600 794q80 0 137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137t57 137t137 57z" />
<glyph unicode="&#xe166;" d="M450 1200h200q21 0 35.5 -14.5t14.5 -35.5v-350h245q20 0 25 -11t-9 -26l-383 -426q-14 -15 -33.5 -15t-32.5 15l-379 426q-13 15 -8.5 26t25.5 11h250v350q0 21 14.5 35.5t35.5 14.5zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
<glyph unicode="&#xe167;" d="M583 1182l378 -435q14 -15 9 -31t-26 -16h-244v-250q0 -20 -17 -35t-39 -15h-200q-20 0 -32 14.5t-12 35.5v250h-250q-20 0 -25.5 16.5t8.5 31.5l383 431q14 16 33.5 17t33.5 -14zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5z M900 200v-50h100v50h-100z" />
<glyph unicode="&#xe168;" d="M396 723l369 369q7 7 17.5 7t17.5 -7l139 -139q7 -8 7 -18.5t-7 -17.5l-525 -525q-7 -8 -17.5 -8t-17.5 8l-292 291q-7 8 -7 18t7 18l139 139q8 7 18.5 7t17.5 -7zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50 h-100z" />
<glyph unicode="&#xe169;" d="M135 1023l142 142q14 14 35 14t35 -14l77 -77l-212 -212l-77 76q-14 15 -14 36t14 35zM655 855l210 210q14 14 24.5 10t10.5 -25l-2 -599q-1 -20 -15.5 -35t-35.5 -15l-597 -1q-21 0 -25 10.5t10 24.5l208 208l-154 155l212 212zM50 300h1000q21 0 35.5 -14.5t14.5 -35.5 v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
<glyph unicode="&#xe170;" d="M350 1200l599 -2q20 -1 35 -15.5t15 -35.5l1 -597q0 -21 -10.5 -25t-24.5 10l-208 208l-155 -154l-212 212l155 154l-210 210q-14 14 -10 24.5t25 10.5zM524 512l-76 -77q-15 -14 -36 -14t-35 14l-142 142q-14 14 -14 35t14 35l77 77zM50 300h1000q21 0 35.5 -14.5 t14.5 -35.5v-250h-1100v250q0 21 14.5 35.5t35.5 14.5zM900 200v-50h100v50h-100z" />
<glyph unicode="&#xe171;" d="M1200 103l-483 276l-314 -399v423h-399l1196 796v-1096zM483 424v-230l683 953z" />
<glyph unicode="&#xe172;" d="M1100 1000v-850q0 -21 -14.5 -35.5t-35.5 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200z" />
<glyph unicode="&#xe173;" d="M1100 1000l-2 -149l-299 -299l-95 95q-9 9 -21.5 9t-21.5 -9l-149 -147h-312v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1132 638l106 -106q7 -7 7 -17.5t-7 -17.5l-420 -421q-8 -7 -18 -7 t-18 7l-202 203q-8 7 -8 17.5t8 17.5l106 106q7 8 17.5 8t17.5 -8l79 -79l297 297q7 7 17.5 7t17.5 -7z" />
<glyph unicode="&#xe174;" d="M1100 1000v-269l-103 -103l-134 134q-15 15 -33.5 16.5t-34.5 -12.5l-266 -266h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM1202 572l70 -70q15 -15 15 -35.5t-15 -35.5l-131 -131 l131 -131q15 -15 15 -35.5t-15 -35.5l-70 -70q-15 -15 -35.5 -15t-35.5 15l-131 131l-131 -131q-15 -15 -35.5 -15t-35.5 15l-70 70q-15 15 -15 35.5t15 35.5l131 131l-131 131q-15 15 -15 35.5t15 35.5l70 70q15 15 35.5 15t35.5 -15l131 -131l131 131q15 15 35.5 15 t35.5 -15z" />
<glyph unicode="&#xe175;" d="M1100 1000v-300h-350q-21 0 -35.5 -14.5t-14.5 -35.5v-150h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM850 600h100q21 0 35.5 -14.5t14.5 -35.5v-250h150q21 0 25 -10.5t-10 -24.5 l-230 -230q-14 -14 -35 -14t-35 14l-230 230q-14 14 -10 24.5t25 10.5h150v250q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe176;" d="M1100 1000v-400l-165 165q-14 15 -35 15t-35 -15l-263 -265h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100zM700 1000h-100v200h100v-200zM935 565l230 -229q14 -15 10 -25.5t-25 -10.5h-150v-250q0 -20 -14.5 -35 t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35v250h-150q-21 0 -25 10.5t10 25.5l230 229q14 15 35 15t35 -15z" />
<glyph unicode="&#xe177;" d="M50 1100h1100q21 0 35.5 -14.5t14.5 -35.5v-150h-1200v150q0 21 14.5 35.5t35.5 14.5zM1200 800v-550q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v550h1200zM100 500v-200h400v200h-400z" />
<glyph unicode="&#xe178;" d="M935 1165l248 -230q14 -14 14 -35t-14 -35l-248 -230q-14 -14 -24.5 -10t-10.5 25v150h-400v200h400v150q0 21 10.5 25t24.5 -10zM200 800h-50q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v-200zM400 800h-100v200h100v-200zM18 435l247 230 q14 14 24.5 10t10.5 -25v-150h400v-200h-400v-150q0 -21 -10.5 -25t-24.5 10l-247 230q-15 14 -15 35t15 35zM900 300h-100v200h100v-200zM1000 500h51q20 0 34.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-34.5 -14.5h-51v200z" />
<glyph unicode="&#xe179;" d="M862 1073l276 116q25 18 43.5 8t18.5 -41v-1106q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v397q-4 1 -11 5t-24 17.5t-30 29t-24 42t-11 56.5v359q0 31 18.5 65t43.5 52zM550 1200q22 0 34.5 -12.5t14.5 -24.5l1 -13v-450q0 -28 -10.5 -59.5 t-25 -56t-29 -45t-25.5 -31.5l-10 -11v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447q-4 4 -11 11.5t-24 30.5t-30 46t-24 55t-11 60v450q0 2 0.5 5.5t4 12t8.5 15t14.5 12t22.5 5.5q20 0 32.5 -12.5t14.5 -24.5l3 -13v-350h100v350v5.5t2.5 12 t7 15t15 12t25.5 5.5q23 0 35.5 -12.5t13.5 -24.5l1 -13v-350h100v350q0 2 0.5 5.5t3 12t7 15t15 12t24.5 5.5z" />
<glyph unicode="&#xe180;" d="M1200 1100v-56q-4 0 -11 -0.5t-24 -3t-30 -7.5t-24 -15t-11 -24v-888q0 -22 25 -34.5t50 -13.5l25 -2v-56h-400v56q75 0 87.5 6.5t12.5 43.5v394h-500v-394q0 -37 12.5 -43.5t87.5 -6.5v-56h-400v56q4 0 11 0.5t24 3t30 7.5t24 15t11 24v888q0 22 -25 34.5t-50 13.5 l-25 2v56h400v-56q-75 0 -87.5 -6.5t-12.5 -43.5v-394h500v394q0 37 -12.5 43.5t-87.5 6.5v56h400z" />
<glyph unicode="&#xe181;" d="M675 1000h375q21 0 35.5 -14.5t14.5 -35.5v-150h-105l-295 -98v98l-200 200h-400l100 100h375zM100 900h300q41 0 70.5 -29.5t29.5 -70.5v-500q0 -41 -29.5 -70.5t-70.5 -29.5h-300q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5zM100 800v-200h300v200 h-300zM1100 535l-400 -133v163l400 133v-163zM100 500v-200h300v200h-300zM1100 398v-248q0 -21 -14.5 -35.5t-35.5 -14.5h-375l-100 -100h-375l-100 100h400l200 200h105z" />
<glyph unicode="&#xe182;" d="M17 1007l162 162q17 17 40 14t37 -22l139 -194q14 -20 11 -44.5t-20 -41.5l-119 -118q102 -142 228 -268t267 -227l119 118q17 17 42.5 19t44.5 -12l192 -136q19 -14 22.5 -37.5t-13.5 -40.5l-163 -162q-3 -1 -9.5 -1t-29.5 2t-47.5 6t-62.5 14.5t-77.5 26.5t-90 42.5 t-101.5 60t-111 83t-119 108.5q-74 74 -133.5 150.5t-94.5 138.5t-60 119.5t-34.5 100t-15 74.5t-4.5 48z" />
<glyph unicode="&#xe183;" d="M600 1100q92 0 175 -10.5t141.5 -27t108.5 -36.5t81.5 -40t53.5 -37t31 -27l9 -10v-200q0 -21 -14.5 -33t-34.5 -9l-202 34q-20 3 -34.5 20t-14.5 38v146q-141 24 -300 24t-300 -24v-146q0 -21 -14.5 -38t-34.5 -20l-202 -34q-20 -3 -34.5 9t-14.5 33v200q3 4 9.5 10.5 t31 26t54 37.5t80.5 39.5t109 37.5t141 26.5t175 10.5zM600 795q56 0 97 -9.5t60 -23.5t30 -28t12 -24l1 -10v-50l365 -303q14 -15 24.5 -40t10.5 -45v-212q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v212q0 20 10.5 45t24.5 40l365 303v50 q0 4 1 10.5t12 23t30 29t60 22.5t97 10z" />
<glyph unicode="&#xe184;" d="M1100 700l-200 -200h-600l-200 200v500h200v-200h200v200h200v-200h200v200h200v-500zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5 t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe185;" d="M700 1100h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-1000h300v1000q0 41 -29.5 70.5t-70.5 29.5zM1100 800h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-700h300v700q0 41 -29.5 70.5t-70.5 29.5zM400 0h-300v400q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-400z " />
<glyph unicode="&#xe186;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
<glyph unicode="&#xe187;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 300h-100v200h-100v-200h-100v500h100v-200h100v200h100v-500zM900 700v-300l-100 -100h-200v500h200z M700 700v-300h100v300h-100z" />
<glyph unicode="&#xe188;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-300h200v-100h-300v500h300v-100zM900 700h-200v-300h200v-100h-300v500h300v-100z" />
<glyph unicode="&#xe189;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 400l-300 150l300 150v-300zM900 550l-300 -150v300z" />
<glyph unicode="&#xe190;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM900 300h-700v500h700v-500zM800 700h-130q-38 0 -66.5 -43t-28.5 -108t27 -107t68 -42h130v300zM300 700v-300 h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130z" />
<glyph unicode="&#xe191;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 700h-200v-100h200v-300h-300v100h200v100h-200v300h300v-100zM900 300h-100v400h-100v100h200v-500z M700 300h-100v100h100v-100z" />
<glyph unicode="&#xe192;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM300 700h200v-400h-300v500h100v-100zM900 300h-100v400h-100v100h200v-500zM300 600v-200h100v200h-100z M700 300h-100v100h100v-100z" />
<glyph unicode="&#xe193;" d="M200 1100h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212v500q0 124 88 212t212 88zM100 900v-700h900v700h-900zM500 500l-199 -200h-100v50l199 200v150h-200v100h300v-300zM900 300h-100v400h-100v100h200v-500zM701 300h-100 v100h100v-100z" />
<glyph unicode="&#xe194;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700h-300v-200h300v-100h-300l-100 100v200l100 100h300v-100z" />
<glyph unicode="&#xe195;" d="M600 1191q120 0 229.5 -47t188.5 -126t126 -188.5t47 -229.5t-47 -229.5t-126 -188.5t-188.5 -126t-229.5 -47t-229.5 47t-188.5 126t-126 188.5t-47 229.5t47 229.5t126 188.5t188.5 126t229.5 47zM600 1021q-114 0 -211 -56.5t-153.5 -153.5t-56.5 -211t56.5 -211 t153.5 -153.5t211 -56.5t211 56.5t153.5 153.5t56.5 211t-56.5 211t-153.5 153.5t-211 56.5zM800 700v-100l-50 -50l100 -100v-50h-100l-100 100h-150v-100h-100v400h300zM500 700v-100h200v100h-200z" />
<glyph unicode="&#xe197;" d="M503 1089q110 0 200.5 -59.5t134.5 -156.5q44 14 90 14q120 0 205 -86.5t85 -207t-85 -207t-205 -86.5h-128v250q0 21 -14.5 35.5t-35.5 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-250h-222q-80 0 -136 57.5t-56 136.5q0 69 43 122.5t108 67.5q-2 19 -2 37q0 100 49 185 t134 134t185 49zM525 500h150q10 0 17.5 -7.5t7.5 -17.5v-275h137q21 0 26 -11.5t-8 -27.5l-223 -244q-13 -16 -32 -16t-32 16l-223 244q-13 16 -8 27.5t26 11.5h137v275q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe198;" d="M502 1089q110 0 201 -59.5t135 -156.5q43 15 89 15q121 0 206 -86.5t86 -206.5q0 -99 -60 -181t-150 -110l-378 360q-13 16 -31.5 16t-31.5 -16l-381 -365h-9q-79 0 -135.5 57.5t-56.5 136.5q0 69 43 122.5t108 67.5q-2 19 -2 38q0 100 49 184.5t133.5 134t184.5 49.5z M632 467l223 -228q13 -16 8 -27.5t-26 -11.5h-137v-275q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v275h-137q-21 0 -26 11.5t8 27.5q199 204 223 228q19 19 31.5 19t32.5 -19z" />
<glyph unicode="&#xe199;" d="M700 100v100h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170l-270 -300h400v-100h-50q-21 0 -35.5 -14.5t-14.5 -35.5v-50h400v50q0 21 -14.5 35.5t-35.5 14.5h-50z" />
<glyph unicode="&#xe200;" d="M600 1179q94 0 167.5 -56.5t99.5 -145.5q89 -6 150.5 -71.5t61.5 -155.5q0 -61 -29.5 -112.5t-79.5 -82.5q9 -29 9 -55q0 -74 -52.5 -126.5t-126.5 -52.5q-55 0 -100 30v-251q21 0 35.5 -14.5t14.5 -35.5v-50h-300v50q0 21 14.5 35.5t35.5 14.5v251q-45 -30 -100 -30 q-74 0 -126.5 52.5t-52.5 126.5q0 18 4 38q-47 21 -75.5 65t-28.5 97q0 74 52.5 126.5t126.5 52.5q5 0 23 -2q0 2 -1 10t-1 13q0 116 81.5 197.5t197.5 81.5z" />
<glyph unicode="&#xe201;" d="M1010 1010q111 -111 150.5 -260.5t0 -299t-150.5 -260.5q-83 -83 -191.5 -126.5t-218.5 -43.5t-218.5 43.5t-191.5 126.5q-111 111 -150.5 260.5t0 299t150.5 260.5q83 83 191.5 126.5t218.5 43.5t218.5 -43.5t191.5 -126.5zM476 1065q-4 0 -8 -1q-121 -34 -209.5 -122.5 t-122.5 -209.5q-4 -12 2.5 -23t18.5 -14l36 -9q3 -1 7 -1q23 0 29 22q27 96 98 166q70 71 166 98q11 3 17.5 13.5t3.5 22.5l-9 35q-3 13 -14 19q-7 4 -15 4zM512 920q-4 0 -9 -2q-80 -24 -138.5 -82.5t-82.5 -138.5q-4 -13 2 -24t19 -14l34 -9q4 -1 8 -1q22 0 28 21 q18 58 58.5 98.5t97.5 58.5q12 3 18 13.5t3 21.5l-9 35q-3 12 -14 19q-7 4 -15 4zM719.5 719.5q-49.5 49.5 -119.5 49.5t-119.5 -49.5t-49.5 -119.5t49.5 -119.5t119.5 -49.5t119.5 49.5t49.5 119.5t-49.5 119.5zM855 551q-22 0 -28 -21q-18 -58 -58.5 -98.5t-98.5 -57.5 q-11 -4 -17 -14.5t-3 -21.5l9 -35q3 -12 14 -19q7 -4 15 -4q4 0 9 2q80 24 138.5 82.5t82.5 138.5q4 13 -2.5 24t-18.5 14l-34 9q-4 1 -8 1zM1000 515q-23 0 -29 -22q-27 -96 -98 -166q-70 -71 -166 -98q-11 -3 -17.5 -13.5t-3.5 -22.5l9 -35q3 -13 14 -19q7 -4 15 -4 q4 0 8 1q121 34 209.5 122.5t122.5 209.5q4 12 -2.5 23t-18.5 14l-36 9q-3 1 -7 1z" />
<glyph unicode="&#xe202;" d="M700 800h300v-380h-180v200h-340v-200h-380v755q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM700 300h162l-212 -212l-212 212h162v200h100v-200zM520 0h-395q-10 0 -17.5 7.5t-7.5 17.5v395zM1000 220v-195q0 -10 -7.5 -17.5t-17.5 -7.5h-195z" />
<glyph unicode="&#xe203;" d="M700 800h300v-520l-350 350l-550 -550v1095q0 10 7.5 17.5t17.5 7.5h575v-400zM1000 900h-200v200zM862 200h-162v-200h-100v200h-162l212 212zM480 0h-355q-10 0 -17.5 7.5t-7.5 17.5v55h380v-80zM1000 80v-55q0 -10 -7.5 -17.5t-17.5 -7.5h-155v80h180z" />
<glyph unicode="&#xe204;" d="M1162 800h-162v-200h100l100 -100h-300v300h-162l212 212zM200 800h200q27 0 40 -2t29.5 -10.5t23.5 -30t7 -57.5h300v-100h-600l-200 -350v450h100q0 36 7 57.5t23.5 30t29.5 10.5t40 2zM800 400h240l-240 -400h-800l300 500h500v-100z" />
<glyph unicode="&#xe205;" d="M650 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM1000 850v150q41 0 70.5 -29.5t29.5 -70.5v-800 q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-1 0 -20 4l246 246l-326 326v324q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM412 250l-212 -212v162h-200v100h200v162z" />
<glyph unicode="&#xe206;" d="M450 1100h100q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-300q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h50v50q0 21 14.5 35.5t35.5 14.5zM800 850v150q41 0 70.5 -29.5t29.5 -70.5v-500 h-200v-300h200q0 -36 -7 -57.5t-23.5 -30t-29.5 -10.5t-40 -2h-600q-41 0 -70.5 29.5t-29.5 70.5v800q0 41 29.5 70.5t70.5 29.5v-150q0 -62 44 -106t106 -44h300q62 0 106 44t44 106zM1212 250l-212 -212v162h-200v100h200v162z" />
<glyph unicode="&#xe209;" d="M658 1197l637 -1104q23 -38 7 -65.5t-60 -27.5h-1276q-44 0 -60 27.5t7 65.5l637 1104q22 39 54 39t54 -39zM704 800h-208q-20 0 -32 -14.5t-8 -34.5l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5t21.5 34.5l58 302q4 20 -8 34.5t-32 14.5zM500 300v-100h200 v100h-200z" />
<glyph unicode="&#xe210;" d="M425 1100h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM825 800h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM25 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5zM425 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 500h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5 v150q0 10 7.5 17.5t17.5 7.5zM25 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM425 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5 t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM825 200h250q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-250q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe211;" d="M700 1200h100v-200h-100v-100h350q62 0 86.5 -39.5t-3.5 -94.5l-66 -132q-41 -83 -81 -134h-772q-40 51 -81 134l-66 132q-28 55 -3.5 94.5t86.5 39.5h350v100h-100v200h100v100h200v-100zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-12l137 -100 h-950l138 100h-13q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe212;" d="M600 1300q40 0 68.5 -29.5t28.5 -70.5h-194q0 41 28.5 70.5t68.5 29.5zM443 1100h314q18 -37 18 -75q0 -8 -3 -25h328q41 0 44.5 -16.5t-30.5 -38.5l-175 -145h-678l-178 145q-34 22 -29 38.5t46 16.5h328q-3 17 -3 25q0 38 18 75zM250 700h700q21 0 35.5 -14.5 t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-150v-200l275 -200h-950l275 200v200h-150q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe213;" d="M600 1181q75 0 128 -53t53 -128t-53 -128t-128 -53t-128 53t-53 128t53 128t128 53zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13 l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe214;" d="M600 1300q47 0 92.5 -53.5t71 -123t25.5 -123.5q0 -78 -55.5 -133.5t-133.5 -55.5t-133.5 55.5t-55.5 133.5q0 62 34 143l144 -143l111 111l-163 163q34 26 63 26zM602 798h46q34 0 55.5 -28.5t21.5 -86.5q0 -76 39 -183h-324q39 107 39 183q0 58 21.5 86.5t56.5 28.5h45 zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe215;" d="M600 1200l300 -161v-139h-300q0 -57 18.5 -108t50 -91.5t63 -72t70 -67.5t57.5 -61h-530q-60 83 -90.5 177.5t-30.5 178.5t33 164.5t87.5 139.5t126 96.5t145.5 41.5v-98zM250 400h700q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-13l138 -100h-950l137 100 h-12q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5zM50 100h1100q21 0 35.5 -14.5t14.5 -35.5v-50h-1200v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe216;" d="M600 1300q41 0 70.5 -29.5t29.5 -70.5v-78q46 -26 73 -72t27 -100v-50h-400v50q0 54 27 100t73 72v78q0 41 29.5 70.5t70.5 29.5zM400 800h400q54 0 100 -27t72 -73h-172v-100h200v-100h-200v-100h200v-100h-200v-100h200q0 -83 -58.5 -141.5t-141.5 -58.5h-400 q-83 0 -141.5 58.5t-58.5 141.5v400q0 83 58.5 141.5t141.5 58.5z" />
<glyph unicode="&#xe218;" d="M150 1100h900q21 0 35.5 -14.5t14.5 -35.5v-500q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v500q0 21 14.5 35.5t35.5 14.5zM125 400h950q10 0 17.5 -7.5t7.5 -17.5v-50q0 -10 -7.5 -17.5t-17.5 -7.5h-283l224 -224q13 -13 13 -31.5t-13 -32 t-31.5 -13.5t-31.5 13l-88 88h-524l-87 -88q-13 -13 -32 -13t-32 13.5t-13 32t13 31.5l224 224h-289q-10 0 -17.5 7.5t-7.5 17.5v50q0 10 7.5 17.5t17.5 7.5zM541 300l-100 -100h324l-100 100h-124z" />
<glyph unicode="&#xe219;" d="M200 1100h800q83 0 141.5 -58.5t58.5 -141.5v-200h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100q0 41 -29.5 70.5t-70.5 29.5h-250q-41 0 -70.5 -29.5t-29.5 -70.5h-100v200q0 83 58.5 141.5t141.5 58.5zM100 600h1000q41 0 70.5 -29.5 t29.5 -70.5v-300h-1200v300q0 41 29.5 70.5t70.5 29.5zM300 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200zM1100 100v-50q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v50h200z" />
<glyph unicode="&#xe221;" d="M480 1165l682 -683q31 -31 31 -75.5t-31 -75.5l-131 -131h-481l-517 518q-32 31 -32 75.5t32 75.5l295 296q31 31 75.5 31t76.5 -31zM108 794l342 -342l303 304l-341 341zM250 100h800q21 0 35.5 -14.5t14.5 -35.5v-50h-900v50q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe223;" d="M1057 647l-189 506q-8 19 -27.5 33t-40.5 14h-400q-21 0 -40.5 -14t-27.5 -33l-189 -506q-8 -19 1.5 -33t30.5 -14h625v-150q0 -21 14.5 -35.5t35.5 -14.5t35.5 14.5t14.5 35.5v150h125q21 0 30.5 14t1.5 33zM897 0h-595v50q0 21 14.5 35.5t35.5 14.5h50v50 q0 21 14.5 35.5t35.5 14.5h48v300h200v-300h47q21 0 35.5 -14.5t14.5 -35.5v-50h50q21 0 35.5 -14.5t14.5 -35.5v-50z" />
<glyph unicode="&#xe224;" d="M900 800h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-375v591l-300 300v84q0 10 7.5 17.5t17.5 7.5h375v-400zM1200 900h-200v200zM400 600h300v-575q0 -10 -7.5 -17.5t-17.5 -7.5h-650q-10 0 -17.5 7.5t-7.5 17.5v950q0 10 7.5 17.5t17.5 7.5h375v-400zM700 700h-200v200z " />
<glyph unicode="&#xe225;" d="M484 1095h195q75 0 146 -32.5t124 -86t89.5 -122.5t48.5 -142q18 -14 35 -20q31 -10 64.5 6.5t43.5 48.5q10 34 -15 71q-19 27 -9 43q5 8 12.5 11t19 -1t23.5 -16q41 -44 39 -105q-3 -63 -46 -106.5t-104 -43.5h-62q-7 -55 -35 -117t-56 -100l-39 -234q-3 -20 -20 -34.5 t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l12 70q-49 -14 -91 -14h-195q-24 0 -65 8l-11 -64q-3 -20 -20 -34.5t-38 -14.5h-100q-21 0 -33 14.5t-9 34.5l26 157q-84 74 -128 175l-159 53q-19 7 -33 26t-14 40v50q0 21 14.5 35.5t35.5 14.5h124q11 87 56 166l-111 95 q-16 14 -12.5 23.5t24.5 9.5h203q116 101 250 101zM675 1000h-250q-10 0 -17.5 -7.5t-7.5 -17.5v-50q0 -10 7.5 -17.5t17.5 -7.5h250q10 0 17.5 7.5t7.5 17.5v50q0 10 -7.5 17.5t-17.5 7.5z" />
<glyph unicode="&#xe226;" d="M641 900l423 247q19 8 42 2.5t37 -21.5l32 -38q14 -15 12.5 -36t-17.5 -34l-139 -120h-390zM50 1100h106q67 0 103 -17t66 -71l102 -212h823q21 0 35.5 -14.5t14.5 -35.5v-50q0 -21 -14 -40t-33 -26l-737 -132q-23 -4 -40 6t-26 25q-42 67 -100 67h-300q-62 0 -106 44 t-44 106v200q0 62 44 106t106 44zM173 928h-80q-19 0 -28 -14t-9 -35v-56q0 -51 42 -51h134q16 0 21.5 8t5.5 24q0 11 -16 45t-27 51q-18 28 -43 28zM550 727q-32 0 -54.5 -22.5t-22.5 -54.5t22.5 -54.5t54.5 -22.5t54.5 22.5t22.5 54.5t-22.5 54.5t-54.5 22.5zM130 389 l152 130q18 19 34 24t31 -3.5t24.5 -17.5t25.5 -28q28 -35 50.5 -51t48.5 -13l63 5l48 -179q13 -61 -3.5 -97.5t-67.5 -79.5l-80 -69q-47 -40 -109 -35.5t-103 51.5l-130 151q-40 47 -35.5 109.5t51.5 102.5zM380 377l-102 -88q-31 -27 2 -65l37 -43q13 -15 27.5 -19.5 t31.5 6.5l61 53q19 16 14 49q-2 20 -12 56t-17 45q-11 12 -19 14t-23 -8z" />
<glyph unicode="&#xe227;" d="M625 1200h150q10 0 17.5 -7.5t7.5 -17.5v-109q79 -33 131 -87.5t53 -128.5q1 -46 -15 -84.5t-39 -61t-46 -38t-39 -21.5l-17 -6q6 0 15 -1.5t35 -9t50 -17.5t53 -30t50 -45t35.5 -64t14.5 -84q0 -59 -11.5 -105.5t-28.5 -76.5t-44 -51t-49.5 -31.5t-54.5 -16t-49.5 -6.5 t-43.5 -1v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-100v-75q0 -10 -7.5 -17.5t-17.5 -7.5h-150q-10 0 -17.5 7.5t-7.5 17.5v75h-175q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5h75v600h-75q-10 0 -17.5 7.5t-7.5 17.5v150 q0 10 7.5 17.5t17.5 7.5h175v75q0 10 7.5 17.5t17.5 7.5h150q10 0 17.5 -7.5t7.5 -17.5v-75h100v75q0 10 7.5 17.5t17.5 7.5zM400 900v-200h263q28 0 48.5 10.5t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-263zM400 500v-200h363q28 0 48.5 10.5 t30 25t15 29t5.5 25.5l1 10q0 4 -0.5 11t-6 24t-15 30t-30 24t-48.5 11h-363z" />
<glyph unicode="&#xe230;" d="M212 1198h780q86 0 147 -61t61 -147v-416q0 -51 -18 -142.5t-36 -157.5l-18 -66q-29 -87 -93.5 -146.5t-146.5 -59.5h-572q-82 0 -147 59t-93 147q-8 28 -20 73t-32 143.5t-20 149.5v416q0 86 61 147t147 61zM600 1045q-70 0 -132.5 -11.5t-105.5 -30.5t-78.5 -41.5 t-57 -45t-36 -41t-20.5 -30.5l-6 -12l156 -243h560l156 243q-2 5 -6 12.5t-20 29.5t-36.5 42t-57 44.5t-79 42t-105 29.5t-132.5 12zM762 703h-157l195 261z" />
<glyph unicode="&#xe231;" d="M475 1300h150q103 0 189 -86t86 -189v-500q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
<glyph unicode="&#xe232;" d="M475 1300h96q0 -150 89.5 -239.5t239.5 -89.5v-446q0 -41 -42 -83t-83 -42h-450q-41 0 -83 42t-42 83v500q0 103 86 189t189 86zM700 300v-225q0 -21 -27 -48t-48 -27h-150q-21 0 -48 27t-27 48v225h300z" />
<glyph unicode="&#xe233;" d="M1294 767l-638 -283l-378 170l-78 -60v-224l100 -150v-199l-150 148l-150 -149v200l100 150v250q0 4 -0.5 10.5t0 9.5t1 8t3 8t6.5 6l47 40l-147 65l642 283zM1000 380l-350 -166l-350 166v147l350 -165l350 165v-147z" />
<glyph unicode="&#xe234;" d="M250 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM650 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM1050 800q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
<glyph unicode="&#xe235;" d="M550 1100q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 700q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44zM550 300q62 0 106 -44t44 -106t-44 -106t-106 -44t-106 44t-44 106t44 106t106 44z" />
<glyph unicode="&#xe236;" d="M125 1100h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5zM125 700h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5 t17.5 7.5zM125 300h950q10 0 17.5 -7.5t7.5 -17.5v-150q0 -10 -7.5 -17.5t-17.5 -7.5h-950q-10 0 -17.5 7.5t-7.5 17.5v150q0 10 7.5 17.5t17.5 7.5z" />
<glyph unicode="&#xe237;" d="M350 1200h500q162 0 256 -93.5t94 -256.5v-500q0 -165 -93.5 -257.5t-256.5 -92.5h-500q-165 0 -257.5 92.5t-92.5 257.5v500q0 165 92.5 257.5t257.5 92.5zM900 1000h-600q-41 0 -70.5 -29.5t-29.5 -70.5v-600q0 -41 29.5 -70.5t70.5 -29.5h600q41 0 70.5 29.5 t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5zM350 900h500q21 0 35.5 -14.5t14.5 -35.5v-300q0 -21 -14.5 -35.5t-35.5 -14.5h-500q-21 0 -35.5 14.5t-14.5 35.5v300q0 21 14.5 35.5t35.5 14.5zM400 800v-200h400v200h-400z" />
<glyph unicode="&#xe238;" d="M150 1100h1000q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5t-35.5 -14.5h-50v-200h50q21 0 35.5 -14.5t14.5 -35.5t-14.5 -35.5 t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5h50v200h-50q-21 0 -35.5 14.5t-14.5 35.5t14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe239;" d="M650 1187q87 -67 118.5 -156t0 -178t-118.5 -155q-87 66 -118.5 155t0 178t118.5 156zM300 800q124 0 212 -88t88 -212q-124 0 -212 88t-88 212zM1000 800q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM300 500q124 0 212 -88t88 -212q-124 0 -212 88t-88 212z M1000 500q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM700 199v-144q0 -21 -14.5 -35.5t-35.5 -14.5t-35.5 14.5t-14.5 35.5v142q40 -4 43 -4q17 0 57 6z" />
<glyph unicode="&#xe240;" d="M745 878l69 19q25 6 45 -12l298 -295q11 -11 15 -26.5t-2 -30.5q-5 -14 -18 -23.5t-28 -9.5h-8q1 0 1 -13q0 -29 -2 -56t-8.5 -62t-20 -63t-33 -53t-51 -39t-72.5 -14h-146q-184 0 -184 288q0 24 10 47q-20 4 -62 4t-63 -4q11 -24 11 -47q0 -288 -184 -288h-142 q-48 0 -84.5 21t-56 51t-32 71.5t-16 75t-3.5 68.5q0 13 2 13h-7q-15 0 -27.5 9.5t-18.5 23.5q-6 15 -2 30.5t15 25.5l298 296q20 18 46 11l76 -19q20 -5 30.5 -22.5t5.5 -37.5t-22.5 -31t-37.5 -5l-51 12l-182 -193h891l-182 193l-44 -12q-20 -5 -37.5 6t-22.5 31t6 37.5 t31 22.5z" />
<glyph unicode="&#xe241;" d="M1200 900h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-200v-850q0 -22 25 -34.5t50 -13.5l25 -2v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v850h-200q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h1000v-300zM500 450h-25q0 15 -4 24.5t-9 14.5t-17 7.5t-20 3t-25 0.5h-100v-425q0 -11 12.5 -17.5t25.5 -7.5h12v-50h-200v50q50 0 50 25v425h-100q-17 0 -25 -0.5t-20 -3t-17 -7.5t-9 -14.5t-4 -24.5h-25v150h500v-150z" />
<glyph unicode="&#xe242;" d="M1000 300v50q-25 0 -55 32q-14 14 -25 31t-16 27l-4 11l-289 747h-69l-300 -754q-18 -35 -39 -56q-9 -9 -24.5 -18.5t-26.5 -14.5l-11 -5v-50h273v50q-49 0 -78.5 21.5t-11.5 67.5l69 176h293l61 -166q13 -34 -3.5 -66.5t-55.5 -32.5v-50h312zM412 691l134 342l121 -342 h-255zM1100 150v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5z" />
<glyph unicode="&#xe243;" d="M50 1200h1100q21 0 35.5 -14.5t14.5 -35.5v-1100q0 -21 -14.5 -35.5t-35.5 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5v1100q0 21 14.5 35.5t35.5 14.5zM611 1118h-70q-13 0 -18 -12l-299 -753q-17 -32 -35 -51q-18 -18 -56 -34q-12 -5 -12 -18v-50q0 -8 5.5 -14t14.5 -6 h273q8 0 14 6t6 14v50q0 8 -6 14t-14 6q-55 0 -71 23q-10 14 0 39l63 163h266l57 -153q11 -31 -6 -55q-12 -17 -36 -17q-8 0 -14 -6t-6 -14v-50q0 -8 6 -14t14 -6h313q8 0 14 6t6 14v50q0 7 -5.5 13t-13.5 7q-17 0 -42 25q-25 27 -40 63h-1l-288 748q-5 12 -19 12zM639 611 h-197l103 264z" />
<glyph unicode="&#xe244;" d="M1200 1100h-1200v100h1200v-100zM50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 1000h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM700 900v-300h300v300h-300z" />
<glyph unicode="&#xe245;" d="M50 1200h400q21 0 35.5 -14.5t14.5 -35.5v-900q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v900q0 21 14.5 35.5t35.5 14.5zM650 700h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400 q0 21 14.5 35.5t35.5 14.5zM700 600v-300h300v300h-300zM1200 0h-1200v100h1200v-100z" />
<glyph unicode="&#xe246;" d="M50 1000h400q21 0 35.5 -14.5t14.5 -35.5v-350h100v150q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-150h100v-100h-100v-150q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v150h-100v-350q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5v800q0 21 14.5 35.5t35.5 14.5zM700 700v-300h300v300h-300z" />
<glyph unicode="&#xe247;" d="M100 0h-100v1200h100v-1200zM250 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM300 1000v-300h300v300h-300zM250 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe248;" d="M600 1100h150q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-100h450q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h350v100h-150q-21 0 -35.5 14.5 t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5h150v100h100v-100zM400 1000v-300h300v300h-300z" />
<glyph unicode="&#xe249;" d="M1200 0h-100v1200h100v-1200zM550 1100h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM600 1000v-300h300v300h-300zM50 500h900q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-900q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5z" />
<glyph unicode="&#xe250;" d="M865 565l-494 -494q-23 -23 -41 -23q-14 0 -22 13.5t-8 38.5v1000q0 25 8 38.5t22 13.5q18 0 41 -23l494 -494q14 -14 14 -35t-14 -35z" />
<glyph unicode="&#xe251;" d="M335 635l494 494q29 29 50 20.5t21 -49.5v-1000q0 -41 -21 -49.5t-50 20.5l-494 494q-14 14 -14 35t14 35z" />
<glyph unicode="&#xe252;" d="M100 900h1000q41 0 49.5 -21t-20.5 -50l-494 -494q-14 -14 -35 -14t-35 14l-494 494q-29 29 -20.5 50t49.5 21z" />
<glyph unicode="&#xe253;" d="M635 865l494 -494q29 -29 20.5 -50t-49.5 -21h-1000q-41 0 -49.5 21t20.5 50l494 494q14 14 35 14t35 -14z" />
<glyph unicode="&#xe254;" d="M700 741v-182l-692 -323v221l413 193l-413 193v221zM1200 0h-800v200h800v-200z" />
<glyph unicode="&#xe255;" d="M1200 900h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300zM0 700h50q0 21 4 37t9.5 26.5t18 17.5t22 11t28.5 5.5t31 2t37 0.5h100v-550q0 -22 -25 -34.5t-50 -13.5l-25 -2v-100h400v100q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v550h100q25 0 37 -0.5t31 -2 t28.5 -5.5t22 -11t18 -17.5t9.5 -26.5t4 -37h50v300h-800v-300z" />
<glyph unicode="&#xe256;" d="M800 700h-50q0 21 -4 37t-9.5 26.5t-18 17.5t-22 11t-28.5 5.5t-31 2t-37 0.5h-100v-550q0 -22 25 -34.5t50 -14.5l25 -1v-100h-400v100q4 0 11 0.5t24 3t30 7t24 15t11 24.5v550h-100q-25 0 -37 -0.5t-31 -2t-28.5 -5.5t-22 -11t-18 -17.5t-9.5 -26.5t-4 -37h-50v300 h800v-300zM1100 200h-200v-100h200v-100h-300v300h200v100h-200v100h300v-300z" />
<glyph unicode="&#xe257;" d="M701 1098h160q16 0 21 -11t-7 -23l-464 -464l464 -464q12 -12 7 -23t-21 -11h-160q-13 0 -23 9l-471 471q-7 8 -7 18t7 18l471 471q10 9 23 9z" />
<glyph unicode="&#xe258;" d="M339 1098h160q13 0 23 -9l471 -471q7 -8 7 -18t-7 -18l-471 -471q-10 -9 -23 -9h-160q-16 0 -21 11t7 23l464 464l-464 464q-12 12 -7 23t21 11z" />
<glyph unicode="&#xe259;" d="M1087 882q11 -5 11 -21v-160q0 -13 -9 -23l-471 -471q-8 -7 -18 -7t-18 7l-471 471q-9 10 -9 23v160q0 16 11 21t23 -7l464 -464l464 464q12 12 23 7z" />
<glyph unicode="&#xe260;" d="M618 993l471 -471q9 -10 9 -23v-160q0 -16 -11 -21t-23 7l-464 464l-464 -464q-12 -12 -23 -7t-11 21v160q0 13 9 23l471 471q8 7 18 7t18 -7z" />
<glyph unicode="&#xf8ff;" d="M1000 1200q0 -124 -88 -212t-212 -88q0 124 88 212t212 88zM450 1000h100q21 0 40 -14t26 -33l79 -194q5 1 16 3q34 6 54 9.5t60 7t65.5 1t61 -10t56.5 -23t42.5 -42t29 -64t5 -92t-19.5 -121.5q-1 -7 -3 -19.5t-11 -50t-20.5 -73t-32.5 -81.5t-46.5 -83t-64 -70 t-82.5 -50q-13 -5 -42 -5t-65.5 2.5t-47.5 2.5q-14 0 -49.5 -3.5t-63 -3.5t-43.5 7q-57 25 -104.5 78.5t-75 111.5t-46.5 112t-26 90l-7 35q-15 63 -18 115t4.5 88.5t26 64t39.5 43.5t52 25.5t58.5 13t62.5 2t59.5 -4.5t55.5 -8l-147 192q-12 18 -5.5 30t27.5 12z" />
<glyph unicode="&#x1f511;" d="M250 1200h600q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-150v-500l-255 -178q-19 -9 -32 -1t-13 29v650h-150q-21 0 -35.5 14.5t-14.5 35.5v400q0 21 14.5 35.5t35.5 14.5zM400 1100v-100h300v100h-300z" />
<glyph unicode="&#x1f6aa;" d="M250 1200h750q39 0 69.5 -40.5t30.5 -84.5v-933l-700 -117v950l600 125h-700v-1000h-100v1025q0 23 15.5 49t34.5 26zM500 525v-100l100 20v100z" />
</font>
</defs></svg>

Before

Width:  |  Height:  |  Size: 106 KiB

View File

@ -1,7 +0,0 @@
{
"extends" : "../js/.jshintrc",
"asi" : false,
"browser" : false,
"es3" : false,
"node" : true
}

View File

@ -1,23 +0,0 @@
'use strict';
var fs = require('fs');
var path = require('path');
var COMMONJS_BANNER = '// This file is autogenerated via the `commonjs` Grunt task. You can require() this file in a CommonJS environment.\n';
module.exports = function generateCommonJSModule(grunt, srcFiles, destFilepath) {
var destDir = path.dirname(destFilepath);
function srcPathToDestRequire(srcFilepath) {
var requirePath = path.relative(destDir, srcFilepath).replace(/\\/g, '/');
return 'require(\'' + requirePath + '\')';
}
var moduleOutputJs = COMMONJS_BANNER + srcFiles.map(srcPathToDestRequire).join('\n');
try {
fs.writeFileSync(destFilepath, moduleOutputJs);
}
catch (err) {
grunt.fail.warn(err);
}
grunt.log.writeln('File ' + destFilepath.cyan + ' created.');
};

View File

@ -1,41 +0,0 @@
/*!
* Bootstrap Grunt task for Glyphicons data generation
* http://getbootstrap.com
* Copyright 2014 Twitter, Inc.
* Licensed under MIT (https://github.com/twbs/bootstrap/blob/master/LICENSE)
*/
'use strict';
var fs = require('fs');
module.exports = function generateGlyphiconsData(grunt) {
// Pass encoding, utf8, so `readFileSync` will return a string instead of a
// buffer
var glyphiconsFile = fs.readFileSync('less/glyphicons.less', 'utf8');
var glyphiconsLines = glyphiconsFile.split('\n');
// Use any line that starts with ".glyphicon-" and capture the class name
var iconClassName = /^\.(glyphicon-[a-zA-Z0-9-]+)/;
var glyphiconsData = '# This file is generated via Grunt task. **Do not edit directly.**\n' +
'# See the \'build-glyphicons-data\' task in Gruntfile.js.\n\n';
var glyphiconsYml = 'docs/_data/glyphicons.yml';
for (var i = 0, len = glyphiconsLines.length; i < len; i++) {
var match = glyphiconsLines[i].match(iconClassName);
if (match !== null) {
glyphiconsData += '- ' + match[1] + '\n';
}
}
// Create the `_data` directory if it doesn't already exist
if (!fs.existsSync('docs/_data')) {
fs.mkdirSync('docs/_data');
}
try {
fs.writeFileSync(glyphiconsYml, glyphiconsData);
}
catch (err) {
grunt.fail.warn(err);
}
grunt.log.writeln('File ' + glyphiconsYml.cyan + ' created.');
};

Some files were not shown because too many files have changed in this diff Show More