Compare commits

..

No commits in common. "main" and "2.2" have entirely different histories.
main ... 2.2

530 changed files with 98310 additions and 7697 deletions

View File

@ -1,37 +0,0 @@
---
name: Bug report
about: Create a report to help us improve OpenSlides
title: ""
labels: bug
assignees: ""
---
**Describe the bug**
A clear and concise description of what the bug is.
**How to Reproduce**
Steps to reproduce the behavior: preferably on [nighty](https://nightly.demo.openslides.org)
1. Go to '...'
2. Click on '....'
3. Scroll down to '....'
4. See error
**Expected behavior**
A clear and concise description of what you expected to happen.
**System information**
- OpenSlides-Version: [e.g. 2.1, 2.2, 2.3, 3,0]
- Additional version information (if any): [e.g. commit hash or installation-month]
- Python Version: [e.g. 3,5, 3.6, 3.7]
- Device: [e.g. iPhone6, Notebook]
- OS: [e.g. Andoird 7, iOS8.1, Windows 10]
- Browser: [e.g. chrome, firefox, opera, edge, safari]
- Browser-Version: [e.g. 22]
**Additional context**
Add any other information to comprehend your problem
**Screenshots**
If applicable, add screenshots to help explain your problem.

View File

@ -1,19 +0,0 @@
---
name: Feature request
about: Suggest an idea for OpenSlides
title: ""
labels: feature
assignees: ""
---
**Is your feature request related to a problem? Please describe.**
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.

View File

@ -1,39 +0,0 @@
version: "3"
services:
backend:
image: openslides-backend
ports:
- "9002:9002"
environment:
- DATASTORE_READER_HOST=reader
- DATASTORE_READER_PORT=9010
- DATASTORE_WRITER_HOST=writer
- DATASTORE_WRITER_PORT=9011
depends_on:
- writer
- reader
reader:
image: openslides-datastore-reader
environment:
- DATASTORE_ENABLE_DEV_ENVIRONMENT=1
depends_on:
- postgresql
ports:
- "9010:9010"
writer:
image: openslides-datastore-writer
environment:
- DATASTORE_ENABLE_DEV_ENVIRONMENT=1
- MESSAGE_BUS_HOST=redis
- MESSAGE_BUS_PORT=6379
depends_on:
- postgresql
- redis
postgresql:
image: postgres:11
environment:
- POSTGRES_USER=openslides
- POSTGRES_PASSWORD=openslides
- POSTGRES_DB=openslides
redis:
image: redis:alpine

View File

@ -1,90 +0,0 @@
---
name: Build Docker images for all OpenSlides services
on: [push, workflow_dispatch]
env:
IMAGE_VERSION: 4.0.0-beta
TAG_SUFFIX: -$(date +%Y%m%d)-${GITHUB_SHA::7}
jobs:
build:
name: Builds Docker images
runs-on: ubuntu-latest
strategy:
matrix:
service:
- name: openslides-proxy
directory: proxy
- name: openslides-client
directory: openslides-client
- name: openslides-backend
directory: openslides-backend
- name: openslides-datastore-reader
directory: openslides-datastore-service
args:
MODULE: reader
PORT: 9010
- name: openslides-datastore-writer
directory: openslides-datastore-service
args:
MODULE: writer
PORT: 9011
- name: openslides-autoupdate
directory: openslides-autoupdate-service
- name: openslides-auth
directory: openslides-auth-service
- name: openslides-vote
directory: openslides-vote-service
- name: openslides-icc
directory: openslides-icc-service
- name: openslides-media
directory: openslides-media-service
- name: openslides-manage
directory: openslides-manage-service
steps:
- name: Check out code
uses: actions/checkout@v2
with:
submodules: true
- name: Build image
working-directory: ${{ matrix.service.directory }}
env:
DOCKER_BUILDKIT: 1
run: |
if [ "${{ matrix.service.name }}" = "openslides-client" ]
then
eval echo ${IMAGE_VERSION}${TAG_SUFFIX} > client/src/assets/version.txt
fi
if [ "${{ matrix.service.args }}" != "" ]
then
export BUILD_ARGS="--build-arg MODULE=${{ matrix.service.args.MODULE }}
--build-arg PORT=${{ matrix.service.args.PORT }}"
fi
docker build . --tag ${{ matrix.service.name }} $BUILD_ARGS
- name: Log into registry
run: echo "${{ secrets.GITHUB_TOKEN }}" |
docker login ghcr.io --username ${{ github.actor }} --password-stdin
- name: Push image
run: |
IMAGE_ID=ghcr.io/${{ github.repository }}/${{ matrix.service.name }}
# Change all uppercase to lowercase
IMAGE_ID=$(echo $IMAGE_ID | tr '[A-Z]' '[a-z]')
docker tag ${{ matrix.service.name }} ${IMAGE_ID}:$(eval echo ${IMAGE_VERSION}${TAG_SUFFIX})
docker tag ${{ matrix.service.name }} ${IMAGE_ID}:latest
docker push ${IMAGE_ID}:$(eval echo ${IMAGE_VERSION}${TAG_SUFFIX})
docker push ${IMAGE_ID}:latest

View File

@ -1,25 +0,0 @@
---
name: Run integration tests (cypress)
on: [push, pull_request]
jobs:
run-cypress:
name: 'Runs integration tests in cypress'
runs-on: ubuntu-latest
steps:
- name: Check out code
uses: actions/checkout@v2
with:
submodules: recursive
- name: Build and run OS4 Dev
run: make run-dev ARGS="-d"
- name: Run integration tests (cypress)
uses: cypress-io/github-action@v2
with:
working-directory: integration
wait-on: 'https://localhost:8000'
wait-on-timeout: 300
env:
NODE_TLS_REJECT_UNAUTHORIZED: 0

68
.gitignore vendored
View File

@ -1,49 +1,37 @@
# General # General
*.pyc
*.swp *.swp
*.swo *.swo
*.log
*~ *~
# Virtual Environment
.virtualenv/*
.venv/*
# Javascript tools and libraries
node_modules/*
bower_components/*
# Local user data (settings, database, media, search index, static files)
personal_data/*
openslides/static/*
collected-static/*
# Package building/IDE
docs/_build/*
*.egg-info
build/*
dist/*
debug/*
.DS_Store .DS_Store
.idea .idea
*.code-workspace
# docs # Unit test and coverage reports
docs/modelsvalidator/modelsvalidator
dev-commands/export.json
# certs
*.pem
# Deployment
/docker/docker-compose.yml
/docker/docker-stack.yml
/docker/secrets/auth_*_key
docker/secrets/*.env
# Integration testing
/integration/results
/integration/cypress/downloads
/integration/cypress/screenshots
/integration/cypress/videos
/integration/node_modules
# Old OS3 files and folders
.coverage .coverage
.mypy_cache tests/file/*
Compodoc
__pycache__ # Plugin development
bower_components
client
make
openslides_* openslides_*
openslides
personal_data # Mypy cache for typechecking
tests .mypy_cache
.launch/
.venv/
.virtualenv/
.vscode/
client/package-lock.json
server/
# OS3+-Submodules
/autoupdate/

36
.gitmodules vendored
View File

@ -1,36 +0,0 @@
[submodule "openslides-datastore-service"]
path = openslides-datastore-service
url = https://github.com/OpenSlides/openslides-datastore-service.git
branch = main
[submodule "openslides-client"]
path = openslides-client
url = https://github.com/OpenSlides/openslides-client.git
branch = main
[submodule "openslides-backend"]
path = openslides-backend
url = https://github.com/OpenSlides/openslides-backend.git
branch = main
[submodule "openslides-autoupdate-service"]
path = openslides-autoupdate-service
url = https://github.com/OpenSlides/openslides-autoupdate-service.git
branch = main
[submodule "openslides-auth-service"]
path = openslides-auth-service
url = https://github.com/OpenSlides/openslides-auth-service.git
branch = main
[submodule "openslides-media-service"]
path = openslides-media-service
url = https://github.com/OpenSlides/openslides-media-service.git
branch = main
[submodule "openslides-manage-service"]
path = openslides-manage-service
url = https://github.com/OpenSlides/openslides-manage-service.git
branch = main
[submodule "openslides-icc-service"]
path = openslides-icc-service
url = https://github.com/OpenSlides/openslides-icc-service.git
branch = main
[submodule "openslides-vote-service"]
path = openslides-vote-service
url = https://github.com/OpenSlides/openslides-vote-service.git
branch = main

35
.travis.yml Normal file
View File

@ -0,0 +1,35 @@
language: python
sudo: false
cache:
pip: true
yarn: true
python:
- "3.4"
- "3.5"
- "3.6"
env:
- TRAVIS_NODE_VERSION="4"
before_install:
- nvm install $TRAVIS_NODE_VERSION
- curl -o- -L https://yarnpkg.com/install.sh | bash
- export PATH="$HOME/.yarn/bin:$PATH"
install:
- pip install --upgrade setuptools pip
- pip install --upgrade --requirement requirements.txt
- pip freeze
- yarn
- node_modules/.bin/gulp --production
script:
- flake8 openslides tests
- if [ "`python --version`" \> "Python 3.5.0" ]; then isort --check-only --recursive openslides tests; fi
- python -m mypy openslides/
- node_modules/.bin/gulp jshint
- node_modules/.bin/karma start --browsers PhantomJS tests/karma/karma.conf.js
- DJANGO_SETTINGS_MODULE='tests.settings' coverage run ./manage.py test tests.unit
- coverage report --fail-under=43
- DJANGO_SETTINGS_MODULE='tests.settings' coverage run ./manage.py test tests.integration
- coverage report --fail-under=73
- DJANGO_SETTINGS_MODULE='tests.settings' ./manage.py test tests.old

11
AUTHORS
View File

@ -22,18 +22,9 @@ Authors of OpenSlides in chronological order of first contribution:
Sean Engelhardt <sean.f.t.engelhardt@gmail.com> Sean Engelhardt <sean.f.t.engelhardt@gmail.com>
Maximilian Krambach <maximilian.krambach@gmx.de> Maximilian Krambach <maximilian.krambach@gmx.de>
Joel Macht <joel.macht@web.de> Joel Macht <joel.macht@web.de>
Finn Stutzenstein <finn.stutzenstein@intevation.de> Finn Stutzenstein <finn.stutzenstein@hotmail.de>
Thomas Junk <lilith2k3@archlinux.us> Thomas Junk <lilith2k3@archlinux.us>
Meinert Leinigen <openslides@leinigen.cc> Meinert Leinigen <openslides@leinigen.cc>
Andreas Engler <engel.a@web.de> (Russian translation) Andreas Engler <engel.a@web.de> (Russian translation)
Raimund Renkert <raimund@renkert.org> Raimund Renkert <raimund@renkert.org>
Jochen Saalfeld <jochen.saalfeld@intevation.de> Jochen Saalfeld <jochen.saalfeld@intevation.de>
Fadi Abbud <fmfn13@hotmail.com>
Gabriel Meyer <meyergabriel@live.de>
Gernot Schulz <gernot@intevation.de>
Joshua Sangmeister <joshua.sangmeister@gmail.com>
Ralf Peschke <rpeschke@peschke-it.de>
Ludwig Reiter <ludwig.reiter@intevation.de>
Adrian Richter <adrian@intevation.de>
Camille Akmut
Johannes Rolf <johannes.rolf@rwth-aachen.de>

View File

@ -1,964 +0,0 @@
# CHANGELOG of OpenSlides
https://openslides.com
## Version 3.1 (2019-12-13)
[Milestone](https://github.com/OpenSlides/OpenSlides/milestones/3.0)
**General:**
- Improved loading time of OpenSlides [#5061, #5087, #5110, #5146 - Breaks IE11].
- Improved Websocket reconnection - works now more reliable [#5060].
- Improved performance by replacing deprecated encode and decode library with faster manual approaches [#5085, #5092].
- Improved mobile views for small devices [#5106].
- Improved virtual scrolling behavior of tables: remember last scroll position [#5156].
- New SingleSignOn login method via SAML [#5000].
- New inline editing for start page, legal notice and privacy policy [#5086].
- Reordered settings in subpages for better overview [#4878, #5083, #5096].
- Added html meta noindex tag to prevent search engines finding instances of OpenSlides [#5061].
- Added server log entries for usage of notify feature [#5066].
- Added server-side HTML validation for personal notes (motions) and about me field (users) [#5121].
- Fixed an issue where projector button in lists was always not indicating the projected element [#5055].
- Fixed issues where search-filter, property-filter and property-sort in list views does not work correctly [#5065].
- Fixed an issues where list view entries using virtual scrolling become invisible [#5072].
- Fixed an error where loading spinner would not disappear while offline mode [#5151].
- Various cleanups and improvements to usability, performance and translation.
**Agenda:**
- New config option to show motion submitters as subtitle in agenda list [#5002, #5094].
- New view to sort sepakers of a list - preventing unwanted changes esp. using mobile devices [#5069].
- New button to readd the last speaker to the top of the list [#5069, #5067].
- New agenda list filter 'item type' (topic, motion, motion block, election) [#5084].
- Changed window title for current list of speakers [#5037].
- Added motion title in agenda list [#5063].
**Motions:**
- New option to export personal notes [#5075].
- New amendment filter for motion list [#5056, #5157].
- New possibility to change state and recommendation in motion list using quick edit [#5071].
- Added multi select actions to amendment list [#5041].
- Added search value selector in multi select action dialogs [#5058].
- Added support for nested lists with line numbers in PDF export [#5138].
- Improved scaling of motion tile view [#5038].
- Improved performance for large motions with dozens of amendments by implementing manual change detection in motion detail [#5074, #5139].
- Improved display of long names for states and recommendations in drop down menu in motion detail view [#5079].
- Improved amendment slide by showing only changed line(s)s without surrounding paragraph [#5144].
- Fixed line number errors during creation of amendments [#5023].
- Fixed an issue that ol/ul lists are not printed in amendment PDF [#5051].
- Fixed the amendment option "Show entire motion text" [#5052].
- Fixed a rare bug in final version where change recommendations or amendments would have been hidden [#5070].
- Fixed PDF export in final version: use modified final version if available [#5139].
- Fixes a bug where the event name was printed twice in the PDF header [#5155].
**Elections:**
- Fixed errors by entering votes and sorting candidates [#5129, #5125].
- Fixed a permission issue that prevented nominating another participants for elections [#5154].
**Users:**
- Fixed wrong permission check for set password [#5128].
**Mediafiles:**
- Fixed mediafile upload path [#4710].
- Fixed double slash in mediafile URL [#5031].
- Original filename must now be unique for files [#5123].
**Projector:**
- New projector edit dialog with preview [#5043].
- Added support for custom aspect ratios in projector edit dialog; database migration required [#5141].
- Added missing autoupdates for changed projection defaults [#5045].
- Added scaleable tile for projector list [#5043].
- Added a lock icon on the list of speaker slide if list has been closed [#5154].
- Improved autoupdates for projectors by using changeIDs [#5064].
- Improved performance by preventing high CPU usage on Firefox in projector detail view [#5022].
- Changed config option to show nice horizontal meta box on motion slide [#5088].
- Changed config option "Event date" back to string format [#5042].
- Saved countdown settings [#5053].
**Breaking Changes:**
- Due to faster model handling (using the 'Proxy' function) Internet Explorer 11 cannot be supported anymore!
## Version 3.0 (2019-09-13)
[Milestone](https://github.com/OpenSlides/OpenSlides/milestones/3.0)
**General (Client):**
- OpenSlides client completely rewritten, based on Angular 8 and Material Design.
- OpenSlides is now a Progressive Web App (PWA).
- New browser caching via IndexedDB (one cache store for all browser tabs).
- New list views optimized with virtual scrolling (improved performance for long lists).
- New global quick search using by shortcut 'Alt+Shift+F'.
- New built-in design themes for customizing user interface.
- New update notification if OpenSlides static files are updated.
- New config option for pdf page size (DIN A4 or A5).
- Added TinyMCE 5 editor (switched from CKEditor caused by changed license).
- Switched from yarn/gulp to npm.
- Improved pdf gerneration with progress bar and cancel option.
- Translations available for EN, DE, RU and CS.
**General (Server):**
- New websocket protocol for server client communication using JSON schema.
- New change-id system to send only updated elements to client.
- New global history mode (useable for admin group only).
- Updated to Channels 2.
- Dropped support for Python 3.5.
- Dropped support for Geiss.
- Complete rework of startup and caching system. Dropped restricted data cache.
- Changed URL schema.
- Changed personal settings.py.
- Changed format for elements send via autoupdate.
- Changed projector concept.
- Compressed autoupdates before sending to clients (reduced traffic).
- Fixed autoupdate system for related objects.
- Fixed logo configuration if logo file is deleted.
- Added several bulk views for motions and users (one request for updating multiple selected elements).
- Added docs for using OpenSlides in 'big mode' with Gunicorn and Uvicorn.
- Added docs for configure OpenSlides in settingy.py.
- Dropped chat functionality.
- Server performance improvements.
**Agenda:**
- Agenda items are now optional (for motions, elections and mediafiles). New config to set default behavior.
- New drag&drop view to sort agenda items.
- New config option: only present participants can be added to list of speakers.
- New config option to hide number of speakers on projector.
**Motions:**
- New call list for custom sort of motions.
- New tile layout view with all categories (each category a tile).
- New statute motions with managing statute paragraphs.
- New permission to manage metadata (state, recommendation, submitters and supporters, category, motion block and polls).
- New permission to create amendments.
- New permission to see motions in internal states.
- New access restrictions definable for each motion state in workflow.
- New 'internal' option for motion blocks.
- New sorting view for categories to create subcategories.
- New custom comment fields for all motions (read/write access can be managed via permission groups).
- New motion history (each action is stored in global OpenSlides history which can be restored any time, replaced old motion version and log features).
- New XLSX export (docx support is dropped).
- New navigation for next/previous motion in detail view (shortcut: 'Alt+Shift+Left/Right').
- New multi select actions.
- New timestampes for motions (for sorting by creation date and last modified).
- New config option to set reason as required field.
- New config option to change multiple paragraphs with an amendment.
- New config option to hide motion text on projector.
- New config option to show sequential number.
- New config option to show all motions which are referred to a special motion.
- New config option to show submitters and recommendation in table of contents of PDF.
- New config options to control identifier generation - number of digits and blanks (moved from settings.py).
- Improved PDF export (optional with toc, page numbers, date, comments and meta information)
- Improved motion numbering in (sub)categories: Motions of subcategories are also numbered, and parents of amendments needs to be in the numbered category or any subcategory.
- Improved projection layout of motion blocks.
- Changed default workflows: Allowed submitters to set state of new motions in complex and customized workflow. No migration provided.
- Change CSV import to add tags.
**User:**
- New admin group which grants all permissions. Users of existing group 'Admin' or 'Staff' are move to the new group during migration.
- New gender field.
- New password forget/reset function via email.
- New permission to change own password.
- New config option for sender name and reply email address (From address is defined in settings.py).
**Mediafiles:**
- New support for (sub)folders and permission groups.
**Projector:**
- New views to list, manage and control created OpenSlides projectors.
- New projector queue (add slide to queue), all projected slides are logged.
- New chyron for current speaker.
- New color settings for each projector.
## Version 2.3 (2018-09-20)
[Release notes](https://github.com/OpenSlides/OpenSlides/wiki/OpenSlides-2.3) · [Milestone](https://github.com/OpenSlides/OpenSlides/milestones/2.3)
**Agenda:**
- New item type 'hidden'. New visibilty filter in agenda [#3790].
**Motions:**
- New feature to scroll the projector to a specific line [#3748].
- New possibility to sort submitters [#3647].
- New representation of amendments (paragraph based creation, new diff and list views for amendments) [#3637].
- New feature to customize workflows and states [#3772, #3785].
- New table of contents with page numbers and categories in PDF [#3766].
- New teporal field "modified final version" where the final version can be edited [#3781].
- New config options to show logos on the right side in PDF [#3768].
- New config to show amendments also in motions table [#3792].
- Support to change decimal places for polls with a plugin [#3803].
**Elections:**
- Support to change decimal places for elections with a plugin [#3803]
**Core:**
- Updated Django to 2.1 [#3777, #3786].
- Support for Python 3.7 [#3786].
- Python 3.4 is not supported anymore [#3777].
- Updated pdfMake to 0.1.37 [#3766].
- Changed behavior of collectstatic management command [#3804].
## Version 2.2 (2018-06-06)
[Release notes](https://github.com/OpenSlides/OpenSlides/wiki/OpenSlides-2.2) · [Milestone](https://github.com/OpenSlides/OpenSlides/milestones/2.2)
**Agenda:**
- New permission for managing lists of speakers [#3366].
- New DOCX export of agenda [#3569].
- New collapsable agenda overview [#3567].
- New feature: mark speakers (e.g. as submitter) [#3570].
- New config option to enable numbering of items [#3697].
- New config option to hide internal items when projecting subitems [#3701].
- Hide closed agenda items in the item slide [#3567].
- Fixed wrong sorting of last speakers [#3193].
- Fixed issue when sorting a new inserted speaker [#3210].
- Fixed multiple request on creation of agenda related items [#3341].
- Autoupdates for all children if the item type has changed [#3659].
**Motions:**
- New export dialog for managers only [#3185].
- New personal note field for each motions [#3190, #3267, #3404].
- New navigation between single motions [#3459].
- New possibility to create change recommendations for motion titles [#3626].
- New support for export motions in a ZIP archive [#3189, #3251].
- New PDF export for personal note and comments [#3239].
- New config option for customize sorting of category list in pdf/docx export [#3329].
- New config optoin for pagenumber alignment in PDF [#3327].
- New config options to hide reason, recommendation and meta data box on projector [#3432, #3692].
- New inline editing for motion reason [#3361].
- New multiselect filter for motion comments [#3372].
- New support for pinning personal notes to the window [#3360].
- New warning message if an edit dialog was already opened by another client [#3212].
- New change recommendation type "other" [#3495].
- Fixed issue when creating/deleting motion comment fields in the settings [#3187].
- Fixed empty motion comment field in motion update form [#3194].
- Fixed error on category sort [#3318].
- Bugfix: Changing motion line length did not invalidate cache [#3202].
- Bugfix: Added more distance in motion PDF for DEL-tags in new lines [#3211].
- Bugfix: Creating colliding change recommendation is now prevented on server side [#3304].
- Bugfix: Several bugfixes regarding splitting list items in change recommendations [#3288].
- Bugfix: Several bugfixes regarding diff version [#3407, #3408, #3410, #3440, #3450, #3465, #3537, #3546, #3548, #3644, #3656].
- Improved the multiselect state filter [#3459].
- Save pagination state to session storage [#3569].
- Allow to delete own motions [#3516].
- Reference to motions by id in state and recommendation special field [#3498].
- Log which comment was updated [#3569].
- Split up 'can_see_and_manage_comments' permission in two seperate ones [#3565].
- Combined all boolean filters into one dropdown menu and added a filter for amendments [#3501].
- Show motion identifier in (current) list of speakers [#3442]
- Show the number of next speakers in motion list view [#3470].
- Added (shortened) motion title to motion block slide [#3700].
- Clear identifier on state reset [#3356].
- Reworked DOCX export parser and added comments to DOCX [#3258].
- Removed server side image to base64 transformation and added local transformation [#3181].
- Added karma:watch command [#3466].
**Elections:**
- New pagination for list view [#3393].
**Users:**
- New fast mass import for users [#3290].
- New default user group 'admin' [#3621].
- New feature to send invitation emails with OpenSlides login data [#3503, #3525].
- New view to toggle presence by entering participant number (can be used with barcode scanner) [#3496].
- New support for password validation using Django or custom validators
5. 7. for minimum password length [#3200].
- Hide password in change password view [#3417].
- Users without the permission 'can see users' can now see agenda item speakers, motion submitters and supporters, assignment candidates, mediafile uploader and chat message users if they have the respective permissions [#3191, #3233].
- Fixed compare of duplicated users while CSV user import [#3201].
- Added settings option to enable updating the last_login field in the database. The default is now disabled [#3400].
- Removed OPTIONS request. All permissions are now provided on startup [#3306].
**Mediafiles:**
- New form for uploading multiple files [#3650].
- New custom CKEditor plugin for browsing mediafiles [#3337].
- Project images always in fullscreen [#3355].
- Protect mediafiles for forbidden access [#3384].
- Fixed reloading of PDF on page change [#3274].
**Core:**
- New settings to upload custom fonts (for projector and pdf) [#3568].
- New custom translations to use custom wordings [#3383].
- New support for choosing image files as logos for projector, PDF and web interface header [#3184, #3207, #3208, #3310].
- New notify system [#3212].
- New config option for standard font size in PDF [#3332].
- New config option for disabling header and footer in the projector [#3357].
- New dynamic webpage title [#3404].
- New 'go to top'-link [#3404].
- New custom format cleanup plugin for CKEditor [#3576].
- Reset scroll level for each new projection [#3686].
- Scroll to top on every state change [#3689].
- Added pagination on top of lists [#3698].
- Improved performance for PDF generation significantly (by upgrading to pdfmake 0.1.30) [#3278, #3285].
- Enhanced performance esp. for server restart and first connection of all clients by refactoring autoupdate, Collection and AccessPermission [#3223, #3539].
- Improved reconnect handling if the server was flushed [#3297].
- No reload on logoff. OpenSlides is now a full single page application [#3172].
- Highlight list entries in a light blue, if a related object is projected (e. g. a list of speakers of a motion) [#3301].
- Select the projector resolution with a slider and an aspect ratio [#3311].
- Delay the 'could not load projector' error 3 seconds to not irritate users with a slow internet connection [#3323].
- Added default sorting for agenda, motions, elections, mediafiles and users [#3334, 3348].
- Added caching for the index views [#3419, #3424].
- Added projector prioritization [#3425].
- Added --debug-email flag to print all emails to stdout [#3530].
- Added --no-template-caching flag to disable template caching for easier development [#3566].
- Updated CKEditor to 4.7 [#3375].
- Reduced ckeditor toolbar for inline editing [#3368].
- New api route to project items with just one request needed [#3713].
- Use native twisted mode for daphne [#3487].
- Saved language selection to session storage [#3543].
- Set default of projector resolution to 1220x915 [#2549].
- Preparations for the SAML plugin; Fixed caching of main views [#3535].
- Removed unnecessary OPTIONS request in config [#3541].
- Switched from npm to Yarn [#3188].
- Improvements for plugin integration [#3330].
- Cleanups for the collection and autoupdate system [#3390]
- Bugfixes for PDF creation [#3227, #3251, #3279, #3286, #3346, #3347, #3342].
- Fixed error when clearing empty chat [#3199].
- Fixed autoupdate bug for a user without user.can_see_name permission [#3233].
- Fixed bug the elements are projected and the deleted [#3336].
- Several bugfixes and minor improvements.
*[#xxxx] = Pull request number to get more details on https://github.com/OpenSlides/OpenSlides/pulls*
## Version 2.1.1 (2017-04-05)
[Milestone](https://github.com/OpenSlides/OpenSlides/milestones/2.1.1)
**Agenda:**
- Fixed issue #3173 that the agenda item text cannot be changed.
**Other:**
- Set required version for optional Geiss support to <1.0.0.
## Version 2.1 (2017-03-29)
[Release notes](https://github.com/OpenSlides/OpenSlides/wiki/OpenSlides-2.1) · [Milestone](https://github.com/OpenSlides/OpenSlides/milestones/2.1)
**Agenda:**
- Added button to remove all speakers from a list of speakers.
- Added option to create or edit agenda items as subitems of others.
- Fixed security issue: Comments were shown for unprivileged users.
- Added option to choose whether to show the current list of speakers slide as a slide or an overlay.
- Manage speakers on the current list of speakers view.
- List of speakers for hidden items is always visible.
**Core:**
- Added support for multiple projectors.
- Added control for the resolution of the projectors.
- Added smooth projector scroll.
- Set the projector language in the settings.
- Added migration path from OpenSlides 2.0.
- Added support for big assemblies with lots of users.
- Django 1.10 is now supported. Dropped support for Django 1.8 and 1.9.
- Used Django Channels instead of Tornado. Refactoring of the autoupdate process. Added retry with timeout in case of ChannelFull exception.
- Made a lot of autoupdate improvements for projector and site.
- Added new caching system with support for Redis.
- Support https as websocket protocol (wss).
- Accelerated startup process (send all data to the client after login).
- Add the command getgeiss to download the latest version of Geiss.
- Add a version of has_perm that can work with cached users.
- Removed our AnonymousUser. Make sure not to use user.has_perm() anymore.
- Added function utils.auth.anonymous_is_enabled which returns true, if it is.
- Changed has_perm to support an user id or None (for anyonmous) as first argument.
- Cache the group with there permissions.
- Added watching permissions in client and change the view immediately on changes.
- Used session cookies and store filter settings in session storage.
- Removed our db-session backend and added possibility to use any django session backend.
- Added template hook system for plugins.
- Used Roboto font in all templates.
- Added HTML support for messages on the projector.
- Moved custom slides to own app "topics". Renamed it to "Topic".
- Added button to clear the chatbox.
- Better dialog handling. Show dialog just in forground without changing the state url. Added new dialog for profile, change password, tag and category update view.
- Switched editor back from TinyMCE to CKEditor which provides a better copy/paste support from MS Word.
- Validate HTML strings from CKEditor against XSS attacks.
- Use a separate dialog with CKEditor for editing projector messages.
- Use CKEditor in settings for text markup.
- Used pdfMake for clientside generation of PDFs. Run pdf creation in background (in a web worker thread).
- Introduced new table design for list views with serveral filters and CSV export.
- New CSV import layout.
- Replaced angular-csv-import by Papa Parse for CSV parsing.
- Added UTF-8 byte order mark for every CSV export.
- Removed config cache to support multiple threads or processes.
- Added success/error symbol to config to show if saving was successful.
- Fixed bug, that the last change of a config value was not send via autoupdate.
- Moved full-text search to client-side (removed the server-side search engine Whoosh).
- Made a lot of code clean up, improvements and bug fixes in client and backend.
**Motions:**
- Added adjustable line numbering mode (outside, inside, none) for each motion text.
- Allowed to add change recommendations for special motion text lines (with diff mode).
- Added projection support for change recommendations.
- Added button to sort and number all motions in a category.
- Added recommendations for motions.
- Added options to calculate percentages on different bases.
- Added calculation for required majority.
- Added blocks for motions which can be used in agenda. Set states for multiple motions of a motion block by following the recommendation for each motion.
- Used global config variable for preamble.
- Added configurable fields for comments.
- Added new origin field.
- Reimplemented amendments.
- New PDF layout.
- Added DOCX export with docxtemplater.
- Changed label of former state "commited a bill" to "refered to committee".
- Number of ballots printed can now be set in config.
- Add new personal settings to remove all whitespaces from motion identifier.
- Add new personal settings to allow amendments of amendments.
- Added inline editing for comments.
**Elections:**
- Added options to calculate percentages on different bases.
- Added calculation for required majority.
- Candidates are now sortable.
- Removed unused assignment config to publish winner election results only.
- Number of ballots printed can now be set in config.
- Added inline edit field for a specific hint on ballot papers.
**Users:**
- Added new matrix-interface for managing groups and their permissions.
- Added autoupdate on permission change (permission added).
- Improved password reset view for administrators.
- Changed field for initial password to an unchangeable field.
- Added new field for participant number.
- Added new field 'is_committee' and new default group 'Committees'.
- Improved users CSV import (use group names instead of id).
- Allowed to import/export initial user password.
- Added more multiselect actions.
- Added QR code in users access pdf.
**Mediafiles:**
- Allowed to project uploaded images (png, jpg, gif) and video files (e. g. mp4, wmv, flv, quicktime, ogg).
- Allowed to hide uploaded files in overview list for non authorized users.
- Enabled removing of files from filesystem on model instance delete.
**Other:**
- Added Russian translation (Thanks to Andreas Engler).
- Added command to create example data.
## Version 2.0 (2016-04-18)
[Milestone](https://github.com/OpenSlides/OpenSlides/milestones/2.0)
*OpenSlides 2.0 is essentially not compatible to OpenSlides 1.7. E. g. customized templates, databases and plugins can not be reused without adaption.*
**Agenda:**
- Updated the tests and changed internal parts of method of the agenda model.
- Changed API of related objects. All assignments, motions and custom slides are now agenda items and can be hidden.
- Removed django-mptt.
- Added attachments to custom sldies.
- Improved CSV import.
**Assignments:**
- Renamed app from assignment to assignments.
- Removed possibility to block candidates.
- Massive refactoring and cleanup of the app.
**Motions:**
- Renamed app from motion to motions.
- Massive refactoring and cleanup of the app.
**Mediafiles:**
- Renamed app from mediafile to mediafiles.
- Used improved pdf presentation with angular-pdf.
- Massive refactoring and cleanup of the app.
**Users:**
- Massive refactoring of the participant app. Now called 'users'.
- Used new anonymous user object instead of an authentification backend. Used special authentication class for REST requests.
- Used authentication frontend via AngularJS.
- Improved CSV import.
**Other:**
- New OpenSlides logo.
- New design for web interface.
- Added multiple countdown support.
- Added colored countdown for the last n seconds (configurable).
- Switched editor from CKEditor to TinyMCE.
- Changed supported Python version to >= 3.4.
- Used Django 1.8 as lowest requirement.
- Django 1.9 is supported
- Added Django's application configuration. Refactored loading of signals and projector elements/slides.
- Setup migrations.
- Added API using Django REST Framework 3.x. Added several views and mixins for generic Django REST Framework views in OpenSlides apps.
- Removed most of the Django views and templates.
- Removed Django error pages.
- Added page for legal notice.
- Refactored projector API using metaclasses now.
- Renamed SignalConnectMetaClass classmethod get_all_objects to get_all (private API).
- Refactored config API and moved it into the core app.
- Removed old style personal info page, main menu entries and widget API.
- Used AngularJS with additional libraries for single page frontend.
- Removed use of 'django.views.i18n.javascript_catalog'. Used angular-gettext now.
- Updated to Bootstrap 3.
- Used SockJS for automatic update of AngularJS driven single page frontend.
- Refactored plugin API.
- Refactored start script and management commands. Changed command line option and path for local installation.
- Refactored tests.
- Used Bower and gulp to manage third party JavaScript and Cascading Style Sheets libraries.
- Used setup.cfg for development tools.
- Removed code for documentation and for Windows portable version with GUI. Used new repositories for this. Cleaned up main repository.
- Updated all dependencies.
**Translations:**
- Updated DE, FR, CS and PT translations.
- Added ES translations.
## Version 1.7 (2015-02-16)
https://github.com/OpenSlides/OpenSlides/milestones/1.7
**Core:**
- New feature to tag motions, agenda and assignments.
- Fixed search index problem to index contents of many-to-many tables (e. g. tags of a motion).
- Fixed AttributeError in chatbox on_open method.
**Motions:**
- New Feature to create amendments, which are related to a parent motion.
- Added possibility to hide motions from non staff users in some states.
**Assignments:**
- Fixed permissions to alter assignment polls.
**Other:**
- Cleaned up utils.views to increase performance when fetching single objects from the database for a view (#1378).
- Fixed bug on projector which was not updated when an object was deleted.
- Fixed bug and show special characters in PDF like ampersand (#1415).
- Updated pdf.js to 1.0.907.
- Improve the usage of bsmselect jquery plugin.
- Updated translations.
## Version 1.6.1 (2014-12-08)
https://github.com/OpenSlides/OpenSlides/milestones/1.6.1
**Agenda:**
- Fixed error in item numbers.
**Motions:**
- Show supporters on motion slide if available.
- Fixed motion detail view template. Added block to enable extra content via plugins.
**Assignments:**
- Fixed PDF build error when an election has more than 20 posts or candidates.
**Participants:**
- Fixed participant csv import with group ids:
- Allowed to add multiple groups in csv group id field, e. g. "3,4".
- Fixed bug that group ids greater than 9 can not be imported.
- Updated error message if group id does not exists.
**Other:**
- Fixed CKEditor stuff (added insertpre plugin and removed unused code).
- Updated French, German and Czech translation.
## Version 1.6 (2014-06-02)
https://github.com/OpenSlides/OpenSlides/milestones/1.6
**Dashboard:**
- Added shortcuts for the countdown.
- Enabled copy and paste in widgets.
**Agenda:**
- New projector view with the current list of speakers.
- Added CSV import of agenda items.
- Added automatic numbering of agenda items.
- Fixed organizational item structuring.
**Motions:**
- New slide for vote results.
- Created new categories during CSV import.
**Assignments/Elections:**
- Coupled assignment candidates with list of speakers.
- Created a poll description field for each assignment poll.
- New slide for election results.
**Participants:**
- Disabled dashboard widgets by default.
- Added form field for multiple creation of new participants.
**Files:**
- Enabled update and delete view for uploader refering to his own files.
**Other:**
- Added global chatbox for managers.
- New config option to set the 100 % base for polls (motions/elections).
- Changed api for plugins. Used entry points to detect them automaticly. Load them automaticly from plugin directory of Windows portable version.
- Added possibility to use custom templates and static files in user data path directory.
- Changed widget api. Used new metaclass.
- Changed api for main menu entries. Used new metaclass.
- Inserted api for the personal info widget. Used new metaclass.
- Renamed config api classes. Changed permission system for config pages.
- Regrouped config collections and pages.
- Renamed some classes of the poll api.
- Renamed method and attribute of openslides.utils.views.PermissionMixin.
- Added api for absolute urls in models.
- Inserted command line option to translate config strings during database setup.
- Enhanced http error pages.
- Improved responsive design for templates.
- Fixed headings on custom slides without text.
- Moved dashboard and select widgets view from projector to core app.
- Renamed and cleaned up static direcories.
- Used jsonfield as required package. Removed jsonfield code.
- Added new package backports.ssl_match_hostname for portable build script.
- Used new app "django-ckeditor-updated" to render WYSIWYG html editors. Removed CKEditor from sources.
- Only reload the webserver in debug-mode.
## Version 1.5.1 (2014-03-31)
https://github.com/OpenSlides/OpenSlides/milestones/1.5.1
**Projector:**
- Fixed path and config help text for logo on the projector.
**Agenda:**
- Fixed permission error in the list of speakers widget.
- Fixed Item instance method is_active_slide().
**Motion:**
- Fixed sorting of motions concerning the identifier. Used natsort and DataTables Natural Sort Plugin.
**Participant:**
- Added permission to see participants to the manager group.
- Fixed user status view for use without Javascript.
**Files:**
- Fixed error when an uploaded file was removed from filesystem.
**Other:**
- Set minimum Python version to 2.6.9. Fixed setup file for use with Python 2.6.
- Used unicode font for circle in ballot pdf. Removed Pillow dependency package.
- Fixed http status code when requesting a non-existing static page using Tornado web server.
- Fixed error in main script when using other database engine.
- Fixed error on motion PDF with nested lists.
## Version 1.5 (2013-11-25)
https://github.com/OpenSlides/OpenSlides/milestones/1.5
**Projector:**
- New feature: Show PDF presentations on projector (with included pdf.js).
- Improved projector update process via new websocket API (using sockjs and tornado).
- New projector template with twitter bootstrap.
- Improved projector zoom and scroll behaviour.
**Agenda:**
- New config option: couple countdown with list of speakers.
- Used HTML editor (CKEditor) for agenda item text field.
- Added additional input format for agenda item duration field.
**Motions:**
- Enabled attachments for motions.
- Refactored warnings on CSV import view.
**Elections:**
- Refactored assignment app to use class based views instead of functions.
**Polls:**
- Added percent base to votes cast values.
**Participants:**
- Updated access data PDF: WLAN access (with QRCode for WLAN ssid/password) and OpenSlides access (with QRCode for system URL), printed on a single A4 page for each participant.
**Other:**
- Full text search integration (with Haystack and Whoosh).
- New start script with new command line options (see python manage.py --help)
- Fixed keyerror on user settings view.
- New messages on success or error of many actions like creating or editing objects.
- Changed messages backend, used Django's default now.
- A lot of template fixes and improvements.
- Extended css style options in CKEditor.
- Added feature to config app to return the default value for a key.
- Cleaned up OpenSlides utils views.
- Improved README (now with install instructions and used components).
- Updated all required package versions.
- Used flake8 instead of pep8 for style check, sort all import statements with isort.
- Added Portuguese translation (Thanks to Marco A. G. Pinto).
- Switched to more flexible versions of required third party packages.
- Updated to Django 1.6.x.
- Updated German documentation.
- Change license from GPLv2+ to MIT, see LICENSE file.
## Version 1.4.2 (2013-09-10)
https://github.com/OpenSlides/OpenSlides/milestones/1.4.2
- Used jQuery plugin bsmSelect for better ``<select multiple>`` form elements.
- New config option to disable paragraph numbering in motion pdf. (Default value: disabled.)
- Removed max value limitation in config field 'motion_min_supporters'.
- Removed supporters signature field in motion pdf.
- Fixed missing creation time of motion version. Show now string if identifier is not set (in widgets and motion detail).
- Fixed error when a person is deleted.
- Fixed deleting of assignments with related agenda items.
- Fixed wrong ordering of agenda items after order change.
- Fixed error in portable version: Open browser on localhost when server listens to 0.0.0.0.
- Fixed typo and updated translations.
- Updated CKEditor from 4.1.1 to 4.2. Fixed errors in MS Internet Explorer.
- Updated to Django 1.5.2.
## Version 1.4.1 (2013-07-29)
https://github.com/OpenSlides/OpenSlides/milestones/1.4.1
- Fixed tooltip which shows the end of each agenda item.
- Fixed duration of agenda with closed agenda items.
- Disabled deleting active version of a motion.
- Start browser on custom IP address.
- Fixed wrong URLs to polls in motion detail view.
- Added Czech translation.
## Version 1.4 (2013-07-10)
https://github.com/OpenSlides/OpenSlides/milestones/1.4
**Agenda:**
- New feature: list of speakers for each agenda item which saves begin and end time of each speaker; added new widget and overlay on the dashboard for easy managing and presenting lists of speakers.
- New item type: organisational item (vs. agenda item).
- New duration field for each item (with total time calculation for end time of event).
- Better drag'n'drop sorting of agenda items (with nestedSortable jQuery plugin).
**Motions:**
- Integrated CKEditor to use allowed HTML formatting in motion text/reason. With server-side whitelist filtering of HTML tags (with bleach) and HTML support for reportlab in motion pdf.
- New motion API.
- Support for serveral submitters.
- New workflow concept with two built-in workflows:
1) complex workflow (like in OpenSlides <= v1.3)
2) simple workflow (only 4 states: submitted -> acceptednot decided; no versioning)
- Categories for grouping motions.
- New modifiable identifier.
- New motion version diff view. Improved history table in motion detail view.
- New config variable 'Stop submitting of new motions' (for non-manager users).
- Updated motion status log.
- Updated csv import.
**Participants:**
- New feature: qr-code for system url on participants password pdf.
- Update default groups and permissions.
- New participant field: 'title'.
- Removed participants field 'type'. Use 'group' field instead. Updated csv import.
- Added warning if non-superuser removes his last group containing permission to manage participants.
**Other:**
- New html template based on twitter bootstrap.
- New GUI frontend for the Windows portable version.
- New command to backup sqlite database.
- New mediafile app (files) to upload/download files via frontend.
- Used Tornado web server (instead of Django's default development server).
- Updated win32 portable version to use Tornado.
- Integrated DataTables jQuery plugin for overview tables of motions, elections and participants (for client side sorting/filtering/pagination).
- New overlay API for projector view.
- New config app: Apps have to define config vars only once; config pages and forms are created automatically.
- Moved version page out of the config app.
- Changed version number api for plugins.
- Moved widget with personal info to account app. Inserted info about lists of speakers.
- Updated to Django 1.5.
- Dropped support for python 2.5.
- Updated packaging (setup.py and portable).
- Open all PDFs in a new tab.
- Changed Doctype to HTML5.
- Updated German documentation (especially sections about agenda and motions).
- Several minor fixes and improvements.
## Version 1.3.1 (2013-01-09)
https://github.com/OpenSlides/OpenSlides/milestones/1.3.1
- Fixed unwanted automatical language switching on projector view if more than one browser languages send projector request to OpenSlides (#434)
## Version 1.3 (2012-12-10)
https://github.com/OpenSlides/OpenSlides/milestones/1.3
**Projector:**
- New public dashboard which allows access for all users per default. (#361) (changed from the old, limited projector control page)
- New dashboard widgets:
- welcome widget (shows static welcome title and text)
- participant widget
- group widget
- personal widget (shows my motions and my elections)
- Hide scrollbar in projector view.
- Added cache for AJAX version of the projector view.
- Moved projector control icons into projector live widget. (#403)
- New weight field for custom slides (to order custom slides in widget).
- Fixed drag'n'drop behaviour of widgets into empty dashboard column.
- Fixed permissions for agenda, motion and assignment widgets (set to projector.can_manage_projector).
**Agenda:**
- Fixed slide error if agenda item deleted. (#330)
**Motions:**
- Translation: Changed 'application' to 'motion'.
- Fixed: Manager could not edit supporters. (#336)
- Fixed attribute error for anonymous users in motion view. (#329)
- Set default sorting of motions by number (in widget).
- CSV import allows to import group as submitter. (#419)
- Updated motion code for new user API.
- Rewrote motion views as class based views.
**Elections:**
- User can block himself/herself from candidate list after delete his/her candidature.
- Show blocked candidates in separate list.
- Mark elected candidates in candidate list. (#374)
- Show linebreaks in description. (#392)
- Set default sorting of elections by name (in widget).
- Fixed redirect from a poll which does not exists anymore.
- Changed default permissions of anonymous user to see elections. (#334)
- Updated assignment code for new user API.
**Participants:**
- New user and group API.
- New group option to handle a group as participant (and thus e.g. as submitter of motion).
- CSV import does not delete existing users anymore and append users as new users.
- New user field 'about me'. (#390)
- New config option for sorting users by first or last name (in participant lists, elections and motions). (#303)
- Allowed whitespaces in username, default: ``<firstname lastname>`` (#326)
- New user and group slides. (#176)
- Don't allow to deactivate the administrator or themself.
- Don't allow to delete themself.
- Renamed participant field 'groups' to 'structure level' (German: Gliederungsebene).
- Rewrote participant views as class based views.
- Made OpenSlides user a child model of Django user model.
- Appended tests.
- Fixed error to allow admins to delete anonymous group
**Other:**
- Added French translation (Thanks to Moira).
- Updated setup.py to make an openslides python package.
- Removed frontpage (welcome widget contains it's content) and redirect '/' to dashboard url.
- Added LOCALE_PATHS to openslides_settings to avoid deprecation in Django 1.5.
- Redesigned the DeleteView (append QuestionMixin to send question via the django message API).
- Fixed encoding error in settings.py. (#349)
- Renamed openslides_settings.py to openslides_global_settings.py.
- New default path to database file (XDG_DATA_HOME, e.g. ~/.local/share/openslides/).
- New default path to settings file (XDG_CONFIG_HOME, e.g. ~/.config/openslides/).
- Added special handling to determine location of database and settings file in portable version.
- Don't use similar characters in generated passwords (no 'Il10oO').
- Localised the datetime in PDF header. (#296)
- Used specific session cookie name. (#332)
- Moved code repository from hg to git (incl. some required updates, e.g. version string function).
- Updated German translations.
- Several code optimizations.
- Several minor and medium issues and errors were fixed.
## Version 1.2 (2012-07-25)
https://github.com/OpenSlides/OpenSlides/milestones/1.2
**General:**
- New welcome page with customizable title and text.
- OpenSlides portable win32 binary distribution.
- New start script (start.py) to automatically create the default settings and the database, start the server and the default browser.
- Add plugin system. Allow other django-apps to interact with OpenSlides.
**Projector:**
- New projector dashboard to control all slides on projector.
- New projector live view on projector dashboard.
- Countdown calculation works now on server-side.
- New Overlay messages to show additional information on a second projector layer.
- Add custom slides.
- Add a welcome slide.
- Project application and assignment slides without an agenda item.
- Update the projector once per second (only).
**Agenda:**
- Add new comment field for agenda items.
**Elections (Assignments):**
- New config option to publish voting results for selected winners only.
**Applications:**
- Now, it's possible to deactivate the whole supporter system.
- New import option: set status of all imported applications to 'permit'.
- More log entries for all application actions.
**Participant:**
- Add new comment field for participants.
- Show translated permissions strings in user rols form.
- Admin is redirect to 'change password' page.
- New default user name: "firstname lastname".
**Other:**
- Use Django's class based views.
- Update to Django 1.4. Drop python 2.4 support for this reason.
- Separate the code for the projector.
- Rewrite the vote results table.
- Rewrite the poll API.
- Rewrite the config API. (Now any data which are JSON serializable can be stored.)
- Improved CSV import for application and participants.
- GUI improvements of web interface (e.g. sub navigations, overview tables).
- Several minor and medium issues and errors were fixed.
## Version 1.1 (2011-11-15)
https://github.com/OpenSlides/OpenSlides/milestones/1.1
**Agenda:**
- [Feature] Agenda overview: New item-done-column for all non-manager (#7)
- [Feature] Allow HTML-Tags in agenda item of text (#12)
- [Feature] Split up hidden agenda items in new agenda table section (#13)
**Projector:**
- [Feature] Assignment projector view layout improvements (#9)
- [Bugfix] Zoom problem for sidebar div in beamer view (#5)
- [Bugfix] Blue 'candidate elected line' not visible in projector ajax view (#6)
- [Bugfix] Assignment projector view: Show results for elected candidates only (#11)
- [Bugfix] Missing beamer scaling (#2)
- [Bugfix] Assigment projector view: Removed empty character for no results cell. (#10)
**Applications:**
- [Feature] Import applications (#55)
- [Feature] Support trivial changes to an application (#56)
- [Bugfix] Order submitter and supporter form fields by full name (#53)
- [Bugfix] Application: Show profile instead of submitter username (#15)
- [Bugfix] "Application: Only check enough supports in status ""pub""" (#16)
**Elections:**
- [Feature] New button to show agenda item of selected application/assignment (#54)
- [Feature] Open add-user-url in new tab. (#32)
**Applications/Elections:**
- [Feature] Show voting results in percent (#48)
**Participants:**
- [Feature] Filter displayed permissions in group editor (#59)
- [Feature] Generate password after user creation automatically (#58)
- [Bugfix] Encoding error (#1)
- [Bugfix] List of participants (pdf) link not visible for users with see-particiants-permissions (#3)
- [Bugfix] Use user.profile.get_type_display() instead of user.profile.type (#4)
**PDF:**
- [Feature] Mark elected candidates in PDF (#31)
- [Feature] New config option to set title and preamble text for application and assignment pdf (#33)
- [Feature] New config option to set number of ballots in PDF (#26)
- [Bugfix] Assignment ballot pdf: Wrong line break in group name with brackets (#8)
- [Bugfix] Print available candidates in assignment pdf (#14)
- [Bugfix] Show "undocumented" for result "-2" in application and assignment pdf (#17)
**Other:**
- [Feature] Rights for anonymous (#45)
- [Feature] Show counter for limited speaking time (#52)
- [Feature] Reorderd config tab subpages (#61)
- [Localize] i18n German: Use gender-specific strings (#51)
- [Bugfix] ``<button>`` inside ``<a>`` tag not working in IE (#57)
- [Bugfix] Change default sort for tables of applications, assignments, participants (#27)
## Version 1.0 (2011-09-12)
https://github.com/OpenSlides/OpenSlides/tree/1.0/

776
CHANGELOG.rst Normal file
View File

@ -0,0 +1,776 @@
=========================
CHANGELOG of OpenSlides
=========================
https://openslides.org/
Version 2.2 (2018-06-06)
========================
`Release notes <https://github.com/OpenSlides/OpenSlides/wiki/OpenSlides-2.2>`_ ·
`Milestone <https://github.com/OpenSlides/OpenSlides/milestones/2.2>`_
Agenda:
- New permission for managing lists of speakers [#3366].
- New DOCX export of agenda [#3569].
- New collapsable agenda overview [#3567].
- New feature: mark speakers (e.g. as submitter) [#3570].
- New config option to enable numbering of items [#3697].
- New config option to hide internal items when projecting subitems [#3701].
- Hide closed agenda items in the item slide [#3567].
- Fixed wrong sorting of last speakers [#3193].
- Fixed issue when sorting a new inserted speaker [#3210].
- Fixed multiple request on creation of agenda related items [#3341].
- Autoupdates for all children if the item type has changed [#3659].
Motions:
- New export dialog for managers only [#3185].
- New personal note field for each motions [#3190, #3267, #3404].
- New navigation between single motions [#3459].
- New possibility to create change recommendations for motion titles [#3626].
- New support for export motions in a ZIP archive [#3189, #3251].
- New PDF export for personal note and comments [#3239].
- New config option for customize sorting of category list in pdf/docx export [#3329].
- New config optoin for pagenumber alignment in PDF [#3327].
- New config options to hide reason, recommendation and meta data box on projector [#3432, #3692].
- New inline editing for motion reason [#3361].
- New multiselect filter for motion comments [#3372].
- New support for pinning personal notes to the window [#3360].
- New warning message if an edit dialog was already opened by another client [#3212].
- New change recommendation type "other" [#3495].
- Fixed issue when creating/deleting motion comment fields in the settings [#3187].
- Fixed empty motion comment field in motion update form [#3194].
- Fixed error on category sort [#3318].
- Bugfix: Changing motion line length did not invalidate cache [#3202].
- Bugfix: Added more distance in motion PDF for DEL-tags in new lines [#3211].
- Bugfix: Creating colliding change recommendation is now prevented on server side [#3304].
- Bugfix: Several bugfixes regarding splitting list items in change recommendations [#3288].
- Bugfix: Several bugfixes regarding diff version [#3407, #3408, #3410,
#3440, #3450, #3465, #3537, #3546, #3548, #3644, #3656].
- Improved the multiselect state filter [#3459].
- Save pagination state to session storage [#3569].
- Allow to delete own motions [#3516].
- Reference to motions by id in state and recommendation special field [#3498].
- Log which comment was updated [#3569].
- Split up 'can_see_and_manage_comments' permission in two seperate ones [#3565].
- Combined all boolean filters into one dropdown menu and added a filter for amendments [#3501].
- Show motion identifier in (current) list of speakers [#3442]
- Show the number of next speakers in motion list view [#3470].
- Added (shortened) motion title to motion block slide [#3700].
- Clear identifier on state reset [#3356].
- Reworked DOCX export parser and added comments to DOCX [#3258].
- Removed server side image to base64 transformation and added local transformation [#3181].
- Added karma:watch command [#3466].
Elections:
- New pagination for list view [#3393].
Users:
- New fast mass import for users [#3290].
- New default user group 'admin' [#3621].
- New feature to send invitation emails with OpenSlides login data [#3503, #3525].
- New view to toggle presence by entering participant number (can be used with barcode scanner) [#3496].
- New support for password validation using Django or custom validators
e. g. for minimum password length [#3200].
- Hide password in change password view [#3417].
- Users without the permission 'can see users' can now see agenda item speakers,
motion submitters and supporters, assignment candidates, mediafile uploader
and chat message users if they have the respective permissions [#3191, #3233].
- Fixed compare of duplicated users while CSV user import [#3201].
- Added settings option to enable updating the last_login field in the database. The
default is now disabled [#3400].
- Removed OPTIONS request. All permissions are now provided on startup [#3306].
Mediafiles:
- New form for uploading multiple files [#3650].
- New custom CKEditor plugin for browsing mediafiles [#3337].
- Project images always in fullscreen [#3355].
- Protect mediafiles for forbidden access [#3384].
- Fixed reloading of PDF on page change [#3274].
Core:
- New settings to upload custom fonts (for projector and pdf) [#3568].
- New custom translations to use custom wordings [#3383].
- New support for choosing image files as logos for projector, PDF and
web interface header [#3184, #3207, #3208, #3310].
- New notify system [#3212].
- New config option for standard font size in PDF [#3332].
- New config option for disabling header and footer in the projector [#3357].
- New dynamic webpage title [#3404].
- New 'go to top'-link [#3404].
- New custom format cleanup plugin for CKEditor [#3576].
- Reset scroll level for each new projection [#3686].
- Scroll to top on every state change [#3689].
- Added pagination on top of lists [#3698].
- Improved performance for PDF generation significantly (by upgrading to pdfmake 0.1.30) [#3278, #3285].
- Enhanced performance esp. for server restart and first connection of all
clients by refactoring autoupdate, Collection and AccessPermission [#3223, #3539].
- Improved reconnect handling if the server was flushed [#3297].
- No reload on logoff. OpenSlides is now a full single page application [#3172].
- Highlight list entries in a light blue, if a related object is projected
(e. g. a list of speakers of a motion) [#3301].
- Select the projector resolution with a slider and an aspect ratio [#3311].
- Delay the 'could not load projector' error 3 seconds to not irritate users
with a slow internet connection [#3323].
- Added default sorting for agenda, motions, elections, mediafiles and users [#3334, 3348].
- Added caching for the index views [#3419, #3424].
- Added projector prioritization [#3425].
- Added --debug-email flag to print all emails to stdout [#3530].
- Added --no-template-caching flag to disable template caching for
easier development [#3566].
- Updated CKEditor to 4.7 [#3375].
- Reduced ckeditor toolbar for inline editing [#3368].
- New api route to project items with just one request needed [#3713].
- Use native twisted mode for daphne [#3487].
- Saved language selection to session storage [#3543].
- Set default of projector resolution to 1220x915 [#2549].
- Preparations for the SAML plugin; Fixed caching of main views [#3535].
- Removed unnecessary OPTIONS request in config [#3541].
- Switched from npm to Yarn [#3188].
- Improvements for plugin integration [#3330].
- Cleanups for the collection and autoupdate system [#3390]
- Bugfixes for PDF creation [#3227, #3251, #3279, #3286, #3346, #3347, #3342].
- Fixed error when clearing empty chat [#3199].
- Fixed autoupdate bug for a user without user.can_see_name permission [#3233].
- Fixed bug the elements are projected and the deleted [#3336].
- Several bugfixes and minor improvements.
*[#xxxx] = Pull request number to get more details on https://github.com/OpenSlides/OpenSlides/pulls*
Version 2.1.1 (2017-04-05)
==========================
`Milestone <https://github.com/OpenSlides/OpenSlides/milestones/2.1.1>`_
Agenda:
- Fixed issue #3173 that the agenda item text cannot be changed.
Other:
- Set required version for optional Geiss support to <1.0.0.
Version 2.1 (2017-03-29)
========================
`Release notes <https://github.com/OpenSlides/OpenSlides/wiki/OpenSlides-2.1>`_ ·
`Milestone <https://github.com/OpenSlides/OpenSlides/milestones/2.1>`_
Agenda:
- Added button to remove all speakers from a list of speakers.
- Added option to create or edit agenda items as subitems of others.
- Fixed security issue: Comments were shown for unprivileged users.
- Added option to choose whether to show the current list of speakers slide
as a slide or an overlay.
- Manage speakers on the current list of speakers view.
- List of speakers for hidden items is always visible.
Core:
- Added support for multiple projectors.
- Added control for the resolution of the projectors.
- Added smooth projector scroll.
- Set the projector language in the settings.
- Added migration path from OpenSlides 2.0.
- Added support for big assemblies with lots of users.
- Django 1.10 is now supported. Dropped support for Django 1.8 and 1.9.
- Used Django Channels instead of Tornado. Refactoring of the autoupdate
process. Added retry with timeout in case of ChannelFull exception.
- Made a lot of autoupdate improvements for projector and site.
- Added new caching system with support for Redis.
- Support https as websocket protocol (wss).
- Accelerated startup process (send all data to the client after login).
- Add the command getgeiss to download the latest version of Geiss.
- Add a version of has_perm that can work with cached users.
- Removed our AnonymousUser. Make sure not to use user.has_perm() anymore.
- Added function utils.auth.anonymous_is_enabled which returns true, if it is.
- Changed has_perm to support an user id or None (for anyonmous) as first argument.
- Cache the group with there permissions.
- Added watching permissions in client and change the view immediately on changes.
- Used session cookies and store filter settings in session storage.
- Removed our db-session backend and added possibility to use any django session backend.
- Added template hook system for plugins.
- Used Roboto font in all templates.
- Added HTML support for messages on the projector.
- Moved custom slides to own app "topics". Renamed it to "Topic".
- Added button to clear the chatbox.
- Better dialog handling. Show dialog just in forground without changing the state url.
Added new dialog for profile, change password, tag and category update view.
- Switched editor back from TinyMCE to CKEditor which provides a
better copy/paste support from MS Word.
- Validate HTML strings from CKEditor against XSS attacks.
- Use a separate dialog with CKEditor for editing projector messages.
- Use CKEditor in settings for text markup.
- Used pdfMake for clientside generation of PDFs.
Run pdf creation in background (in a web worker thread).
- Introduced new table design for list views with serveral filters and
CSV export.
- New CSV import layout.
- Replaced angular-csv-import by Papa Parse for CSV parsing.
- Added UTF-8 byte order mark for every CSV export.
- Removed config cache to support multiple threads or processes.
- Added success/error symbol to config to show if saving was successful.
- Fixed bug, that the last change of a config value was not send via autoupdate.
- Moved full-text search to client-side (removed the server-side search engine Whoosh).
- Made a lot of code clean up, improvements and bug fixes in client and
backend.
Motions:
- Added adjustable line numbering mode (outside, inside, none) for each
motion text.
- Allowed to add change recommendations for special motion text lines
(with diff mode).
- Added projection support for change recommendations.
- Added button to sort and number all motions in a category.
- Added recommendations for motions.
- Added options to calculate percentages on different bases.
- Added calculation for required majority.
- Added blocks for motions which can be used in agenda. Set states for
multiple motions of a motion block by following the recommendation for
each motion.
- Used global config variable for preamble.
- Added configurable fields for comments.
- Added new origin field.
- Reimplemented amendments.
- New PDF layout.
- Added DOCX export with docxtemplater.
- Changed label of former state "commited a bill" to "refered to committee".
- Number of ballots printed can now be set in config.
- Add new personal settings to remove all whitespaces from motion identifier.
- Add new personal settings to allow amendments of amendments.
- Added inline editing for comments.
Elections:
- Added options to calculate percentages on different bases.
- Added calculation for required majority.
- Candidates are now sortable.
- Removed unused assignment config to publish winner election results only.
- Number of ballots printed can now be set in config.
- Added inline edit field for a specific hint on ballot papers.
Users:
- Added new matrix-interface for managing groups and their permissions.
- Added autoupdate on permission change (permission added).
- Improved password reset view for administrators.
- Changed field for initial password to an unchangeable field.
- Added new field for participant number.
- Added new field 'is_committee' and new default group 'Committees'.
- Improved users CSV import (use group names instead of id).
- Allowed to import/export initial user password.
- Added more multiselect actions.
- Added QR code in users access pdf.
Mediafiles:
- Allowed to project uploaded images (png, jpg, gif) and video files
(e. g. mp4, wmv, flv, quicktime, ogg).
- Allowed to hide uploaded files in overview list for non authorized users.
- Enabled removing of files from filesystem on model instance delete.
Other:
- Added Russian translation (Thanks to Andreas Engler).
- Added command to create example data.
Version 2.0 (2016-04-18)
========================
`Milestone <https://github.com/OpenSlides/OpenSlides/milestones/2.0>`_
*OpenSlides 2.0 is essentially not compatible to OpenSlides 1.7. E. g.
customized templates, databases and plugins can not be reused without
adaption.*
Agenda:
- Updated the tests and changed internal parts of method of the agenda model.
- Changed API of related objects. All assignments, motions and custom slides
are now agenda items and can be hidden.
- Removed django-mptt.
- Added attachments to custom sldies.
- Improved CSV import.
Assignments:
- Renamed app from assignment to assignments.
- Removed possibility to block candidates.
- Massive refactoring and cleanup of the app.
Motions:
- Renamed app from motion to motions.
- Massive refactoring and cleanup of the app.
Mediafiles:
- Renamed app from mediafile to mediafiles.
- Used improved pdf presentation with angular-pdf.
- Massive refactoring and cleanup of the app.
Users:
- Massive refactoring of the participant app. Now called 'users'.
- Used new anonymous user object instead of an authentification backend. Used
special authentication class for REST requests.
- Used authentication frontend via AngularJS.
- Improved CSV import.
Other:
- New OpenSlides logo.
- New design for web interface.
- Added multiple countdown support.
- Added colored countdown for the last n seconds (configurable).
- Switched editor from CKEditor to TinyMCE.
- Changed supported Python version to >= 3.4.
- Used Django 1.8 as lowest requirement.
- Django 1.9 is supported
- Added Django's application configuration. Refactored loading of signals
and projector elements/slides.
- Setup migrations.
- Added API using Django REST Framework 3.x. Added several views and mixins
for generic Django REST Framework views in OpenSlides apps.
- Removed most of the Django views and templates.
- Removed Django error pages.
- Added page for legal notice.
- Refactored projector API using metaclasses now.
- Renamed SignalConnectMetaClass classmethod get_all_objects to get_all
(private API).
- Refactored config API and moved it into the core app.
- Removed old style personal info page, main menu entries and widget API.
- Used AngularJS with additional libraries for single page frontend.
- Removed use of 'django.views.i18n.javascript_catalog'. Used angular-gettext
now.
- Updated to Bootstrap 3.
- Used SockJS for automatic update of AngularJS driven single page frontend.
- Refactored plugin API.
- Refactored start script and management commands. Changed command line
option and path for local installation.
- Refactored tests.
- Used Bower and gulp to manage third party JavaScript and Cascading Style
Sheets libraries.
- Used setup.cfg for development tools.
- Removed code for documentation and for Windows portable version with GUI.
Used new repositories for this. Cleaned up main repository.
- Updated all dependencies.
Translations:
- Updated DE, FR, CS and PT translations.
- Added ES translations.
Version 1.7 (2015-02-16)
========================
https://github.com/OpenSlides/OpenSlides/milestones/1.7
Core:
- New feature to tag motions, agenda and assignments.
- Fixed search index problem to index contents of many-to-many tables
(e. g. tags of a motion).
- Fixed AttributeError in chatbox on_open method.
Motions:
- New Feature to create amendments, which are related to a parent motion.
- Added possibility to hide motions from non staff users in some states.
Assignments:
- Fixed permissions to alter assignment polls.
Other:
- Cleaned up utils.views to increase performance when fetching single objects
from the database for a view (#1378).
- Fixed bug on projector which was not updated when an object was deleted.
- Fixed bug and show special characters in PDF like ampersand (#1415).
- Updated pdf.js to 1.0.907.
- Improve the usage of bsmselect jquery plugin.
- Updated translations.
Version 1.6.1 (2014-12-08)
==========================
https://github.com/OpenSlides/OpenSlides/milestones/1.6.1
Agenda:
- Fixed error in item numbers.
Motions:
- Show supporters on motion slide if available.
- Fixed motion detail view template. Added block to enable extra content via
plugins.
Assignments:
- Fixed PDF build error when an election has more than 20 posts or candidates.
Participants:
- Fixed participant csv import with group ids:
* Allowed to add multiple groups in csv group id field, e. g. "3,4".
* Fixed bug that group ids greater than 9 can not be imported.
* Updated error message if group id does not exists.
Other:
- Fixed CKEditor stuff (added insertpre plugin and removed unused code).
- Updated French, German and Czech translation.
Version 1.6 (2014-06-02)
========================
https://github.com/OpenSlides/OpenSlides/milestones/1.6
Dashboard:
- Added shortcuts for the countdown.
- Enabled copy and paste in widgets.
Agenda:
- New projector view with the current list of speakers.
- Added CSV import of agenda items.
- Added automatic numbering of agenda items.
- Fixed organizational item structuring.
Motions:
- New slide for vote results.
- Created new categories during CSV import.
Assignments/Elections:
- Coupled assignment candidates with list of speakers.
- Created a poll description field for each assignment poll.
- New slide for election results.
Participants:
- Disabled dashboard widgets by default.
- Added form field for multiple creation of new participants.
Files:
- Enabled update and delete view for uploader refering to his own files.
Other:
- Added global chatbox for managers.
- New config option to set the 100 % base for polls (motions/elections).
- Changed api for plugins. Used entry points to detect them automaticly. Load
them automaticly from plugin directory of Windows portable version.
- Added possibility to use custom templates and static files in user data path
directory.
- Changed widget api. Used new metaclass.
- Changed api for main menu entries. Used new metaclass.
- Inserted api for the personal info widget. Used new metaclass.
- Renamed config api classes. Changed permission system for config pages.
- Regrouped config collections and pages.
- Renamed some classes of the poll api.
- Renamed method and attribute of openslides.utils.views.PermissionMixin.
- Added api for absolute urls in models.
- Inserted command line option to translate config strings during database setup.
- Enhanced http error pages.
- Improved responsive design for templates.
- Fixed headings on custom slides without text.
- Moved dashboard and select widgets view from projector to core app.
- Renamed and cleaned up static direcories.
- Used jsonfield as required package. Removed jsonfield code.
- Added new package backports.ssl_match_hostname for portable build script.
- Used new app "django-ckeditor-updated" to render WYSIWYG html editors.
Removed CKEditor from sources.
- Only reload the webserver in debug-mode.
Version 1.5.1 (2014-03-31)
==========================
https://github.com/OpenSlides/OpenSlides/milestones/1.5.1
Projector:
- Fixed path and config help text for logo on the projector.
Agenda:
- Fixed permission error in the list of speakers widget.
- Fixed Item instance method is_active_slide().
Motion:
- Fixed sorting of motions concerning the identifier. Used natsort and
DataTables Natural Sort Plugin.
Participant:
- Added permission to see participants to the manager group.
- Fixed user status view for use without Javascript.
Files:
- Fixed error when an uploaded file was removed from filesystem.
Other:
- Set minimum Python version to 2.6.9. Fixed setup file for use with Python 2.6.
- Used unicode font for circle in ballot pdf. Removed Pillow dependency package.
- Fixed http status code when requesting a non-existing static page using
Tornado web server.
- Fixed error in main script when using other database engine.
- Fixed error on motion PDF with nested lists.
Version 1.5 (2013-11-25)
========================
https://github.com/OpenSlides/OpenSlides/milestones/1.5
Projector:
- New feature: Show PDF presentations on projector (with included pdf.js).
- Improved projector update process via new websocket API (using sockjs and tornado).
- New projector template with twitter bootstrap.
- Improved projector zoom and scroll behaviour.
Agenda:
- New config option: couple countdown with list of speakers.
- Used HTML editor (CKEditor) for agenda item text field.
- Added additional input format for agenda item duration field.
Motions:
- Enabled attachments for motions.
- Refactored warnings on CSV import view.
Elections:
- Refactored assignment app to use class based views instead of functions.
Polls:
- Added percent base to votes cast values.
Participants:
- Updated access data PDF: WLAN access (with QRCode for WLAN ssid/password)
and OpenSlides access (with QRCode for system URL), printed on a single A4 page
for each participant.
Other:
- Full text search integration (with Haystack and Whoosh).
- New start script with new command line options (see python manage.py --help)
- Fixed keyerror on user settings view.
- New messages on success or error of many actions like creating or editing objects.
- Changed messages backend, used Django's default now.
- A lot of template fixes and improvements.
- Extended css style options in CKEditor.
- Added feature to config app to return the default value for a key.
- Cleaned up OpenSlides utils views.
- Improved README (now with install instructions and used components).
- Updated all required package versions.
- Used flake8 instead of pep8 for style check, sort all import statements with isort.
- Added Portuguese translation (Thanks to Marco A. G. Pinto).
- Switched to more flexible versions of required third party packages.
- Updated to Django 1.6.x.
- Updated German documentation.
- Change license from GPLv2+ to MIT, see LICENSE file.
Version 1.4.2 (2013-09-10)
==========================
https://github.com/OpenSlides/OpenSlides/milestones/1.4.2
- Used jQuery plugin bsmSelect for better <select multiple> form elements.
- New config option to disable paragraph numbering in motion pdf. (Default value: disabled.)
- Removed max value limitation in config field 'motion_min_supporters'.
- Removed supporters signature field in motion pdf.
- Fixed missing creation time of motion version. Show now string if identifier is not set (in widgets and motion detail).
- Fixed error when a person is deleted.
- Fixed deleting of assignments with related agenda items.
- Fixed wrong ordering of agenda items after order change.
- Fixed error in portable version: Open browser on localhost when server listens to 0.0.0.0.
- Fixed typo and updated translations.
- Updated CKEditor from 4.1.1 to 4.2. Fixed errors in MS Internet Explorer.
- Updated to Django 1.5.2.
Version 1.4.1 (2013-07-29)
==========================
https://github.com/OpenSlides/OpenSlides/milestones/1.4.1
- Fixed tooltip which shows the end of each agenda item.
- Fixed duration of agenda with closed agenda items.
- Disabled deleting active version of a motion.
- Start browser on custom IP address.
- Fixed wrong URLs to polls in motion detail view.
- Added Czech translation.
Version 1.4 (2013-07-10)
========================
https://github.com/OpenSlides/OpenSlides/milestones/1.4
Agenda:
- New feature: list of speakers for each agenda item which saves begin and end
time of each speaker; added new widget and overlay on the dashboard for easy
managing and presenting lists of speakers.
- New item type: organisational item (vs. agenda item).
- New duration field for each item (with total time calculation for end time of event).
- Better drag'n'drop sorting of agenda items (with nestedSortable jQuery plugin).
Motions:
- Integrated CKEditor to use allowed HTML formatting in motion text/reason.
With server-side whitelist filtering of HTML tags (with bleach) and HTML support
for reportlab in motion pdf.
- New motion API.
- Support for serveral submitters.
- New workflow concept with two built-in workflows:
a) complex workflow (like in OpenSlides <= v1.3)
b) simple workflow (only 4 states: submitted -> accepted|rejected|not decided; no versioning)
- Categories for grouping motions.
- New modifiable identifier.
- New motion version diff view. Improved history table in motion detail view.
- New config variable 'Stop submitting of new motions' (for non-manager users).
- Updated motion status log.
- Updated csv import.
Participants:
- New feature: qr-code for system url on participants password pdf.
- Update default groups and permissions.
- New participant field: 'title'.
- Removed participants field 'type'. Use 'group' field instead. Updated csv import.
- Added warning if non-superuser removes his last group containing permission to
manage participants.
Other:
- New html template based on twitter bootstrap.
- New GUI frontend for the Windows portable version.
- New command to backup sqlite database.
- New mediafile app (files) to upload/download files via frontend.
- Used Tornado web server (instead of Django's default development server).
- Updated win32 portable version to use Tornado.
- Integrated DataTables jQuery plugin for overview tables of motions, elections
and participants (for client side sorting/filtering/pagination).
- New overlay API for projector view.
- New config app: Apps have to define config vars only once; config pages and
forms are created automatically.
- Moved version page out of the config app.
- Changed version number api for plugins.
- Moved widget with personal info to account app. Inserted info about lists of speakers.
- Updated to Django 1.5.
- Dropped support for python 2.5.
- Updated packaging (setup.py and portable).
- Open all PDFs in a new tab.
- Changed Doctype to HTML5.
- Updated German documentation (especially sections about agenda and motions).
- Several minor fixes and improvements.
Version 1.3.1 (2013-01-09)
==========================
https://github.com/OpenSlides/OpenSlides/milestones/1.3.1
- Fixed unwanted automatical language switching on projector view if more than
one browser languages send projector request to OpenSlides (#434)
Version 1.3 (2012-12-10)
========================
https://github.com/OpenSlides/OpenSlides/milestones/1.3
Projector:
- New public dashboard which allows access for all users per default. (#361)
(changed from the old, limited projector control page)
- New dashboard widgets:
* welcome widget (shows static welcome title and text)
* participant widget
* group widget
* personal widget (shows my motions and my elections)
- Hide scrollbar in projector view.
- Added cache for AJAX version of the projector view.
- Moved projector control icons into projector live widget. (#403)
- New weight field for custom slides (to order custom slides in widget).
- Fixed drag'n'drop behaviour of widgets into empty dashboard column.
- Fixed permissions for agenda, motion and assignment widgets (set to projector.can_manage_projector).
Agenda:
- Fixed slide error if agenda item deleted. (#330)
Motions:
- Translation: Changed 'application' to 'motion'.
- Fixed: Manager could not edit supporters. (#336)
- Fixed attribute error for anonymous users in motion view. (#329)
- Set default sorting of motions by number (in widget).
- CSV import allows to import group as submitter. (#419)
- Updated motion code for new user API.
- Rewrote motion views as class based views.
Elections:
- User can block himself/herself from candidate list after delete his/her candidature.
- Show blocked candidates in separate list.
- Mark elected candidates in candidate list. (#374)
- Show linebreaks in description. (#392)
- Set default sorting of elections by name (in widget).
- Fixed redirect from a poll which does not exists anymore.
- Changed default permissions of anonymous user to see elections. (#334)
- Updated assignment code for new user API.
Participants:
- New user and group API.
- New group option to handle a group as participant (and thus e.g. as submitter of motion).
- CSV import does not delete existing users anymore and append users as new users.
- New user field 'about me'. (#390)
- New config option for sorting users by first or last name (in participant lists, elections and motions). (#303)
- Allowed whitespaces in username, default: <firstname lastname>. (#326)
- New user and group slides. (#176)
- Don't allow to deactivate the administrator or themself.
- Don't allow to delete themself.
- Renamed participant field 'groups' to 'structure level' (German: Gliederungsebene).
- Rewrote participant views as class based views.
- Made OpenSlides user a child model of Django user model.
- Appended tests.
- Fixed error to allow admins to delete anonymous group
Other:
- Added French translation (Thanks to Moira).
- Updated setup.py to make an openslides python package.
- Removed frontpage (welcome widget contains it's content) and redirect '/' to dashboard url.
- Added LOCALE_PATHS to openslides_settings to avoid deprecation in Django 1.5.
- Redesigned the DeleteView (append QuestionMixin to send question via the django message API).
- Fixed encoding error in settings.py. (#349)
- Renamed openslides_settings.py to openslides_global_settings.py.
- New default path to database file (XDG_DATA_HOME, e.g. ~/.local/share/openslides/).
- New default path to settings file (XDG_CONFIG_HOME, e.g. ~/.config/openslides/).
- Added special handling to determine location of database and settings file in portable version.
- Don't use similar characters in generated passwords (no 'Il10oO').
- Localised the datetime in PDF header. (#296)
- Used specific session cookie name. (#332)
- Moved code repository from hg to git (incl. some required updates, e.g. version string function).
- Updated German translations.
- Several code optimizations.
- Several minor and medium issues and errors were fixed.
Version 1.2 (2012-07-25)
========================
https://github.com/OpenSlides/OpenSlides/milestones/1.2
General:
- New welcome page with customizable title and text.
- OpenSlides portable win32 binary distribution.
- New start script (start.py) to automatically create the default settings and the
database, start the server and the default browser.
- Add plugin system. Allow other django-apps to interact with OpenSlides.
Projector:
- New projector dashboard to control all slides on projector.
- New projector live view on projector dashboard.
- Countdown calculation works now on server-side.
- New Overlay messages to show additional information on a second
projector layer.
- Add custom slides.
- Add a welcome slide.
- Project application and assignment slides without an agenda item.
- Update the projector once per second (only).
Agenda:
- Add new comment field for agenda items.
Elections (Assignments):
- New config option to publish voting results for selected winners only.
Applications:
- Now, it's possible to deactivate the whole supporter system.
- New import option: set status of all imported applications to
'permit'.
- More log entries for all application actions.
Participant:
- Add new comment field for participants.
- Show translated permissions strings in user rols form.
- Admin is redirect to 'change password' page.
- New default user name: "firstname lastname".
Other:
- Use Django's class based views.
- Update to Django 1.4. Drop python 2.4 support for this reason.
- Separate the code for the projector.
- Rewrite the vote results table.
- Rewrite the poll API.
- Rewrite the config API. (Now any data which are JSON serializable
can be stored.)
- Improved CSV import for application and participants.
- GUI improvements of web interface (e.g. sub navigations, overview tables).
- Several minor and medium issues and errors were fixed.
Version 1.1 (2011-11-15)
========================
https://github.com/OpenSlides/OpenSlides/milestones/1.1
Agenda:
- [Feature] Agenda overview: New item-done-column for all non-manager (#7)
- [Feature] Allow HTML-Tags in agenda item of text (#12)
- [Feature] Split up hidden agenda items in new agenda table section (#13)
Projector:
- [Feature] Assignment projector view layout improvements (#9)
- [Bugfix] Zoom problem for sidebar div in beamer view (#5)
- [Bugfix] Blue 'candidate elected line' not visible in projector ajax view (#6)
- [Bugfix] Assignment projector view: Show results for elected candidates only (#11)
- [Bugfix] Missing beamer scaling (#2)
- [Bugfix] Assigment projector view: Removed empty character for no results cell. (#10)
Applications:
- [Feature] Import applications (#55)
- [Feature] Support trivial changes to an application (#56)
- [Bugfix] Order submitter and supporter form fields by full name (#53)
- [Bugfix] Application: Show profile instead of submitter username (#15)
- [Bugfix] "Application: Only check enough supports in status ""pub""" (#16)
Elections:
- [Feature] New button to show agenda item of selected application/assignment (#54)
- [Feature] Open add-user-url in new tab. (#32)
Applications/Elections:
- [Feature] Show voting results in percent (#48)
Participants:
- [Feature] Filter displayed permissions in group editor (#59)
- [Feature] Generate password after user creation automatically (#58)
- [Bugfix] Encoding error (#1)
- [Bugfix] List of participants (pdf) link not visible for users with see-particiants-permissions (#3)
- [Bugfix] Use user.profile.get_type_display() instead of user.profile.type (#4)
PDF:
- [Feature] Mark elected candidates in PDF (#31)
- [Feature] New config option to set title and preamble text for application and assignment pdf (#33)
- [Feature] New config option to set number of ballots in PDF (#26)
- [Bugfix] Assignment ballot pdf: Wrong line break in group name with brackets (#8)
- [Bugfix] Print available candidates in assignment pdf (#14)
- [Bugfix] "Show ""undocumented"" for result ""-2"" in application and assignment pdf" (#17)
Other:
- [Feature] Rights for anonymous (#45)
- [Feature] Show counter for limited speaking time (#52)
- [Feature] Reorderd config tab subpages (#61)
- [Localize] i18n German: Use gender-specific strings (#51)
- [Bugfix] <button> inside <a> tag not working in IE (#57)
- [Bugfix] Change default sort for tables of applications, assignments, participants (#27)
Version 1.0 (2011-09-12)
========================
https://github.com/OpenSlides/OpenSlides/tree/1.0/

View File

@ -1,159 +0,0 @@
# Development of OpenSlides 4
## Requirements
You need git, bash, docker, docker-compose, make and openssl installed.
Go is needed to install https://github.com/FiloSottile/mkcert (but Go is not a requirement to start the development server). The development setup uses HTTPS per default. OpenSlides does not work with HTTP anymore since features are required (like http2) that only works in a secure environment.
## Before starting the development
Clone this repository:
$ git clone --recurse-submodules git@github.com:OpenSlides/OpenSlides.git
After cloning you need to initialize all submodules:
$ git submodule update --init
Finally, start the development server:
$ make run-dev
(This command won't run without sudo, or without having set up Docker to run without sudo - see their documentation)
You can access the services independently using their corresponding ports
or access the full stack on
$ https://localhost:8000
## Running tests
To run all tests of all services, execute `run-service-tests`. TODO: Systemtests in this repo.
## Adding a new Service
$ git submodule add <git@myrepo.git>
Append `branch = main` to the new entry in the `.gitmodules` file. Verify,
that it is there (the folder should have 160000 permissions: Submodule) with the
current commit:
$ git diff --cached
Then, commit changes and create a pull request.
## Work in submodules
Create your own fork at github.
Remove the upstream repo as the origin in the submodule:
$ cd <submodule>
$ git remote remove origin
Add your fork and the main repo as origin and upstream
$ git remote add origin `<your fork>`
$ git remote add upstream `<main repo>`
$ git fetch --all
$ git checkout origin main
You can verify that your setup is correct using
$ git remote -v
The output should be similar to
origin git@github.com:<GithubUsername>/OpenSlides.git (fetch)
origin git@github.com:<GithubUsername>/OpenSlides.git (push)
upstream git@github.com:OpenSlides/OpenSlides.git (fetch)
upstream git@github.com:OpenSlides/OpenSlides.git (push)
## Requirements for services
### Environment variables
These environment variables are available:
- `<SERVICE>_HOST`: The host from a required service
- `<SERVICE>_PORT`: The port from a required service
Required services can be `MESSAGE_BUS`, `DATASTORE_WRITER`, `PERMISSION`, `AUTOUPDATE`,
etc. For private services (e.g. a database dedicated to exactly one service),
use the following syntax: `<SERVICE>_<PRIV_SERVICE>_<ATTRIBUTE>`, e.g. the
Postgresql user for the datastore: `DATASTORE_POSTGRESQL_USER`.
### Makefile
A makefile must be provided at the root-level of the service. The currently
required (phony) targets are:
- `run-tests`: Execute all tests from the submodule
- `build-dev`: Build an image with the tag `openslides-<service>-dev`
### Build arguments in the Dockerfile
These build arguments should be supported by every service:
- `REPOSITORY_URL`: The git-url for the repository to use
- `GIT_CHECKOUT`: A branch/tag/commit to check out during the build
Note that meaningful defaults should be provided in the Dockerfile.
## Developing on a single service
Go to the serivce and create a new branch (from main):
$ cd my-service
$ git status # -> on main?
$ git checkout -b my-feature
Run OpenSlides in development mode (e.g. in a new terminal):
$ make run-dev
After making some changes in my-service, create a commit and push to your fork
$ git add -A
$ git commit -m "A meaningful commit message here"
$ git push origin -u my-feature
As the last step, you can create a PR on Github. After merging, these steps are
required to be executed in the main repo:
$ cd my-service
$ git pull upstream main
$ cd ..
$ git diff # -> commit hash changed for my-service
If the update commit should be a PR:
$ git checkout -b updated-my-service
$ git commit -am "Updated my-service"
$ git push origin updated-my-service
Or a direct push on main:
$ git commit -am "Updated my-service"
$ git push origin main
## Working with Submodules
After working in many services with different branches, this command checks
out `main` (or the given branch in the .gitmodules) in all submodules and
pulls main from upstream (This requres to have `upstream`set up as a remote
in all submodules):
$ git submodule foreach -q --recursive 'git checkout $(git config -f $toplevel/.gitmodules submodule.$name.branch || echo main); git pull upstream $(git config -f $toplevel/.gitmodules submodule.$name.branch || echo main)'
This command has can also be called from the makefile using:
$ make services-to-main
When changing the branch in the main repo (this one), the submodules do not
automatically gets changed. THis ocmmand checks out all submodules to the given
commits in the main repo:
$ git submodule update

267
DEVELOPMENT.rst Normal file
View File

@ -0,0 +1,267 @@
========================
OpenSlides Development
========================
If you want to contribute to OpenSlides, have a look at `OpenSlides website
<https://openslides.org/>`_ and write us an email.
Installation and start of the development version
=================================================
1. Installation on GNU/Linux or Mac OS X
----------------------------------------
a. Check requirements
'''''''''''''''''''''
Make sure that you have installed `Python (>= 3.4) <https://www.python.org/>`_,
`Node.js (>=4.x) <https://nodejs.org/>`_, `Yarn <https://yarnpkg.com/>`_ and
`Git <http://git-scm.com/>`_ on your system. You also need build-essential
packages and header files and a static library for Python.
For Ubuntu 16.04 e. g. follow `Yarn installation instructions
<https://yarnpkg.com/en/docs/install>`_ and run::
$ sudo apt-get install git nodejs nodejs-legacy npm build-essential python3-dev
*Note: For Ubuntu 14.04 you have to update Node.js before. The distribution
version is 0.10.25 which is not sufficient.*
b. Get OpenSlides source code
'''''''''''''''''''''''''''''
Clone current master version from `OpenSlides GitHub repository
<https://github.com/OpenSlides/OpenSlides/>`_::
$ git clone https://github.com/OpenSlides/OpenSlides.git
$ cd OpenSlides
c. Setup a virtual Python environment (optional)
''''''''''''''''''''''''''''''''''''''''''''''''
See step 1. b. in the installation section in the `README.rst
<https://github.com/OpenSlides/OpenSlides/blob/master/README.rst>`_.
d. Install dependencies
'''''''''''''''''''''''
Install all required Python packages::
$ pip install --requirement requirements.txt
Install all Node.js and Bower packages and run several JavaScript build tasks::
$ yarn
Optional: To enhance performance run Gulp in production mode::
$ node_modules/.bin/gulp --production
e. Start OpenSlides
'''''''''''''''''''
Use the command-line interface::
$ python manage.py start
See step 1. d. in the installation section in the `README.rst
<https://github.com/OpenSlides/OpenSlides/blob/master/README.rst>`_.
To get help on the command line options run::
$ python manage.py --help
Later you might want to restart the server with one of the following commands.
To start OpenSlides with Daphne and one worker and to avoid opening new browser
windows run::
$ python manage.py start --no-browser
When debugging something email related change the email backend to console::
$ python manage.py start --debug-email
To start OpenSlides with Daphne and four workers (avoid concurrent write
requests or use PostgreSQL, see below) run::
$ python manage.py runserver
To start OpenSlides with Geiss and one worker and to avoid opening new browser
windows (download Geiss and setup Redis before, see below) run::
$ python manage.py start --no-browser --use-geiss
Use gulp watch in a second command-line interface::
$ node_modules/.bin/gulp watch
2. Installation on Windows
--------------------------
Follow the instructions above (Installation on GNU/Linux or Mac OS X) but care
of the following variations.
To get Python download and run the latest `Python 3.5 32-bit (x86) executable
installer <https://www.python.org/downloads/windows/>`_. Note that the 32-bit
installer is required even on a 64-bit Windows system. If you use the 64-bit
installer, step d. of the instruction might fail unless you installed some
packages manually.
You have to install `MS Visual C++ 2015 build tools
<https://www.microsoft.com/en-us/download/details.aspx?id=48159>`_ before you
install the required python packages for OpenSlides (unfortunately Twisted
16.6.x needs it).
To setup and activate the virtual environment in step c. use::
> .virtualenv\Scripts\activate.bat
All other commands are the same as for GNU/Linux and Mac OS X.
3. Running the test cases
-------------------------
a. Running server tests
'''''''''''''''''''''''
To run some server tests see `.travis.yml
<https://github.com/OpenSlides/OpenSlides/blob/master/.travis.yml>`_.
b. Running AngularJS test cases
'''''''''''''''''''''''''''''''
Run client tests by starting karma::
$ yarn run karma
Watch for file changes and run the tests automatically after each change::
$ yarn run karma:watch
OpenSlides in big mode
======================
In the so called big mode you should use OpenSlides with Redis, PostgreSQL and a
webserver like Apache HTTP Server or nginx as proxy server in front of your
OpenSlides interface server. Optionally you can use `Geiss
<https://github.com/ostcar/geiss/>`_ as interface server instead of Daphne.
1. Install and configure PostgreSQL and Redis
---------------------------------------------
Install `PostgreSQL <https://www.postgresql.org/>`_ and `Redis
<https://redis.io/>`_. For Ubuntu 16.04 e. g. run::
$ sudo apt-get install postgresql libpq-dev redis-server
Be sure that database and redis server is running. For Ubuntu 16.04 e. g. this
was done automatically if you used the package manager.
Then add database user and database. For Ubuntu 16.04 e. g. run::
$ sudo -u postgres createuser --pwprompt --createdb openslides
$ sudo -u postgres createdb --owner=openslides openslides
2. Install additional packages
------------------------------
Install some more required Python packages::
$ pip install -r requirements_big_mode.txt
3. Change OpenSlides settings
-----------------------------
Create OpenSlides settings file if it does not exist::
$ python manage.py createsettings
Change OpenSlides settings file (usually called settings.py): Setup
`DATABASES` entry as mentioned in the settings file. Set `use_redis` to
`True`.
Populate your new database::
$ python manage.py migrate
4. Run OpenSlides
-----------------
First start e. g. four workers (do not use the `--threads` option, because the threads will not spawn across all cores)::
$ python manage.py runworker&
$ python manage.py runworker&
$ python manage.py runworker&
$ python manage.py runworker&
To start Daphne as protocol server run::
$ export DJANGO_SETTINGS_MODULE=settings
$ export PYTHONPATH=personal_data/var/
$ daphne openslides.asgi:channel_layer
To use Geiss instead of Daphne, just download Geiss and start it::
$ python manage.py getgeiss
$ ./personal_data/var/geiss
5. Use Nginx (optional)
When using Nginx as a proxy for delivering staticfiles the performance of the setup will increase very much. For delivering staticfiles you have to collect those::
$ python manage.py collectstatic
This is an example configuration for a single Daphne/Geiss listen on port 8000::
server {
listen 80;
listen [::]:80;
server_name _;
location ~* ^/(?!ws|wss|webclient|core/servertime|core/version|users/whoami|users/login|users/logout|users/setpassword|motions/docxtemplate|agenda/docxtemplate|projector|real-projector|static|media|rest).*$ {
rewrite ^.*$ /static/templates/index.html;
}
location ~* ^/projector.*$ {
rewrite ^.*$ /static/templates/projector-container.html;
}
location ~* ^/real-projector.*$ {
rewrite ^.*$ /static/templates/projector.html;
}
location ~* ^/webclient.*$ {
rewrite ^/webclient/(site|projector).*$ /static/js/webclient-$1.js;
}
location /static {
alias <your path to>/collected-static;
}
location / {
proxy_pass http://localhost:8000;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Scheme $scheme;
}
}
Using Nginx as a load balancer is fairly easy. Just start multiple Daphnes/Geiss on different ports, change the `proxy_pass` to `http://openslides/` and add this on top of the Nginx configuration::
upstream openslides {
server localhost:2001;
server localhost:2002;
}

39
Dockerfile Normal file
View File

@ -0,0 +1,39 @@
FROM python:3.5
RUN apt-get -y update && apt-get -y upgrade
RUN apt-get install -y libpq-dev supervisor curl vim
## BUILD JS STUFF
RUN wget https://nodejs.org/dist/v6.11.3/node-v6.11.3-linux-x64.tar.xz -P /tmp
RUN cd /tmp && tar xfvJ node-v6.11.3-linux-x64.tar.xz
RUN ln -sf /tmp/node-v6.11.3-linux-x64/bin/node /usr/bin/node
RUN useradd -m openslides
RUN mkdir /app
COPY package.json yarn.lock bower.json gulpfile.js /app/
WORKDIR /app
RUN chown -R openslides /app
USER openslides
RUN curl -o- -L https://yarnpkg.com/install.sh | bash
RUN $HOME/.yarn/bin/yarn --non-interactive
# INSTALL PYTHON DEPENDENCIES
USER root
COPY requirements_*.txt /app/
RUN pip install -r /app/requirements_big_mode.txt
## Clean up
RUN apt-get remove -y python3-pip wget curl
RUN rm -rf /var/lib/apt/lists/*
# BUILD APP
ADD . /app
RUN node_modules/.bin/gulp --production
RUN rm -fr /app/bower_components
RUN rm -fr /app/node_modules
RUN mkdir /data && chown openslides /data
USER openslides
EXPOSE 8000
USER openslides
VOLUME /supervisord.conf
VOLUME /data

View File

@ -1,6 +1,6 @@
MIT License The MIT License (MIT)
Copyright (c) Since 2011 Authors of OpenSlides, see AUTHORS Copyright (c) 2011-2018 Authors of OpenSlides, see AUTHORS
Permission is hereby granted, free of charge, to any person obtaining a copy Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

9
MANIFEST.in Normal file
View File

@ -0,0 +1,9 @@
include AUTHORS
include CHANGELOG
include LICENSE
include README.rst
include requirements_production.txt
include requirements_big_mode.txt
include bower.json
recursive-include openslides *.*
exclude openslides/__pycache__/*

View File

@ -1,52 +0,0 @@
run-integration-tests:
@echo "Start OpenSlides Dev"
make run-dev ARGS="-d"
@echo "Start integration tests"
make cypress-docker
docker-compose -f integration/docker-compose.yml up
@echo "Stop OpenSlides Dev"
make stop-dev
run-service-tests:
git submodule foreach 'make run-tests'
build-dev:
./dev-commands/submodules-do.sh 'make build-dev'
make -C proxy build-dev
run-dev: | build-dev
docker-compose -f docker/docker-compose.dev.yml up $(ARGS)
run-dev-otel: | build-dev
docker-compose -f docker/docker-compose.dev.yml -f docker/dc.otel.dev.yml up $(ARGS)
stop-dev:
docker-compose -f docker/docker-compose.dev.yml down --volumes --remove-orphans
stop-dev-otel:
docker-compose -f docker/docker-compose.dev.yml -f docker/dc.otel.dev.yml down --volumes --remove-orphans
copy-node-modules:
docker-compose -f docker/docker-compose.dev.yml exec client bash -c "cp -r /app/node_modules/ /app/src/"
mv openslides-client/client/src/node_modules/ openslides-client/client/
reload-proxy:
docker-compose -f docker/docker-compose.dev.yml exec -w /etc/caddy proxy caddy reload
services-to-main:
./services-to-main.sh
submodules-origin-to-upstream:
# You may only use this one time after cloning this repository.
# Will set the upstream remote to "origin"
git submodule foreach -q --recursive 'git remote rename origin upstream'
cypress-open:
cd integration; npm run cypress:open
cypress-run:
cd integration; npm run cypress:run
cypress-docker:
docker-compose -f integration/docker-compose.yml build
docker-compose -f integration/docker-compose.yml up

View File

@ -1,57 +0,0 @@
# OpenSlides
## What is OpenSlides?
OpenSlides is a free, web based presentation and assembly system for
managing and projecting agenda, motions and elections of an assembly. See
https://openslides.com for more information.
## Using OpenSlides productively
__OpenSlides 4 (this) is currently in beta version!__
If you are just looking to use OpenSlides in a productive manner, please refer
to the [OpenSlides 3.4 (stable)](https://github.com/OpenSlides/OpenSlides/tree/stable/3.4.x)
## Installation
### Requirements
You need [Docker](https://docs.docker.com/engine/install/) and [Docker
Compose](https://docs.docker.com/compose/install/).
### Setup OpenSlides
For a productive setup of OpenSlides get the [OpenSlides manage
tool](https://github.com/OpenSlides/openslides-manage-service/releases/tag/latest)
from GitHub and make it executable. E. g. run:
$ wget https://github.com/OpenSlides/openslides-manage-service/releases/download/latest/openslides
$ chmod +x openslides
Then follow the instructions outlined in the [OpenSlides Manage
Service](https://github.com/OpenSlides/openslides-manage-service).
## Development
For further information about developing OpenSlides, refer to [the development
readme](DEVELOPMENT.md).
### Architecture of OpenSlides 4
![System architecture of OpenSlides 4](https://raw.githubusercontent.com/wiki/OpenSlides/OpenSlides/OS4/img/OpenSlides4.svg)
Read more about our [concept of OpenSlides 4.0](https://github.com/OpenSlides/OpenSlides/wiki/DE%3AKonzept-OpenSlides-4).
The technical documentation about the internals, requests and functionality can
be found [in the wiki](https://github.com/OpenSlides/OpenSlides/wiki/DE%3AKonzept-OpenSlides-4).
## License and authors
OpenSlides is Free/Libre Open Source Software (FLOSS), and distributed
under the MIT License, see ``LICENSE`` file. The authors of OpenSlides are
mentioned in the ``AUTHORS`` file.

226
README.rst Normal file
View File

@ -0,0 +1,226 @@
============
OpenSlides
============
What is OpenSlides?
===================
OpenSlides is a free, web based presentation and assembly system for
managing and projecting agenda, motions and elections of an assembly. See
https://openslides.org/ for more information.
Requirements
============
The OpenSlides server runs everywhere where Python is running (for example on
GNU/Linux, Mac or Windows). For the OpenSlides client a current webbrowser is required.
Installation
============
1. Installation on GNU/Linux or Mac OS X
----------------------------------------
a. Check requirements
'''''''''''''''''''''
Make sure that you have installed `Python (>= 3.4) <https://www.python.org/>`_
on your system.
Additional you need build-essential packages, header files and a static
library for Python and also the pyvenv-3 binary package for python3.
E.g. run on Debian/Ubuntu::
$ sudo apt-get install build-essential python3-dev python3-venv
b. Setup a virtual Python environment (optional)
''''''''''''''''''''''''''''''''''''''''''''''''
You can setup a virtual Python environment using the virtual environment
(venv) package for Python to install OpenSlides as non-root user.
Create your OpenSlides directory and change to it::
$ mkdir OpenSlides
$ cd OpenSlides
Setup and activate the virtual environment::
$ python3 -m venv .virtualenv
$ source .virtualenv/bin/activate
$ pip install --upgrade setuptools pip
c. Install OpenSlides
'''''''''''''''''''''
To install OpenSlides just run::
$ pip install openslides
This installs the latest stable version. To install a specific (beta)
version use ``openslides==x.y``.
You can also use the package from the `OpenSlides website
<https://openslides.org/>`_. Download latest OpenSlides release as
compressed tar archive and run::
$ pip install openslides-x.y.tar.gz
This will install all required Python packages (see
``requirements_production.txt``).
d. Start OpenSlides
'''''''''''''''''''
To start OpenSlides simply run::
$ openslides
If you run this command the first time, a new database and the admin account
(Username: ``admin``, Password: ``admin``) will be created. Please change the
password after first login!
OpenSlides will start a webserver. It will also try to open the webinterface in
your default webbrowser. The server will try to listen on the local ip address
on port 8000. That means that the server will be available to everyone on your
local network (at least for commonly used network configurations).
If you use a virtual environment (see step b.), do not forget to activate
the environment before restart after you closed the terminal::
$ source .virtualenv/bin/activate
To get help on the command line options run::
$ openslides --help
You can store settings, database and other personal files in a local
subdirectory and use these files e. g. if you want to run multiple
instances of OpenSlides::
$ openslides start --local-installation
2. Installation on Windows
--------------------------
Download the latest portable version of OpenSlides for Windows from
`OpenSlides website <https://openslides.org/>`_ which does not require any
install steps. Simply unzip the downloaded file and run ``openslides.exe``.
Development
===========
If you want to contribute to OpenSlides, have a look at `OpenSlides website
<https://openslides.org/>`_ and write us an email. There is also an
`instruction to install the development version
<https://github.com/OpenSlides/OpenSlides/blob/master/DEVELOPMENT.rst>`_.
In OpenSlides repository you find a ``Dockerfile`` but this is not for
production use. See our `Multi instance backend for OpenSlides
<https://github.com/OpenSlides/openslides-multiinstance-backend>`_ for more
information.
Installation for big assemblies
===============================
The installation steps described above install OpenSlides in a way that
does NOT support hundreds of concurrent clients. To install OpenSlides for
big assemblies some variables have to be changed in the OpenSlides settings
file (usually called settings.py).
The configuration values that have to be altered are:
* CACHES
* CHANNEL_LAYERS
* DATABASES
* SESSION_ENGINE
You should use a webserver like Apache HTTP Server or nginx to serve the
static and media files as proxy server in front of your OpenSlides
interface server. You also should use a database like PostgreSQL and Redis
as channels backend, cache backend and session engine. Finally you should
start some WSGI workers and one or more interface servers (Daphne or Geiss).
Please see the respective section in the `DEVELOPMENT.rst
<https://github.com/OpenSlides/OpenSlides/blob/master/DEVELOPMENT.rst>`_ and:
* https://channels.readthedocs.io/en/latest/deploying.html
* https://github.com/ostcar/geiss
* https://docs.djangoproject.com/en/1.10/topics/cache/
* https://github.com/sebleier/django-redis-cache
* https://docs.djangoproject.com/en/1.10/ref/settings/#databases
Used software
=============
OpenSlides uses the following projects or parts of them:
* Several Python packages (see ``requirements_production.txt``).
* Several JavaScript packages (see ``bower.json``)
* `angular <http://angularjs.org>`_, License: MIT
* `angular-animate <http://angularjs.org>`_, License: MIT
* `angular-bootstrap-colorpicker <https://github.com/buberdds/angular-bootstrap-colorpicker>`_, License: MIT
* `angular-chosen-localytics <http://github.com/leocaseiro/angular-chosen>`_, License: MIT
* `angular-ckeditor <https://github.com/lemonde/angular-ckeditor>`_, License: MIT
* `angular-file-saver <https://github.com/alferov/angular-file-saver>`_, License: MIT
* `angular-formly <http://formly-js.github.io/angular-formly/>`_, License: MIT
* `angular-formly-templates-bootstrap <http://formly-js.github.io/angular-formly-templates-bootstrap/>`_, License: MIT
* `angular-gettext <http://angular-gettext.rocketeer.be/>`_, License: MIT
* `angular-messages <http://angularjs.org>`_, License: MIT
* `angular-pdf <http://github.com/sayanee/angularjs-pdf>`_, License: MIT
* `angular-sanitize <http://angularjs.org>`_, License: MIT
* `angular-scroll-glue <https://github.com/Luegg/angularjs-scroll-glue>`_, License: MIT
* `angular-ui-bootstrap <http://angular-ui.github.io/bootstrap/>`_, License: MIT
* `angular-ui-router <http://angular-ui.github.io/ui-router/>`_, License: MIT
* `angular-ui-router-title <https://github.com/nonplus/angular-ui-router-title>`_, License: MIT
* `angular-ui-tree <https://github.com/angular-ui-tree/angular-ui-tree>`_, License: MIT
* `angular-xeditable <http://vitalets.github.io/angular-xeditable>`_, License: MIT
* `angularjs-scroll-glue <https://github.com/Luegg/angularjs-scroll-glue>`_, License: MIT
* `angularjs-slider <https://github.com/angular-slider/angularjs-slider>`_, License: MIT
* `api-check <https://github.com/kentcdodds/api-check>`_, License: MIT
* `blob-polyfill <https://github.com/bjornstar/blob-polyfill>`_, License: MIT
* `bootstrap <http://getbootstrap.com>`_, License: MIT
* `bootstrap <http://getbootstrap.com>`_, License: MIT
* `bootstrap-css-only <https://getbootstrap.com/>`_, License: MIT
* `bootstrap-css-only <http://getbootstrap.com>`_, License: MIT
* `bootstrap-ui-datetime-picker <https://github.com/Gillardo/bootstrap-ui-datetime-picker>`_, License: MIT
* `chosen <https://harvesthq.github.io/chosen/>`_, License: https://github.com/harvesthq/chosen/blob/master/LICENSE.md
* `chosen-js <https://harvesthq.github.io/chosen/>`_, License: MIT
* `ckeditor <http://ckeditor.com>`_, License: (GPL-2.0 OR LGPL-2.1 OR MPL-1.1)
* `docxtemplater <https://github.com/open-xml-templating/docxtemplater>`_, License: MIT
* `file-saver.js <https://github.com/Teleborder/FileSaver.js>`_, License: LICENSE.md
* `font-awesome-bower <https://github.com/tdg5/font-awesome-bower>`_, License: MIT
* `jquery <https://jquery.com>`_, License: MIT
* `jquery.cookie <https://plugins.jquery.com/cookie>`_, License: MIT
* `js-data <http://www.js-data.io>`_, License: MIT
* `js-data-angular <https://github.com/js-data/js-data-angular>`_, License: MIT
* `jszip <http://stuartk.com/jszip>`_, License: MIT or GPLv3
* `lodash <https://lodash.com/>`_, License: MIT
* `ng-dialog <https://github.com/likeastore/ngDialog>`_, License: MIT
* `ng-file-upload <https://github.com/danialfarid/ng-file-upload>`_, License: MIT
* `ngbootbox <https://github.com/eriktufvesson/ngBootbox>`_, License: MIT
* `ngStorage <https://github.com/gsklee/ngStorage>`_, License: MIT
* `papaparse <http://papaparse.com>`_, License: MIT
* `pdfjs-dist <http://mozilla.github.io/pdf.js/>`_, License: Apache-2.0
* `pdfmake <https://bpampuch.github.io/pdfmake>`_, License: MIT
* `roboto-fontface <https://github.com/choffmeister/roboto-fontface-bower>`_, License: Apache-2.0
License and authors
===================
OpenSlides is Free/Libre Open Source Software (FLOSS), and distributed
under the MIT License, see ``LICENSE`` file. The authors of OpenSlides are
mentioned in the ``AUTHORS`` file.

64
bower.json Normal file
View File

@ -0,0 +1,64 @@
{
"name": "openslides",
"private": true,
"dependencies": {
"bootstrap": "~3.3.7",
"jquery": "~3.1.0",
"angular": "~1.5.8",
"angular-animate": "~1.5.8",
"angular-bootstrap": "~2.1.3",
"angular-bootstrap-colorpicker": "~3.0.25",
"angular-chosen-localytics": "~1.5.0",
"angular-ckeditor": "~1.0.3",
"angular-file-saver": "~1.1.2",
"angular-formly": "~8.4.0",
"angular-formly-templates-bootstrap": "~6.2.0",
"angular-gettext": "~2.3.7",
"angular-messages": "~1.5.8",
"angular-pdf": "1.3.0",
"angular-sanitize": "~1.5.8",
"angular-scroll-glue": "~2.0.7",
"angular-ui-router": "~0.3.1",
"angular-ui-tree": "https://github.com/FinnStutzenstein/angular-ui-tree.git#94dbaaff6b36f9d7a514843b73c28d2a3684c0c0",
"angular-xeditable": "~0.5.0",
"angularjs-slider": "~6.2.2",
"bootstrap-css-only": "~3.3.6",
"bootstrap-ui-datetime-picker": "~2.4.0",
"ckeditor": "~4.7.2",
"docxtemplater": "~2.1.5",
"font-awesome-bower": "~4.7.0",
"jquery.cookie": "~1.4.1",
"js-data": "~2.9.0",
"js-data-angular": "~3.2.1",
"jszip": "~3.1.3",
"lodash": "~4.16.0",
"ng-dialog": "~0.6.4",
"ng-file-upload": "~11.2.3",
"ngstorage": "~0.3.11",
"ngBootbox": "~0.1.3",
"papaparse": "~4.1.2",
"pdfmake": "0.1.33",
"roboto-fontface": "~0.6.0"
},
"overrides": {
"pdfmake": {
"main": []
},
"pdfjs-dist": {
"main": "build/pdf.combined.js"
},
"roboto-fontface": {
"main": [
"fonts/Roboto/Roboto-Regular.woff",
"fonts/Roboto/Roboto-Medium.woff",
"fonts/Roboto-Condensed/Roboto-Condensed-Regular.woff",
"fonts/Roboto-Condensed/Roboto-Condensed-Light.woff"
]
}
},
"resolutions": {
"angular": ">=1.5 <1.6",
"jquery": ">=3.1 <3.2",
"angular-bootstrap": "~2.1.3"
}
}

2
db.sh
View File

@ -1,2 +0,0 @@
#!/bin/bash
docker-compose -f docker/docker-compose.dev.yml exec datastore-writer psql -h postgres -U openslides

View File

@ -1,3 +0,0 @@
#!/bin/bash
cd "$(dirname $0)"
docker-compose -f docker/docker-compose.dev.yml $@

View File

@ -1,5 +0,0 @@
#!/bin/bash
set -e
curl --header "Content-Type: application/json" -d '' http://localhost:9011/internal/datastore/writer/truncate_db

View File

@ -1,8 +0,0 @@
#!/bin/bash
set -e
cd "$(dirname $0)"
TARGET=${1:-export.json}
URL="http://localhost:9010/internal/datastore/reader/get_everything"
curl --header "Content-Type: application/json" -d '{}' $URL 2> /dev/null | python3 strip-meta-fields.py > $TARGET

View File

@ -1,3 +0,0 @@
#!/bin/bash
docker build openslides-manage-service/ --target manage --tag openslides-manage
docker run --network host openslides-manage $@

View File

@ -1,10 +0,0 @@
#!/bin/bash
set -e
cd "$(dirname $0)"
# first argument is the example data
DATA=$(cat ${1:-../docs/example-data.json})
./clear-ds.sh
docker-compose -f ../docker/docker-compose.dev.yml exec datastore-writer \
bash -c "source export-database-variables.sh; echo '$DATA' > /data.json; export DATASTORE_INITIAL_DATA_FILE=/data.json; python cli/create_initial_data.py"

View File

@ -1,12 +0,0 @@
import sys
import json
data = sys.stdin.read()
json_data = json.loads(data)
for collection, models in json_data.items():
for model in models.values():
for field in list(model.keys()):
if field.startswith("meta_"):
del model[field]
sys.stdout.write(json.dumps(json_data, separators=(',', ':')))

View File

@ -1,23 +0,0 @@
#!/bin/bash
# This script runs a command in every registered submodule parallel
# Credits go to https://stackoverflow.com/a/70418086
if [ -z "$1" ]; then
echo "Missing Command" >&2
exit 1
fi
COMMAND="$@"
IFS=$'\n'
for DIR in $(git submodule foreach --recursive -q sh -c pwd); do
printf "\n\"${DIR}\": \"${COMMAND}\" started!\n" \
&& \
cd "$DIR" \
&& \
eval "$COMMAND" \
&& \
printf "\"${DIR}\": \"${COMMAND}\" finished!\n" \
&
done
wait

View File

@ -1,35 +0,0 @@
# OpenSlides instance configuration
#
# As well as environment variables for various services, this file contains
# variables used to persist custom settings for docker-compose.yml or
# docker-stack.yml. See the preamble of a docker-compose.yml.m4 or
# docker-stack.yml.m4 template for more information.
#
# Most variables are listed here only to facilitate discovery of the available
# options. Empty values cause the template's defaults to be inserted.
# General
# -------
INSTANCE_DOMAIN=
PROJECT_STACK_NAME=
EXTERNAL_HTTP_PORT=
DEFAULT_DOCKER_REGISTRY=
# Docker Images
# -------------
DOCKER_OPENSLIDES_BACKEND_NAME=
DOCKER_OPENSLIDES_BACKEND_TAG=
DOCKER_OPENSLIDES_FRONTEND_NAME=
DOCKER_OPENSLIDES_FRONTEND_TAG=
# Configuration
# -------------
ENABLE_ELECTRONIC_VOTING=
# Service Replication
# -------------------
# TODO!!
OPENSLIDES_BACKEND_SERVICE_REPLICAS=
OPENSLIDES_FRONTEND_SERVICE_REPLICAS=
REDIS_RO_SERVICE_REPLICAS=
MEDIA_SERVICE_REPLICAS=

View File

@ -1,152 +0,0 @@
#!/bin/bash
set -e
HOME=$(dirname "$(realpath "${BASH_SOURCE[0]}")")
declare -A TARGETS
TARGETS=(
[proxy]="$HOME/../proxy/"
[client]="$HOME/../openslides-client/"
[backend]="$HOME/../openslides-backend/"
[auth]="$HOME/../openslides-auth-service/"
[autoupdate]="$HOME/../openslides-autoupdate-service/"
[manage]="$HOME/../openslides-manage-service/"
[datastore-reader]="$HOME/../openslides-datastore-service/reader"
[datastore-writer]="$HOME/../openslides-datastore-service/writer"
[media]="$HOME/../openslides-media-service/"
[vote]="$HOME/../openslides-vote-service/"
[icc]="$HOME/../openslides-icc-service/"
)
DOCKER_REPOSITORY="openslides"
DOCKER_TAG="latest-4"
CONFIG="/etc/osinstancectl"
OPTIONS=()
BUILT_IMAGES=()
DEFAULT_TARGETS=(proxy client backend auth autoupdate permission manage datastore-reader datastore-writer media vote icc)
usage() {
cat << EOF
Usage: $(basename ${BASH_SOURCE[0]}) [<options>] <service>...
Options:
-D, --docker-repo Specify a Docker repository
(default: unspecified, i.e., system default)
-t, --tag Tag the Docker image (default: $DOCKER_TAG)
--ask-push Offer to push newly built images to registry
--no-cache Pass --no-cache to docker-build
EOF
}
# Config file
if [[ -f "$CONFIG" ]]; then
echo "Found ${CONFIG} file."
source "$CONFIG"
fi
shortopt="hr:D:t:"
longopt="help,docker-repo:,tag:,ask-push,no-cache"
ARGS=$(getopt -o "$shortopt" -l "$longopt" -n "$ME" -- "$@")
if [ $? -ne 0 ]; then usage; exit 1; fi
eval set -- "$ARGS";
unset ARGS
# Parse options
while true; do
case "$1" in
-D|--docker-repo)
DOCKER_REPOSITORY="$2"
shift 2
;;
-t|--tag)
DOCKER_TAG="$2"
shift 2
;;
--ask-push)
ASK_PUSH=1
shift 1
;;
--no-cache)
OPTIONS+="--no-cache"
shift 1
;;
-h|--help) usage; exit 0 ;;
--) shift ; break ;;
*) usage; exit 1 ;;
esac
done
SELECTED_TARGETS=($@)
[[ "${#SELECTED_TARGETS[@]}" -ge 1 ]] || SELECTED_TARGETS=("${DEFAULT_TARGETS[@]}")
[[ "${SELECTED_TARGETS[@]}" != "all" ]] || SELECTED_TARGETS=("${!TARGETS[@]}")
for i in "${SELECTED_TARGETS[@]}"; do
loc="${TARGETS[$i]}"
[[ -n "$loc" ]] || {
echo "ERROR: Cannot build ${i}: not configured."
continue
}
img_name="openslides-${i}"
img="${img_name}:${DOCKER_TAG}"
if [[ -n "$DOCKER_REPOSITORY" ]]; then
img="${DOCKER_REPOSITORY}/${img}"
fi
echo "Building $img..."
cd $loc
{
printf '{\n'
printf '\t"service": "%s,\n' "${i}"
printf '\t"date": "%s",\n' "$(date)"
printf '\t"commit": "%s",\n' "$(git rev-parse HEAD)"
printf '\t"commit-abbrev": "%s",\n' "$(git rev-parse --abbrev-ref HEAD)"
printf '}\n'
} > version.json
# Special instructions for local services
build_script="${loc}/build.sh"
if [[ -f "$build_script" ]]; then
( . "$build_script" )
else
docker build --tag "$img" --pull "${OPTIONS[@]}" "$loc"
fi
rm version.json
BUILT_IMAGES+=("$img ON")
done
if [[ "${#BUILT_IMAGES[@]}" -ge 1 ]]; then
printf "\nSuccessfully built images:\n\n"
for i in "${BUILT_IMAGES[@]}"; do
read -r img x <<< "$i"
printf " - $img\n"
done
else
echo "No images were built."
exit 3
fi
[[ "$ASK_PUSH" ]] || exit 0
if hash whiptail > /dev/null 2>&1; then
while read img; do
echo "Pushing ${img}."
docker push "$img"
done < <( whiptail --title "OpenSlides build script" \
--checklist "Select images to push to their registry." \
25 78 16 --separate-output --noitem --clear \
${BUILT_IMAGES[@]} \
3>&2 2>&1 1>&3 )
else
echo
for i in "${BUILT_IMAGES[@]}"; do
read -r img x <<< "$i"
read -p "Push image '$img' to repository? [Y/n] " REPL
case "$REPL" in
N|n|No|no|NO) exit 0;;
*) docker push "$img" ;;
esac
done
fi

View File

@ -1,13 +0,0 @@
version: "3"
services:
collector:
image: otel/opentelemetry-collector:0.41.0
command: ["--config=/etc/otel-collector-config.yml"]
volumes:
- ./otel-collector-config.yml:/etc/otel-collector-config.yml
jaeger:
image: jaegertracing/all-in-one
ports:
- "16686:16686"

View File

@ -1,187 +0,0 @@
version: "3"
services:
datastore-reader:
image: openslides-datastore-reader-dev
depends_on:
- postgres
env_file: services.env
environment:
- DATASTORE_ENABLE_DEV_ENVIRONMENT=1
- NUM_WORKERS=8
- OPENSLIDES_DEVELOPMENT=1
volumes:
- ../openslides-datastore-service/datastore:/app/datastore
ports:
- 9010:9010
datastore-writer:
image: openslides-datastore-writer-dev
depends_on:
- postgres
- message-bus
env_file: services.env
volumes:
- ../openslides-datastore-service/datastore:/app/datastore
- ../openslides-datastore-service/cli:/app/cli
environment:
- DATASTORE_ENABLE_DEV_ENVIRONMENT=1
- COMMAND=create_initial_data
- DATASTORE_INITIAL_DATA_FILE=https://raw.githubusercontent.com/OpenSlides/openslides-backend/main/global/data/example-data.json
- OPENSLIDES_DEVELOPMENT=1
ports:
- 9011:9011
postgres:
image: postgres:11
environment:
- POSTGRES_USER=openslides
- POSTGRES_PASSWORD=openslides
- POSTGRES_DB=openslides
client:
image: openslides-client-dev
depends_on:
- backend
- autoupdate
env_file: services.env
environment:
- OPENSLIDES_DEVELOPMENT=1
volumes:
- ../openslides-client/client/src:/app/src
backend:
image: openslides-backend-dev
depends_on:
- datastore-reader
- datastore-writer
- auth
env_file: services.env
ports:
- "9002:9002"
- "9003:9003"
- "5678:5678"
environment:
- OPENSLIDES_DEVELOPMENT=1
- EMAIL_HOST=mailhog
- EMAIL_PORT=1025
# - EMAIL_HOST_USER username
# - EMAIL_HOST_PASSWORD secret
# EMAIL_CONNECTION_SECURITY use NONE, STARTTLS or SSL/TLS
- EMAIL_CONNECTION_SECURITY=NONE
- EMAIL_TIMEOUT=5
- EMAIL_ACCEPT_SELF_SIGNED_CERTIFICATE=false
- DEFAULT_FROM_EMAIL=noreply@example.com
volumes:
- ../openslides-backend/openslides_backend:/app/openslides_backend
- ../openslides-backend/migrations:/app/migrations
autoupdate:
image: openslides-autoupdate-dev
depends_on:
- datastore-reader
- message-bus
env_file: services.env
environment:
- OPENSLIDES_DEVELOPMENT=1
volumes:
- ../openslides-autoupdate-service/cmd:/root/cmd
- ../openslides-autoupdate-service/internal:/root/internal
- ../openslides-autoupdate-service/pkg:/root/pkg
icc:
image: openslides-icc-dev
depends_on:
- datastore-reader
- message-bus
- auth
env_file: services.env
environment:
- OPENSLIDES_DEVELOPMENT=1
volumes:
- ../openslides-icc-service/cmd:/root/cmd
- ../openslides-icc-service/internal:/root/internal
ports:
- "9007:9007"
auth:
image: openslides-auth-dev
depends_on:
- datastore-reader
- cache
env_file: services.env
environment:
- OPENSLIDES_DEVELOPMENT=1
volumes:
- ../openslides-auth-service/auth/src:/app/src
cache:
image: redis:latest
media:
image: openslides-media-dev
depends_on:
- backend
- postgres
env_file: services.env
environment:
- OPENSLIDES_DEVELOPMENT=1
volumes:
- ../openslides-media-service/src:/app/src
manage:
image: openslides-manage-dev
depends_on:
- auth
- datastore-writer
env_file: services.env
environment:
- OPENSLIDES_DEVELOPMENT=1
ports:
- "9008:9008"
message-bus:
image: redis:latest
proxy:
image: openslides-proxy-dev
depends_on:
- client
- backend
- autoupdate
ports:
- "8000:8000"
mailhog:
image: mailhog/mailhog
logging:
driver: "none" # disable saving logs
ports:
- "8025:8025" # web ui to check mails manually
vote:
image: openslides-vote-dev
depends_on:
- auth
- message-bus
- datastore-reader
- postgres
environment:
- OPENSLIDES_DEVELOPMENT=true
- VOTE_HOST=vote
- VOTE_PORT=9013
- DATASTORE_READER_HOST=datastore-reader
- MESSAGING=redis
- MESSAGE_BUS_HOST=message-bus
- VOTE_REDIS_HOST=cache
- VOTE_DATABASE_HOST=postgres
- VOTE_DATABASE_USER=openslides
- VOTE_DATABASE_PASSWORD=openslides
- VOTE_DATABASE_NAME=openslides
- AUTH=ticket
- AUTH_HOST=auth
- VOTE_DISABLE_LOG=true
volumes:
- ../openslides-vote-service/cmd:/root/cmd
- ../openslides-vote-service/internal:/root/internal
ports:
- "9013:9013"

View File

@ -1,21 +0,0 @@
receivers:
otlp:
protocols:
http:
grpc:
exporters:
jaeger:
endpoint: jaeger:14250
tls:
insecure: true
processors:
batch:
service:
pipelines:
traces:
receivers: [otlp]
processors: [batch]
exporters: [ jaeger]

View File

@ -1,16 +0,0 @@
#!/bin/bash
# This script sets password of user 1 (superadmin) to superadmin. You may also use the manage tool for this work.
set -e
# Hash the new password
response=$(docker-compose exec auth curl --header "Content-Type: application/json" -d '{"toHash": "superadmin"}' http://localhost:9004/internal/auth/hash)
hash=$(jq .hash <<< $response)
# Set user/1/password to $hash
request_data_prefix='{"user_id": 1, "information": {}, "locked_fields": {}, "events": [{"type": "update", "fqid": "user/1", "fields": {"password":'
request_data="$request_data_prefix $hash}}]}"
docker-compose exec backend curl --header "Content-Type: application/json" -d "$request_data" http://datastore-writer:9011/internal/datastore/writer/write
echo "Done"

View File

@ -1,3 +0,0 @@
## secrets/adminsecret.env is sourced by the server container to set the initial
## admin user password.
# OPENSLIDES_ADMIN_PASSWORD="<securepassword>"

View File

@ -1,5 +0,0 @@
## Example user credential configuration
# OPENSLIDES_USER_FIRSTNAME="John"
# OPENSLIDES_USER_LASTNAME="Doe"
# OPENSLIDES_USER_PASSWORD="<securepassword>"
# OPENSLIDES_USER_EMAIL="john@example.com"

View File

@ -1,49 +0,0 @@
MESSAGE_BUS_HOST=message-bus
MESSAGE_BUS_PORT=6379
DATASTORE_READER_HOST=datastore-reader
DATASTORE_READER_PORT=9010
DATASTORE_WRITER_HOST=datastore-writer
DATASTORE_WRITER_PORT=9011
DATASTORE_DATABASE_HOST=postgres
ACTION_HOST=backend
ACTION_PORT=9002
PRESENTER_HOST=backend
PRESENTER_PORT=9003
AUTOUPDATE_HOST=autoupdate
AUTOUPDATE_PORT=9012
PERMISSION_HOST=permission
PERMISSION_PORT=9005
AUTH_HOST=auth
AUTH_PORT=9004
CACHE_HOST=cache
CACHE_PORT=6379
ICC_PORT=9007
ICC_HOST=icc
ICC_REDIS_HOST=message-bus
ICC_REDIS_PORT=6379
MEDIA_HOST=media
MEDIA_PORT=9006
MEDIA_DATABASE_HOST=postgres
MEDIA_DATABASE_NAME=openslides
MANAGE_HOST=manage
MANAGE_PORT=9008
VOTE_HOST=vote
VOTE_PORT=9013
VOTE_REDIS_HOST=cache
VOTE_DATABASE_HOST=postgres
VOTE_DATABASE_USER=openslides
VOTE_DATABASE_PASSWORD=openslides
VOTE_DATABASE_NAME=openslides
OTEL_EXPORTER_JAEGER_ENDPOINT=http://jaeger:14268/api/traces
OTEL_EXPORTER_OTLP_ENDPOINT=collector:4318
OPENTELEMETRY_ENABLED=0

332
gulpfile.js Normal file
View File

@ -0,0 +1,332 @@
/**
* Gulp tasks for development and production.
*
* Run
*
* $ ./node_modules/.bin/gulp
*
* for development and
*
* $ ./node_modules/.bin/gulp --production
*
* for production mode.
*/
var argv = require('yargs').argv,
gulp = require('gulp'),
concat = require('gulp-concat'),
cssnano = require('gulp-cssnano'),
gulpif = require('gulp-if'),
gettext = require('gulp-angular-gettext'),
inject = require('gulp-inject-string'),
jshint = require('gulp-jshint'),
mainBowerFiles = require('main-bower-files'),
path = require('path'),
rename = require('gulp-rename'),
sass = require('gulp-sass'),
sourcemaps = require('gulp-sourcemaps'),
templateCache = require('gulp-angular-templatecache'),
through = require('through2'),
uglify = require('gulp-uglify'),
vsprintf = require('sprintf-js').vsprintf;
// Directory where the results go to
var output_directory = path.join('openslides', 'static');
/**
* Default tasks to be run before start.
*/
// Catches all JavaScript files (excluded worker files) from all core apps and concats them to one
// file js/openslides.js. In production mode the file is uglified.
gulp.task('js', function () {
return gulp.src([
path.join('openslides', '*', 'static', 'js', '**', '*.js'),
'!' + path.join('openslides', 'core', 'static', 'js', 'core', 'pdf-worker.js'),
])
.pipe(sourcemaps.init())
.pipe(concat('openslides.js'))
.pipe(sourcemaps.write())
//TODO: Needs rework in all js files that uglified code works correctly.
//.pipe(gulpif(argv.production, uglify()))
.pipe(gulp.dest(path.join(output_directory, 'js')));
});
// Catches all JavaScript files from all bower components and concats them to
// one file js/openslides-libs.js. In production mode the file is uglified.
gulp.task('js-libs', function () {
return gulp.src(mainBowerFiles({
filter: /\.js$/
}))
.pipe(sourcemaps.init())
.pipe(concat('openslides-libs.js'))
.pipe(sourcemaps.write())
.pipe(inject.prepend("/* set basepath of CKEditor */\n" +
"window.CKEDITOR_BASEPATH = '/static/ckeditor/';\n\n"))
.pipe(inject.prepend("/* Workaround for IE and pdfjs-dist#1.3.100 (see PR#3714) */\n" +
"PDFJS = {workerSrc: 'not used but set'};\n\n"))
.pipe(gulpif(argv.production, uglify()))
.pipe(gulp.dest(path.join(output_directory, 'js')));
});
// Catches all pdfmake files for pdf worker.
gulp.task('pdf-worker', function () {
return gulp.src([
path.join('openslides', 'core', 'static', 'js', 'core', 'pdf-worker.js'),
])
.pipe(gulpif(argv.production, uglify()))
.pipe(gulp.dest(path.join(output_directory, 'js', 'workers')));
});
// pdfmake files
gulp.task('pdf-worker-libs', function () {
return gulp.src([
path.join('bower_components', 'pdfmake', 'build', 'pdfmake.min.js'),
])
.pipe(gulpif(argv.production, uglify()))
.pipe(rename('pdf-worker-libs.js'))
.pipe(gulp.dest(path.join(output_directory, 'js', 'workers')));
});
// Catches all template files from all core apps and concats them to one
// file js/openslides-templates.js. In production mode the file is uglified.
gulp.task('templates', function () {
return gulp.src(path.join('openslides', '*', 'static', 'templates', '**', '*.html'))
.pipe(templateCache('openslides-templates.js', {
module: 'OpenSlidesApp-templates',
standalone: true,
moduleSystem: 'IIFE',
transformUrl: function (url) {
var pathList = url.split(path.sep);
pathList.shift();
return pathList.join(path.sep);
},
}))
.pipe(gulpif(argv.production, uglify()))
.pipe(gulp.dest(path.join(output_directory, 'js')));
});
// Build the openslides-site.css file from the main file core/static/css/site.scss.
// Minimizes the outputfile if the production flag is given.
gulp.task('css-site', function () {
return gulp.src([
path.join('openslides', 'core', 'static', 'css', 'site.scss')
])
.pipe(sass().on('error', sass.logError))
.pipe(gulpif(argv.production, cssnano({safe: true})))
.pipe(rename('openslides-site.css'))
.pipe(gulp.dest(path.join(output_directory, 'css')));
});
// Build the openslides-projector.css file from the main file core/static/css/projector.scss.
// Minimizes the outputfile if the production flag is given.
gulp.task('css-projector', function () {
return gulp.src([
path.join('openslides', 'core', 'static', 'css', 'projector.scss')
])
.pipe(sass().on('error', sass.logError))
.pipe(gulpif(argv.production, cssnano({safe: true})))
.pipe(rename('openslides-projector.css'))
.pipe(gulp.dest(path.join(output_directory, 'css')));
});
// Catches all CSS files from all bower components and concats them to one file
// css/openslides-libs.css. In production mode the file is uglified.
gulp.task('css-libs', function () {
return gulp.src(mainBowerFiles({
filter: /\.css$/
}))
.pipe(concat('openslides-libs.css'))
.pipe(gulpif(argv.production, cssnano({safe: true})))
.pipe(gulp.dest(path.join(output_directory, 'css')));
});
// Catches all font files from all bower components.
gulp.task('fonts-libs', function() {
return gulp.src(mainBowerFiles({
filter: /\.(woff)|(woff2)$/
}))
.pipe(gulp.dest(path.join(output_directory, 'fonts')));
});
// Catches image files for angular-chosen.
gulp.task('angular-chosen-img', function () {
return gulp.src(path.join('bower_components', 'chosen', '*.png'))
.pipe(gulp.dest(path.join(output_directory, 'css')));
});
// CKEditor defaults
gulp.task('ckeditor-defaults', function () {
return gulp.src([
path.join('bower_components', 'ckeditor', 'styles.js'),
path.join('bower_components', 'ckeditor', 'contents.css'),
])
.pipe(gulp.dest(path.join(output_directory, 'ckeditor')));
});
// CKEditor skins
gulp.task('ckeditor-skins', function () {
return gulp.src(
[
path.join('bower_components', 'ckeditor', 'skins', 'moono-lisa', '**', '*'),
],
{
base: path.join('bower_components', 'ckeditor', 'skins')
}
)
.pipe(gulp.dest(path.join(output_directory, 'ckeditor', 'skins')));
});
// CKEditor plugins
gulp.task('ckeditor-plugins', function () {
return gulp.src(
[
path.join('bower_components', 'ckeditor', 'plugins', 'clipboard', '**', '*'),
path.join('bower_components', 'ckeditor', 'plugins', 'colorbutton', '**', '*'),
path.join('bower_components', 'ckeditor', 'plugins', 'colordialog', '**', '*'),
path.join('bower_components', 'ckeditor', 'plugins', 'dialog', '**', '*'),
path.join('bower_components', 'ckeditor', 'plugins', 'find', '**', '*'),
path.join('bower_components', 'ckeditor', 'plugins', 'image', '**', '*'),
path.join('bower_components', 'ckeditor', 'plugins', 'justify', '**', '*'),
path.join('bower_components', 'ckeditor', 'plugins', 'link', '**', '*'),
path.join('bower_components', 'ckeditor', 'plugins', 'liststyle', '**', '*'),
path.join('bower_components', 'ckeditor', 'plugins', 'magicline', '**', '*'),
path.join('bower_components', 'ckeditor', 'plugins', 'pastefromword', '**', '*'),
path.join('bower_components', 'ckeditor', 'plugins', 'panelbutton', '**', '*'),
path.join('bower_components', 'ckeditor', 'plugins', 'showblocks', '**', '*'),
path.join('bower_components', 'ckeditor', 'plugins', 'specialchar', '**', '*'),
path.join('bower_components', 'ckeditor', 'plugins', 'sourcedialog', '**', '*'),
path.join('bower_components', 'ckeditor', 'plugins', 'table', '**', '*'),
],
{
base: path.join('bower_components', 'ckeditor', 'plugins')
}
)
.pipe(gulp.dest(path.join(output_directory, 'ckeditor', 'plugins')));
});
// CKEditor languages
gulp.task('ckeditor-lang', function () {
return gulp.src([
path.join('bower_components', 'ckeditor', 'lang', 'en.js'),
path.join('bower_components', 'ckeditor', 'lang', 'de.js'),
path.join('bower_components', 'ckeditor', 'lang', 'pt.js'),
path.join('bower_components', 'ckeditor', 'lang', 'es.js'),
path.join('bower_components', 'ckeditor', 'lang', 'fr.js'),
path.join('bower_components', 'ckeditor', 'lang', 'cs.js'),
path.join('bower_components', 'ckeditor', 'lang', 'ru.js'),
])
.pipe(gulp.dest(path.join(output_directory, 'ckeditor', 'lang')));
});
// Combines all CKEditor related tasks.
gulp.task('ckeditor', ['ckeditor-defaults', 'ckeditor-skins', 'ckeditor-plugins', 'ckeditor-lang'], function () {});
// Compiles translation files (*.po) to *.json and saves them in the directory
// openslides/static/i18n/.
gulp.task('translations', function () {
return gulp.src(path.join('openslides', 'locale', 'angular-gettext', '*.po'))
.pipe(gettext.compile({
format: 'json'
}))
.pipe(gulp.dest(path.join(output_directory, 'i18n')));
});
// Gulp default task. Runs all other tasks before.
gulp.task('default', [
'js',
'js-libs',
'pdf-worker',
'pdf-worker-libs',
'templates',
'css-site',
'css-projector',
'css-libs',
'fonts-libs',
'ckeditor',
'angular-chosen-img',
'translations'
], function () {});
/**
* Extra tasks that have to be called manually. Useful for development.
*/
// Watches changes in JavaScript and templates.
gulp.task('watch', ['js', 'templates', 'pdf-worker', 'css-site', 'css-projector'], function () {
gulp.watch([
path.join('openslides', '*', 'static', 'js', '**', '*.js'),
'!' + path.join('openslides', 'core', 'static', 'js', 'core', 'pdf-worker.js')
], ['js']);
gulp.watch(path.join('openslides', '*', 'static', 'templates', '**', '*.html'), ['templates']);
gulp.watch(path.join('openslides', 'core', 'static', 'js', 'core', 'pdf-worker.js'), ['pdf-worker']);
// We cannot differentiate between all scss files which belong to each realm. So if
// one scss file changes the site and projector css is rebuild.
gulp.watch(path.join('openslides', '*', 'static', 'css', '**', '*.scss'), ['css-site', 'css-projector']);
});
// Extracts translatable strings using angular-gettext and saves them in file
// openslides/locale/angular-gettext/template-en.pot.
gulp.task('pot', function () {
return gulp.src([
'openslides/core/static/templates/*.html',
'openslides/*/static/templates/**/*.html',
'openslides/*/static/js/*/*.js',
])
.pipe(gettext.extract('template-en.pot', {}))
.pipe(gulp.dest('openslides/locale/angular-gettext/'));
});
// Checks JavaScript using JSHint
gulp.task('jshint', function () {
return gulp.src([
'gulpfile.js',
path.join( 'openslides', '*', 'static', '**', '*.js' ),
])
.pipe(jshint())
.pipe(jshint.reporter('default'))
.pipe(jshint.reporter('fail'));
});
// Extracts names, URLs and licensed of all uses bower components and prints
// it to the console. This is useful to update the README.rst during release
// process.
gulp.task('bower-components-for-readme', function () {
var files = [];
return gulp.src([
path.join('bower_components', '*', 'bower.json'),
path.join('bower_components', '*', 'package.json'),
path.join('bower_components', '*', 'component.json'),
])
.pipe(
through.obj(
function (chunk, encoding, callback) {
files.push(chunk);
callback();
},
function (callback) {
// Extract JSON from bower.json or components.json file.
var extracted = [];
for (var index = 0; index < files.length; index++) {
extracted.push(JSON.parse(files[index].contents.toString()));
}
// Sort files.
extracted.sort(function (a, b) {
return a.name < b.name ? -1 : 1;
});
// Print out line for README.rst.
for (var index2 = 0; index2 < extracted.length; index2++) {
var data = [
extracted[index2].name,
extracted[index2].homepage,
extracted[index2].license,
];
console.log(vsprintf(' * `%s <%s>`_, License: %s', data));
}
// End stream without further file processing.
callback();
}
)
);
});

View File

@ -1,12 +0,0 @@
FROM cypress/base:10
WORKDIR /app
COPY package.json package.json
COPY package-lock.json package-lock.json
RUN npm ci
COPY ./cypress-docker.json ./cypress.json
COPY ./resource-config-docker.js ./resource-config.js
COPY ./cypress ./cypress/
CMD ["npm", "run", "cypress:run"]

View File

@ -1,44 +0,0 @@
# Integration tests
To test the integration of our OpenSlides services we are using cypress.
There are not too many of them, but they are sufficient tell that our services are properly integrated.
- The client can be accessed
- Authentication works (admin admin can be logged in)
- The backend accepts requests (of some sort)
- The auto update transmits data to the client
(this list is not exhaustive)
## Writing tests and using cypress
To write and execute tests meaningfully, you will want to install cypress locally.
Inside the `/integration` directory, execute
$ npm install
$ npm run cypress:open
(or `make cypress-open` from the main directory)
The cypress runner will open using electron and executes the tests for you.
## Run in docker and CI
Start OpenSlides (Usually in dev setup). From the main directory run
$ make run-dev
in the `/integration` just fire
$ docker-compose build
$ docker-compose up
(or `make cypress-docker` from the main directory)
Cypress will run dockered and report errors inside the CLI.
Screenshots and videos of the tests can be found in the `/integration/results` folder.
You can streamline the whole process by using
$ make run-system-tests
From the main directory.
This can take while, since the docker of OS4 has to be build first.

View File

@ -1,3 +0,0 @@
{
"baseUrl": "https://host.docker.internal:8000"
}

View File

@ -1,6 +0,0 @@
{
"baseUrl": "https://localhost:8000",
"screenshotsFolder": "results/screenshots",
"videosFolder": "results/videos",
"downloadsFolder": "results/downloads"
}

View File

@ -1,5 +0,0 @@
{
"name": "Using fixtures to represent data",
"email": "hello@cypress.io",
"body": "Fixtures are a great way to mock data for responses to routes"
}

View File

@ -1,7 +0,0 @@
describe("Load client", () => {
it("successfully loads", () => {
cy.visit("/");
cy.url().should("include", "/login");
cy.contains("OpenSlides");
});
});

View File

@ -1,16 +0,0 @@
describe("Login using UI", () => {
it("Login over login-form, set cookie", () => {
const username = "admin"
const password = "admin"
cy.visit("/");
cy.wait(1000)
cy.url().should("include", "login");
cy.get("#mat-input-0").type(username);
cy.get("#mat-input-1").type(`${password}{enter}`);
cy.wait(1000)
cy.url().should("not.include", "login");
cy.getCookie("refreshId").should("exist");
});
});

View File

@ -1,27 +0,0 @@
/**
* Some bugs
*/
// describe("Create a new committee", () => {
// beforeEach(() => {
// cy.login();
// cy.visit("/committees");
// });
// it("Creates a committee", () => {
// cy.visit("/committees/create");
// const committeeName = `Cypress Committee ${Date.now().toString()}`;
// cy.get("#mat-input-0").type(committeeName);
// cy.intercept({
// method: "POST",
// url: "/system/action/handle_request",
// }).as("handle_request");
// cy.get("form").submit();
// cy.wait("@handle_request");
// cy.url().should("not.include", "create");
// // only on clean db
// //cy.contains(committeeName);
// });
// });

View File

@ -1,30 +0,0 @@
describe("Get autoupdates for committees detail view", () => {
let committeeName;
let committeeId;
beforeEach(() => {
cy.login();
committeeName = `Cypress ${Date.now().toString()}`;
const committeeData = {
organization_id: 1,
name: committeeName,
user_$_management_level: { can_manage: [1] },
};
cy.os4request("committee.create", committeeData).then((res) => {
committeeId = res.id;
});
});
it("Receives a name change", () => {
// cy.visit(`/committees/${committeeId}`);
// cy.contains(committeeName);
// const updatedName = committeeName + "update";
// const committeeData = {
// id: committeeId,
// name: updatedName,
// };
// cy.os4request("committee.update", committeeData).then(() => {
// cy.contains(updatedName);
// });
});
});

View File

@ -1,43 +0,0 @@
describe("Update a committee", () => {
let committeeName;
let committeeId;
beforeEach(() => {
cy.login();
committeeName = `Cypress ${Date.now().toString()}`;
const committeeData = {
organization_id: 1,
name: committeeName,
user_$_management_level: { can_manage: [1] },
};
cy.os4request("committee.create", committeeData).then((res) => {
committeeId = res.id;
});
cy.visit("/committees/");
});
it("Has new Committee", () => {
// cy.visit(`/committees/${committeeId}`);
// cy.url().should('include', committeeId);
// cy.get('h1').contains(committeeName);
});
/**
* Some bugs
*/
// it("Can just update a new Committee", () => {
// cy.visit(`/committees/${committeeId}/edit-committee`);
// cy.url().should("include", `${committeeId}/edit-committee`);
// cy.get(".title-slot").contains("Edit committee");
// cy.get("#mat-input-0").type("edit");
// // cy.intercept({
// // method: "POST",
// // url: "/system/action/handle_request",
// // }).as("au");
// // cy.wait("@au");
// cy.get("form").submit();
// cy.url().should("not.include", `edit-committee`);
// });
});

View File

@ -1,22 +0,0 @@
/// <reference types="cypress" />
// ***********************************************************
// This example plugins/index.js can be used to load plugins
//
// You can change the location of this file or turn off loading
// the plugins file with the 'pluginsFile' configuration option.
//
// You can read more here:
// https://on.cypress.io/plugins-guide
// ***********************************************************
// This function is called when a project is opened or re-opened (e.g. due to
// the project's config changing)
/**
* @type {Cypress.PluginConfig}
*/
// eslint-disable-next-line no-unused-vars
module.exports = (on, config) => {
// `on` is used to hook into various events Cypress emits
// `config` is the resolved Cypress config
}

View File

@ -1,92 +0,0 @@
// ***********************************************
// This example commands.js shows you how to
// create various custom commands and overwrite
// existing commands.
//
// For more comprehensive examples of custom
// commands please read more here:
// https://on.cypress.io/custom-commands
// ***********************************************
//
//
// -- This is a parent command --
// Cypress.Commands.add('login', (email, password) => { ... })
//
//
// -- This is a child command --
// Cypress.Commands.add('drag', { prevSubject: 'element'}, (subject, options) => { ... })
//
//
// -- This is a dual command --
// Cypress.Commands.add('dismiss', { prevSubject: 'optional'}, (subject, options) => { ... })
//
//
// -- This will overwrite an existing command --
// Cypress.Commands.overwrite('visit', (originalFn, url, options) => { ... })
/**
* Login
*/
Cypress.Commands.add("login", (username = "admin", password = "admin") => {
cy.request({
method: "POST",
url: "/system/auth/login/",
body: {
username,
password,
},
})
.as("loginResponse")
.then((response) => {
Cypress.env("authToken", response.headers.authentication);
return response;
})
.its("status")
.should("eq", 200)
});
/**
* Create models
*/
Cypress.Commands.add("os4request", (osAction, body) => {
cy.request({
method: "POST",
url: "/system/action/handle_request",
body: [
{
action: osAction,
data: [
{
...body,
},
],
},
],
})
.should((response) => {
expect(response.status).to.eq(200);
})
.its("body")
.should("contain", {
success: true,
})
.then((body) => {
return body.results[0][0]
});
});
/**
* Extend "request" with auth header
*/
Cypress.Commands.overwrite("request", (originalFn, ...options) => {
const optionsObject = options[0];
const token = Cypress.env("authToken");
if (!!token && optionsObject === Object(optionsObject)) {
optionsObject.headers = {
authentication: token,
...optionsObject.headers,
};
return originalFn(optionsObject);
}
return originalFn(...options);
});

View File

@ -1,20 +0,0 @@
// ***********************************************************
// This example support/index.js is processed and
// loaded automatically before your test files.
//
// This is a great place to put global configuration and
// behavior that modifies Cypress.
//
// You can change the location of this file or turn off
// automatically serving support files with the
// 'supportFile' configuration option.
//
// You can read more here:
// https://on.cypress.io/configuration
// ***********************************************************
// Import commands.js using ES2015 syntax:
import './commands'
// Alternatively you can use CommonJS syntax:
// require('./commands')

View File

@ -1,10 +0,0 @@
version: "3"
services:
cypress:
build: .
image: cypress
volumes:
- ./results/videos :/app/cypress/videos
- ./results/screenshots :/app/cypress/screenshots
extra_hosts:
host.docker.internal: host-gateway

File diff suppressed because it is too large Load Diff

View File

@ -1,10 +0,0 @@
{
"scripts": {
"cypress:open": "cypress open",
"cypress:run": "wait-on -c resource-config.js && cypress run"
},
"devDependencies": {
"cypress": "8.4.0",
"wait-on": "^6.0.0"
}
}

View File

@ -1,5 +0,0 @@
module.exports = {
strictSSL: false,
followRedirect: true,
resources: ['https://host.docker.internal:8000'],
};

View File

@ -1,5 +0,0 @@
module.exports = {
strictSSL: false,
followRedirect: true,
resources: ['https://localhost:8000'],
};

View File

@ -1,4 +0,0 @@
db-data/
secrets/
openslides*
docker-compose.yml

View File

@ -1,35 +0,0 @@
# Local production setup
This folder allows you to use the
[manage-tool](https://github.com/OpenSlides/openslides-manage-service) to launch
the local repository state as a production setup.
The `config.yml` instructs the manage-tool to include build tags for all service
images.
## Usage
Run
./setup.sh
It will download the latest manage-tool (the `openslides`-executable) - if not
present already - and setup this directory like a production environment using\
the `config.yml`.
Now run
docker-compose up --build
After all services are up initial data needs to be set to be able to login.
In a different terminal run
./openslides initial-data
This will add the superadmin account with the password provided from
`secrets/superadmin` (default: superadmin)
Access https://localhost:8000/ as you would expect.
To clear the database run
rm -r db-data/*

View File

@ -1,53 +0,0 @@
defaults:
containerRegistry: local
tag: prod
services:
proxy:
additionalContent:
build: ../proxy/
client:
additionalContent:
build: ../openslides-client/
backend:
additionalContent:
build: ../openslides-backend/
datastoreReader:
additionalContent: {
build: {
context: ../openslides-datastore-service/,
args: {
MODULE: reader,
PORT: 9010
}
}
}
datastoreWriter:
additionalContent: {
build: {
context: ../openslides-datastore-service/,
args: {
MODULE: writer,
PORT: 9011
}
}
}
autoupdate:
additionalContent:
build: ../openslides-autoupdate-service/
auth:
additionalContent:
build: ../openslides-auth-service/
vote:
additionalContent:
build: ../openslides-vote-service/
media:
additionalContent:
build: ../openslides-media-service/
icc:
additionalContent:
build: ../openslides-icc-service/
manage:
additionalContent:
build: ../openslides-manage-service/

View File

@ -1,10 +0,0 @@
#!/bin/bash
[[ -f ./openslides ]] ||
wget https://github.com/OpenSlides/openslides-manage-service/releases/download/latest/openslides
[[ -x ./openslides ]] ||
chmod +x ./openslides
./openslides setup .
./openslides config --config config.yml .

View File

@ -2,10 +2,18 @@
OpenSlides logo variants OpenSlides logo variants
======================== ========================
The OpenSlides logo is available in normal and dark layout. The OpenSlides logo is available in two layouts:
A **horizontal** (h) and a **vertical** (v) version.
Depending on the background the logo can use on a light or on a dark
background.
The OpenSlides standard logo for default use is 'openslides-logo-h'
(with transparent background).
The svg source files are create with Inkscape. Each svg file is The svg source files are create with Inkscape. Each svg file is
exported (with Inkscape) to png. exported (with Inkscape) to png in small and large size, partly with
transparent background.
All OpenSlides logo files are licensed under MIT, see LICENSE file in All OpenSlides logo files are licensed under MIT, see LICENSE file in
root directory. root directory.
@ -14,11 +22,10 @@ root directory.
"OpenSlides Blue" color values "OpenSlides Blue" color values
============================== ==============================
Corporate blue:
* RGB: 49/119/150
* Hex: #317796
Dark blue: Dark blue:
* RGB: 0/43/66 * RGB: 0/43/66
* Hex: #002c42 * Hex: #002c42
Bright blue:
* RGB: 49/119/150
* Hex: #317796

View File

Before

Width:  |  Height:  |  Size: 581 B

After

Width:  |  Height:  |  Size: 581 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 89 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 136 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 20 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 36 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.9 KiB

View File

Before

Width:  |  Height:  |  Size: 4.0 KiB

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@ -1,644 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 23.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<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"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Ebene_1"
x="0px"
y="0px"
viewBox="0 0 800.78997 132.08001"
xml:space="preserve"
sodipodi:docname="Logo_Claim_dark2019.svg"
width="800.78998"
height="132.08"
inkscape:version="0.92.4 5da689c313, 2019-01-14"><metadata
id="metadata213"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs211">
<defs
id="defs5">
<rect
id="SVGID_1_"
x="1.42"
y="1.08"
width="790.87"
height="196.25999" />
</defs>
<clipPath
id="SVGID_2_">
<use
xlink:href="#SVGID_1_"
style="overflow:visible"
id="use7"
x="0"
y="0"
width="100%"
height="100%" />
</clipPath>
</defs><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1916"
inkscape:window-height="1037"
id="namedview209"
showgrid="false"
inkscape:pagecheckerboard="true"
fit-margin-top="5"
fit-margin-left="5"
fit-margin-right="5"
fit-margin-bottom="5"
inkscape:zoom="0.77686418"
inkscape:cx="263.40616"
inkscape:cy="-136.78644"
inkscape:window-x="0"
inkscape:window-y="18"
inkscape:window-maximized="0"
inkscape:current-layer="Ebene_1" />
<style
type="text/css"
id="style2">
.st0{clip-path:url(#SVGID_2_);}
.st1{fill:#FFFFFF;}
.st2{fill:none;}
</style>
<g
id="g708"
transform="translate(-6.48,-6.42)"><path
class="st1"
d="m 271.78,42.13 c -2.98,4.64 -4.46,12.05 -4.46,22.25 0,10.2 1.51,17.61 4.52,22.25 3.01,4.64 7.42,6.96 13.21,6.96 5.87,0 10.27,-2.3 13.21,-6.9 2.93,-4.6 4.41,-12.03 4.41,-22.31 0,-10.27 -1.47,-17.71 -4.41,-22.3 -2.94,-4.59 -7.34,-6.9 -13.21,-6.9 -5.87,-0.01 -10.29,2.31 -13.27,6.95 m 32.27,-14.78 c 5.33,3.29 9.43,8.05 12.28,14.31 2.86,6.26 4.29,13.83 4.29,22.71 0,8.73 -1.43,16.24 -4.29,22.54 -2.86,6.3 -6.95,11.1 -12.28,14.42 -5.33,3.32 -11.66,4.98 -19,4.98 -7.34,0 -13.69,-1.64 -19.06,-4.92 -5.37,-3.29 -9.48,-8.07 -12.34,-14.37 -2.86,-6.3 -4.29,-13.85 -4.29,-22.65 0,-8.65 1.45,-16.12 4.35,-22.42 2.9,-6.3 7.03,-11.12 12.4,-14.48 5.37,-3.36 11.69,-5.04 18.95,-5.04 7.33,-0.01 13.66,1.64 18.99,4.92"
id="path10"
inkscape:connector-curvature="0"
style="fill:#ffffff" /><path
class="st1"
d="m 363.84,73.75 c 0,-7.42 -0.9,-12.67 -2.72,-15.75 -1.81,-3.09 -4.57,-4.64 -8.28,-4.64 -2.24,0 -4.33,0.72 -6.26,2.14 -1.93,1.43 -3.63,3.34 -5.1,5.74 V 88 c 2.62,4.02 6.06,6.03 10.31,6.03 8.03,0.01 12.05,-6.75 12.05,-20.28 m 11.53,-24.04 c 3.75,5.68 5.62,13.65 5.62,23.92 0,6.26 -0.97,11.86 -2.9,16.8 -1.93,4.95 -4.73,8.83 -8.4,11.64 -3.67,2.82 -8.02,4.23 -13.04,4.23 -6.26,0 -11.32,-2.2 -15.18,-6.6 v 28.39 l -16.45,1.86 v -86.9 h 14.48 l 0.81,7.19 c 2.32,-3.01 5.04,-5.27 8.17,-6.78 3.13,-1.5 6.28,-2.26 9.44,-2.26 7.89,0 13.7,2.84 17.45,8.51 z"
id="path12"
inkscape:connector-curvature="0"
style="fill:#ffffff" /><path
class="st1"
d="m 423.86,67.73 c 0,-10.19 -3.67,-15.29 -11.01,-15.29 -3.4,0 -6.04,1.26 -7.94,3.76 -1.89,2.51 -3.03,6.59 -3.42,12.22 h 22.36 v -0.69 z m 15.99,11.01 H 401.5 c 0.54,5.56 2.04,9.5 4.52,11.82 2.47,2.32 5.83,3.48 10.08,3.48 2.62,0 5.1,-0.43 7.42,-1.27 2.32,-0.85 4.83,-2.2 7.53,-4.05 l 6.84,9.27 c -6.88,5.56 -14.64,8.34 -23.29,8.34 -9.66,0 -17.07,-2.9 -22.25,-8.69 -5.18,-5.79 -7.76,-13.63 -7.76,-23.52 0,-6.26 1.1,-11.87 3.3,-16.86 2.2,-4.98 5.4,-8.9 9.62,-11.76 4.21,-2.86 9.21,-4.29 15,-4.29 8.73,0 15.53,2.74 20.39,8.23 4.87,5.48 7.3,13.13 7.3,22.94 -0.01,0.76 -0.12,2.88 -0.35,6.36"
id="path14"
inkscape:connector-curvature="0"
style="fill:#ffffff" /><path
class="st1"
d="m 491.17,46.12 c 3.01,3.29 4.52,7.82 4.52,13.62 v 44.72 H 479.24 V 62.52 c 0,-3.32 -0.56,-5.66 -1.68,-7.01 -1.12,-1.35 -2.8,-2.02 -5.04,-2.02 -2.32,0 -4.42,0.72 -6.31,2.14 -1.89,1.43 -3.73,3.58 -5.5,6.43 v 42.41 H 444.26 V 43.05 h 14.25 l 1.27,7.76 c 2.55,-3.17 5.35,-5.56 8.4,-7.19 3.05,-1.62 6.51,-2.43 10.37,-2.43 5.4,0.01 9.62,1.65 12.62,4.93"
id="path16"
inkscape:connector-curvature="0"
style="fill:#ffffff" /><path
class="st1"
d="m 547.78,24.92 c 4.29,1.66 8.24,4.19 11.88,7.59 l -8.23,9.5 c -2.78,-2.4 -5.61,-4.13 -8.46,-5.21 -2.86,-1.08 -5.91,-1.62 -9.15,-1.62 -3.55,0 -6.39,0.75 -8.52,2.26 -2.13,1.5 -3.19,3.65 -3.19,6.43 0,1.93 0.45,3.52 1.33,4.75 0.89,1.24 2.45,2.4 4.69,3.48 2.25,1.08 5.6,2.32 10.08,3.71 7.96,2.55 13.91,5.7 17.84,9.44 3.94,3.75 5.91,9.1 5.91,16.04 0,4.95 -1.24,9.29 -3.71,13.04 -2.47,3.75 -6.07,6.68 -10.78,8.81 -4.72,2.12 -10.24,3.19 -16.57,3.19 -6.33,0 -11.97,-1 -16.92,-3.01 -4.94,-2.01 -9.19,-4.75 -12.74,-8.23 l 8.92,-9.73 c 5.87,5.4 12.63,8.11 20.28,8.11 4.17,0 7.51,-0.97 10.02,-2.9 2.51,-1.93 3.76,-4.64 3.76,-8.11 0,-2.16 -0.45,-3.96 -1.33,-5.39 -0.89,-1.42 -2.41,-2.72 -4.57,-3.88 -2.17,-1.16 -5.3,-2.36 -9.39,-3.59 -8.73,-2.7 -14.97,-5.95 -18.71,-9.73 -3.75,-3.79 -5.62,-8.73 -5.62,-14.84 0,-4.48 1.2,-8.44 3.59,-11.87 2.4,-3.44 5.72,-6.08 9.97,-7.94 4.25,-1.86 9.07,-2.78 14.48,-2.78 5.81,-0.02 10.85,0.82 15.14,2.48"
id="path18"
inkscape:connector-curvature="0"
style="fill:#ffffff" /><path
class="st1"
d="m 586.53,92.06 c 0.54,0.77 1.35,1.16 2.43,1.16 1.31,0 2.43,-0.23 3.36,-0.69 l 3.36,11.7 c -3.4,1.39 -7.11,2.09 -11.12,2.09 -4.87,0 -8.63,-1.42 -11.3,-4.23 -2.66,-2.82 -3.99,-6.9 -3.99,-12.22 V 18.6 l 16.45,-1.86 v 71.61 c 0,1.7 0.28,2.94 0.81,3.71"
id="path20"
inkscape:connector-curvature="0"
style="fill:#ffffff" /><path
class="st1"
d="m 602.99,43.05 h 16.45 v 61.41 h -16.45 z m 15.35,-28.91 c 1.89,1.82 2.84,4.12 2.84,6.9 0,2.78 -0.95,5.08 -2.84,6.9 -1.89,1.82 -4.31,2.72 -7.24,2.72 -2.93,0 -5.33,-0.91 -7.19,-2.72 -1.85,-1.81 -2.78,-4.12 -2.78,-6.9 0,-2.78 0.93,-5.08 2.78,-6.9 1.86,-1.81 4.25,-2.72 7.19,-2.72 2.94,0 5.35,0.91 7.24,2.72"
id="path22"
inkscape:connector-curvature="0"
style="fill:#ffffff" /><path
class="st1"
d="m 661.38,92.18 c 1.86,-1.23 3.6,-3.09 5.22,-5.56 V 59.16 c -1.62,-1.93 -3.25,-3.38 -4.87,-4.35 -1.62,-0.97 -3.52,-1.45 -5.68,-1.45 -3.79,0 -6.76,1.66 -8.92,4.98 -2.17,3.32 -3.24,8.46 -3.24,15.41 0,7.34 0.94,12.55 2.84,15.64 1.89,3.09 4.65,4.63 8.29,4.63 2.38,0.02 4.51,-0.6 6.36,-1.84 m 21.67,12.28 h -14.48 l -0.93,-7.53 c -4.33,6.26 -10.19,9.39 -17.61,9.39 -7.57,0 -13.34,-2.92 -17.32,-8.75 -3.98,-5.83 -5.97,-13.77 -5.97,-23.81 0,-6.34 1.02,-11.95 3.07,-16.86 2.04,-4.9 4.96,-8.75 8.75,-11.53 3.78,-2.78 8.23,-4.17 13.33,-4.17 2.86,0 5.55,0.56 8.05,1.68 2.51,1.12 4.73,2.61 6.66,4.46 V 16.75 l 16.45,1.85 z"
id="path24"
inkscape:connector-curvature="0"
style="fill:#ffffff" /><path
class="st1"
d="m 730.21,67.73 c 0,-10.19 -3.67,-15.29 -11.01,-15.29 -3.4,0 -6.04,1.26 -7.94,3.76 -1.89,2.51 -3.03,6.59 -3.42,12.22 h 22.36 z m 15.99,11.01 h -38.36 c 0.54,5.56 2.04,9.5 4.52,11.82 2.47,2.32 5.83,3.48 10.08,3.48 2.62,0 5.1,-0.43 7.42,-1.27 2.32,-0.85 4.82,-2.2 7.53,-4.05 l 6.83,9.27 c -6.88,5.56 -14.64,8.34 -23.29,8.34 -9.66,0 -17.07,-2.9 -22.25,-8.69 -5.18,-5.79 -7.77,-13.63 -7.77,-23.52 0,-6.26 1.1,-11.87 3.3,-16.86 2.2,-4.98 5.4,-8.9 9.62,-11.76 4.21,-2.86 9.21,-4.29 15,-4.29 8.73,0 15.52,2.74 20.39,8.23 4.87,5.48 7.3,13.13 7.3,22.94 0.03,0.76 -0.09,2.88 -0.32,6.36 z"
id="path26"
inkscape:connector-curvature="0"
style="fill:#ffffff" /><path
class="st1"
d="m 800.19,48.61 -6.26,9.62 c -5.02,-3.4 -9.97,-5.1 -14.83,-5.1 -2.86,0 -5.06,0.5 -6.6,1.51 -1.55,1 -2.32,2.36 -2.32,4.05 0,1.23 0.33,2.28 0.98,3.13 0.66,0.85 1.89,1.66 3.71,2.43 1.81,0.77 4.54,1.7 8.17,2.78 6.49,1.78 11.32,4.15 14.48,7.12 3.16,2.98 4.75,7.05 4.75,12.22 0,4.1 -1.18,7.64 -3.54,10.66 -2.35,3.01 -5.55,5.31 -9.56,6.9 -4.02,1.58 -8.5,2.38 -13.44,2.38 -5.17,0 -9.89,-0.79 -14.14,-2.38 -4.25,-1.58 -7.88,-3.76 -10.89,-6.55 l 8.22,-9.15 c 2.32,1.93 4.87,3.44 7.65,4.52 2.78,1.08 5.64,1.62 8.57,1.62 3.17,0 5.66,-0.6 7.48,-1.8 1.81,-1.2 2.72,-2.8 2.72,-4.8 0,-1.62 -0.35,-2.92 -1.05,-3.88 -0.69,-0.97 -1.97,-1.86 -3.82,-2.67 -1.86,-0.81 -4.75,-1.76 -8.7,-2.84 -6.18,-1.7 -10.76,-4.12 -13.73,-7.24 -2.98,-3.13 -4.46,-7.01 -4.46,-11.65 0,-3.47 1,-6.6 3.01,-9.38 2.01,-2.78 4.85,-4.96 8.52,-6.55 3.67,-1.58 7.94,-2.38 12.8,-2.38 8.69,0.02 16.1,2.49 22.28,7.43"
id="path28"
inkscape:connector-curvature="0"
style="fill:#ffffff" /></g><g
id="g792"
transform="translate(-6.48,-6.42)"><g
transform="translate(10,10)"
id="g86">
<g
id="g46">
<circle
class="st1"
cx="124.67"
cy="90.790001"
r="5.6300001"
id="circle36"
style="fill:#ffffff" />
<circle
class="st1"
cx="140.63"
cy="90.790001"
r="5.6300001"
id="circle38"
style="fill:#ffffff" />
<circle
class="st1"
cx="156.13"
cy="90.790001"
r="5.6300001"
id="circle40"
style="fill:#ffffff" />
<circle
class="st1"
cx="171.64"
cy="90.790001"
r="5.6300001"
id="circle42"
style="fill:#ffffff" />
<circle
class="st1"
cx="187.14999"
cy="90.790001"
r="5.6300001"
id="circle44"
style="fill:#ffffff" />
</g>
<g
id="g58">
<circle
class="st1"
cx="118.34"
cy="78.449997"
r="5.6300001"
id="circle48"
style="fill:#ffffff" />
<circle
class="st1"
cx="127.26"
cy="65.220001"
r="5.6300001"
id="circle50"
style="fill:#ffffff" />
<circle
class="st1"
cx="135.92999"
cy="52.360001"
r="5.6300001"
id="circle52"
style="fill:#ffffff" />
<circle
class="st1"
cx="144.60001"
cy="39.509998"
r="5.6300001"
id="circle54"
style="fill:#ffffff" />
<circle
class="st1"
cx="153.28"
cy="26.65"
r="5.6300001"
id="circle56"
style="fill:#ffffff" />
</g>
<g
id="g68">
<circle
class="st1"
cx="136.19"
cy="76.610001"
r="5.6300001"
id="circle60"
style="fill:#ffffff" />
<circle
class="st1"
cx="168.53999"
cy="76.169998"
r="5.6300001"
id="circle62"
style="fill:#ffffff" />
<circle
class="st1"
cx="184.72"
cy="76.169998"
r="5.6300001"
id="circle64"
style="fill:#ffffff" />
<circle
class="st1"
cx="152.37"
cy="76.610001"
r="5.6300001"
id="circle66"
style="fill:#ffffff" />
</g>
<g
id="g76">
<circle
class="st1"
cx="146.39"
cy="63.32"
r="5.6300001"
id="circle70"
style="fill:#ffffff" />
<circle
class="st1"
cx="180.50999"
cy="62.43"
r="5.6300001"
id="circle72"
style="fill:#ffffff" />
<circle
class="st1"
cx="163.89"
cy="62.869999"
r="5.6300001"
id="circle74"
style="fill:#ffffff" />
</g>
<g
id="g80">
<circle
class="st1"
cx="155.69"
cy="50.470001"
r="5.6300001"
id="circle78"
style="fill:#ffffff" />
</g>
<g
id="g84">
<circle
class="st1"
cx="164.55"
cy="37.169998"
r="5.6300001"
id="circle82"
style="fill:#ffffff" />
</g>
</g><g
transform="translate(10,10)"
id="g140">
<g
id="g98">
<circle
class="st1"
cx="69.589996"
cy="90.790001"
r="5.6300001"
id="circle88"
style="fill:#ffffff" />
<circle
class="st1"
cx="53.639999"
cy="90.790001"
r="5.6300001"
id="circle90"
style="fill:#ffffff" />
<circle
class="st1"
cx="38.130001"
cy="90.790001"
r="5.6300001"
id="circle92"
style="fill:#ffffff" />
<circle
class="st1"
cx="22.620001"
cy="90.790001"
r="5.6300001"
id="circle94"
style="fill:#ffffff" />
<circle
class="st1"
cx="7.1100001"
cy="90.790001"
r="5.6300001"
id="circle96"
style="fill:#ffffff" />
</g>
<g
id="g110">
<circle
class="st1"
cx="75.93"
cy="78.449997"
r="5.6300001"
id="circle100"
style="fill:#ffffff" />
<circle
class="st1"
cx="67.010002"
cy="65.220001"
r="5.6300001"
id="circle102"
style="fill:#ffffff" />
<circle
class="st1"
cx="58.34"
cy="52.360001"
r="5.6300001"
id="circle104"
style="fill:#ffffff" />
<circle
class="st1"
cx="49.66"
cy="39.509998"
r="5.6300001"
id="circle106"
style="fill:#ffffff" />
<circle
class="st1"
cx="40.990002"
cy="26.65"
r="5.6300001"
id="circle108"
style="fill:#ffffff" />
</g>
<g
id="g120">
<circle
class="st1"
cx="58.07"
cy="76.610001"
r="5.6300001"
id="circle112"
style="fill:#ffffff" />
<circle
class="st1"
cx="25.73"
cy="76.169998"
r="5.6300001"
id="circle114"
style="fill:#ffffff" />
<circle
class="st1"
cx="9.5500002"
cy="76.169998"
r="5.6300001"
id="circle116"
style="fill:#ffffff" />
<circle
class="st1"
cx="41.900002"
cy="76.610001"
r="5.6300001"
id="circle118"
style="fill:#ffffff" />
</g>
<g
id="g128">
<circle
class="st1"
cx="47.880001"
cy="63.32"
r="5.6300001"
id="circle122"
style="fill:#ffffff" />
<circle
class="st1"
cx="13.76"
cy="62.43"
r="5.6300001"
id="circle124"
style="fill:#ffffff" />
<circle
class="st1"
cx="30.379999"
cy="62.869999"
r="5.6300001"
id="circle126"
style="fill:#ffffff" />
</g>
<g
id="g134">
<circle
class="st1"
cx="38.580002"
cy="50.470001"
r="5.6300001"
id="circle130"
style="fill:#ffffff" />
<circle
class="st1"
cx="21.07"
cy="49.139999"
r="5.6300001"
id="circle132"
style="fill:#ffffff" />
</g>
<g
id="g138">
<circle
class="st1"
cx="29.709999"
cy="37.169998"
r="5.6300001"
id="circle136"
style="fill:#ffffff" />
</g>
</g><g
transform="translate(10,10)"
id="g194">
<g
id="g152">
<circle
class="st1"
cx="104.26"
cy="69.860001"
r="5.6300001"
id="circle142"
style="fill:#ffffff" />
<circle
class="st1"
cx="111.62"
cy="55.700001"
r="5.6300001"
id="circle144"
style="fill:#ffffff" />
<circle
class="st1"
cx="118.77"
cy="41.939999"
r="5.6300001"
id="circle146"
style="fill:#ffffff" />
<circle
class="st1"
cx="125.92"
cy="28.18"
r="5.6300001"
id="circle148"
style="fill:#ffffff" />
<circle
class="st1"
cx="133.07001"
cy="14.42"
r="5.6300001"
id="circle150"
style="fill:#ffffff" />
</g>
<g
id="g164">
<circle
class="st1"
cx="90.379997"
cy="69.779999"
r="5.6300001"
id="circle154"
style="fill:#ffffff" />
<circle
class="st1"
cx="82.760002"
cy="55.77"
r="5.6300001"
id="circle156"
style="fill:#ffffff" />
<circle
class="st1"
cx="75.349998"
cy="42.139999"
r="5.6300001"
id="circle158"
style="fill:#ffffff" />
<circle
class="st1"
cx="67.949997"
cy="28.52"
r="5.6300001"
id="circle160"
style="fill:#ffffff" />
<circle
class="st1"
cx="60.540001"
cy="14.89"
r="5.6300001"
id="circle162"
style="fill:#ffffff" />
</g>
<g
id="g174">
<circle
class="st1"
cx="96.989998"
cy="53.09"
r="5.6300001"
id="circle166"
style="fill:#ffffff" />
<circle
class="st1"
cx="111.52"
cy="24.190001"
r="5.6300001"
id="circle168"
style="fill:#ffffff" />
<circle
class="st1"
cx="118.98"
cy="9.8299999"
r="5.6300001"
id="circle170"
style="fill:#ffffff" />
<circle
class="st1"
cx="104.45"
cy="38.740002"
r="5.6300001"
id="circle172"
style="fill:#ffffff" />
</g>
<g
id="g182">
<circle
class="st1"
cx="89.900002"
cy="37.919998"
r="5.6300001"
id="circle176"
style="fill:#ffffff" />
<circle
class="st1"
cx="104.84"
cy="7.23"
r="5.6300001"
id="circle178"
style="fill:#ffffff" />
<circle
class="st1"
cx="97.57"
cy="22.18"
r="5.6300001"
id="circle180"
style="fill:#ffffff" />
</g>
<g
id="g188">
<circle
class="st1"
cx="82.779999"
cy="23.74"
r="5.6300001"
id="circle184"
style="fill:#ffffff" />
<circle
class="st1"
cx="89.68"
cy="7.2199998"
r="5.6300001"
id="circle186"
style="fill:#ffffff" />
</g>
<g
id="g192">
<circle
class="st1"
cx="75.080002"
cy="9.7399998"
r="5.6300001"
id="circle190"
style="fill:#ffffff" />
</g>
</g><circle
class="st1"
cx="183.42"
cy="59.139999"
r="5.6300001"
id="circle196"
style="fill:#ffffff" /><path
class="st1"
d="M 121.46,133.5 H 93.29 c -3.1,0 -5.63,-2.54 -5.63,-5.63 v 0 c 0,-3.1 2.54,-5.63 5.63,-5.63 h 28.17 c 3.1,0 5.63,2.54 5.63,5.63 v 0 c 0.01,3.09 -2.53,5.63 -5.63,5.63 z"
id="path198"
inkscape:connector-curvature="0"
style="fill:#ffffff" /></g>
</svg>

Before

Width:  |  Height:  |  Size: 17 KiB

View File

@ -0,0 +1,638 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://opensource.org/licenses/MIT"
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"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Ebene_3"
x="0px"
y="0px"
width="1079.0952"
height="214.49588"
viewBox="0 0 1079.0951 214.49587"
enable-background="new 0 0 841.89 595.28"
xml:space="preserve"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="openslides-logo-h-dark.svg"
inkscape:export-xdpi="20.85"
inkscape:export-ydpi="20.85"><metadata
id="metadata461"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title><dc:creator><cc:Agent><dc:title>OpenSlides Team</dc:title></cc:Agent></dc:creator></cc:Work></rdf:RDF></metadata><defs
id="defs459">
</defs><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10000"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1672"
inkscape:window-height="978"
id="namedview457"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="0.86517113"
inkscape:cx="571.69892"
inkscape:cy="-75.964234"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="Ebene_3"
fit-margin-top="40"
fit-margin-left="40"
fit-margin-right="40"
fit-margin-bottom="25"
units="px"
borderlayer="true"
inkscape:showpageshadow="false"
inkscape:document-units="px"><inkscape:grid
type="xygrid"
id="grid3097"
empspacing="5"
visible="true"
enabled="true"
snapvisiblegridlinesonly="true"
originx="2.5749768e-06px"
originy="-5.0000035px" /></sodipodi:namedview>
<rect
style="fill:#002c42;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="rect7699"
width="1168.8514"
height="322.0498"
x="-48.851433"
y="-58.83773" /><g
id="g5094"
transform="matrix(2.0781875,0,0,2.0781875,39.999977,39.999828)"
style="fill:#ffffff;fill-opacity:1"><g
transform="translate(-154.63686,-116.56793)"
id="g7"
style="fill:#ffffff;fill-opacity:1">
<path
d="m 334.257,126.401 c 3.222,1.985 5.696,4.867 7.423,8.649 1.727,3.782 2.591,8.358 2.591,13.726 0,5.276 -0.865,9.816 -2.591,13.621 -1.728,3.806 -4.202,6.712 -7.423,8.719 -3.221,2.007 -7.05,3.011 -11.485,3.011 -4.436,0 -8.276,-0.993 -11.521,-2.977 -3.245,-1.984 -5.731,-4.878 -7.458,-8.684 -1.728,-3.805 -2.591,-8.369 -2.591,-13.691 0,-5.228 0.875,-9.745 2.626,-13.551 1.751,-3.805 4.248,-6.723 7.494,-8.754 3.244,-2.031 7.061,-3.046 11.45,-3.046 4.435,10e-4 8.264,0.994 11.485,2.977 z m -19.503,8.93 c -1.798,2.801 -2.696,7.283 -2.696,13.446 0,6.163 0.91,10.645 2.731,13.446 1.821,2.801 4.482,4.202 7.984,4.202 3.547,0 6.208,-1.389 7.983,-4.167 1.774,-2.777 2.661,-7.271 2.661,-13.481 0,-6.208 -0.887,-10.703 -2.661,-13.481 -1.775,-2.777 -4.436,-4.167 -7.983,-4.167 -3.549,0 -6.223,1.4 -8.019,4.202 z"
id="path9"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 377.361,139.917 c 2.264,3.432 3.396,8.253 3.396,14.461 0,3.782 -0.584,7.167 -1.75,10.155 -1.167,2.988 -2.86,5.334 -5.077,7.038 -2.218,1.704 -4.844,2.556 -7.879,2.556 -3.782,0 -6.84,-1.331 -9.174,-3.992 v 17.157 l -9.944,1.121 V 135.89 h 8.754 l 0.49,4.342 c 1.4,-1.821 3.046,-3.187 4.937,-4.097 1.891,-0.91 3.792,-1.365 5.708,-1.365 4.761,10e-4 8.274,1.716 10.539,5.147 z m -6.968,14.532 c 0,-4.482 -0.549,-7.657 -1.646,-9.524 -1.098,-1.867 -2.766,-2.801 -5.007,-2.801 -1.354,0 -2.615,0.432 -3.781,1.295 -1.168,0.865 -2.195,2.02 -3.082,3.467 v 16.177 c 1.586,2.428 3.665,3.642 6.233,3.642 4.855,0 7.283,-4.085 7.283,-12.256 z"
id="path11"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 416.333,157.46 h -23.18 c 0.326,3.361 1.236,5.743 2.731,7.143 1.493,1.401 3.524,2.101 6.092,2.101 1.587,0 3.082,-0.256 4.482,-0.771 1.4,-0.513 2.917,-1.331 4.552,-2.451 l 4.132,5.603 c -4.156,3.362 -8.848,5.042 -14.076,5.042 -5.837,0 -10.319,-1.751 -13.446,-5.252 -3.129,-3.501 -4.692,-8.24 -4.692,-14.216 0,-3.782 0.666,-7.178 1.996,-10.189 1.33,-3.011 3.267,-5.38 5.813,-7.108 2.544,-1.727 5.567,-2.591 9.069,-2.591 5.275,0 9.384,1.658 12.326,4.972 2.941,3.315 4.412,7.938 4.412,13.866 -10e-4,0.467 -0.071,1.75 -0.211,3.851 z m -9.664,-6.652 c 0,-6.163 -2.218,-9.244 -6.653,-9.244 -2.055,0 -3.654,0.759 -4.797,2.276 -1.145,1.518 -1.833,3.981 -2.066,7.388 h 13.516 v -0.42 z"
id="path13"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 447.355,137.747 c 1.821,1.985 2.732,4.727 2.732,8.229 v 27.032 h -9.945 v -25.351 c 0,-2.007 -0.339,-3.42 -1.016,-4.237 -0.677,-0.816 -1.692,-1.225 -3.046,-1.225 -1.4,0 -2.673,0.432 -3.817,1.295 -1.145,0.864 -2.252,2.16 -3.326,3.887 v 25.631 h -9.944 v -37.117 h 8.614 l 0.77,4.692 c 1.541,-1.914 3.232,-3.362 5.078,-4.342 1.844,-0.98 3.933,-1.47 6.268,-1.47 3.267,0 5.812,0.992 7.632,2.976 z"
id="path15"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 481.566,124.931 c 2.592,1.004 4.983,2.533 7.178,4.587 l -4.972,5.743 c -1.681,-1.447 -3.386,-2.497 -5.112,-3.152 -1.728,-0.653 -3.572,-0.98 -5.532,-0.98 -2.147,0 -3.864,0.455 -5.147,1.365 -1.285,0.911 -1.926,2.206 -1.926,3.887 0,1.167 0.268,2.125 0.805,2.872 0.537,0.747 1.482,1.448 2.837,2.101 1.354,0.655 3.384,1.401 6.093,2.241 4.809,1.541 8.404,3.443 10.785,5.708 2.381,2.265 3.571,5.498 3.571,9.699 0,2.988 -0.747,5.615 -2.241,7.878 -1.494,2.265 -3.666,4.039 -6.513,5.323 -2.849,1.283 -6.187,1.926 -10.015,1.926 -3.828,0 -7.237,-0.607 -10.225,-1.821 -2.988,-1.214 -5.557,-2.872 -7.703,-4.972 l 5.393,-5.883 c 3.547,3.269 7.633,4.902 12.255,4.902 2.521,0 4.54,-0.583 6.058,-1.751 1.518,-1.167 2.276,-2.801 2.276,-4.902 0,-1.306 -0.27,-2.392 -0.806,-3.256 -0.537,-0.863 -1.459,-1.646 -2.766,-2.346 -1.309,-0.701 -3.199,-1.424 -5.673,-2.171 -5.276,-1.633 -9.046,-3.594 -11.31,-5.882 -2.266,-2.287 -3.396,-5.275 -3.396,-8.964 0,-2.708 0.723,-5.101 2.17,-7.178 1.447,-2.077 3.455,-3.677 6.023,-4.797 2.566,-1.121 5.485,-1.681 8.754,-1.681 3.503,-0.002 6.548,0.501 9.139,1.504 z"
id="path17"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 504.991,165.514 c 0.326,0.467 0.815,0.7 1.471,0.7 0.793,0 1.471,-0.14 2.03,-0.42 l 2.031,7.073 c -2.055,0.84 -4.296,1.261 -6.723,1.261 -2.941,0 -5.218,-0.853 -6.828,-2.556 -1.611,-1.704 -2.416,-4.167 -2.416,-7.388 v -43.069 l 9.944,-1.121 v 43.279 c 10e-4,1.027 0.164,1.775 0.491,2.241 z"
id="path19"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 524.214,118.418 c 1.144,1.098 1.716,2.486 1.716,4.167 0,1.681 -0.572,3.07 -1.716,4.167 -1.145,1.097 -2.603,1.646 -4.377,1.646 -1.774,0 -3.222,-0.548 -4.342,-1.646 -1.12,-1.097 -1.681,-2.486 -1.681,-4.167 0,-1.681 0.561,-3.069 1.681,-4.167 1.12,-1.096 2.567,-1.646 4.342,-1.646 1.775,0 3.232,0.55 4.377,1.646 z m -9.278,54.589 V 135.89 h 9.943 v 37.117 h -9.943 z"
id="path21"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 563.326,173.007 h -8.754 l -0.561,-4.552 c -2.615,3.782 -6.162,5.673 -10.645,5.673 -4.576,0 -8.065,-1.762 -10.469,-5.288 -2.406,-3.524 -3.607,-8.322 -3.607,-14.391 0,-3.828 0.618,-7.224 1.855,-10.189 1.236,-2.964 3,-5.288 5.287,-6.968 2.287,-1.68 4.973,-2.521 8.055,-2.521 1.727,0 3.35,0.339 4.867,1.015 1.516,0.677 2.859,1.576 4.026,2.696 v -18.488 l 9.944,1.121 v 51.892 z m -13.096,-7.423 c 1.121,-0.746 2.171,-1.867 3.151,-3.361 v -16.598 c -0.98,-1.167 -1.961,-2.042 -2.941,-2.626 -0.98,-0.583 -2.125,-0.875 -3.432,-0.875 -2.288,0 -4.085,1.004 -5.392,3.011 -1.309,2.008 -1.961,5.112 -1.961,9.314 0,4.436 0.57,7.587 1.715,9.454 1.145,1.868 2.813,2.801 5.008,2.801 1.447,0.001 2.731,-0.372 3.852,-1.12 z"
id="path23"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 601.494,157.46 h -23.182 c 0.326,3.361 1.236,5.743 2.732,7.143 1.492,1.401 3.523,2.101 6.092,2.101 1.587,0 3.082,-0.256 4.482,-0.771 1.4,-0.513 2.917,-1.331 4.552,-2.451 l 4.132,5.603 c -4.156,3.362 -8.848,5.042 -14.076,5.042 -5.837,0 -10.318,-1.751 -13.445,-5.252 -3.129,-3.501 -4.693,-8.24 -4.693,-14.216 0,-3.782 0.666,-7.178 1.996,-10.189 1.331,-3.011 3.268,-5.38 5.813,-7.108 2.545,-1.727 5.568,-2.591 9.069,-2.591 5.275,0 9.384,1.658 12.325,4.972 2.941,3.315 4.412,7.938 4.412,13.866 0,0.467 -0.07,1.75 -0.209,3.851 z m -9.665,-6.652 c 0,-6.163 -2.218,-9.244 -6.653,-9.244 -2.055,0 -3.653,0.759 -4.797,2.276 -1.145,1.518 -1.833,3.981 -2.066,7.388 h 13.517 v -0.42 z"
id="path25"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 634.127,139.252 -3.781,5.813 c -3.035,-2.054 -6.023,-3.082 -8.965,-3.082 -1.727,0 -3.059,0.304 -3.99,0.911 -0.936,0.607 -1.402,1.425 -1.402,2.451 0,0.747 0.199,1.377 0.596,1.891 0.396,0.514 1.145,1.004 2.242,1.471 1.096,0.467 2.742,1.027 4.936,1.681 3.922,1.075 6.84,2.51 8.754,4.307 1.914,1.798 2.873,4.261 2.873,7.388 0,2.475 -0.713,4.622 -2.137,6.443 -1.424,1.821 -3.352,3.21 -5.777,4.167 -2.428,0.956 -5.137,1.436 -8.123,1.436 -3.129,0 -5.979,-0.479 -8.545,-1.436 -2.568,-0.957 -4.762,-2.276 -6.582,-3.957 l 4.971,-5.532 c 1.402,1.167 2.941,2.078 4.623,2.731 1.68,0.654 3.408,0.98 5.182,0.98 1.914,0 3.42,-0.361 4.518,-1.085 1.096,-0.723 1.646,-1.692 1.646,-2.906 0,-0.98 -0.211,-1.762 -0.631,-2.346 -0.42,-0.583 -1.191,-1.121 -2.311,-1.61 -1.121,-0.49 -2.871,-1.062 -5.254,-1.716 -3.734,-1.026 -6.502,-2.486 -8.297,-4.377 -1.799,-1.891 -2.697,-4.237 -2.697,-7.038 0,-2.101 0.605,-3.992 1.82,-5.673 1.215,-1.681 2.93,-2.999 5.148,-3.957 2.217,-0.957 4.797,-1.436 7.738,-1.436 5.228,0 9.709,1.494 13.445,4.481 z"
id="path27"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
</g><g
transform="matrix(1.2794416,0,0,1.2794416,-241.04704,-149.41913)"
id="g29"
style="fill:#ffffff;fill-opacity:1">
<path
d="m 231.138,168.561 h 15.136 c 1.645,0 2.965,0.99 2.965,2.225 0,1.231 -1.32,2.223 -2.965,2.223 h -15.136 c -1.646,0 -2.969,-0.992 -2.969,-2.223 0,-1.235 1.322,-2.225 2.969,-2.225 z"
id="path31"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<g
id="g33"
style="fill:#ffffff;fill-opacity:1">
<path
d="m 224.244,127.652 c 1.516,0.284 2.521,1.745 2.243,3.26 -0.284,1.519 -1.747,2.523 -3.258,2.239 -1.522,-0.277 -2.526,-1.736 -2.241,-3.258 0.278,-1.519 1.739,-2.519 3.256,-2.241 z"
id="path35"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 248.342,127.971 c -0.113,-1.547 -1.455,-2.703 -2.995,-2.586 -1.539,0.114 -2.695,1.456 -2.584,2.996 0.112,1.54 1.455,2.697 2.995,2.576 1.539,-0.111 2.696,-1.453 2.584,-2.986 z"
id="path37"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 254.698,130.199 c -0.111,-1.541 -1.447,-2.698 -2.986,-2.584 -1.54,0.119 -2.696,1.454 -2.586,3 0.115,1.532 1.456,2.69 2.996,2.576 1.54,-0.111 2.698,-1.453 2.576,-2.992 z"
id="path39"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 228.791,118.638 c -1.282,-0.857 -3.021,-0.527 -3.888,0.749 -0.857,1.282 -0.528,3.014 0.748,3.887 1.282,0.864 3.021,0.526 3.886,-0.749 0.866,-1.282 0.528,-3.019 -0.746,-3.887 z"
id="path41"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 244.284,119.378 c -0.113,-1.548 -1.454,-2.703 -2.994,-2.585 -1.535,0.114 -2.698,1.456 -2.579,2.995 0.113,1.54 1.454,2.695 2.987,2.577 1.547,-0.111 2.698,-1.453 2.586,-2.987 z"
id="path43"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 244.284,119.378 c -0.113,-1.548 -1.454,-2.703 -2.994,-2.585 -1.535,0.114 -2.698,1.456 -2.579,2.995 0.113,1.54 1.454,2.695 2.987,2.577 1.547,-0.111 2.698,-1.453 2.586,-2.987 z"
id="path45"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 251.567,120.753 c -0.111,-1.54 -1.447,-2.699 -2.995,-2.584 -1.54,0.119 -2.69,1.454 -2.576,2.999 0.112,1.533 1.453,2.691 2.993,2.58 1.54,-0.115 2.69,-1.456 2.578,-2.995 z"
id="path47"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 251.567,120.753 c -0.111,-1.54 -1.447,-2.699 -2.995,-2.584 -1.54,0.119 -2.69,1.452 -2.576,2.999 0.112,1.533 1.453,2.691 2.993,2.58 1.54,-0.115 2.69,-1.456 2.578,-2.995 z"
id="path49"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 255.645,120.877 c 1.521,0.284 2.518,1.74 2.242,3.26 -0.285,1.519 -1.739,2.517 -3.26,2.239 -1.521,-0.284 -2.519,-1.737 -2.24,-3.259 0.284,-1.518 1.745,-2.517 3.258,-2.24 z"
id="path51"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 240.216,140.03 c -1.276,-0.865 -3.016,-0.537 -3.88,0.746 -0.866,1.277 -0.538,3.014 0.746,3.88 1.282,0.867 3.013,0.53 3.88,-0.746 0.866,-1.276 0.529,-3.016 -0.746,-3.88 z"
id="path53"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 248.446,143.145 c -0.111,-1.54 -1.452,-2.694 -2.992,-2.583 -1.541,0.117 -2.698,1.459 -2.584,2.994 0.112,1.54 1.453,2.695 2.993,2.584 1.54,-0.112 2.696,-1.453 2.583,-2.995 z"
id="path55"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 248.446,143.145 c -0.111,-1.54 -1.452,-2.694 -2.992,-2.584 -1.541,0.119 -2.698,1.461 -2.584,2.996 0.112,1.54 1.453,2.695 2.993,2.584 1.54,-0.113 2.696,-1.454 2.583,-2.996 z"
id="path57"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 229.154,134.489 c -1.275,-0.864 -3.018,-0.527 -3.88,0.749 -0.867,1.283 -0.529,3.014 0.745,3.88 1.282,0.871 3.012,0.534 3.881,-0.742 0.868,-1.283 0.534,-3.021 -0.746,-3.887 z"
id="path59"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 236.296,132.867 c -1.277,-0.864 -3.014,-0.533 -3.881,0.749 -0.866,1.275 -0.527,3.015 0.748,3.88 1.279,0.864 3.021,0.527 3.885,-0.749 0.867,-1.276 0.529,-3.013 -0.752,-3.88 z"
id="path61"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 251.567,136.602 c -0.111,-1.539 -1.447,-2.697 -2.995,-2.583 -1.533,0.117 -2.695,1.452 -2.576,2.992 0.112,1.542 1.453,2.697 2.993,2.586 1.54,-0.121 2.698,-1.456 2.578,-2.995 z"
id="path63"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 251.567,136.602 c -0.111,-1.541 -1.447,-2.697 -2.995,-2.583 -1.533,0.117 -2.695,1.452 -2.576,2.992 0.112,1.542 1.453,2.697 2.993,2.586 1.54,-0.121 2.698,-1.456 2.578,-2.995 z"
id="path65"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 243.808,147.482 c -1.282,-0.868 -3.014,-0.531 -3.881,0.745 -0.864,1.282 -0.535,3.02 0.748,3.886 1.275,0.861 3.014,0.53 3.88,-0.746 0.865,-1.281 0.527,-3.012 -0.747,-3.885 z"
id="path67"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 243.808,147.482 c -1.282,-0.868 -3.014,-0.531 -3.881,0.745 -0.864,1.282 -0.535,3.02 0.748,3.886 1.275,0.861 3.014,0.53 3.88,-0.746 0.865,-1.281 0.527,-3.012 -0.747,-3.885 z"
id="path69"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 236.887,147.482 c -1.274,-0.868 -3.014,-0.531 -3.879,0.745 -0.866,1.282 -0.535,3.02 0.746,3.886 1.275,0.861 3.014,0.53 3.881,-0.746 0.865,-1.281 0.528,-3.012 -0.748,-3.885 z"
id="path71"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 236.887,147.482 c -1.274,-0.868 -3.014,-0.531 -3.879,0.745 -0.866,1.282 -0.535,3.02 0.746,3.886 1.275,0.861 3.014,0.53 3.881,-0.746 0.865,-1.281 0.528,-3.012 -0.748,-3.885 z"
id="path73"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 232.399,125.857 c -1.281,-0.867 -3.021,-0.529 -3.887,0.745 -0.866,1.283 -0.528,3.016 0.747,3.887 1.282,0.859 3.015,0.53 3.886,-0.745 0.861,-1.284 0.53,-3.02 -0.746,-3.887 z"
id="path75"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 241.034,127.336 c -0.11,-1.54 -1.451,-2.696 -2.991,-2.579 -1.54,0.114 -2.698,1.456 -2.587,2.995 0.114,1.534 1.456,2.69 2.995,2.577 1.546,-0.111 2.7,-1.453 2.583,-2.993 z"
id="path77"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 221.422,121.313 c -1.276,-0.866 -3.015,-0.537 -3.88,0.745 -0.867,1.278 -0.529,3.015 0.746,3.88 1.282,0.868 3.015,0.537 3.88,-0.738 0.866,-1.282 0.535,-3.027 -0.746,-3.887 z"
id="path79"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 244.284,119.378 c -0.113,-1.548 -1.454,-2.703 -2.994,-2.585 -1.535,0.114 -2.698,1.456 -2.579,2.995 0.113,1.54 1.454,2.695 2.987,2.577 1.547,-0.111 2.698,-1.453 2.586,-2.987 z"
id="path81"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 237.039,119.377 c -0.112,-1.546 -1.454,-2.698 -2.993,-2.584 -1.533,0.112 -2.69,1.454 -2.579,2.992 0.112,1.541 1.455,2.692 2.996,2.58 1.539,-0.115 2.688,-1.456 2.576,-2.988 z"
id="path83"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 251.567,120.753 c -0.111,-1.54 -1.447,-2.699 -2.995,-2.584 -1.54,0.119 -2.69,1.452 -2.576,2.999 0.112,1.533 1.453,2.691 2.993,2.58 1.54,-0.115 2.69,-1.456 2.578,-2.995 z"
id="path85"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 231.97,140.602 c 1.519,0.282 2.523,1.745 2.239,3.257 -0.278,1.521 -1.736,2.525 -3.259,2.242 -1.512,-0.279 -2.518,-1.74 -2.241,-3.258 0.285,-1.523 1.745,-2.52 3.261,-2.241 z"
id="path87"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 248.446,143.145 c -0.111,-1.54 -1.452,-2.694 -2.992,-2.584 -1.541,0.119 -2.698,1.461 -2.584,2.996 0.112,1.54 1.453,2.695 2.993,2.584 1.54,-0.113 2.696,-1.454 2.583,-2.996 z"
id="path89"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 251.567,136.602 c -0.111,-1.541 -1.447,-2.697 -2.995,-2.583 -1.533,0.117 -2.695,1.452 -2.576,2.992 0.112,1.542 1.453,2.697 2.993,2.586 1.54,-0.121 2.698,-1.456 2.578,-2.995 z"
id="path91"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 244.838,134.975 c -0.115,-1.54 -1.456,-2.695 -2.996,-2.583 -1.534,0.117 -2.698,1.459 -2.577,2.999 0.11,1.542 1.445,2.69 2.992,2.579 1.539,-0.113 2.691,-1.455 2.581,-2.995 z"
id="path93"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 243.808,147.482 c -1.282,-0.868 -3.014,-0.531 -3.881,0.745 -0.864,1.282 -0.535,3.02 0.748,3.886 1.275,0.861 3.014,0.53 3.88,-0.746 0.865,-1.281 0.527,-3.012 -0.747,-3.885 z"
id="path95"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 236.887,147.482 c -1.274,-0.868 -3.014,-0.531 -3.879,0.745 -0.866,1.282 -0.535,3.02 0.746,3.886 1.275,0.861 3.014,0.53 3.881,-0.746 0.865,-1.281 0.528,-3.012 -0.748,-3.885 z"
id="path97"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
</g>
<g
id="g99"
style="fill:#ffffff;fill-opacity:1">
<path
d="m 196.938,156.803 c 1.044,-1.134 2.815,-1.213 3.955,-0.173 1.137,1.043 1.212,2.816 0.169,3.949 -1.04,1.143 -2.81,1.22 -3.949,0.173 -1.141,-1.04 -1.215,-2.808 -0.175,-3.949 z"
id="path101"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 209.977,136.537 c -1.369,-0.725 -3.061,-0.2 -3.779,1.17 -0.718,1.367 -0.192,3.057 1.173,3.777 1.364,0.72 3.057,0.196 3.771,-1.173 0.719,-1.365 0.197,-3.055 -1.165,-3.774 z"
id="path103"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 215.234,132.327 c -1.364,-0.722 -3.053,-0.204 -3.774,1.163 -0.714,1.369 -0.194,3.057 1.176,3.782 1.359,0.716 3.051,0.192 3.772,-1.174 0.719,-1.366 0.196,-3.057 -1.174,-3.771 z"
id="path105"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 191.702,148.171 c -1.404,0.633 -2.047,2.282 -1.425,3.693 0.634,1.408 2.277,2.045 3.691,1.426 1.414,-0.63 2.049,-2.284 1.426,-3.693 -0.629,-1.412 -2.278,-2.049 -3.692,-1.426 z"
id="path107"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 200.54,135.425 c -1.371,-0.726 -3.062,-0.2 -3.778,1.167 -0.718,1.363 -0.194,3.059 1.173,3.774 1.368,0.72 3.056,0.197 3.769,-1.168 0.725,-1.369 0.196,-3.054 -1.164,-3.773 z"
id="path109"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 200.54,135.425 c -1.371,-0.726 -3.062,-0.2 -3.778,1.167 -0.718,1.363 -0.194,3.059 1.173,3.774 1.368,0.72 3.056,0.197 3.769,-1.168 0.725,-1.369 0.196,-3.054 -1.164,-3.773 z"
id="path111"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 205.566,129.977 c -1.366,-0.72 -3.055,-0.201 -3.778,1.17 -0.716,1.368 -0.192,3.052 1.177,3.776 1.361,0.717 3.053,0.193 3.774,-1.171 0.719,-1.367 0.191,-3.055 -1.173,-3.775 z"
id="path113"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 205.566,129.977 c -1.366,-0.72 -3.055,-0.201 -3.778,1.17 -0.716,1.368 -0.195,3.052 1.177,3.776 1.361,0.717 3.053,0.193 3.774,-1.171 0.719,-1.367 0.191,-3.055 -1.173,-3.775 z"
id="path115"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 207.832,126.584 c 1.046,-1.138 2.81,-1.214 3.952,-0.173 1.138,1.046 1.214,2.809 0.172,3.951 -1.048,1.138 -2.807,1.214 -3.95,0.174 -1.137,-1.047 -1.212,-2.815 -0.174,-3.952 z"
id="path117"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 215.898,149.818 c -1.412,0.624 -2.056,2.274 -1.424,3.685 0.623,1.413 2.271,2.054 3.686,1.424 1.414,-0.628 2.045,-2.275 1.423,-3.686 -0.622,-1.409 -2.277,-2.045 -3.685,-1.423 z"
id="path119"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 222.901,144.488 c -1.364,-0.723 -3.055,-0.195 -3.777,1.171 -0.717,1.368 -0.192,3.059 1.17,3.777 1.367,0.721 3.057,0.195 3.78,-1.17 0.719,-1.364 0.195,-3.056 -1.173,-3.778 z"
id="path121"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 222.901,144.488 c -1.364,-0.723 -3.055,-0.195 -3.778,1.169 -0.716,1.37 -0.191,3.061 1.171,3.779 1.367,0.721 3.057,0.195 3.78,-1.17 0.719,-1.364 0.195,-3.056 -1.173,-3.778 z"
id="path123"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 205.336,156.264 c -1.407,0.623 -2.045,2.277 -1.421,3.686 0.629,1.414 2.278,2.045 3.687,1.423 1.419,-0.625 2.05,-2.271 1.428,-3.683 -0.63,-1.413 -2.279,-2.054 -3.694,-1.426 z"
id="path125"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 207.746,149.348 c -1.409,0.624 -2.048,2.274 -1.422,3.687 0.622,1.411 2.278,2.045 3.688,1.422 1.411,-0.628 2.047,-2.283 1.422,-3.691 -0.621,-1.412 -2.273,-2.046 -3.688,-1.418 z"
id="path127"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 219.005,138.374 c -1.363,-0.719 -3.054,-0.2 -3.776,1.171 -0.713,1.362 -0.197,3.057 1.173,3.771 1.366,0.722 3.057,0.197 3.779,-1.167 0.714,-1.371 0.194,-3.06 -1.176,-3.775 z"
id="path129"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 219.005,138.374 c -1.363,-0.719 -3.054,-0.2 -3.776,1.171 -0.713,1.362 -0.197,3.057 1.173,3.771 1.366,0.722 3.057,0.197 3.779,-1.167 0.714,-1.371 0.194,-3.06 -1.176,-3.775 z"
id="path131"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 224.12,150.721 c -1.414,0.627 -2.045,2.275 -1.423,3.687 0.629,1.412 2.277,2.053 3.691,1.425 1.407,-0.625 2.047,-2.275 1.425,-3.686 -0.628,-1.413 -2.274,-2.046 -3.693,-1.426 z"
id="path133"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 224.12,150.721 c -1.414,0.627 -2.045,2.275 -1.423,3.687 0.629,1.412 2.277,2.053 3.691,1.425 1.407,-0.625 2.047,-2.275 1.425,-3.686 -0.628,-1.413 -2.274,-2.046 -3.693,-1.426 z"
id="path135"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 220.454,156.59 c -1.412,0.622 -2.047,2.273 -1.424,3.684 0.628,1.414 2.278,2.054 3.691,1.427 1.405,-0.625 2.048,-2.276 1.423,-3.686 -0.627,-1.413 -2.274,-2.046 -3.69,-1.425 z"
id="path137"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 220.454,156.59 c -1.412,0.622 -2.047,2.273 -1.424,3.684 0.628,1.414 2.278,2.054 3.691,1.427 1.405,-0.625 2.048,-2.276 1.423,-3.686 -0.627,-1.413 -2.274,-2.046 -3.69,-1.425 z"
id="path139"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 199.739,148.936 c -1.418,0.628 -2.052,2.282 -1.429,3.689 0.628,1.415 2.276,2.049 3.692,1.428 1.407,-0.633 2.045,-2.273 1.427,-3.691 -0.633,-1.408 -2.28,-2.049 -3.69,-1.426 z"
id="path141"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 205.567,142.396 c -1.363,-0.721 -3.056,-0.197 -3.773,1.171 -0.718,1.366 -0.194,3.058 1.171,3.78 1.361,0.715 3.053,0.191 3.772,-1.175 0.725,-1.368 0.199,-3.055 -1.17,-3.776 z"
id="path143"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 190.066,155.839 c -1.412,0.623 -2.052,2.271 -1.425,3.684 0.624,1.411 2.276,2.046 3.686,1.424 1.416,-0.63 2.054,-2.272 1.431,-3.683 -0.628,-1.412 -2.284,-2.057 -3.692,-1.425 z"
id="path145"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 200.54,135.425 c -1.371,-0.726 -3.062,-0.2 -3.778,1.167 -0.718,1.363 -0.194,3.059 1.173,3.774 1.368,0.72 3.056,0.197 3.769,-1.168 0.725,-1.369 0.196,-3.054 -1.164,-3.773 z"
id="path147"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 196.699,141.568 c -1.37,-0.724 -3.058,-0.196 -3.778,1.169 -0.718,1.358 -0.192,3.052 1.173,3.771 1.366,0.722 3.054,0.194 3.775,-1.171 0.719,-1.368 0.192,-3.053 -1.17,-3.769 z"
id="path149"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 205.566,129.977 c -1.366,-0.72 -3.055,-0.201 -3.778,1.17 -0.716,1.368 -0.195,3.052 1.177,3.776 1.361,0.717 3.053,0.193 3.774,-1.171 0.719,-1.367 0.191,-3.055 -1.173,-3.775 z"
id="path151"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 212.012,157.114 c 1.046,-1.138 2.819,-1.215 3.95,-0.173 1.144,1.041 1.219,2.812 0.175,3.951 -1.037,1.135 -2.808,1.213 -3.951,0.174 -1.141,-1.047 -1.211,-2.816 -0.174,-3.952 z"
id="path153"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 222.901,144.488 c -1.364,-0.723 -3.055,-0.195 -3.778,1.169 -0.716,1.37 -0.191,3.061 1.171,3.779 1.367,0.721 3.057,0.195 3.78,-1.17 0.719,-1.364 0.195,-3.056 -1.173,-3.778 z"
id="path155"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 219.005,138.374 c -1.363,-0.719 -3.054,-0.2 -3.776,1.171 -0.713,1.362 -0.197,3.057 1.173,3.771 1.366,0.722 3.057,0.197 3.779,-1.167 0.714,-1.371 0.194,-3.06 -1.176,-3.775 z"
id="path157"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 214.061,143.221 c -1.367,-0.719 -3.056,-0.193 -3.776,1.171 -0.715,1.363 -0.193,3.061 1.176,3.774 1.368,0.722 3.049,0.2 3.774,-1.172 0.719,-1.364 0.192,-3.051 -1.174,-3.773 z"
id="path159"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 224.12,150.721 c -1.414,0.627 -2.045,2.275 -1.423,3.687 0.629,1.412 2.277,2.053 3.691,1.425 1.407,-0.625 2.047,-2.275 1.425,-3.686 -0.628,-1.413 -2.274,-2.046 -3.693,-1.426 z"
id="path161"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 220.454,156.59 c -1.412,0.622 -2.047,2.273 -1.424,3.684 0.628,1.414 2.278,2.054 3.691,1.427 1.405,-0.625 2.048,-2.276 1.423,-3.686 -0.627,-1.413 -2.274,-2.046 -3.69,-1.425 z"
id="path163"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
</g>
<g
id="g165"
style="fill:#ffffff;fill-opacity:1">
<path
d="m 278.788,156.803 c -1.044,-1.134 -2.816,-1.213 -3.953,-0.173 -1.136,1.043 -1.213,2.816 -0.172,3.949 1.041,1.143 2.809,1.22 3.95,0.173 1.142,-1.04 1.217,-2.808 0.175,-3.949 z"
id="path167"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 265.747,136.537 c 1.371,-0.725 3.063,-0.2 3.78,1.17 0.722,1.367 0.196,3.057 -1.171,3.777 -1.366,0.72 -3.058,0.196 -3.772,-1.173 -0.72,-1.365 -0.194,-3.055 1.163,-3.774 z"
id="path169"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 260.49,132.327 c 1.366,-0.722 3.057,-0.204 3.774,1.163 0.716,1.369 0.198,3.057 -1.175,3.782 -1.358,0.716 -3.053,0.192 -3.77,-1.174 -0.722,-1.366 -0.197,-3.057 1.171,-3.771 z"
id="path171"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 284.023,148.171 c 1.407,0.633 2.047,2.282 1.423,3.693 -0.631,1.408 -2.274,2.045 -3.69,1.426 -1.412,-0.63 -2.048,-2.284 -1.426,-3.693 0.629,-1.412 2.281,-2.049 3.693,-1.426 z"
id="path173"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 275.186,135.425 c 1.371,-0.726 3.064,-0.2 3.779,1.167 0.717,1.363 0.194,3.059 -1.176,3.774 -1.363,0.72 -3.055,0.197 -3.767,-1.168 -0.724,-1.369 -0.196,-3.054 1.164,-3.773 z"
id="path175"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 275.186,135.425 c 1.371,-0.726 3.064,-0.2 3.779,1.167 0.717,1.363 0.194,3.059 -1.176,3.774 -1.363,0.72 -3.055,0.197 -3.767,-1.168 -0.724,-1.369 -0.196,-3.054 1.164,-3.773 z"
id="path177"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 270.158,129.977 c 1.368,-0.72 3.058,-0.201 3.781,1.17 0.714,1.368 0.192,3.052 -1.179,3.776 -1.358,0.717 -3.055,0.193 -3.773,-1.171 -0.718,-1.367 -0.191,-3.055 1.171,-3.775 z"
id="path179"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 270.158,129.977 c 1.368,-0.72 3.058,-0.201 3.781,1.17 0.714,1.368 0.192,3.052 -1.179,3.776 -1.358,0.717 -3.055,0.193 -3.773,-1.171 -0.718,-1.367 -0.191,-3.055 1.171,-3.775 z"
id="path181"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 267.894,126.584 c -1.046,-1.138 -2.811,-1.214 -3.952,-0.173 -1.137,1.046 -1.213,2.809 -0.171,3.951 1.045,1.138 2.808,1.214 3.95,0.174 1.135,-1.047 1.211,-2.815 0.173,-3.952 z"
id="path183"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 259.827,149.818 c 1.411,0.624 2.055,2.274 1.426,3.685 -0.625,1.413 -2.271,2.054 -3.687,1.424 -1.416,-0.628 -2.047,-2.275 -1.425,-3.686 0.624,-1.409 2.279,-2.045 3.686,-1.423 z"
id="path185"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 252.823,144.488 c 1.365,-0.723 3.057,-0.195 3.779,1.171 0.715,1.368 0.189,3.059 -1.172,3.777 -1.365,0.721 -3.057,0.195 -3.778,-1.17 -0.719,-1.364 -0.194,-3.056 1.171,-3.778 z"
id="path187"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 252.823,144.488 c 1.365,-0.723 3.057,-0.195 3.781,1.169 0.713,1.37 0.188,3.061 -1.174,3.779 -1.365,0.721 -3.057,0.195 -3.778,-1.17 -0.719,-1.364 -0.194,-3.056 1.171,-3.778 z"
id="path189"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 270.387,156.264 c 1.413,0.623 2.046,2.277 1.422,3.686 -0.629,1.414 -2.274,2.045 -3.686,1.423 -1.417,-0.625 -2.048,-2.271 -1.426,-3.683 0.629,-1.413 2.279,-2.054 3.69,-1.426 z"
id="path191"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 267.979,149.348 c 1.411,0.624 2.052,2.274 1.421,3.687 -0.622,1.411 -2.274,2.045 -3.685,1.422 -1.411,-0.628 -2.049,-2.283 -1.425,-3.691 0.625,-1.412 2.273,-2.046 3.689,-1.418 z"
id="path193"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 256.719,138.374 c 1.364,-0.719 3.055,-0.2 3.777,1.171 0.715,1.362 0.198,3.057 -1.169,3.771 -1.369,0.722 -3.061,0.197 -3.781,-1.167 -0.714,-1.371 -0.196,-3.06 1.173,-3.775 z"
id="path195"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 256.719,138.374 c 1.368,-0.719 3.055,-0.2 3.777,1.171 0.715,1.362 0.198,3.057 -1.169,3.771 -1.369,0.722 -3.061,0.197 -3.781,-1.167 -0.714,-1.371 -0.196,-3.06 1.173,-3.775 z"
id="path197"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 251.605,150.721 c 1.416,0.627 2.047,2.275 1.422,3.687 -0.628,1.412 -2.276,2.053 -3.689,1.425 -1.405,-0.625 -2.047,-2.275 -1.428,-3.686 0.631,-1.413 2.279,-2.046 3.695,-1.426 z"
id="path199"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 251.605,150.721 c 1.416,0.627 2.047,2.275 1.422,3.687 -0.628,1.412 -2.276,2.053 -3.689,1.425 -1.405,-0.625 -2.047,-2.275 -1.428,-3.686 0.631,-1.413 2.279,-2.046 3.695,-1.426 z"
id="path201"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 255.272,156.59 c 1.411,0.622 2.045,2.273 1.423,3.684 -0.627,1.414 -2.278,2.054 -3.691,1.427 -1.405,-0.625 -2.049,-2.276 -1.424,-3.686 0.628,-1.413 2.277,-2.046 3.692,-1.425 z"
id="path203"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 255.272,156.59 c 1.411,0.622 2.045,2.273 1.423,3.684 -0.627,1.414 -2.278,2.054 -3.691,1.427 -1.405,-0.625 -2.049,-2.276 -1.424,-3.686 0.628,-1.413 2.277,-2.046 3.692,-1.425 z"
id="path205"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 275.989,148.936 c 1.414,0.628 2.048,2.282 1.427,3.689 -0.626,1.415 -2.276,2.049 -3.69,1.428 -1.407,-0.633 -2.047,-2.273 -1.428,-3.691 0.632,-1.408 2.28,-2.049 3.691,-1.426 z"
id="path207"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 270.158,142.396 c 1.366,-0.721 3.058,-0.197 3.772,1.171 0.72,1.366 0.194,3.058 -1.17,3.78 -1.36,0.715 -3.051,0.191 -3.771,-1.175 -0.726,-1.368 -0.198,-3.055 1.169,-3.776 z"
id="path209"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 285.66,155.839 c 1.41,0.623 2.052,2.271 1.424,3.684 -0.625,1.411 -2.276,2.046 -3.685,1.424 -1.418,-0.63 -2.053,-2.272 -1.432,-3.683 0.632,-1.412 2.284,-2.057 3.693,-1.425 z"
id="path211"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 275.186,135.425 c 1.371,-0.726 3.064,-0.2 3.779,1.167 0.717,1.363 0.194,3.059 -1.176,3.774 -1.363,0.72 -3.055,0.197 -3.767,-1.168 -0.724,-1.369 -0.196,-3.054 1.164,-3.773 z"
id="path213"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 279.025,141.568 c 1.372,-0.724 3.062,-0.196 3.778,1.169 0.717,1.358 0.194,3.052 -1.172,3.771 -1.365,0.722 -3.053,0.194 -3.773,-1.171 -0.719,-1.368 -0.19,-3.053 1.167,-3.769 z"
id="path215"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 270.158,129.977 c 1.368,-0.72 3.058,-0.201 3.781,1.17 0.714,1.368 0.192,3.052 -1.179,3.776 -1.358,0.717 -3.055,0.193 -3.773,-1.171 -0.718,-1.367 -0.191,-3.055 1.171,-3.775 z"
id="path217"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 263.713,157.114 c -1.045,-1.138 -2.817,-1.215 -3.949,-0.173 -1.143,1.041 -1.22,2.812 -0.175,3.951 1.039,1.135 2.811,1.213 3.951,0.174 1.14,-1.047 1.214,-2.816 0.173,-3.952 z"
id="path219"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 252.823,144.488 c 1.365,-0.723 3.057,-0.195 3.781,1.169 0.713,1.37 0.188,3.061 -1.174,3.779 -1.365,0.721 -3.057,0.195 -3.778,-1.17 -0.719,-1.364 -0.194,-3.056 1.171,-3.778 z"
id="path221"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 256.719,138.374 c 1.368,-0.719 3.055,-0.2 3.777,1.171 0.715,1.362 0.198,3.057 -1.169,3.771 -1.369,0.722 -3.061,0.197 -3.781,-1.167 -0.714,-1.371 -0.196,-3.06 1.173,-3.775 z"
id="path223"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 261.667,143.221 c 1.363,-0.719 3.056,-0.193 3.777,1.171 0.71,1.363 0.19,3.061 -1.18,3.774 -1.366,0.722 -3.049,0.2 -3.773,-1.172 -0.719,-1.364 -0.189,-3.051 1.176,-3.773 z"
id="path225"
inkscape:connector-curvature="0"
style="fill:#ffffff;fill-opacity:1" />
<path
d="m 251.605,150.721 c 1.416,0.627 2.047,2.275 1.422,3.687 -0.628,1.412 -2.276,2.053 -3.689,1.425 -1.405,-0.625 -2.047,-2.275 -1.428,-3.686 0.631,-1.413 2.279,-2.046 3.695,-1.426 z"
id="path227"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
<path
d="m 255.272,156.59 c 1.411,0.622 2.045,2.273 1.423,3.684 -0.627,1.414 -2.278,2.054 -3.691,1.427 -1.405,-0.625 -2.049,-2.276 -1.424,-3.686 0.628,-1.413 2.277,-2.046 3.692,-1.425 z"
id="path229"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#ffffff;fill-opacity:1" />
</g>
</g></g>
</svg>

After

Width:  |  Height:  |  Size: 38 KiB

View File

@ -0,0 +1,618 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://opensource.org/licenses/MIT"
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"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Ebene_3"
x="0px"
y="0px"
width="1079.0952"
height="214.49588"
viewBox="0 0 1079.0951 214.49587"
enable-background="new 0 0 841.89 595.28"
xml:space="preserve"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="openslides-logo-h.svg"
inkscape:export-xdpi="20.85"
inkscape:export-ydpi="20.85"><metadata
id="metadata461"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /><dc:creator><cc:Agent><dc:title>OpenSlides Team</dc:title></cc:Agent></dc:creator></cc:Work></rdf:RDF></metadata><defs
id="defs459">
</defs><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1672"
inkscape:window-height="978"
id="namedview457"
showgrid="false"
showguides="false"
inkscape:guide-bbox="true"
inkscape:zoom="0.38169128"
inkscape:cx="1239.4445"
inkscape:cy="-221.79039"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="Ebene_3"
fit-margin-top="40"
fit-margin-left="40"
fit-margin-right="40"
fit-margin-bottom="25"
units="px"><sodipodi:guide
orientation="0,1"
position="258.25847,-243.74238"
id="guide3558" /><sodipodi:guide
orientation="0,1"
position="226.61305,-187.79779"
id="guide3560" /></sodipodi:namedview>
<g
id="g5094"
transform="matrix(2.0781875,0,0,2.0781875,39.999967,39.999828)"><g
transform="translate(-154.63686,-116.56793)"
id="g7">
<path
d="m 334.257,126.401 c 3.222,1.985 5.696,4.867 7.423,8.649 1.727,3.782 2.591,8.358 2.591,13.726 0,5.276 -0.865,9.816 -2.591,13.621 -1.728,3.806 -4.202,6.712 -7.423,8.719 -3.221,2.007 -7.05,3.011 -11.485,3.011 -4.436,0 -8.276,-0.993 -11.521,-2.977 -3.245,-1.984 -5.731,-4.878 -7.458,-8.684 -1.728,-3.805 -2.591,-8.369 -2.591,-13.691 0,-5.228 0.875,-9.745 2.626,-13.551 1.751,-3.805 4.248,-6.723 7.494,-8.754 3.244,-2.031 7.061,-3.046 11.45,-3.046 4.435,10e-4 8.264,0.994 11.485,2.977 z m -19.503,8.93 c -1.798,2.801 -2.696,7.283 -2.696,13.446 0,6.163 0.91,10.645 2.731,13.446 1.821,2.801 4.482,4.202 7.984,4.202 3.547,0 6.208,-1.389 7.983,-4.167 1.774,-2.777 2.661,-7.271 2.661,-13.481 0,-6.208 -0.887,-10.703 -2.661,-13.481 -1.775,-2.777 -4.436,-4.167 -7.983,-4.167 -3.549,0 -6.223,1.4 -8.019,4.202 z"
id="path9"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 377.361,139.917 c 2.264,3.432 3.396,8.253 3.396,14.461 0,3.782 -0.584,7.167 -1.75,10.155 -1.167,2.988 -2.86,5.334 -5.077,7.038 -2.218,1.704 -4.844,2.556 -7.879,2.556 -3.782,0 -6.84,-1.331 -9.174,-3.992 v 17.157 l -9.944,1.121 V 135.89 h 8.754 l 0.49,4.342 c 1.4,-1.821 3.046,-3.187 4.937,-4.097 1.891,-0.91 3.792,-1.365 5.708,-1.365 4.761,10e-4 8.274,1.716 10.539,5.147 z m -6.968,14.532 c 0,-4.482 -0.549,-7.657 -1.646,-9.524 -1.098,-1.867 -2.766,-2.801 -5.007,-2.801 -1.354,0 -2.615,0.432 -3.781,1.295 -1.168,0.865 -2.195,2.02 -3.082,3.467 v 16.177 c 1.586,2.428 3.665,3.642 6.233,3.642 4.855,0 7.283,-4.085 7.283,-12.256 z"
id="path11"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 416.333,157.46 h -23.18 c 0.326,3.361 1.236,5.743 2.731,7.143 1.493,1.401 3.524,2.101 6.092,2.101 1.587,0 3.082,-0.256 4.482,-0.771 1.4,-0.513 2.917,-1.331 4.552,-2.451 l 4.132,5.603 c -4.156,3.362 -8.848,5.042 -14.076,5.042 -5.837,0 -10.319,-1.751 -13.446,-5.252 -3.129,-3.501 -4.692,-8.24 -4.692,-14.216 0,-3.782 0.666,-7.178 1.996,-10.189 1.33,-3.011 3.267,-5.38 5.813,-7.108 2.544,-1.727 5.567,-2.591 9.069,-2.591 5.275,0 9.384,1.658 12.326,4.972 2.941,3.315 4.412,7.938 4.412,13.866 -10e-4,0.467 -0.071,1.75 -0.211,3.851 z m -9.664,-6.652 c 0,-6.163 -2.218,-9.244 -6.653,-9.244 -2.055,0 -3.654,0.759 -4.797,2.276 -1.145,1.518 -1.833,3.981 -2.066,7.388 h 13.516 v -0.42 z"
id="path13"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 447.355,137.747 c 1.821,1.985 2.732,4.727 2.732,8.229 v 27.032 h -9.945 v -25.351 c 0,-2.007 -0.339,-3.42 -1.016,-4.237 -0.677,-0.816 -1.692,-1.225 -3.046,-1.225 -1.4,0 -2.673,0.432 -3.817,1.295 -1.145,0.864 -2.252,2.16 -3.326,3.887 v 25.631 h -9.944 v -37.117 h 8.614 l 0.77,4.692 c 1.541,-1.914 3.232,-3.362 5.078,-4.342 1.844,-0.98 3.933,-1.47 6.268,-1.47 3.267,0 5.812,0.992 7.632,2.976 z"
id="path15"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 481.566,124.931 c 2.592,1.004 4.983,2.533 7.178,4.587 l -4.972,5.743 c -1.681,-1.447 -3.386,-2.497 -5.112,-3.152 -1.728,-0.653 -3.572,-0.98 -5.532,-0.98 -2.147,0 -3.864,0.455 -5.147,1.365 -1.285,0.911 -1.926,2.206 -1.926,3.887 0,1.167 0.268,2.125 0.805,2.872 0.537,0.747 1.482,1.448 2.837,2.101 1.354,0.655 3.384,1.401 6.093,2.241 4.809,1.541 8.404,3.443 10.785,5.708 2.381,2.265 3.571,5.498 3.571,9.699 0,2.988 -0.747,5.615 -2.241,7.878 -1.494,2.265 -3.666,4.039 -6.513,5.323 -2.849,1.283 -6.187,1.926 -10.015,1.926 -3.828,0 -7.237,-0.607 -10.225,-1.821 -2.988,-1.214 -5.557,-2.872 -7.703,-4.972 l 5.393,-5.883 c 3.547,3.269 7.633,4.902 12.255,4.902 2.521,0 4.54,-0.583 6.058,-1.751 1.518,-1.167 2.276,-2.801 2.276,-4.902 0,-1.306 -0.27,-2.392 -0.806,-3.256 -0.537,-0.863 -1.459,-1.646 -2.766,-2.346 -1.309,-0.701 -3.199,-1.424 -5.673,-2.171 -5.276,-1.633 -9.046,-3.594 -11.31,-5.882 -2.266,-2.287 -3.396,-5.275 -3.396,-8.964 0,-2.708 0.723,-5.101 2.17,-7.178 1.447,-2.077 3.455,-3.677 6.023,-4.797 2.566,-1.121 5.485,-1.681 8.754,-1.681 3.503,-0.002 6.548,0.501 9.139,1.504 z"
id="path17"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 504.991,165.514 c 0.326,0.467 0.815,0.7 1.471,0.7 0.793,0 1.471,-0.14 2.03,-0.42 l 2.031,7.073 c -2.055,0.84 -4.296,1.261 -6.723,1.261 -2.941,0 -5.218,-0.853 -6.828,-2.556 -1.611,-1.704 -2.416,-4.167 -2.416,-7.388 v -43.069 l 9.944,-1.121 v 43.279 c 10e-4,1.027 0.164,1.775 0.491,2.241 z"
id="path19"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 524.214,118.418 c 1.144,1.098 1.716,2.486 1.716,4.167 0,1.681 -0.572,3.07 -1.716,4.167 -1.145,1.097 -2.603,1.646 -4.377,1.646 -1.774,0 -3.222,-0.548 -4.342,-1.646 -1.12,-1.097 -1.681,-2.486 -1.681,-4.167 0,-1.681 0.561,-3.069 1.681,-4.167 1.12,-1.096 2.567,-1.646 4.342,-1.646 1.775,0 3.232,0.55 4.377,1.646 z m -9.278,54.589 V 135.89 h 9.943 v 37.117 h -9.943 z"
id="path21"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 563.326,173.007 h -8.754 l -0.561,-4.552 c -2.615,3.782 -6.162,5.673 -10.645,5.673 -4.576,0 -8.065,-1.762 -10.469,-5.288 -2.406,-3.524 -3.607,-8.322 -3.607,-14.391 0,-3.828 0.618,-7.224 1.855,-10.189 1.236,-2.964 3,-5.288 5.287,-6.968 2.287,-1.68 4.973,-2.521 8.055,-2.521 1.727,0 3.35,0.339 4.867,1.015 1.516,0.677 2.859,1.576 4.026,2.696 v -18.488 l 9.944,1.121 v 51.892 z m -13.096,-7.423 c 1.121,-0.746 2.171,-1.867 3.151,-3.361 v -16.598 c -0.98,-1.167 -1.961,-2.042 -2.941,-2.626 -0.98,-0.583 -2.125,-0.875 -3.432,-0.875 -2.288,0 -4.085,1.004 -5.392,3.011 -1.309,2.008 -1.961,5.112 -1.961,9.314 0,4.436 0.57,7.587 1.715,9.454 1.145,1.868 2.813,2.801 5.008,2.801 1.447,0.001 2.731,-0.372 3.852,-1.12 z"
id="path23"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 601.494,157.46 h -23.182 c 0.326,3.361 1.236,5.743 2.732,7.143 1.492,1.401 3.523,2.101 6.092,2.101 1.587,0 3.082,-0.256 4.482,-0.771 1.4,-0.513 2.917,-1.331 4.552,-2.451 l 4.132,5.603 c -4.156,3.362 -8.848,5.042 -14.076,5.042 -5.837,0 -10.318,-1.751 -13.445,-5.252 -3.129,-3.501 -4.693,-8.24 -4.693,-14.216 0,-3.782 0.666,-7.178 1.996,-10.189 1.331,-3.011 3.268,-5.38 5.813,-7.108 2.545,-1.727 5.568,-2.591 9.069,-2.591 5.275,0 9.384,1.658 12.325,4.972 2.941,3.315 4.412,7.938 4.412,13.866 0,0.467 -0.07,1.75 -0.209,3.851 z m -9.665,-6.652 c 0,-6.163 -2.218,-9.244 -6.653,-9.244 -2.055,0 -3.653,0.759 -4.797,2.276 -1.145,1.518 -1.833,3.981 -2.066,7.388 h 13.517 v -0.42 z"
id="path25"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 634.127,139.252 -3.781,5.813 c -3.035,-2.054 -6.023,-3.082 -8.965,-3.082 -1.727,0 -3.059,0.304 -3.99,0.911 -0.936,0.607 -1.402,1.425 -1.402,2.451 0,0.747 0.199,1.377 0.596,1.891 0.396,0.514 1.145,1.004 2.242,1.471 1.096,0.467 2.742,1.027 4.936,1.681 3.922,1.075 6.84,2.51 8.754,4.307 1.914,1.798 2.873,4.261 2.873,7.388 0,2.475 -0.713,4.622 -2.137,6.443 -1.424,1.821 -3.352,3.21 -5.777,4.167 -2.428,0.956 -5.137,1.436 -8.123,1.436 -3.129,0 -5.979,-0.479 -8.545,-1.436 -2.568,-0.957 -4.762,-2.276 -6.582,-3.957 l 4.971,-5.532 c 1.402,1.167 2.941,2.078 4.623,2.731 1.68,0.654 3.408,0.98 5.182,0.98 1.914,0 3.42,-0.361 4.518,-1.085 1.096,-0.723 1.646,-1.692 1.646,-2.906 0,-0.98 -0.211,-1.762 -0.631,-2.346 -0.42,-0.583 -1.191,-1.121 -2.311,-1.61 -1.121,-0.49 -2.871,-1.062 -5.254,-1.716 -3.734,-1.026 -6.502,-2.486 -8.297,-4.377 -1.799,-1.891 -2.697,-4.237 -2.697,-7.038 0,-2.101 0.605,-3.992 1.82,-5.673 1.215,-1.681 2.93,-2.999 5.148,-3.957 2.217,-0.957 4.797,-1.436 7.738,-1.436 5.228,0 9.709,1.494 13.445,4.481 z"
id="path27"
inkscape:connector-curvature="0"
style="fill:#002c42" />
</g><g
transform="matrix(1.2794416,0,0,1.2794416,-241.04704,-149.41913)"
id="g29">
<path
d="m 231.138,168.561 h 15.136 c 1.645,0 2.965,0.99 2.965,2.225 0,1.231 -1.32,2.223 -2.965,2.223 h -15.136 c -1.646,0 -2.969,-0.992 -2.969,-2.223 0,-1.235 1.322,-2.225 2.969,-2.225 z"
id="path31"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<g
id="g33">
<path
d="m 224.244,127.652 c 1.516,0.284 2.521,1.745 2.243,3.26 -0.284,1.519 -1.747,2.523 -3.258,2.239 -1.522,-0.277 -2.526,-1.736 -2.241,-3.258 0.278,-1.519 1.739,-2.519 3.256,-2.241 z"
id="path35"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 248.342,127.971 c -0.113,-1.547 -1.455,-2.703 -2.995,-2.586 -1.539,0.114 -2.695,1.456 -2.584,2.996 0.112,1.54 1.455,2.697 2.995,2.576 1.539,-0.111 2.696,-1.453 2.584,-2.986 z"
id="path37"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 254.698,130.199 c -0.111,-1.541 -1.447,-2.698 -2.986,-2.584 -1.54,0.119 -2.696,1.454 -2.586,3 0.115,1.532 1.456,2.69 2.996,2.576 1.54,-0.111 2.698,-1.453 2.576,-2.992 z"
id="path39"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 228.791,118.638 c -1.282,-0.857 -3.021,-0.527 -3.888,0.749 -0.857,1.282 -0.528,3.014 0.748,3.887 1.282,0.864 3.021,0.526 3.886,-0.749 0.866,-1.282 0.528,-3.019 -0.746,-3.887 z"
id="path41"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 244.284,119.378 c -0.113,-1.548 -1.454,-2.703 -2.994,-2.585 -1.535,0.114 -2.698,1.456 -2.579,2.995 0.113,1.54 1.454,2.695 2.987,2.577 1.547,-0.111 2.698,-1.453 2.586,-2.987 z"
id="path43"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 244.284,119.378 c -0.113,-1.548 -1.454,-2.703 -2.994,-2.585 -1.535,0.114 -2.698,1.456 -2.579,2.995 0.113,1.54 1.454,2.695 2.987,2.577 1.547,-0.111 2.698,-1.453 2.586,-2.987 z"
id="path45"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 251.567,120.753 c -0.111,-1.54 -1.447,-2.699 -2.995,-2.584 -1.54,0.119 -2.69,1.454 -2.576,2.999 0.112,1.533 1.453,2.691 2.993,2.58 1.54,-0.115 2.69,-1.456 2.578,-2.995 z"
id="path47"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 251.567,120.753 c -0.111,-1.54 -1.447,-2.699 -2.995,-2.584 -1.54,0.119 -2.69,1.452 -2.576,2.999 0.112,1.533 1.453,2.691 2.993,2.58 1.54,-0.115 2.69,-1.456 2.578,-2.995 z"
id="path49"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 255.645,120.877 c 1.521,0.284 2.518,1.74 2.242,3.26 -0.285,1.519 -1.739,2.517 -3.26,2.239 -1.521,-0.284 -2.519,-1.737 -2.24,-3.259 0.284,-1.518 1.745,-2.517 3.258,-2.24 z"
id="path51"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 240.216,140.03 c -1.276,-0.865 -3.016,-0.537 -3.88,0.746 -0.866,1.277 -0.538,3.014 0.746,3.88 1.282,0.867 3.013,0.53 3.88,-0.746 0.866,-1.276 0.529,-3.016 -0.746,-3.88 z"
id="path53"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 248.446,143.145 c -0.111,-1.54 -1.452,-2.694 -2.992,-2.583 -1.541,0.117 -2.698,1.459 -2.584,2.994 0.112,1.54 1.453,2.695 2.993,2.584 1.54,-0.112 2.696,-1.453 2.583,-2.995 z"
id="path55"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 248.446,143.145 c -0.111,-1.54 -1.452,-2.694 -2.992,-2.584 -1.541,0.119 -2.698,1.461 -2.584,2.996 0.112,1.54 1.453,2.695 2.993,2.584 1.54,-0.113 2.696,-1.454 2.583,-2.996 z"
id="path57"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 229.154,134.489 c -1.275,-0.864 -3.018,-0.527 -3.88,0.749 -0.867,1.283 -0.529,3.014 0.745,3.88 1.282,0.871 3.012,0.534 3.881,-0.742 0.868,-1.283 0.534,-3.021 -0.746,-3.887 z"
id="path59"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 236.296,132.867 c -1.277,-0.864 -3.014,-0.533 -3.881,0.749 -0.866,1.275 -0.527,3.015 0.748,3.88 1.279,0.864 3.021,0.527 3.885,-0.749 0.867,-1.276 0.529,-3.013 -0.752,-3.88 z"
id="path61"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 251.567,136.602 c -0.111,-1.539 -1.447,-2.697 -2.995,-2.583 -1.533,0.117 -2.695,1.452 -2.576,2.992 0.112,1.542 1.453,2.697 2.993,2.586 1.54,-0.121 2.698,-1.456 2.578,-2.995 z"
id="path63"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 251.567,136.602 c -0.111,-1.541 -1.447,-2.697 -2.995,-2.583 -1.533,0.117 -2.695,1.452 -2.576,2.992 0.112,1.542 1.453,2.697 2.993,2.586 1.54,-0.121 2.698,-1.456 2.578,-2.995 z"
id="path65"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 243.808,147.482 c -1.282,-0.868 -3.014,-0.531 -3.881,0.745 -0.864,1.282 -0.535,3.02 0.748,3.886 1.275,0.861 3.014,0.53 3.88,-0.746 0.865,-1.281 0.527,-3.012 -0.747,-3.885 z"
id="path67"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 243.808,147.482 c -1.282,-0.868 -3.014,-0.531 -3.881,0.745 -0.864,1.282 -0.535,3.02 0.748,3.886 1.275,0.861 3.014,0.53 3.88,-0.746 0.865,-1.281 0.527,-3.012 -0.747,-3.885 z"
id="path69"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 236.887,147.482 c -1.274,-0.868 -3.014,-0.531 -3.879,0.745 -0.866,1.282 -0.535,3.02 0.746,3.886 1.275,0.861 3.014,0.53 3.881,-0.746 0.865,-1.281 0.528,-3.012 -0.748,-3.885 z"
id="path71"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 236.887,147.482 c -1.274,-0.868 -3.014,-0.531 -3.879,0.745 -0.866,1.282 -0.535,3.02 0.746,3.886 1.275,0.861 3.014,0.53 3.881,-0.746 0.865,-1.281 0.528,-3.012 -0.748,-3.885 z"
id="path73"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 232.399,125.857 c -1.281,-0.867 -3.021,-0.529 -3.887,0.745 -0.866,1.283 -0.528,3.016 0.747,3.887 1.282,0.859 3.015,0.53 3.886,-0.745 0.861,-1.284 0.53,-3.02 -0.746,-3.887 z"
id="path75"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 241.034,127.336 c -0.11,-1.54 -1.451,-2.696 -2.991,-2.579 -1.54,0.114 -2.698,1.456 -2.587,2.995 0.114,1.534 1.456,2.69 2.995,2.577 1.546,-0.111 2.7,-1.453 2.583,-2.993 z"
id="path77"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 221.422,121.313 c -1.276,-0.866 -3.015,-0.537 -3.88,0.745 -0.867,1.278 -0.529,3.015 0.746,3.88 1.282,0.868 3.015,0.537 3.88,-0.738 0.866,-1.282 0.535,-3.027 -0.746,-3.887 z"
id="path79"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 244.284,119.378 c -0.113,-1.548 -1.454,-2.703 -2.994,-2.585 -1.535,0.114 -2.698,1.456 -2.579,2.995 0.113,1.54 1.454,2.695 2.987,2.577 1.547,-0.111 2.698,-1.453 2.586,-2.987 z"
id="path81"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 237.039,119.377 c -0.112,-1.546 -1.454,-2.698 -2.993,-2.584 -1.533,0.112 -2.69,1.454 -2.579,2.992 0.112,1.541 1.455,2.692 2.996,2.58 1.539,-0.115 2.688,-1.456 2.576,-2.988 z"
id="path83"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 251.567,120.753 c -0.111,-1.54 -1.447,-2.699 -2.995,-2.584 -1.54,0.119 -2.69,1.452 -2.576,2.999 0.112,1.533 1.453,2.691 2.993,2.58 1.54,-0.115 2.69,-1.456 2.578,-2.995 z"
id="path85"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 231.97,140.602 c 1.519,0.282 2.523,1.745 2.239,3.257 -0.278,1.521 -1.736,2.525 -3.259,2.242 -1.512,-0.279 -2.518,-1.74 -2.241,-3.258 0.285,-1.523 1.745,-2.52 3.261,-2.241 z"
id="path87"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 248.446,143.145 c -0.111,-1.54 -1.452,-2.694 -2.992,-2.584 -1.541,0.119 -2.698,1.461 -2.584,2.996 0.112,1.54 1.453,2.695 2.993,2.584 1.54,-0.113 2.696,-1.454 2.583,-2.996 z"
id="path89"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 251.567,136.602 c -0.111,-1.541 -1.447,-2.697 -2.995,-2.583 -1.533,0.117 -2.695,1.452 -2.576,2.992 0.112,1.542 1.453,2.697 2.993,2.586 1.54,-0.121 2.698,-1.456 2.578,-2.995 z"
id="path91"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 244.838,134.975 c -0.115,-1.54 -1.456,-2.695 -2.996,-2.583 -1.534,0.117 -2.698,1.459 -2.577,2.999 0.11,1.542 1.445,2.69 2.992,2.579 1.539,-0.113 2.691,-1.455 2.581,-2.995 z"
id="path93"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 243.808,147.482 c -1.282,-0.868 -3.014,-0.531 -3.881,0.745 -0.864,1.282 -0.535,3.02 0.748,3.886 1.275,0.861 3.014,0.53 3.88,-0.746 0.865,-1.281 0.527,-3.012 -0.747,-3.885 z"
id="path95"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 236.887,147.482 c -1.274,-0.868 -3.014,-0.531 -3.879,0.745 -0.866,1.282 -0.535,3.02 0.746,3.886 1.275,0.861 3.014,0.53 3.881,-0.746 0.865,-1.281 0.528,-3.012 -0.748,-3.885 z"
id="path97"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
</g>
<g
id="g99">
<path
d="m 196.938,156.803 c 1.044,-1.134 2.815,-1.213 3.955,-0.173 1.137,1.043 1.212,2.816 0.169,3.949 -1.04,1.143 -2.81,1.22 -3.949,0.173 -1.141,-1.04 -1.215,-2.808 -0.175,-3.949 z"
id="path101"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 209.977,136.537 c -1.369,-0.725 -3.061,-0.2 -3.779,1.17 -0.718,1.367 -0.192,3.057 1.173,3.777 1.364,0.72 3.057,0.196 3.771,-1.173 0.719,-1.365 0.197,-3.055 -1.165,-3.774 z"
id="path103"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 215.234,132.327 c -1.364,-0.722 -3.053,-0.204 -3.774,1.163 -0.714,1.369 -0.194,3.057 1.176,3.782 1.359,0.716 3.051,0.192 3.772,-1.174 0.719,-1.366 0.196,-3.057 -1.174,-3.771 z"
id="path105"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 191.702,148.171 c -1.404,0.633 -2.047,2.282 -1.425,3.693 0.634,1.408 2.277,2.045 3.691,1.426 1.414,-0.63 2.049,-2.284 1.426,-3.693 -0.629,-1.412 -2.278,-2.049 -3.692,-1.426 z"
id="path107"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 200.54,135.425 c -1.371,-0.726 -3.062,-0.2 -3.778,1.167 -0.718,1.363 -0.194,3.059 1.173,3.774 1.368,0.72 3.056,0.197 3.769,-1.168 0.725,-1.369 0.196,-3.054 -1.164,-3.773 z"
id="path109"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 200.54,135.425 c -1.371,-0.726 -3.062,-0.2 -3.778,1.167 -0.718,1.363 -0.194,3.059 1.173,3.774 1.368,0.72 3.056,0.197 3.769,-1.168 0.725,-1.369 0.196,-3.054 -1.164,-3.773 z"
id="path111"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 205.566,129.977 c -1.366,-0.72 -3.055,-0.201 -3.778,1.17 -0.716,1.368 -0.192,3.052 1.177,3.776 1.361,0.717 3.053,0.193 3.774,-1.171 0.719,-1.367 0.191,-3.055 -1.173,-3.775 z"
id="path113"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 205.566,129.977 c -1.366,-0.72 -3.055,-0.201 -3.778,1.17 -0.716,1.368 -0.195,3.052 1.177,3.776 1.361,0.717 3.053,0.193 3.774,-1.171 0.719,-1.367 0.191,-3.055 -1.173,-3.775 z"
id="path115"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 207.832,126.584 c 1.046,-1.138 2.81,-1.214 3.952,-0.173 1.138,1.046 1.214,2.809 0.172,3.951 -1.048,1.138 -2.807,1.214 -3.95,0.174 -1.137,-1.047 -1.212,-2.815 -0.174,-3.952 z"
id="path117"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 215.898,149.818 c -1.412,0.624 -2.056,2.274 -1.424,3.685 0.623,1.413 2.271,2.054 3.686,1.424 1.414,-0.628 2.045,-2.275 1.423,-3.686 -0.622,-1.409 -2.277,-2.045 -3.685,-1.423 z"
id="path119"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 222.901,144.488 c -1.364,-0.723 -3.055,-0.195 -3.777,1.171 -0.717,1.368 -0.192,3.059 1.17,3.777 1.367,0.721 3.057,0.195 3.78,-1.17 0.719,-1.364 0.195,-3.056 -1.173,-3.778 z"
id="path121"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 222.901,144.488 c -1.364,-0.723 -3.055,-0.195 -3.778,1.169 -0.716,1.37 -0.191,3.061 1.171,3.779 1.367,0.721 3.057,0.195 3.78,-1.17 0.719,-1.364 0.195,-3.056 -1.173,-3.778 z"
id="path123"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 205.336,156.264 c -1.407,0.623 -2.045,2.277 -1.421,3.686 0.629,1.414 2.278,2.045 3.687,1.423 1.419,-0.625 2.05,-2.271 1.428,-3.683 -0.63,-1.413 -2.279,-2.054 -3.694,-1.426 z"
id="path125"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 207.746,149.348 c -1.409,0.624 -2.048,2.274 -1.422,3.687 0.622,1.411 2.278,2.045 3.688,1.422 1.411,-0.628 2.047,-2.283 1.422,-3.691 -0.621,-1.412 -2.273,-2.046 -3.688,-1.418 z"
id="path127"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 219.005,138.374 c -1.363,-0.719 -3.054,-0.2 -3.776,1.171 -0.713,1.362 -0.197,3.057 1.173,3.771 1.366,0.722 3.057,0.197 3.779,-1.167 0.714,-1.371 0.194,-3.06 -1.176,-3.775 z"
id="path129"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 219.005,138.374 c -1.363,-0.719 -3.054,-0.2 -3.776,1.171 -0.713,1.362 -0.197,3.057 1.173,3.771 1.366,0.722 3.057,0.197 3.779,-1.167 0.714,-1.371 0.194,-3.06 -1.176,-3.775 z"
id="path131"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 224.12,150.721 c -1.414,0.627 -2.045,2.275 -1.423,3.687 0.629,1.412 2.277,2.053 3.691,1.425 1.407,-0.625 2.047,-2.275 1.425,-3.686 -0.628,-1.413 -2.274,-2.046 -3.693,-1.426 z"
id="path133"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 224.12,150.721 c -1.414,0.627 -2.045,2.275 -1.423,3.687 0.629,1.412 2.277,2.053 3.691,1.425 1.407,-0.625 2.047,-2.275 1.425,-3.686 -0.628,-1.413 -2.274,-2.046 -3.693,-1.426 z"
id="path135"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 220.454,156.59 c -1.412,0.622 -2.047,2.273 -1.424,3.684 0.628,1.414 2.278,2.054 3.691,1.427 1.405,-0.625 2.048,-2.276 1.423,-3.686 -0.627,-1.413 -2.274,-2.046 -3.69,-1.425 z"
id="path137"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 220.454,156.59 c -1.412,0.622 -2.047,2.273 -1.424,3.684 0.628,1.414 2.278,2.054 3.691,1.427 1.405,-0.625 2.048,-2.276 1.423,-3.686 -0.627,-1.413 -2.274,-2.046 -3.69,-1.425 z"
id="path139"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 199.739,148.936 c -1.418,0.628 -2.052,2.282 -1.429,3.689 0.628,1.415 2.276,2.049 3.692,1.428 1.407,-0.633 2.045,-2.273 1.427,-3.691 -0.633,-1.408 -2.28,-2.049 -3.69,-1.426 z"
id="path141"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 205.567,142.396 c -1.363,-0.721 -3.056,-0.197 -3.773,1.171 -0.718,1.366 -0.194,3.058 1.171,3.78 1.361,0.715 3.053,0.191 3.772,-1.175 0.725,-1.368 0.199,-3.055 -1.17,-3.776 z"
id="path143"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 190.066,155.839 c -1.412,0.623 -2.052,2.271 -1.425,3.684 0.624,1.411 2.276,2.046 3.686,1.424 1.416,-0.63 2.054,-2.272 1.431,-3.683 -0.628,-1.412 -2.284,-2.057 -3.692,-1.425 z"
id="path145"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 200.54,135.425 c -1.371,-0.726 -3.062,-0.2 -3.778,1.167 -0.718,1.363 -0.194,3.059 1.173,3.774 1.368,0.72 3.056,0.197 3.769,-1.168 0.725,-1.369 0.196,-3.054 -1.164,-3.773 z"
id="path147"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 196.699,141.568 c -1.37,-0.724 -3.058,-0.196 -3.778,1.169 -0.718,1.358 -0.192,3.052 1.173,3.771 1.366,0.722 3.054,0.194 3.775,-1.171 0.719,-1.368 0.192,-3.053 -1.17,-3.769 z"
id="path149"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 205.566,129.977 c -1.366,-0.72 -3.055,-0.201 -3.778,1.17 -0.716,1.368 -0.195,3.052 1.177,3.776 1.361,0.717 3.053,0.193 3.774,-1.171 0.719,-1.367 0.191,-3.055 -1.173,-3.775 z"
id="path151"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 212.012,157.114 c 1.046,-1.138 2.819,-1.215 3.95,-0.173 1.144,1.041 1.219,2.812 0.175,3.951 -1.037,1.135 -2.808,1.213 -3.951,0.174 -1.141,-1.047 -1.211,-2.816 -0.174,-3.952 z"
id="path153"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 222.901,144.488 c -1.364,-0.723 -3.055,-0.195 -3.778,1.169 -0.716,1.37 -0.191,3.061 1.171,3.779 1.367,0.721 3.057,0.195 3.78,-1.17 0.719,-1.364 0.195,-3.056 -1.173,-3.778 z"
id="path155"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 219.005,138.374 c -1.363,-0.719 -3.054,-0.2 -3.776,1.171 -0.713,1.362 -0.197,3.057 1.173,3.771 1.366,0.722 3.057,0.197 3.779,-1.167 0.714,-1.371 0.194,-3.06 -1.176,-3.775 z"
id="path157"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 214.061,143.221 c -1.367,-0.719 -3.056,-0.193 -3.776,1.171 -0.715,1.363 -0.193,3.061 1.176,3.774 1.368,0.722 3.049,0.2 3.774,-1.172 0.719,-1.364 0.192,-3.051 -1.174,-3.773 z"
id="path159"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 224.12,150.721 c -1.414,0.627 -2.045,2.275 -1.423,3.687 0.629,1.412 2.277,2.053 3.691,1.425 1.407,-0.625 2.047,-2.275 1.425,-3.686 -0.628,-1.413 -2.274,-2.046 -3.693,-1.426 z"
id="path161"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 220.454,156.59 c -1.412,0.622 -2.047,2.273 -1.424,3.684 0.628,1.414 2.278,2.054 3.691,1.427 1.405,-0.625 2.048,-2.276 1.423,-3.686 -0.627,-1.413 -2.274,-2.046 -3.69,-1.425 z"
id="path163"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
</g>
<g
id="g165">
<path
d="m 278.788,156.803 c -1.044,-1.134 -2.816,-1.213 -3.953,-0.173 -1.136,1.043 -1.213,2.816 -0.172,3.949 1.041,1.143 2.809,1.22 3.95,0.173 1.142,-1.04 1.217,-2.808 0.175,-3.949 z"
id="path167"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 265.747,136.537 c 1.371,-0.725 3.063,-0.2 3.78,1.17 0.722,1.367 0.196,3.057 -1.171,3.777 -1.366,0.72 -3.058,0.196 -3.772,-1.173 -0.72,-1.365 -0.194,-3.055 1.163,-3.774 z"
id="path169"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 260.49,132.327 c 1.366,-0.722 3.057,-0.204 3.774,1.163 0.716,1.369 0.198,3.057 -1.175,3.782 -1.358,0.716 -3.053,0.192 -3.77,-1.174 -0.722,-1.366 -0.197,-3.057 1.171,-3.771 z"
id="path171"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 284.023,148.171 c 1.407,0.633 2.047,2.282 1.423,3.693 -0.631,1.408 -2.274,2.045 -3.69,1.426 -1.412,-0.63 -2.048,-2.284 -1.426,-3.693 0.629,-1.412 2.281,-2.049 3.693,-1.426 z"
id="path173"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 275.186,135.425 c 1.371,-0.726 3.064,-0.2 3.779,1.167 0.717,1.363 0.194,3.059 -1.176,3.774 -1.363,0.72 -3.055,0.197 -3.767,-1.168 -0.724,-1.369 -0.196,-3.054 1.164,-3.773 z"
id="path175"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 275.186,135.425 c 1.371,-0.726 3.064,-0.2 3.779,1.167 0.717,1.363 0.194,3.059 -1.176,3.774 -1.363,0.72 -3.055,0.197 -3.767,-1.168 -0.724,-1.369 -0.196,-3.054 1.164,-3.773 z"
id="path177"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 270.158,129.977 c 1.368,-0.72 3.058,-0.201 3.781,1.17 0.714,1.368 0.192,3.052 -1.179,3.776 -1.358,0.717 -3.055,0.193 -3.773,-1.171 -0.718,-1.367 -0.191,-3.055 1.171,-3.775 z"
id="path179"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 270.158,129.977 c 1.368,-0.72 3.058,-0.201 3.781,1.17 0.714,1.368 0.192,3.052 -1.179,3.776 -1.358,0.717 -3.055,0.193 -3.773,-1.171 -0.718,-1.367 -0.191,-3.055 1.171,-3.775 z"
id="path181"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 267.894,126.584 c -1.046,-1.138 -2.811,-1.214 -3.952,-0.173 -1.137,1.046 -1.213,2.809 -0.171,3.951 1.045,1.138 2.808,1.214 3.95,0.174 1.135,-1.047 1.211,-2.815 0.173,-3.952 z"
id="path183"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 259.827,149.818 c 1.411,0.624 2.055,2.274 1.426,3.685 -0.625,1.413 -2.271,2.054 -3.687,1.424 -1.416,-0.628 -2.047,-2.275 -1.425,-3.686 0.624,-1.409 2.279,-2.045 3.686,-1.423 z"
id="path185"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 252.823,144.488 c 1.365,-0.723 3.057,-0.195 3.779,1.171 0.715,1.368 0.189,3.059 -1.172,3.777 -1.365,0.721 -3.057,0.195 -3.778,-1.17 -0.719,-1.364 -0.194,-3.056 1.171,-3.778 z"
id="path187"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 252.823,144.488 c 1.365,-0.723 3.057,-0.195 3.781,1.169 0.713,1.37 0.188,3.061 -1.174,3.779 -1.365,0.721 -3.057,0.195 -3.778,-1.17 -0.719,-1.364 -0.194,-3.056 1.171,-3.778 z"
id="path189"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 270.387,156.264 c 1.413,0.623 2.046,2.277 1.422,3.686 -0.629,1.414 -2.274,2.045 -3.686,1.423 -1.417,-0.625 -2.048,-2.271 -1.426,-3.683 0.629,-1.413 2.279,-2.054 3.69,-1.426 z"
id="path191"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 267.979,149.348 c 1.411,0.624 2.052,2.274 1.421,3.687 -0.622,1.411 -2.274,2.045 -3.685,1.422 -1.411,-0.628 -2.049,-2.283 -1.425,-3.691 0.625,-1.412 2.273,-2.046 3.689,-1.418 z"
id="path193"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 256.719,138.374 c 1.364,-0.719 3.055,-0.2 3.777,1.171 0.715,1.362 0.198,3.057 -1.169,3.771 -1.369,0.722 -3.061,0.197 -3.781,-1.167 -0.714,-1.371 -0.196,-3.06 1.173,-3.775 z"
id="path195"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 256.719,138.374 c 1.368,-0.719 3.055,-0.2 3.777,1.171 0.715,1.362 0.198,3.057 -1.169,3.771 -1.369,0.722 -3.061,0.197 -3.781,-1.167 -0.714,-1.371 -0.196,-3.06 1.173,-3.775 z"
id="path197"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 251.605,150.721 c 1.416,0.627 2.047,2.275 1.422,3.687 -0.628,1.412 -2.276,2.053 -3.689,1.425 -1.405,-0.625 -2.047,-2.275 -1.428,-3.686 0.631,-1.413 2.279,-2.046 3.695,-1.426 z"
id="path199"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 251.605,150.721 c 1.416,0.627 2.047,2.275 1.422,3.687 -0.628,1.412 -2.276,2.053 -3.689,1.425 -1.405,-0.625 -2.047,-2.275 -1.428,-3.686 0.631,-1.413 2.279,-2.046 3.695,-1.426 z"
id="path201"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 255.272,156.59 c 1.411,0.622 2.045,2.273 1.423,3.684 -0.627,1.414 -2.278,2.054 -3.691,1.427 -1.405,-0.625 -2.049,-2.276 -1.424,-3.686 0.628,-1.413 2.277,-2.046 3.692,-1.425 z"
id="path203"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 255.272,156.59 c 1.411,0.622 2.045,2.273 1.423,3.684 -0.627,1.414 -2.278,2.054 -3.691,1.427 -1.405,-0.625 -2.049,-2.276 -1.424,-3.686 0.628,-1.413 2.277,-2.046 3.692,-1.425 z"
id="path205"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 275.989,148.936 c 1.414,0.628 2.048,2.282 1.427,3.689 -0.626,1.415 -2.276,2.049 -3.69,1.428 -1.407,-0.633 -2.047,-2.273 -1.428,-3.691 0.632,-1.408 2.28,-2.049 3.691,-1.426 z"
id="path207"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 270.158,142.396 c 1.366,-0.721 3.058,-0.197 3.772,1.171 0.72,1.366 0.194,3.058 -1.17,3.78 -1.36,0.715 -3.051,0.191 -3.771,-1.175 -0.726,-1.368 -0.198,-3.055 1.169,-3.776 z"
id="path209"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 285.66,155.839 c 1.41,0.623 2.052,2.271 1.424,3.684 -0.625,1.411 -2.276,2.046 -3.685,1.424 -1.418,-0.63 -2.053,-2.272 -1.432,-3.683 0.632,-1.412 2.284,-2.057 3.693,-1.425 z"
id="path211"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 275.186,135.425 c 1.371,-0.726 3.064,-0.2 3.779,1.167 0.717,1.363 0.194,3.059 -1.176,3.774 -1.363,0.72 -3.055,0.197 -3.767,-1.168 -0.724,-1.369 -0.196,-3.054 1.164,-3.773 z"
id="path213"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 279.025,141.568 c 1.372,-0.724 3.062,-0.196 3.778,1.169 0.717,1.358 0.194,3.052 -1.172,3.771 -1.365,0.722 -3.053,0.194 -3.773,-1.171 -0.719,-1.368 -0.19,-3.053 1.167,-3.769 z"
id="path215"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 270.158,129.977 c 1.368,-0.72 3.058,-0.201 3.781,1.17 0.714,1.368 0.192,3.052 -1.179,3.776 -1.358,0.717 -3.055,0.193 -3.773,-1.171 -0.718,-1.367 -0.191,-3.055 1.171,-3.775 z"
id="path217"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 263.713,157.114 c -1.045,-1.138 -2.817,-1.215 -3.949,-0.173 -1.143,1.041 -1.22,2.812 -0.175,3.951 1.039,1.135 2.811,1.213 3.951,0.174 1.14,-1.047 1.214,-2.816 0.173,-3.952 z"
id="path219"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 252.823,144.488 c 1.365,-0.723 3.057,-0.195 3.781,1.169 0.713,1.37 0.188,3.061 -1.174,3.779 -1.365,0.721 -3.057,0.195 -3.778,-1.17 -0.719,-1.364 -0.194,-3.056 1.171,-3.778 z"
id="path221"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 256.719,138.374 c 1.368,-0.719 3.055,-0.2 3.777,1.171 0.715,1.362 0.198,3.057 -1.169,3.771 -1.369,0.722 -3.061,0.197 -3.781,-1.167 -0.714,-1.371 -0.196,-3.06 1.173,-3.775 z"
id="path223"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 261.667,143.221 c 1.363,-0.719 3.056,-0.193 3.777,1.171 0.71,1.363 0.19,3.061 -1.18,3.774 -1.366,0.722 -3.049,0.2 -3.773,-1.172 -0.719,-1.364 -0.189,-3.051 1.176,-3.773 z"
id="path225"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 251.605,150.721 c 1.416,0.627 2.047,2.275 1.422,3.687 -0.628,1.412 -2.276,2.053 -3.689,1.425 -1.405,-0.625 -2.047,-2.275 -1.428,-3.686 0.631,-1.413 2.279,-2.046 3.695,-1.426 z"
id="path227"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 255.272,156.59 c 1.411,0.622 2.045,2.273 1.423,3.684 -0.627,1.414 -2.278,2.054 -3.691,1.427 -1.405,-0.625 -2.049,-2.276 -1.424,-3.686 0.628,-1.413 2.277,-2.046 3.692,-1.425 z"
id="path229"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
</g>
</g></g>
</svg>

After

Width:  |  Height:  |  Size: 36 KiB

View File

@ -0,0 +1,626 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://opensource.org/licenses/MIT"
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"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Ebene_3"
x="0px"
y="0px"
width="700"
height="700"
viewBox="0 0 699.99992 699.99998"
enable-background="new 0 0 841.89 595.28"
xml:space="preserve"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="openslides-logo-v-dark.svg"
inkscape:export-xdpi="32.139999"
inkscape:export-ydpi="32.139999"><metadata
id="metadata461"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title><dc:creator><cc:Agent><dc:title>OpenSlides Team</dc:title></cc:Agent></dc:creator></cc:Work></rdf:RDF></metadata><defs
id="defs459">
</defs><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="1"
inkscape:pageshadow="2"
inkscape:window-width="1672"
inkscape:window-height="978"
id="namedview457"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="0.68267409"
inkscape:cx="899.78908"
inkscape:cy="373.77589"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="Ebene_3"
fit-margin-top="30"
fit-margin-left="30"
fit-margin-right="30"
fit-margin-bottom="30"
units="px"
borderlayer="true"
inkscape:showpageshadow="false" />
<rect
style="fill:#002c42;fill-opacity:1;fill-rule:nonzero;stroke:none"
id="rect3094"
width="744.13251"
height="764.64014"
x="-19.042793"
y="-32.41391" /><g
id="g3327"
transform="translate(0,1.4206687)"
style="fill:#ffffff"><g
transform="matrix(1.9256508,0,0,1.9256508,-550.0099,224.97026)"
id="g7"
style="fill:#ffffff">
<path
d="m 334.257,126.401 c 3.222,1.985 5.696,4.867 7.423,8.649 1.727,3.782 2.591,8.358 2.591,13.726 0,5.276 -0.865,9.816 -2.591,13.621 -1.728,3.806 -4.202,6.712 -7.423,8.719 -3.221,2.007 -7.05,3.011 -11.485,3.011 -4.436,0 -8.276,-0.993 -11.521,-2.977 -3.245,-1.984 -5.731,-4.878 -7.458,-8.684 -1.728,-3.805 -2.591,-8.369 -2.591,-13.691 0,-5.228 0.875,-9.745 2.626,-13.551 1.751,-3.805 4.248,-6.723 7.494,-8.754 3.244,-2.031 7.061,-3.046 11.45,-3.046 4.435,10e-4 8.264,0.994 11.485,2.977 z m -19.503,8.93 c -1.798,2.801 -2.696,7.283 -2.696,13.446 0,6.163 0.91,10.645 2.731,13.446 1.821,2.801 4.482,4.202 7.984,4.202 3.547,0 6.208,-1.389 7.983,-4.167 1.774,-2.777 2.661,-7.271 2.661,-13.481 0,-6.208 -0.887,-10.703 -2.661,-13.481 -1.775,-2.777 -4.436,-4.167 -7.983,-4.167 -3.549,0 -6.223,1.4 -8.019,4.202 z"
id="path9"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 377.361,139.917 c 2.264,3.432 3.396,8.253 3.396,14.461 0,3.782 -0.584,7.167 -1.75,10.155 -1.167,2.988 -2.86,5.334 -5.077,7.038 -2.218,1.704 -4.844,2.556 -7.879,2.556 -3.782,0 -6.84,-1.331 -9.174,-3.992 v 17.157 l -9.944,1.121 V 135.89 h 8.754 l 0.49,4.342 c 1.4,-1.821 3.046,-3.187 4.937,-4.097 1.891,-0.91 3.792,-1.365 5.708,-1.365 4.761,10e-4 8.274,1.716 10.539,5.147 z m -6.968,14.532 c 0,-4.482 -0.549,-7.657 -1.646,-9.524 -1.098,-1.867 -2.766,-2.801 -5.007,-2.801 -1.354,0 -2.615,0.432 -3.781,1.295 -1.168,0.865 -2.195,2.02 -3.082,3.467 v 16.177 c 1.586,2.428 3.665,3.642 6.233,3.642 4.855,0 7.283,-4.085 7.283,-12.256 z"
id="path11"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 416.333,157.46 h -23.18 c 0.326,3.361 1.236,5.743 2.731,7.143 1.493,1.401 3.524,2.101 6.092,2.101 1.587,0 3.082,-0.256 4.482,-0.771 1.4,-0.513 2.917,-1.331 4.552,-2.451 l 4.132,5.603 c -4.156,3.362 -8.848,5.042 -14.076,5.042 -5.837,0 -10.319,-1.751 -13.446,-5.252 -3.129,-3.501 -4.692,-8.24 -4.692,-14.216 0,-3.782 0.666,-7.178 1.996,-10.189 1.33,-3.011 3.267,-5.38 5.813,-7.108 2.544,-1.727 5.567,-2.591 9.069,-2.591 5.275,0 9.384,1.658 12.326,4.972 2.941,3.315 4.412,7.938 4.412,13.866 -10e-4,0.467 -0.071,1.75 -0.211,3.851 z m -9.664,-6.652 c 0,-6.163 -2.218,-9.244 -6.653,-9.244 -2.055,0 -3.654,0.759 -4.797,2.276 -1.145,1.518 -1.833,3.981 -2.066,7.388 h 13.516 v -0.42 z"
id="path13"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 447.355,137.747 c 1.821,1.985 2.732,4.727 2.732,8.229 v 27.032 h -9.945 v -25.351 c 0,-2.007 -0.339,-3.42 -1.016,-4.237 -0.677,-0.816 -1.692,-1.225 -3.046,-1.225 -1.4,0 -2.673,0.432 -3.817,1.295 -1.145,0.864 -2.252,2.16 -3.326,3.887 v 25.631 h -9.944 v -37.117 h 8.614 l 0.77,4.692 c 1.541,-1.914 3.232,-3.362 5.078,-4.342 1.844,-0.98 3.933,-1.47 6.268,-1.47 3.267,0 5.812,0.992 7.632,2.976 z"
id="path15"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 481.566,124.931 c 2.592,1.004 4.983,2.533 7.178,4.587 l -4.972,5.743 c -1.681,-1.447 -3.386,-2.497 -5.112,-3.152 -1.728,-0.653 -3.572,-0.98 -5.532,-0.98 -2.147,0 -3.864,0.455 -5.147,1.365 -1.285,0.911 -1.926,2.206 -1.926,3.887 0,1.167 0.268,2.125 0.805,2.872 0.537,0.747 1.482,1.448 2.837,2.101 1.354,0.655 3.384,1.401 6.093,2.241 4.809,1.541 8.404,3.443 10.785,5.708 2.381,2.265 3.571,5.498 3.571,9.699 0,2.988 -0.747,5.615 -2.241,7.878 -1.494,2.265 -3.666,4.039 -6.513,5.323 -2.849,1.283 -6.187,1.926 -10.015,1.926 -3.828,0 -7.237,-0.607 -10.225,-1.821 -2.988,-1.214 -5.557,-2.872 -7.703,-4.972 l 5.393,-5.883 c 3.547,3.269 7.633,4.902 12.255,4.902 2.521,0 4.54,-0.583 6.058,-1.751 1.518,-1.167 2.276,-2.801 2.276,-4.902 0,-1.306 -0.27,-2.392 -0.806,-3.256 -0.537,-0.863 -1.459,-1.646 -2.766,-2.346 -1.309,-0.701 -3.199,-1.424 -5.673,-2.171 -5.276,-1.633 -9.046,-3.594 -11.31,-5.882 -2.266,-2.287 -3.396,-5.275 -3.396,-8.964 0,-2.708 0.723,-5.101 2.17,-7.178 1.447,-2.077 3.455,-3.677 6.023,-4.797 2.566,-1.121 5.485,-1.681 8.754,-1.681 3.503,-0.002 6.548,0.501 9.139,1.504 z"
id="path17"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 504.991,165.514 c 0.326,0.467 0.815,0.7 1.471,0.7 0.793,0 1.471,-0.14 2.03,-0.42 l 2.031,7.073 c -2.055,0.84 -4.296,1.261 -6.723,1.261 -2.941,0 -5.218,-0.853 -6.828,-2.556 -1.611,-1.704 -2.416,-4.167 -2.416,-7.388 v -43.069 l 9.944,-1.121 v 43.279 c 10e-4,1.027 0.164,1.775 0.491,2.241 z"
id="path19"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 524.214,118.418 c 1.144,1.098 1.716,2.486 1.716,4.167 0,1.681 -0.572,3.07 -1.716,4.167 -1.145,1.097 -2.603,1.646 -4.377,1.646 -1.774,0 -3.222,-0.548 -4.342,-1.646 -1.12,-1.097 -1.681,-2.486 -1.681,-4.167 0,-1.681 0.561,-3.069 1.681,-4.167 1.12,-1.096 2.567,-1.646 4.342,-1.646 1.775,0 3.232,0.55 4.377,1.646 z m -9.278,54.589 V 135.89 h 9.943 v 37.117 h -9.943 z"
id="path21"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 563.326,173.007 h -8.754 l -0.561,-4.552 c -2.615,3.782 -6.162,5.673 -10.645,5.673 -4.576,0 -8.065,-1.762 -10.469,-5.288 -2.406,-3.524 -3.607,-8.322 -3.607,-14.391 0,-3.828 0.618,-7.224 1.855,-10.189 1.236,-2.964 3,-5.288 5.287,-6.968 2.287,-1.68 4.973,-2.521 8.055,-2.521 1.727,0 3.35,0.339 4.867,1.015 1.516,0.677 2.859,1.576 4.026,2.696 v -18.488 l 9.944,1.121 v 51.892 z m -13.096,-7.423 c 1.121,-0.746 2.171,-1.867 3.151,-3.361 v -16.598 c -0.98,-1.167 -1.961,-2.042 -2.941,-2.626 -0.98,-0.583 -2.125,-0.875 -3.432,-0.875 -2.288,0 -4.085,1.004 -5.392,3.011 -1.309,2.008 -1.961,5.112 -1.961,9.314 0,4.436 0.57,7.587 1.715,9.454 1.145,1.868 2.813,2.801 5.008,2.801 1.447,0.001 2.731,-0.372 3.852,-1.12 z"
id="path23"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 601.494,157.46 h -23.182 c 0.326,3.361 1.236,5.743 2.732,7.143 1.492,1.401 3.523,2.101 6.092,2.101 1.587,0 3.082,-0.256 4.482,-0.771 1.4,-0.513 2.917,-1.331 4.552,-2.451 l 4.132,5.603 c -4.156,3.362 -8.848,5.042 -14.076,5.042 -5.837,0 -10.318,-1.751 -13.445,-5.252 -3.129,-3.501 -4.693,-8.24 -4.693,-14.216 0,-3.782 0.666,-7.178 1.996,-10.189 1.331,-3.011 3.268,-5.38 5.813,-7.108 2.545,-1.727 5.568,-2.591 9.069,-2.591 5.275,0 9.384,1.658 12.325,4.972 2.941,3.315 4.412,7.938 4.412,13.866 0,0.467 -0.07,1.75 -0.209,3.851 z m -9.665,-6.652 c 0,-6.163 -2.218,-9.244 -6.653,-9.244 -2.055,0 -3.653,0.759 -4.797,2.276 -1.145,1.518 -1.833,3.981 -2.066,7.388 h 13.517 v -0.42 z"
id="path25"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 634.127,139.252 -3.781,5.813 c -3.035,-2.054 -6.023,-3.082 -8.965,-3.082 -1.727,0 -3.059,0.304 -3.99,0.911 -0.936,0.607 -1.402,1.425 -1.402,2.451 0,0.747 0.199,1.377 0.596,1.891 0.396,0.514 1.145,1.004 2.242,1.471 1.096,0.467 2.742,1.027 4.936,1.681 3.922,1.075 6.84,2.51 8.754,4.307 1.914,1.798 2.873,4.261 2.873,7.388 0,2.475 -0.713,4.622 -2.137,6.443 -1.424,1.821 -3.352,3.21 -5.777,4.167 -2.428,0.956 -5.137,1.436 -8.123,1.436 -3.129,0 -5.979,-0.479 -8.545,-1.436 -2.568,-0.957 -4.762,-2.276 -6.582,-3.957 l 4.971,-5.532 c 1.402,1.167 2.941,2.078 4.623,2.731 1.68,0.654 3.408,0.98 5.182,0.98 1.914,0 3.42,-0.361 4.518,-1.085 1.096,-0.723 1.646,-1.692 1.646,-2.906 0,-0.98 -0.211,-1.762 -0.631,-2.346 -0.42,-0.583 -1.191,-1.121 -2.311,-1.61 -1.121,-0.49 -2.871,-1.062 -5.254,-1.716 -3.734,-1.026 -6.502,-2.486 -8.297,-4.377 -1.799,-1.891 -2.697,-4.237 -2.697,-7.038 0,-2.101 0.605,-3.992 1.82,-5.673 1.215,-1.681 2.93,-2.999 5.148,-3.957 2.217,-0.957 4.797,-1.436 7.738,-1.436 5.228,0 9.709,1.494 13.445,4.481 z"
id="path27"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
</g><g
transform="matrix(5.1567773,0,0,5.1567773,-874.84003,-495.12546)"
id="g29"
style="fill:#ffffff">
<path
d="m 231.138,168.561 h 15.136 c 1.645,0 2.965,0.99 2.965,2.225 0,1.231 -1.32,2.223 -2.965,2.223 h -15.136 c -1.646,0 -2.969,-0.992 -2.969,-2.223 0,-1.235 1.322,-2.225 2.969,-2.225 z"
id="path31"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<g
id="g33"
style="fill:#ffffff">
<path
d="m 224.244,127.652 c 1.516,0.284 2.521,1.745 2.243,3.26 -0.284,1.519 -1.747,2.523 -3.258,2.239 -1.522,-0.277 -2.526,-1.736 -2.241,-3.258 0.278,-1.519 1.739,-2.519 3.256,-2.241 z"
id="path35"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 248.342,127.971 c -0.113,-1.547 -1.455,-2.703 -2.995,-2.586 -1.539,0.114 -2.695,1.456 -2.584,2.996 0.112,1.54 1.455,2.697 2.995,2.576 1.539,-0.111 2.696,-1.453 2.584,-2.986 z"
id="path37"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 254.698,130.199 c -0.111,-1.541 -1.447,-2.698 -2.986,-2.584 -1.54,0.119 -2.696,1.454 -2.586,3 0.115,1.532 1.456,2.69 2.996,2.576 1.54,-0.111 2.698,-1.453 2.576,-2.992 z"
id="path39"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 228.791,118.638 c -1.282,-0.857 -3.021,-0.527 -3.888,0.749 -0.857,1.282 -0.528,3.014 0.748,3.887 1.282,0.864 3.021,0.526 3.886,-0.749 0.866,-1.282 0.528,-3.019 -0.746,-3.887 z"
id="path41"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 244.284,119.378 c -0.113,-1.548 -1.454,-2.703 -2.994,-2.585 -1.535,0.114 -2.698,1.456 -2.579,2.995 0.113,1.54 1.454,2.695 2.987,2.577 1.547,-0.111 2.698,-1.453 2.586,-2.987 z"
id="path43"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 244.284,119.378 c -0.113,-1.548 -1.454,-2.703 -2.994,-2.585 -1.535,0.114 -2.698,1.456 -2.579,2.995 0.113,1.54 1.454,2.695 2.987,2.577 1.547,-0.111 2.698,-1.453 2.586,-2.987 z"
id="path45"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 251.567,120.753 c -0.111,-1.54 -1.447,-2.699 -2.995,-2.584 -1.54,0.119 -2.69,1.454 -2.576,2.999 0.112,1.533 1.453,2.691 2.993,2.58 1.54,-0.115 2.69,-1.456 2.578,-2.995 z"
id="path47"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 251.567,120.753 c -0.111,-1.54 -1.447,-2.699 -2.995,-2.584 -1.54,0.119 -2.69,1.452 -2.576,2.999 0.112,1.533 1.453,2.691 2.993,2.58 1.54,-0.115 2.69,-1.456 2.578,-2.995 z"
id="path49"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 255.645,120.877 c 1.521,0.284 2.518,1.74 2.242,3.26 -0.285,1.519 -1.739,2.517 -3.26,2.239 -1.521,-0.284 -2.519,-1.737 -2.24,-3.259 0.284,-1.518 1.745,-2.517 3.258,-2.24 z"
id="path51"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 240.216,140.03 c -1.276,-0.865 -3.016,-0.537 -3.88,0.746 -0.866,1.277 -0.538,3.014 0.746,3.88 1.282,0.867 3.013,0.53 3.88,-0.746 0.866,-1.276 0.529,-3.016 -0.746,-3.88 z"
id="path53"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 248.446,143.145 c -0.111,-1.54 -1.452,-2.694 -2.992,-2.583 -1.541,0.117 -2.698,1.459 -2.584,2.994 0.112,1.54 1.453,2.695 2.993,2.584 1.54,-0.112 2.696,-1.453 2.583,-2.995 z"
id="path55"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 248.446,143.145 c -0.111,-1.54 -1.452,-2.694 -2.992,-2.584 -1.541,0.119 -2.698,1.461 -2.584,2.996 0.112,1.54 1.453,2.695 2.993,2.584 1.54,-0.113 2.696,-1.454 2.583,-2.996 z"
id="path57"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 229.154,134.489 c -1.275,-0.864 -3.018,-0.527 -3.88,0.749 -0.867,1.283 -0.529,3.014 0.745,3.88 1.282,0.871 3.012,0.534 3.881,-0.742 0.868,-1.283 0.534,-3.021 -0.746,-3.887 z"
id="path59"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 236.296,132.867 c -1.277,-0.864 -3.014,-0.533 -3.881,0.749 -0.866,1.275 -0.527,3.015 0.748,3.88 1.279,0.864 3.021,0.527 3.885,-0.749 0.867,-1.276 0.529,-3.013 -0.752,-3.88 z"
id="path61"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 251.567,136.602 c -0.111,-1.539 -1.447,-2.697 -2.995,-2.583 -1.533,0.117 -2.695,1.452 -2.576,2.992 0.112,1.542 1.453,2.697 2.993,2.586 1.54,-0.121 2.698,-1.456 2.578,-2.995 z"
id="path63"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 251.567,136.602 c -0.111,-1.541 -1.447,-2.697 -2.995,-2.583 -1.533,0.117 -2.695,1.452 -2.576,2.992 0.112,1.542 1.453,2.697 2.993,2.586 1.54,-0.121 2.698,-1.456 2.578,-2.995 z"
id="path65"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 243.808,147.482 c -1.282,-0.868 -3.014,-0.531 -3.881,0.745 -0.864,1.282 -0.535,3.02 0.748,3.886 1.275,0.861 3.014,0.53 3.88,-0.746 0.865,-1.281 0.527,-3.012 -0.747,-3.885 z"
id="path67"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 243.808,147.482 c -1.282,-0.868 -3.014,-0.531 -3.881,0.745 -0.864,1.282 -0.535,3.02 0.748,3.886 1.275,0.861 3.014,0.53 3.88,-0.746 0.865,-1.281 0.527,-3.012 -0.747,-3.885 z"
id="path69"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 236.887,147.482 c -1.274,-0.868 -3.014,-0.531 -3.879,0.745 -0.866,1.282 -0.535,3.02 0.746,3.886 1.275,0.861 3.014,0.53 3.881,-0.746 0.865,-1.281 0.528,-3.012 -0.748,-3.885 z"
id="path71"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 236.887,147.482 c -1.274,-0.868 -3.014,-0.531 -3.879,0.745 -0.866,1.282 -0.535,3.02 0.746,3.886 1.275,0.861 3.014,0.53 3.881,-0.746 0.865,-1.281 0.528,-3.012 -0.748,-3.885 z"
id="path73"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 232.399,125.857 c -1.281,-0.867 -3.021,-0.529 -3.887,0.745 -0.866,1.283 -0.528,3.016 0.747,3.887 1.282,0.859 3.015,0.53 3.886,-0.745 0.861,-1.284 0.53,-3.02 -0.746,-3.887 z"
id="path75"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 241.034,127.336 c -0.11,-1.54 -1.451,-2.696 -2.991,-2.579 -1.54,0.114 -2.698,1.456 -2.587,2.995 0.114,1.534 1.456,2.69 2.995,2.577 1.546,-0.111 2.7,-1.453 2.583,-2.993 z"
id="path77"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 221.422,121.313 c -1.276,-0.866 -3.015,-0.537 -3.88,0.745 -0.867,1.278 -0.529,3.015 0.746,3.88 1.282,0.868 3.015,0.537 3.88,-0.738 0.866,-1.282 0.535,-3.027 -0.746,-3.887 z"
id="path79"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 244.284,119.378 c -0.113,-1.548 -1.454,-2.703 -2.994,-2.585 -1.535,0.114 -2.698,1.456 -2.579,2.995 0.113,1.54 1.454,2.695 2.987,2.577 1.547,-0.111 2.698,-1.453 2.586,-2.987 z"
id="path81"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 237.039,119.377 c -0.112,-1.546 -1.454,-2.698 -2.993,-2.584 -1.533,0.112 -2.69,1.454 -2.579,2.992 0.112,1.541 1.455,2.692 2.996,2.58 1.539,-0.115 2.688,-1.456 2.576,-2.988 z"
id="path83"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 251.567,120.753 c -0.111,-1.54 -1.447,-2.699 -2.995,-2.584 -1.54,0.119 -2.69,1.452 -2.576,2.999 0.112,1.533 1.453,2.691 2.993,2.58 1.54,-0.115 2.69,-1.456 2.578,-2.995 z"
id="path85"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 231.97,140.602 c 1.519,0.282 2.523,1.745 2.239,3.257 -0.278,1.521 -1.736,2.525 -3.259,2.242 -1.512,-0.279 -2.518,-1.74 -2.241,-3.258 0.285,-1.523 1.745,-2.52 3.261,-2.241 z"
id="path87"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 248.446,143.145 c -0.111,-1.54 -1.452,-2.694 -2.992,-2.584 -1.541,0.119 -2.698,1.461 -2.584,2.996 0.112,1.54 1.453,2.695 2.993,2.584 1.54,-0.113 2.696,-1.454 2.583,-2.996 z"
id="path89"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 251.567,136.602 c -0.111,-1.541 -1.447,-2.697 -2.995,-2.583 -1.533,0.117 -2.695,1.452 -2.576,2.992 0.112,1.542 1.453,2.697 2.993,2.586 1.54,-0.121 2.698,-1.456 2.578,-2.995 z"
id="path91"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 244.838,134.975 c -0.115,-1.54 -1.456,-2.695 -2.996,-2.583 -1.534,0.117 -2.698,1.459 -2.577,2.999 0.11,1.542 1.445,2.69 2.992,2.579 1.539,-0.113 2.691,-1.455 2.581,-2.995 z"
id="path93"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 243.808,147.482 c -1.282,-0.868 -3.014,-0.531 -3.881,0.745 -0.864,1.282 -0.535,3.02 0.748,3.886 1.275,0.861 3.014,0.53 3.88,-0.746 0.865,-1.281 0.527,-3.012 -0.747,-3.885 z"
id="path95"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 236.887,147.482 c -1.274,-0.868 -3.014,-0.531 -3.879,0.745 -0.866,1.282 -0.535,3.02 0.746,3.886 1.275,0.861 3.014,0.53 3.881,-0.746 0.865,-1.281 0.528,-3.012 -0.748,-3.885 z"
id="path97"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
</g>
<g
id="g99"
style="fill:#ffffff">
<path
d="m 196.938,156.803 c 1.044,-1.134 2.815,-1.213 3.955,-0.173 1.137,1.043 1.212,2.816 0.169,3.949 -1.04,1.143 -2.81,1.22 -3.949,0.173 -1.141,-1.04 -1.215,-2.808 -0.175,-3.949 z"
id="path101"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 209.977,136.537 c -1.369,-0.725 -3.061,-0.2 -3.779,1.17 -0.718,1.367 -0.192,3.057 1.173,3.777 1.364,0.72 3.057,0.196 3.771,-1.173 0.719,-1.365 0.197,-3.055 -1.165,-3.774 z"
id="path103"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 215.234,132.327 c -1.364,-0.722 -3.053,-0.204 -3.774,1.163 -0.714,1.369 -0.194,3.057 1.176,3.782 1.359,0.716 3.051,0.192 3.772,-1.174 0.719,-1.366 0.196,-3.057 -1.174,-3.771 z"
id="path105"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 191.702,148.171 c -1.404,0.633 -2.047,2.282 -1.425,3.693 0.634,1.408 2.277,2.045 3.691,1.426 1.414,-0.63 2.049,-2.284 1.426,-3.693 -0.629,-1.412 -2.278,-2.049 -3.692,-1.426 z"
id="path107"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 200.54,135.425 c -1.371,-0.726 -3.062,-0.2 -3.778,1.167 -0.718,1.363 -0.194,3.059 1.173,3.774 1.368,0.72 3.056,0.197 3.769,-1.168 0.725,-1.369 0.196,-3.054 -1.164,-3.773 z"
id="path109"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 200.54,135.425 c -1.371,-0.726 -3.062,-0.2 -3.778,1.167 -0.718,1.363 -0.194,3.059 1.173,3.774 1.368,0.72 3.056,0.197 3.769,-1.168 0.725,-1.369 0.196,-3.054 -1.164,-3.773 z"
id="path111"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 205.566,129.977 c -1.366,-0.72 -3.055,-0.201 -3.778,1.17 -0.716,1.368 -0.192,3.052 1.177,3.776 1.361,0.717 3.053,0.193 3.774,-1.171 0.719,-1.367 0.191,-3.055 -1.173,-3.775 z"
id="path113"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 205.566,129.977 c -1.366,-0.72 -3.055,-0.201 -3.778,1.17 -0.716,1.368 -0.195,3.052 1.177,3.776 1.361,0.717 3.053,0.193 3.774,-1.171 0.719,-1.367 0.191,-3.055 -1.173,-3.775 z"
id="path115"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 207.832,126.584 c 1.046,-1.138 2.81,-1.214 3.952,-0.173 1.138,1.046 1.214,2.809 0.172,3.951 -1.048,1.138 -2.807,1.214 -3.95,0.174 -1.137,-1.047 -1.212,-2.815 -0.174,-3.952 z"
id="path117"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 215.898,149.818 c -1.412,0.624 -2.056,2.274 -1.424,3.685 0.623,1.413 2.271,2.054 3.686,1.424 1.414,-0.628 2.045,-2.275 1.423,-3.686 -0.622,-1.409 -2.277,-2.045 -3.685,-1.423 z"
id="path119"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 222.901,144.488 c -1.364,-0.723 -3.055,-0.195 -3.777,1.171 -0.717,1.368 -0.192,3.059 1.17,3.777 1.367,0.721 3.057,0.195 3.78,-1.17 0.719,-1.364 0.195,-3.056 -1.173,-3.778 z"
id="path121"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 222.901,144.488 c -1.364,-0.723 -3.055,-0.195 -3.778,1.169 -0.716,1.37 -0.191,3.061 1.171,3.779 1.367,0.721 3.057,0.195 3.78,-1.17 0.719,-1.364 0.195,-3.056 -1.173,-3.778 z"
id="path123"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 205.336,156.264 c -1.407,0.623 -2.045,2.277 -1.421,3.686 0.629,1.414 2.278,2.045 3.687,1.423 1.419,-0.625 2.05,-2.271 1.428,-3.683 -0.63,-1.413 -2.279,-2.054 -3.694,-1.426 z"
id="path125"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 207.746,149.348 c -1.409,0.624 -2.048,2.274 -1.422,3.687 0.622,1.411 2.278,2.045 3.688,1.422 1.411,-0.628 2.047,-2.283 1.422,-3.691 -0.621,-1.412 -2.273,-2.046 -3.688,-1.418 z"
id="path127"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 219.005,138.374 c -1.363,-0.719 -3.054,-0.2 -3.776,1.171 -0.713,1.362 -0.197,3.057 1.173,3.771 1.366,0.722 3.057,0.197 3.779,-1.167 0.714,-1.371 0.194,-3.06 -1.176,-3.775 z"
id="path129"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 219.005,138.374 c -1.363,-0.719 -3.054,-0.2 -3.776,1.171 -0.713,1.362 -0.197,3.057 1.173,3.771 1.366,0.722 3.057,0.197 3.779,-1.167 0.714,-1.371 0.194,-3.06 -1.176,-3.775 z"
id="path131"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 224.12,150.721 c -1.414,0.627 -2.045,2.275 -1.423,3.687 0.629,1.412 2.277,2.053 3.691,1.425 1.407,-0.625 2.047,-2.275 1.425,-3.686 -0.628,-1.413 -2.274,-2.046 -3.693,-1.426 z"
id="path133"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 224.12,150.721 c -1.414,0.627 -2.045,2.275 -1.423,3.687 0.629,1.412 2.277,2.053 3.691,1.425 1.407,-0.625 2.047,-2.275 1.425,-3.686 -0.628,-1.413 -2.274,-2.046 -3.693,-1.426 z"
id="path135"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 220.454,156.59 c -1.412,0.622 -2.047,2.273 -1.424,3.684 0.628,1.414 2.278,2.054 3.691,1.427 1.405,-0.625 2.048,-2.276 1.423,-3.686 -0.627,-1.413 -2.274,-2.046 -3.69,-1.425 z"
id="path137"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 220.454,156.59 c -1.412,0.622 -2.047,2.273 -1.424,3.684 0.628,1.414 2.278,2.054 3.691,1.427 1.405,-0.625 2.048,-2.276 1.423,-3.686 -0.627,-1.413 -2.274,-2.046 -3.69,-1.425 z"
id="path139"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 199.739,148.936 c -1.418,0.628 -2.052,2.282 -1.429,3.689 0.628,1.415 2.276,2.049 3.692,1.428 1.407,-0.633 2.045,-2.273 1.427,-3.691 -0.633,-1.408 -2.28,-2.049 -3.69,-1.426 z"
id="path141"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 205.567,142.396 c -1.363,-0.721 -3.056,-0.197 -3.773,1.171 -0.718,1.366 -0.194,3.058 1.171,3.78 1.361,0.715 3.053,0.191 3.772,-1.175 0.725,-1.368 0.199,-3.055 -1.17,-3.776 z"
id="path143"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 190.066,155.839 c -1.412,0.623 -2.052,2.271 -1.425,3.684 0.624,1.411 2.276,2.046 3.686,1.424 1.416,-0.63 2.054,-2.272 1.431,-3.683 -0.628,-1.412 -2.284,-2.057 -3.692,-1.425 z"
id="path145"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 200.54,135.425 c -1.371,-0.726 -3.062,-0.2 -3.778,1.167 -0.718,1.363 -0.194,3.059 1.173,3.774 1.368,0.72 3.056,0.197 3.769,-1.168 0.725,-1.369 0.196,-3.054 -1.164,-3.773 z"
id="path147"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 196.699,141.568 c -1.37,-0.724 -3.058,-0.196 -3.778,1.169 -0.718,1.358 -0.192,3.052 1.173,3.771 1.366,0.722 3.054,0.194 3.775,-1.171 0.719,-1.368 0.192,-3.053 -1.17,-3.769 z"
id="path149"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 205.566,129.977 c -1.366,-0.72 -3.055,-0.201 -3.778,1.17 -0.716,1.368 -0.195,3.052 1.177,3.776 1.361,0.717 3.053,0.193 3.774,-1.171 0.719,-1.367 0.191,-3.055 -1.173,-3.775 z"
id="path151"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 212.012,157.114 c 1.046,-1.138 2.819,-1.215 3.95,-0.173 1.144,1.041 1.219,2.812 0.175,3.951 -1.037,1.135 -2.808,1.213 -3.951,0.174 -1.141,-1.047 -1.211,-2.816 -0.174,-3.952 z"
id="path153"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 222.901,144.488 c -1.364,-0.723 -3.055,-0.195 -3.778,1.169 -0.716,1.37 -0.191,3.061 1.171,3.779 1.367,0.721 3.057,0.195 3.78,-1.17 0.719,-1.364 0.195,-3.056 -1.173,-3.778 z"
id="path155"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 219.005,138.374 c -1.363,-0.719 -3.054,-0.2 -3.776,1.171 -0.713,1.362 -0.197,3.057 1.173,3.771 1.366,0.722 3.057,0.197 3.779,-1.167 0.714,-1.371 0.194,-3.06 -1.176,-3.775 z"
id="path157"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 214.061,143.221 c -1.367,-0.719 -3.056,-0.193 -3.776,1.171 -0.715,1.363 -0.193,3.061 1.176,3.774 1.368,0.722 3.049,0.2 3.774,-1.172 0.719,-1.364 0.192,-3.051 -1.174,-3.773 z"
id="path159"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 224.12,150.721 c -1.414,0.627 -2.045,2.275 -1.423,3.687 0.629,1.412 2.277,2.053 3.691,1.425 1.407,-0.625 2.047,-2.275 1.425,-3.686 -0.628,-1.413 -2.274,-2.046 -3.693,-1.426 z"
id="path161"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 220.454,156.59 c -1.412,0.622 -2.047,2.273 -1.424,3.684 0.628,1.414 2.278,2.054 3.691,1.427 1.405,-0.625 2.048,-2.276 1.423,-3.686 -0.627,-1.413 -2.274,-2.046 -3.69,-1.425 z"
id="path163"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
</g>
<g
id="g165"
style="fill:#ffffff">
<path
d="m 278.788,156.803 c -1.044,-1.134 -2.816,-1.213 -3.953,-0.173 -1.136,1.043 -1.213,2.816 -0.172,3.949 1.041,1.143 2.809,1.22 3.95,0.173 1.142,-1.04 1.217,-2.808 0.175,-3.949 z"
id="path167"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 265.747,136.537 c 1.371,-0.725 3.063,-0.2 3.78,1.17 0.722,1.367 0.196,3.057 -1.171,3.777 -1.366,0.72 -3.058,0.196 -3.772,-1.173 -0.72,-1.365 -0.194,-3.055 1.163,-3.774 z"
id="path169"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 260.49,132.327 c 1.366,-0.722 3.057,-0.204 3.774,1.163 0.716,1.369 0.198,3.057 -1.175,3.782 -1.358,0.716 -3.053,0.192 -3.77,-1.174 -0.722,-1.366 -0.197,-3.057 1.171,-3.771 z"
id="path171"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 284.023,148.171 c 1.407,0.633 2.047,2.282 1.423,3.693 -0.631,1.408 -2.274,2.045 -3.69,1.426 -1.412,-0.63 -2.048,-2.284 -1.426,-3.693 0.629,-1.412 2.281,-2.049 3.693,-1.426 z"
id="path173"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 275.186,135.425 c 1.371,-0.726 3.064,-0.2 3.779,1.167 0.717,1.363 0.194,3.059 -1.176,3.774 -1.363,0.72 -3.055,0.197 -3.767,-1.168 -0.724,-1.369 -0.196,-3.054 1.164,-3.773 z"
id="path175"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 275.186,135.425 c 1.371,-0.726 3.064,-0.2 3.779,1.167 0.717,1.363 0.194,3.059 -1.176,3.774 -1.363,0.72 -3.055,0.197 -3.767,-1.168 -0.724,-1.369 -0.196,-3.054 1.164,-3.773 z"
id="path177"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 270.158,129.977 c 1.368,-0.72 3.058,-0.201 3.781,1.17 0.714,1.368 0.192,3.052 -1.179,3.776 -1.358,0.717 -3.055,0.193 -3.773,-1.171 -0.718,-1.367 -0.191,-3.055 1.171,-3.775 z"
id="path179"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 270.158,129.977 c 1.368,-0.72 3.058,-0.201 3.781,1.17 0.714,1.368 0.192,3.052 -1.179,3.776 -1.358,0.717 -3.055,0.193 -3.773,-1.171 -0.718,-1.367 -0.191,-3.055 1.171,-3.775 z"
id="path181"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 267.894,126.584 c -1.046,-1.138 -2.811,-1.214 -3.952,-0.173 -1.137,1.046 -1.213,2.809 -0.171,3.951 1.045,1.138 2.808,1.214 3.95,0.174 1.135,-1.047 1.211,-2.815 0.173,-3.952 z"
id="path183"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 259.827,149.818 c 1.411,0.624 2.055,2.274 1.426,3.685 -0.625,1.413 -2.271,2.054 -3.687,1.424 -1.416,-0.628 -2.047,-2.275 -1.425,-3.686 0.624,-1.409 2.279,-2.045 3.686,-1.423 z"
id="path185"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 252.823,144.488 c 1.365,-0.723 3.057,-0.195 3.779,1.171 0.715,1.368 0.189,3.059 -1.172,3.777 -1.365,0.721 -3.057,0.195 -3.778,-1.17 -0.719,-1.364 -0.194,-3.056 1.171,-3.778 z"
id="path187"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 252.823,144.488 c 1.365,-0.723 3.057,-0.195 3.781,1.169 0.713,1.37 0.188,3.061 -1.174,3.779 -1.365,0.721 -3.057,0.195 -3.778,-1.17 -0.719,-1.364 -0.194,-3.056 1.171,-3.778 z"
id="path189"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 270.387,156.264 c 1.413,0.623 2.046,2.277 1.422,3.686 -0.629,1.414 -2.274,2.045 -3.686,1.423 -1.417,-0.625 -2.048,-2.271 -1.426,-3.683 0.629,-1.413 2.279,-2.054 3.69,-1.426 z"
id="path191"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 267.979,149.348 c 1.411,0.624 2.052,2.274 1.421,3.687 -0.622,1.411 -2.274,2.045 -3.685,1.422 -1.411,-0.628 -2.049,-2.283 -1.425,-3.691 0.625,-1.412 2.273,-2.046 3.689,-1.418 z"
id="path193"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 256.719,138.374 c 1.364,-0.719 3.055,-0.2 3.777,1.171 0.715,1.362 0.198,3.057 -1.169,3.771 -1.369,0.722 -3.061,0.197 -3.781,-1.167 -0.714,-1.371 -0.196,-3.06 1.173,-3.775 z"
id="path195"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 256.719,138.374 c 1.368,-0.719 3.055,-0.2 3.777,1.171 0.715,1.362 0.198,3.057 -1.169,3.771 -1.369,0.722 -3.061,0.197 -3.781,-1.167 -0.714,-1.371 -0.196,-3.06 1.173,-3.775 z"
id="path197"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 251.605,150.721 c 1.416,0.627 2.047,2.275 1.422,3.687 -0.628,1.412 -2.276,2.053 -3.689,1.425 -1.405,-0.625 -2.047,-2.275 -1.428,-3.686 0.631,-1.413 2.279,-2.046 3.695,-1.426 z"
id="path199"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 251.605,150.721 c 1.416,0.627 2.047,2.275 1.422,3.687 -0.628,1.412 -2.276,2.053 -3.689,1.425 -1.405,-0.625 -2.047,-2.275 -1.428,-3.686 0.631,-1.413 2.279,-2.046 3.695,-1.426 z"
id="path201"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 255.272,156.59 c 1.411,0.622 2.045,2.273 1.423,3.684 -0.627,1.414 -2.278,2.054 -3.691,1.427 -1.405,-0.625 -2.049,-2.276 -1.424,-3.686 0.628,-1.413 2.277,-2.046 3.692,-1.425 z"
id="path203"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 255.272,156.59 c 1.411,0.622 2.045,2.273 1.423,3.684 -0.627,1.414 -2.278,2.054 -3.691,1.427 -1.405,-0.625 -2.049,-2.276 -1.424,-3.686 0.628,-1.413 2.277,-2.046 3.692,-1.425 z"
id="path205"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 275.989,148.936 c 1.414,0.628 2.048,2.282 1.427,3.689 -0.626,1.415 -2.276,2.049 -3.69,1.428 -1.407,-0.633 -2.047,-2.273 -1.428,-3.691 0.632,-1.408 2.28,-2.049 3.691,-1.426 z"
id="path207"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 270.158,142.396 c 1.366,-0.721 3.058,-0.197 3.772,1.171 0.72,1.366 0.194,3.058 -1.17,3.78 -1.36,0.715 -3.051,0.191 -3.771,-1.175 -0.726,-1.368 -0.198,-3.055 1.169,-3.776 z"
id="path209"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 285.66,155.839 c 1.41,0.623 2.052,2.271 1.424,3.684 -0.625,1.411 -2.276,2.046 -3.685,1.424 -1.418,-0.63 -2.053,-2.272 -1.432,-3.683 0.632,-1.412 2.284,-2.057 3.693,-1.425 z"
id="path211"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 275.186,135.425 c 1.371,-0.726 3.064,-0.2 3.779,1.167 0.717,1.363 0.194,3.059 -1.176,3.774 -1.363,0.72 -3.055,0.197 -3.767,-1.168 -0.724,-1.369 -0.196,-3.054 1.164,-3.773 z"
id="path213"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 279.025,141.568 c 1.372,-0.724 3.062,-0.196 3.778,1.169 0.717,1.358 0.194,3.052 -1.172,3.771 -1.365,0.722 -3.053,0.194 -3.773,-1.171 -0.719,-1.368 -0.19,-3.053 1.167,-3.769 z"
id="path215"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 270.158,129.977 c 1.368,-0.72 3.058,-0.201 3.781,1.17 0.714,1.368 0.192,3.052 -1.179,3.776 -1.358,0.717 -3.055,0.193 -3.773,-1.171 -0.718,-1.367 -0.191,-3.055 1.171,-3.775 z"
id="path217"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 263.713,157.114 c -1.045,-1.138 -2.817,-1.215 -3.949,-0.173 -1.143,1.041 -1.22,2.812 -0.175,3.951 1.039,1.135 2.811,1.213 3.951,0.174 1.14,-1.047 1.214,-2.816 0.173,-3.952 z"
id="path219"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 252.823,144.488 c 1.365,-0.723 3.057,-0.195 3.781,1.169 0.713,1.37 0.188,3.061 -1.174,3.779 -1.365,0.721 -3.057,0.195 -3.778,-1.17 -0.719,-1.364 -0.194,-3.056 1.171,-3.778 z"
id="path221"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 256.719,138.374 c 1.368,-0.719 3.055,-0.2 3.777,1.171 0.715,1.362 0.198,3.057 -1.169,3.771 -1.369,0.722 -3.061,0.197 -3.781,-1.167 -0.714,-1.371 -0.196,-3.06 1.173,-3.775 z"
id="path223"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 261.667,143.221 c 1.363,-0.719 3.056,-0.193 3.777,1.171 0.71,1.363 0.19,3.061 -1.18,3.774 -1.366,0.722 -3.049,0.2 -3.773,-1.172 -0.719,-1.364 -0.189,-3.051 1.176,-3.773 z"
id="path225"
inkscape:connector-curvature="0"
style="fill:#ffffff" />
<path
d="m 251.605,150.721 c 1.416,0.627 2.047,2.275 1.422,3.687 -0.628,1.412 -2.276,2.053 -3.689,1.425 -1.405,-0.625 -2.047,-2.275 -1.428,-3.686 0.631,-1.413 2.279,-2.046 3.695,-1.426 z"
id="path227"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
<path
d="m 255.272,156.59 c 1.411,0.622 2.045,2.273 1.423,3.684 -0.627,1.414 -2.278,2.054 -3.691,1.427 -1.405,-0.625 -2.049,-2.276 -1.424,-3.686 0.628,-1.413 2.277,-2.046 3.692,-1.425 z"
id="path229"
inkscape:connector-curvature="0"
style="opacity:0.93869999999999998;fill:#ffffff" />
</g>
</g></g></svg>

After

Width:  |  Height:  |  Size: 36 KiB

View File

@ -0,0 +1,612 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://opensource.org/licenses/MIT"
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"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Ebene_3"
x="0px"
y="0px"
width="700"
height="700"
viewBox="0 0 699.99992 699.99998"
enable-background="new 0 0 841.89 595.28"
xml:space="preserve"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="openslides-logo-v.svg"
inkscape:export-xdpi="32.139999"
inkscape:export-ydpi="32.139999"><metadata
id="metadata461"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /><dc:creator><cc:Agent><dc:title>OpenSlides Team</dc:title></cc:Agent></dc:creator></cc:Work></rdf:RDF></metadata><defs
id="defs459">
</defs><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1672"
inkscape:window-height="978"
id="namedview457"
showgrid="false"
showguides="true"
inkscape:guide-bbox="true"
inkscape:zoom="0.68267409"
inkscape:cx="608.81028"
inkscape:cy="332.18879"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="Ebene_3"
fit-margin-top="30"
fit-margin-left="30"
fit-margin-right="30"
fit-margin-bottom="30"
units="px" />
<g
id="g3327"
transform="translate(0,1.4206687)"><g
transform="matrix(1.9256508,0,0,1.9256508,-550.0099,224.97026)"
id="g7">
<path
d="m 334.257,126.401 c 3.222,1.985 5.696,4.867 7.423,8.649 1.727,3.782 2.591,8.358 2.591,13.726 0,5.276 -0.865,9.816 -2.591,13.621 -1.728,3.806 -4.202,6.712 -7.423,8.719 -3.221,2.007 -7.05,3.011 -11.485,3.011 -4.436,0 -8.276,-0.993 -11.521,-2.977 -3.245,-1.984 -5.731,-4.878 -7.458,-8.684 -1.728,-3.805 -2.591,-8.369 -2.591,-13.691 0,-5.228 0.875,-9.745 2.626,-13.551 1.751,-3.805 4.248,-6.723 7.494,-8.754 3.244,-2.031 7.061,-3.046 11.45,-3.046 4.435,10e-4 8.264,0.994 11.485,2.977 z m -19.503,8.93 c -1.798,2.801 -2.696,7.283 -2.696,13.446 0,6.163 0.91,10.645 2.731,13.446 1.821,2.801 4.482,4.202 7.984,4.202 3.547,0 6.208,-1.389 7.983,-4.167 1.774,-2.777 2.661,-7.271 2.661,-13.481 0,-6.208 -0.887,-10.703 -2.661,-13.481 -1.775,-2.777 -4.436,-4.167 -7.983,-4.167 -3.549,0 -6.223,1.4 -8.019,4.202 z"
id="path9"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 377.361,139.917 c 2.264,3.432 3.396,8.253 3.396,14.461 0,3.782 -0.584,7.167 -1.75,10.155 -1.167,2.988 -2.86,5.334 -5.077,7.038 -2.218,1.704 -4.844,2.556 -7.879,2.556 -3.782,0 -6.84,-1.331 -9.174,-3.992 v 17.157 l -9.944,1.121 V 135.89 h 8.754 l 0.49,4.342 c 1.4,-1.821 3.046,-3.187 4.937,-4.097 1.891,-0.91 3.792,-1.365 5.708,-1.365 4.761,10e-4 8.274,1.716 10.539,5.147 z m -6.968,14.532 c 0,-4.482 -0.549,-7.657 -1.646,-9.524 -1.098,-1.867 -2.766,-2.801 -5.007,-2.801 -1.354,0 -2.615,0.432 -3.781,1.295 -1.168,0.865 -2.195,2.02 -3.082,3.467 v 16.177 c 1.586,2.428 3.665,3.642 6.233,3.642 4.855,0 7.283,-4.085 7.283,-12.256 z"
id="path11"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 416.333,157.46 h -23.18 c 0.326,3.361 1.236,5.743 2.731,7.143 1.493,1.401 3.524,2.101 6.092,2.101 1.587,0 3.082,-0.256 4.482,-0.771 1.4,-0.513 2.917,-1.331 4.552,-2.451 l 4.132,5.603 c -4.156,3.362 -8.848,5.042 -14.076,5.042 -5.837,0 -10.319,-1.751 -13.446,-5.252 -3.129,-3.501 -4.692,-8.24 -4.692,-14.216 0,-3.782 0.666,-7.178 1.996,-10.189 1.33,-3.011 3.267,-5.38 5.813,-7.108 2.544,-1.727 5.567,-2.591 9.069,-2.591 5.275,0 9.384,1.658 12.326,4.972 2.941,3.315 4.412,7.938 4.412,13.866 -10e-4,0.467 -0.071,1.75 -0.211,3.851 z m -9.664,-6.652 c 0,-6.163 -2.218,-9.244 -6.653,-9.244 -2.055,0 -3.654,0.759 -4.797,2.276 -1.145,1.518 -1.833,3.981 -2.066,7.388 h 13.516 v -0.42 z"
id="path13"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 447.355,137.747 c 1.821,1.985 2.732,4.727 2.732,8.229 v 27.032 h -9.945 v -25.351 c 0,-2.007 -0.339,-3.42 -1.016,-4.237 -0.677,-0.816 -1.692,-1.225 -3.046,-1.225 -1.4,0 -2.673,0.432 -3.817,1.295 -1.145,0.864 -2.252,2.16 -3.326,3.887 v 25.631 h -9.944 v -37.117 h 8.614 l 0.77,4.692 c 1.541,-1.914 3.232,-3.362 5.078,-4.342 1.844,-0.98 3.933,-1.47 6.268,-1.47 3.267,0 5.812,0.992 7.632,2.976 z"
id="path15"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 481.566,124.931 c 2.592,1.004 4.983,2.533 7.178,4.587 l -4.972,5.743 c -1.681,-1.447 -3.386,-2.497 -5.112,-3.152 -1.728,-0.653 -3.572,-0.98 -5.532,-0.98 -2.147,0 -3.864,0.455 -5.147,1.365 -1.285,0.911 -1.926,2.206 -1.926,3.887 0,1.167 0.268,2.125 0.805,2.872 0.537,0.747 1.482,1.448 2.837,2.101 1.354,0.655 3.384,1.401 6.093,2.241 4.809,1.541 8.404,3.443 10.785,5.708 2.381,2.265 3.571,5.498 3.571,9.699 0,2.988 -0.747,5.615 -2.241,7.878 -1.494,2.265 -3.666,4.039 -6.513,5.323 -2.849,1.283 -6.187,1.926 -10.015,1.926 -3.828,0 -7.237,-0.607 -10.225,-1.821 -2.988,-1.214 -5.557,-2.872 -7.703,-4.972 l 5.393,-5.883 c 3.547,3.269 7.633,4.902 12.255,4.902 2.521,0 4.54,-0.583 6.058,-1.751 1.518,-1.167 2.276,-2.801 2.276,-4.902 0,-1.306 -0.27,-2.392 -0.806,-3.256 -0.537,-0.863 -1.459,-1.646 -2.766,-2.346 -1.309,-0.701 -3.199,-1.424 -5.673,-2.171 -5.276,-1.633 -9.046,-3.594 -11.31,-5.882 -2.266,-2.287 -3.396,-5.275 -3.396,-8.964 0,-2.708 0.723,-5.101 2.17,-7.178 1.447,-2.077 3.455,-3.677 6.023,-4.797 2.566,-1.121 5.485,-1.681 8.754,-1.681 3.503,-0.002 6.548,0.501 9.139,1.504 z"
id="path17"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 504.991,165.514 c 0.326,0.467 0.815,0.7 1.471,0.7 0.793,0 1.471,-0.14 2.03,-0.42 l 2.031,7.073 c -2.055,0.84 -4.296,1.261 -6.723,1.261 -2.941,0 -5.218,-0.853 -6.828,-2.556 -1.611,-1.704 -2.416,-4.167 -2.416,-7.388 v -43.069 l 9.944,-1.121 v 43.279 c 10e-4,1.027 0.164,1.775 0.491,2.241 z"
id="path19"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 524.214,118.418 c 1.144,1.098 1.716,2.486 1.716,4.167 0,1.681 -0.572,3.07 -1.716,4.167 -1.145,1.097 -2.603,1.646 -4.377,1.646 -1.774,0 -3.222,-0.548 -4.342,-1.646 -1.12,-1.097 -1.681,-2.486 -1.681,-4.167 0,-1.681 0.561,-3.069 1.681,-4.167 1.12,-1.096 2.567,-1.646 4.342,-1.646 1.775,0 3.232,0.55 4.377,1.646 z m -9.278,54.589 V 135.89 h 9.943 v 37.117 h -9.943 z"
id="path21"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 563.326,173.007 h -8.754 l -0.561,-4.552 c -2.615,3.782 -6.162,5.673 -10.645,5.673 -4.576,0 -8.065,-1.762 -10.469,-5.288 -2.406,-3.524 -3.607,-8.322 -3.607,-14.391 0,-3.828 0.618,-7.224 1.855,-10.189 1.236,-2.964 3,-5.288 5.287,-6.968 2.287,-1.68 4.973,-2.521 8.055,-2.521 1.727,0 3.35,0.339 4.867,1.015 1.516,0.677 2.859,1.576 4.026,2.696 v -18.488 l 9.944,1.121 v 51.892 z m -13.096,-7.423 c 1.121,-0.746 2.171,-1.867 3.151,-3.361 v -16.598 c -0.98,-1.167 -1.961,-2.042 -2.941,-2.626 -0.98,-0.583 -2.125,-0.875 -3.432,-0.875 -2.288,0 -4.085,1.004 -5.392,3.011 -1.309,2.008 -1.961,5.112 -1.961,9.314 0,4.436 0.57,7.587 1.715,9.454 1.145,1.868 2.813,2.801 5.008,2.801 1.447,0.001 2.731,-0.372 3.852,-1.12 z"
id="path23"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 601.494,157.46 h -23.182 c 0.326,3.361 1.236,5.743 2.732,7.143 1.492,1.401 3.523,2.101 6.092,2.101 1.587,0 3.082,-0.256 4.482,-0.771 1.4,-0.513 2.917,-1.331 4.552,-2.451 l 4.132,5.603 c -4.156,3.362 -8.848,5.042 -14.076,5.042 -5.837,0 -10.318,-1.751 -13.445,-5.252 -3.129,-3.501 -4.693,-8.24 -4.693,-14.216 0,-3.782 0.666,-7.178 1.996,-10.189 1.331,-3.011 3.268,-5.38 5.813,-7.108 2.545,-1.727 5.568,-2.591 9.069,-2.591 5.275,0 9.384,1.658 12.325,4.972 2.941,3.315 4.412,7.938 4.412,13.866 0,0.467 -0.07,1.75 -0.209,3.851 z m -9.665,-6.652 c 0,-6.163 -2.218,-9.244 -6.653,-9.244 -2.055,0 -3.653,0.759 -4.797,2.276 -1.145,1.518 -1.833,3.981 -2.066,7.388 h 13.517 v -0.42 z"
id="path25"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 634.127,139.252 -3.781,5.813 c -3.035,-2.054 -6.023,-3.082 -8.965,-3.082 -1.727,0 -3.059,0.304 -3.99,0.911 -0.936,0.607 -1.402,1.425 -1.402,2.451 0,0.747 0.199,1.377 0.596,1.891 0.396,0.514 1.145,1.004 2.242,1.471 1.096,0.467 2.742,1.027 4.936,1.681 3.922,1.075 6.84,2.51 8.754,4.307 1.914,1.798 2.873,4.261 2.873,7.388 0,2.475 -0.713,4.622 -2.137,6.443 -1.424,1.821 -3.352,3.21 -5.777,4.167 -2.428,0.956 -5.137,1.436 -8.123,1.436 -3.129,0 -5.979,-0.479 -8.545,-1.436 -2.568,-0.957 -4.762,-2.276 -6.582,-3.957 l 4.971,-5.532 c 1.402,1.167 2.941,2.078 4.623,2.731 1.68,0.654 3.408,0.98 5.182,0.98 1.914,0 3.42,-0.361 4.518,-1.085 1.096,-0.723 1.646,-1.692 1.646,-2.906 0,-0.98 -0.211,-1.762 -0.631,-2.346 -0.42,-0.583 -1.191,-1.121 -2.311,-1.61 -1.121,-0.49 -2.871,-1.062 -5.254,-1.716 -3.734,-1.026 -6.502,-2.486 -8.297,-4.377 -1.799,-1.891 -2.697,-4.237 -2.697,-7.038 0,-2.101 0.605,-3.992 1.82,-5.673 1.215,-1.681 2.93,-2.999 5.148,-3.957 2.217,-0.957 4.797,-1.436 7.738,-1.436 5.228,0 9.709,1.494 13.445,4.481 z"
id="path27"
inkscape:connector-curvature="0"
style="fill:#002c42" />
</g><g
transform="matrix(5.1567773,0,0,5.1567773,-874.84003,-495.12546)"
id="g29">
<path
d="m 231.138,168.561 h 15.136 c 1.645,0 2.965,0.99 2.965,2.225 0,1.231 -1.32,2.223 -2.965,2.223 h -15.136 c -1.646,0 -2.969,-0.992 -2.969,-2.223 0,-1.235 1.322,-2.225 2.969,-2.225 z"
id="path31"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<g
id="g33">
<path
d="m 224.244,127.652 c 1.516,0.284 2.521,1.745 2.243,3.26 -0.284,1.519 -1.747,2.523 -3.258,2.239 -1.522,-0.277 -2.526,-1.736 -2.241,-3.258 0.278,-1.519 1.739,-2.519 3.256,-2.241 z"
id="path35"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 248.342,127.971 c -0.113,-1.547 -1.455,-2.703 -2.995,-2.586 -1.539,0.114 -2.695,1.456 -2.584,2.996 0.112,1.54 1.455,2.697 2.995,2.576 1.539,-0.111 2.696,-1.453 2.584,-2.986 z"
id="path37"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 254.698,130.199 c -0.111,-1.541 -1.447,-2.698 -2.986,-2.584 -1.54,0.119 -2.696,1.454 -2.586,3 0.115,1.532 1.456,2.69 2.996,2.576 1.54,-0.111 2.698,-1.453 2.576,-2.992 z"
id="path39"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 228.791,118.638 c -1.282,-0.857 -3.021,-0.527 -3.888,0.749 -0.857,1.282 -0.528,3.014 0.748,3.887 1.282,0.864 3.021,0.526 3.886,-0.749 0.866,-1.282 0.528,-3.019 -0.746,-3.887 z"
id="path41"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 244.284,119.378 c -0.113,-1.548 -1.454,-2.703 -2.994,-2.585 -1.535,0.114 -2.698,1.456 -2.579,2.995 0.113,1.54 1.454,2.695 2.987,2.577 1.547,-0.111 2.698,-1.453 2.586,-2.987 z"
id="path43"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 244.284,119.378 c -0.113,-1.548 -1.454,-2.703 -2.994,-2.585 -1.535,0.114 -2.698,1.456 -2.579,2.995 0.113,1.54 1.454,2.695 2.987,2.577 1.547,-0.111 2.698,-1.453 2.586,-2.987 z"
id="path45"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 251.567,120.753 c -0.111,-1.54 -1.447,-2.699 -2.995,-2.584 -1.54,0.119 -2.69,1.454 -2.576,2.999 0.112,1.533 1.453,2.691 2.993,2.58 1.54,-0.115 2.69,-1.456 2.578,-2.995 z"
id="path47"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 251.567,120.753 c -0.111,-1.54 -1.447,-2.699 -2.995,-2.584 -1.54,0.119 -2.69,1.452 -2.576,2.999 0.112,1.533 1.453,2.691 2.993,2.58 1.54,-0.115 2.69,-1.456 2.578,-2.995 z"
id="path49"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 255.645,120.877 c 1.521,0.284 2.518,1.74 2.242,3.26 -0.285,1.519 -1.739,2.517 -3.26,2.239 -1.521,-0.284 -2.519,-1.737 -2.24,-3.259 0.284,-1.518 1.745,-2.517 3.258,-2.24 z"
id="path51"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 240.216,140.03 c -1.276,-0.865 -3.016,-0.537 -3.88,0.746 -0.866,1.277 -0.538,3.014 0.746,3.88 1.282,0.867 3.013,0.53 3.88,-0.746 0.866,-1.276 0.529,-3.016 -0.746,-3.88 z"
id="path53"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 248.446,143.145 c -0.111,-1.54 -1.452,-2.694 -2.992,-2.583 -1.541,0.117 -2.698,1.459 -2.584,2.994 0.112,1.54 1.453,2.695 2.993,2.584 1.54,-0.112 2.696,-1.453 2.583,-2.995 z"
id="path55"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 248.446,143.145 c -0.111,-1.54 -1.452,-2.694 -2.992,-2.584 -1.541,0.119 -2.698,1.461 -2.584,2.996 0.112,1.54 1.453,2.695 2.993,2.584 1.54,-0.113 2.696,-1.454 2.583,-2.996 z"
id="path57"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 229.154,134.489 c -1.275,-0.864 -3.018,-0.527 -3.88,0.749 -0.867,1.283 -0.529,3.014 0.745,3.88 1.282,0.871 3.012,0.534 3.881,-0.742 0.868,-1.283 0.534,-3.021 -0.746,-3.887 z"
id="path59"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 236.296,132.867 c -1.277,-0.864 -3.014,-0.533 -3.881,0.749 -0.866,1.275 -0.527,3.015 0.748,3.88 1.279,0.864 3.021,0.527 3.885,-0.749 0.867,-1.276 0.529,-3.013 -0.752,-3.88 z"
id="path61"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 251.567,136.602 c -0.111,-1.539 -1.447,-2.697 -2.995,-2.583 -1.533,0.117 -2.695,1.452 -2.576,2.992 0.112,1.542 1.453,2.697 2.993,2.586 1.54,-0.121 2.698,-1.456 2.578,-2.995 z"
id="path63"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 251.567,136.602 c -0.111,-1.541 -1.447,-2.697 -2.995,-2.583 -1.533,0.117 -2.695,1.452 -2.576,2.992 0.112,1.542 1.453,2.697 2.993,2.586 1.54,-0.121 2.698,-1.456 2.578,-2.995 z"
id="path65"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 243.808,147.482 c -1.282,-0.868 -3.014,-0.531 -3.881,0.745 -0.864,1.282 -0.535,3.02 0.748,3.886 1.275,0.861 3.014,0.53 3.88,-0.746 0.865,-1.281 0.527,-3.012 -0.747,-3.885 z"
id="path67"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 243.808,147.482 c -1.282,-0.868 -3.014,-0.531 -3.881,0.745 -0.864,1.282 -0.535,3.02 0.748,3.886 1.275,0.861 3.014,0.53 3.88,-0.746 0.865,-1.281 0.527,-3.012 -0.747,-3.885 z"
id="path69"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 236.887,147.482 c -1.274,-0.868 -3.014,-0.531 -3.879,0.745 -0.866,1.282 -0.535,3.02 0.746,3.886 1.275,0.861 3.014,0.53 3.881,-0.746 0.865,-1.281 0.528,-3.012 -0.748,-3.885 z"
id="path71"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 236.887,147.482 c -1.274,-0.868 -3.014,-0.531 -3.879,0.745 -0.866,1.282 -0.535,3.02 0.746,3.886 1.275,0.861 3.014,0.53 3.881,-0.746 0.865,-1.281 0.528,-3.012 -0.748,-3.885 z"
id="path73"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 232.399,125.857 c -1.281,-0.867 -3.021,-0.529 -3.887,0.745 -0.866,1.283 -0.528,3.016 0.747,3.887 1.282,0.859 3.015,0.53 3.886,-0.745 0.861,-1.284 0.53,-3.02 -0.746,-3.887 z"
id="path75"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 241.034,127.336 c -0.11,-1.54 -1.451,-2.696 -2.991,-2.579 -1.54,0.114 -2.698,1.456 -2.587,2.995 0.114,1.534 1.456,2.69 2.995,2.577 1.546,-0.111 2.7,-1.453 2.583,-2.993 z"
id="path77"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 221.422,121.313 c -1.276,-0.866 -3.015,-0.537 -3.88,0.745 -0.867,1.278 -0.529,3.015 0.746,3.88 1.282,0.868 3.015,0.537 3.88,-0.738 0.866,-1.282 0.535,-3.027 -0.746,-3.887 z"
id="path79"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 244.284,119.378 c -0.113,-1.548 -1.454,-2.703 -2.994,-2.585 -1.535,0.114 -2.698,1.456 -2.579,2.995 0.113,1.54 1.454,2.695 2.987,2.577 1.547,-0.111 2.698,-1.453 2.586,-2.987 z"
id="path81"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 237.039,119.377 c -0.112,-1.546 -1.454,-2.698 -2.993,-2.584 -1.533,0.112 -2.69,1.454 -2.579,2.992 0.112,1.541 1.455,2.692 2.996,2.58 1.539,-0.115 2.688,-1.456 2.576,-2.988 z"
id="path83"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 251.567,120.753 c -0.111,-1.54 -1.447,-2.699 -2.995,-2.584 -1.54,0.119 -2.69,1.452 -2.576,2.999 0.112,1.533 1.453,2.691 2.993,2.58 1.54,-0.115 2.69,-1.456 2.578,-2.995 z"
id="path85"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 231.97,140.602 c 1.519,0.282 2.523,1.745 2.239,3.257 -0.278,1.521 -1.736,2.525 -3.259,2.242 -1.512,-0.279 -2.518,-1.74 -2.241,-3.258 0.285,-1.523 1.745,-2.52 3.261,-2.241 z"
id="path87"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 248.446,143.145 c -0.111,-1.54 -1.452,-2.694 -2.992,-2.584 -1.541,0.119 -2.698,1.461 -2.584,2.996 0.112,1.54 1.453,2.695 2.993,2.584 1.54,-0.113 2.696,-1.454 2.583,-2.996 z"
id="path89"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 251.567,136.602 c -0.111,-1.541 -1.447,-2.697 -2.995,-2.583 -1.533,0.117 -2.695,1.452 -2.576,2.992 0.112,1.542 1.453,2.697 2.993,2.586 1.54,-0.121 2.698,-1.456 2.578,-2.995 z"
id="path91"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 244.838,134.975 c -0.115,-1.54 -1.456,-2.695 -2.996,-2.583 -1.534,0.117 -2.698,1.459 -2.577,2.999 0.11,1.542 1.445,2.69 2.992,2.579 1.539,-0.113 2.691,-1.455 2.581,-2.995 z"
id="path93"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 243.808,147.482 c -1.282,-0.868 -3.014,-0.531 -3.881,0.745 -0.864,1.282 -0.535,3.02 0.748,3.886 1.275,0.861 3.014,0.53 3.88,-0.746 0.865,-1.281 0.527,-3.012 -0.747,-3.885 z"
id="path95"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 236.887,147.482 c -1.274,-0.868 -3.014,-0.531 -3.879,0.745 -0.866,1.282 -0.535,3.02 0.746,3.886 1.275,0.861 3.014,0.53 3.881,-0.746 0.865,-1.281 0.528,-3.012 -0.748,-3.885 z"
id="path97"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
</g>
<g
id="g99">
<path
d="m 196.938,156.803 c 1.044,-1.134 2.815,-1.213 3.955,-0.173 1.137,1.043 1.212,2.816 0.169,3.949 -1.04,1.143 -2.81,1.22 -3.949,0.173 -1.141,-1.04 -1.215,-2.808 -0.175,-3.949 z"
id="path101"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 209.977,136.537 c -1.369,-0.725 -3.061,-0.2 -3.779,1.17 -0.718,1.367 -0.192,3.057 1.173,3.777 1.364,0.72 3.057,0.196 3.771,-1.173 0.719,-1.365 0.197,-3.055 -1.165,-3.774 z"
id="path103"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 215.234,132.327 c -1.364,-0.722 -3.053,-0.204 -3.774,1.163 -0.714,1.369 -0.194,3.057 1.176,3.782 1.359,0.716 3.051,0.192 3.772,-1.174 0.719,-1.366 0.196,-3.057 -1.174,-3.771 z"
id="path105"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 191.702,148.171 c -1.404,0.633 -2.047,2.282 -1.425,3.693 0.634,1.408 2.277,2.045 3.691,1.426 1.414,-0.63 2.049,-2.284 1.426,-3.693 -0.629,-1.412 -2.278,-2.049 -3.692,-1.426 z"
id="path107"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 200.54,135.425 c -1.371,-0.726 -3.062,-0.2 -3.778,1.167 -0.718,1.363 -0.194,3.059 1.173,3.774 1.368,0.72 3.056,0.197 3.769,-1.168 0.725,-1.369 0.196,-3.054 -1.164,-3.773 z"
id="path109"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 200.54,135.425 c -1.371,-0.726 -3.062,-0.2 -3.778,1.167 -0.718,1.363 -0.194,3.059 1.173,3.774 1.368,0.72 3.056,0.197 3.769,-1.168 0.725,-1.369 0.196,-3.054 -1.164,-3.773 z"
id="path111"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 205.566,129.977 c -1.366,-0.72 -3.055,-0.201 -3.778,1.17 -0.716,1.368 -0.192,3.052 1.177,3.776 1.361,0.717 3.053,0.193 3.774,-1.171 0.719,-1.367 0.191,-3.055 -1.173,-3.775 z"
id="path113"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 205.566,129.977 c -1.366,-0.72 -3.055,-0.201 -3.778,1.17 -0.716,1.368 -0.195,3.052 1.177,3.776 1.361,0.717 3.053,0.193 3.774,-1.171 0.719,-1.367 0.191,-3.055 -1.173,-3.775 z"
id="path115"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 207.832,126.584 c 1.046,-1.138 2.81,-1.214 3.952,-0.173 1.138,1.046 1.214,2.809 0.172,3.951 -1.048,1.138 -2.807,1.214 -3.95,0.174 -1.137,-1.047 -1.212,-2.815 -0.174,-3.952 z"
id="path117"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 215.898,149.818 c -1.412,0.624 -2.056,2.274 -1.424,3.685 0.623,1.413 2.271,2.054 3.686,1.424 1.414,-0.628 2.045,-2.275 1.423,-3.686 -0.622,-1.409 -2.277,-2.045 -3.685,-1.423 z"
id="path119"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 222.901,144.488 c -1.364,-0.723 -3.055,-0.195 -3.777,1.171 -0.717,1.368 -0.192,3.059 1.17,3.777 1.367,0.721 3.057,0.195 3.78,-1.17 0.719,-1.364 0.195,-3.056 -1.173,-3.778 z"
id="path121"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 222.901,144.488 c -1.364,-0.723 -3.055,-0.195 -3.778,1.169 -0.716,1.37 -0.191,3.061 1.171,3.779 1.367,0.721 3.057,0.195 3.78,-1.17 0.719,-1.364 0.195,-3.056 -1.173,-3.778 z"
id="path123"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 205.336,156.264 c -1.407,0.623 -2.045,2.277 -1.421,3.686 0.629,1.414 2.278,2.045 3.687,1.423 1.419,-0.625 2.05,-2.271 1.428,-3.683 -0.63,-1.413 -2.279,-2.054 -3.694,-1.426 z"
id="path125"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 207.746,149.348 c -1.409,0.624 -2.048,2.274 -1.422,3.687 0.622,1.411 2.278,2.045 3.688,1.422 1.411,-0.628 2.047,-2.283 1.422,-3.691 -0.621,-1.412 -2.273,-2.046 -3.688,-1.418 z"
id="path127"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 219.005,138.374 c -1.363,-0.719 -3.054,-0.2 -3.776,1.171 -0.713,1.362 -0.197,3.057 1.173,3.771 1.366,0.722 3.057,0.197 3.779,-1.167 0.714,-1.371 0.194,-3.06 -1.176,-3.775 z"
id="path129"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 219.005,138.374 c -1.363,-0.719 -3.054,-0.2 -3.776,1.171 -0.713,1.362 -0.197,3.057 1.173,3.771 1.366,0.722 3.057,0.197 3.779,-1.167 0.714,-1.371 0.194,-3.06 -1.176,-3.775 z"
id="path131"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 224.12,150.721 c -1.414,0.627 -2.045,2.275 -1.423,3.687 0.629,1.412 2.277,2.053 3.691,1.425 1.407,-0.625 2.047,-2.275 1.425,-3.686 -0.628,-1.413 -2.274,-2.046 -3.693,-1.426 z"
id="path133"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 224.12,150.721 c -1.414,0.627 -2.045,2.275 -1.423,3.687 0.629,1.412 2.277,2.053 3.691,1.425 1.407,-0.625 2.047,-2.275 1.425,-3.686 -0.628,-1.413 -2.274,-2.046 -3.693,-1.426 z"
id="path135"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 220.454,156.59 c -1.412,0.622 -2.047,2.273 -1.424,3.684 0.628,1.414 2.278,2.054 3.691,1.427 1.405,-0.625 2.048,-2.276 1.423,-3.686 -0.627,-1.413 -2.274,-2.046 -3.69,-1.425 z"
id="path137"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 220.454,156.59 c -1.412,0.622 -2.047,2.273 -1.424,3.684 0.628,1.414 2.278,2.054 3.691,1.427 1.405,-0.625 2.048,-2.276 1.423,-3.686 -0.627,-1.413 -2.274,-2.046 -3.69,-1.425 z"
id="path139"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 199.739,148.936 c -1.418,0.628 -2.052,2.282 -1.429,3.689 0.628,1.415 2.276,2.049 3.692,1.428 1.407,-0.633 2.045,-2.273 1.427,-3.691 -0.633,-1.408 -2.28,-2.049 -3.69,-1.426 z"
id="path141"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 205.567,142.396 c -1.363,-0.721 -3.056,-0.197 -3.773,1.171 -0.718,1.366 -0.194,3.058 1.171,3.78 1.361,0.715 3.053,0.191 3.772,-1.175 0.725,-1.368 0.199,-3.055 -1.17,-3.776 z"
id="path143"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 190.066,155.839 c -1.412,0.623 -2.052,2.271 -1.425,3.684 0.624,1.411 2.276,2.046 3.686,1.424 1.416,-0.63 2.054,-2.272 1.431,-3.683 -0.628,-1.412 -2.284,-2.057 -3.692,-1.425 z"
id="path145"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 200.54,135.425 c -1.371,-0.726 -3.062,-0.2 -3.778,1.167 -0.718,1.363 -0.194,3.059 1.173,3.774 1.368,0.72 3.056,0.197 3.769,-1.168 0.725,-1.369 0.196,-3.054 -1.164,-3.773 z"
id="path147"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 196.699,141.568 c -1.37,-0.724 -3.058,-0.196 -3.778,1.169 -0.718,1.358 -0.192,3.052 1.173,3.771 1.366,0.722 3.054,0.194 3.775,-1.171 0.719,-1.368 0.192,-3.053 -1.17,-3.769 z"
id="path149"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 205.566,129.977 c -1.366,-0.72 -3.055,-0.201 -3.778,1.17 -0.716,1.368 -0.195,3.052 1.177,3.776 1.361,0.717 3.053,0.193 3.774,-1.171 0.719,-1.367 0.191,-3.055 -1.173,-3.775 z"
id="path151"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 212.012,157.114 c 1.046,-1.138 2.819,-1.215 3.95,-0.173 1.144,1.041 1.219,2.812 0.175,3.951 -1.037,1.135 -2.808,1.213 -3.951,0.174 -1.141,-1.047 -1.211,-2.816 -0.174,-3.952 z"
id="path153"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 222.901,144.488 c -1.364,-0.723 -3.055,-0.195 -3.778,1.169 -0.716,1.37 -0.191,3.061 1.171,3.779 1.367,0.721 3.057,0.195 3.78,-1.17 0.719,-1.364 0.195,-3.056 -1.173,-3.778 z"
id="path155"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 219.005,138.374 c -1.363,-0.719 -3.054,-0.2 -3.776,1.171 -0.713,1.362 -0.197,3.057 1.173,3.771 1.366,0.722 3.057,0.197 3.779,-1.167 0.714,-1.371 0.194,-3.06 -1.176,-3.775 z"
id="path157"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 214.061,143.221 c -1.367,-0.719 -3.056,-0.193 -3.776,1.171 -0.715,1.363 -0.193,3.061 1.176,3.774 1.368,0.722 3.049,0.2 3.774,-1.172 0.719,-1.364 0.192,-3.051 -1.174,-3.773 z"
id="path159"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 224.12,150.721 c -1.414,0.627 -2.045,2.275 -1.423,3.687 0.629,1.412 2.277,2.053 3.691,1.425 1.407,-0.625 2.047,-2.275 1.425,-3.686 -0.628,-1.413 -2.274,-2.046 -3.693,-1.426 z"
id="path161"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 220.454,156.59 c -1.412,0.622 -2.047,2.273 -1.424,3.684 0.628,1.414 2.278,2.054 3.691,1.427 1.405,-0.625 2.048,-2.276 1.423,-3.686 -0.627,-1.413 -2.274,-2.046 -3.69,-1.425 z"
id="path163"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
</g>
<g
id="g165">
<path
d="m 278.788,156.803 c -1.044,-1.134 -2.816,-1.213 -3.953,-0.173 -1.136,1.043 -1.213,2.816 -0.172,3.949 1.041,1.143 2.809,1.22 3.95,0.173 1.142,-1.04 1.217,-2.808 0.175,-3.949 z"
id="path167"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 265.747,136.537 c 1.371,-0.725 3.063,-0.2 3.78,1.17 0.722,1.367 0.196,3.057 -1.171,3.777 -1.366,0.72 -3.058,0.196 -3.772,-1.173 -0.72,-1.365 -0.194,-3.055 1.163,-3.774 z"
id="path169"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 260.49,132.327 c 1.366,-0.722 3.057,-0.204 3.774,1.163 0.716,1.369 0.198,3.057 -1.175,3.782 -1.358,0.716 -3.053,0.192 -3.77,-1.174 -0.722,-1.366 -0.197,-3.057 1.171,-3.771 z"
id="path171"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 284.023,148.171 c 1.407,0.633 2.047,2.282 1.423,3.693 -0.631,1.408 -2.274,2.045 -3.69,1.426 -1.412,-0.63 -2.048,-2.284 -1.426,-3.693 0.629,-1.412 2.281,-2.049 3.693,-1.426 z"
id="path173"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 275.186,135.425 c 1.371,-0.726 3.064,-0.2 3.779,1.167 0.717,1.363 0.194,3.059 -1.176,3.774 -1.363,0.72 -3.055,0.197 -3.767,-1.168 -0.724,-1.369 -0.196,-3.054 1.164,-3.773 z"
id="path175"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 275.186,135.425 c 1.371,-0.726 3.064,-0.2 3.779,1.167 0.717,1.363 0.194,3.059 -1.176,3.774 -1.363,0.72 -3.055,0.197 -3.767,-1.168 -0.724,-1.369 -0.196,-3.054 1.164,-3.773 z"
id="path177"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 270.158,129.977 c 1.368,-0.72 3.058,-0.201 3.781,1.17 0.714,1.368 0.192,3.052 -1.179,3.776 -1.358,0.717 -3.055,0.193 -3.773,-1.171 -0.718,-1.367 -0.191,-3.055 1.171,-3.775 z"
id="path179"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 270.158,129.977 c 1.368,-0.72 3.058,-0.201 3.781,1.17 0.714,1.368 0.192,3.052 -1.179,3.776 -1.358,0.717 -3.055,0.193 -3.773,-1.171 -0.718,-1.367 -0.191,-3.055 1.171,-3.775 z"
id="path181"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 267.894,126.584 c -1.046,-1.138 -2.811,-1.214 -3.952,-0.173 -1.137,1.046 -1.213,2.809 -0.171,3.951 1.045,1.138 2.808,1.214 3.95,0.174 1.135,-1.047 1.211,-2.815 0.173,-3.952 z"
id="path183"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 259.827,149.818 c 1.411,0.624 2.055,2.274 1.426,3.685 -0.625,1.413 -2.271,2.054 -3.687,1.424 -1.416,-0.628 -2.047,-2.275 -1.425,-3.686 0.624,-1.409 2.279,-2.045 3.686,-1.423 z"
id="path185"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 252.823,144.488 c 1.365,-0.723 3.057,-0.195 3.779,1.171 0.715,1.368 0.189,3.059 -1.172,3.777 -1.365,0.721 -3.057,0.195 -3.778,-1.17 -0.719,-1.364 -0.194,-3.056 1.171,-3.778 z"
id="path187"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 252.823,144.488 c 1.365,-0.723 3.057,-0.195 3.781,1.169 0.713,1.37 0.188,3.061 -1.174,3.779 -1.365,0.721 -3.057,0.195 -3.778,-1.17 -0.719,-1.364 -0.194,-3.056 1.171,-3.778 z"
id="path189"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 270.387,156.264 c 1.413,0.623 2.046,2.277 1.422,3.686 -0.629,1.414 -2.274,2.045 -3.686,1.423 -1.417,-0.625 -2.048,-2.271 -1.426,-3.683 0.629,-1.413 2.279,-2.054 3.69,-1.426 z"
id="path191"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 267.979,149.348 c 1.411,0.624 2.052,2.274 1.421,3.687 -0.622,1.411 -2.274,2.045 -3.685,1.422 -1.411,-0.628 -2.049,-2.283 -1.425,-3.691 0.625,-1.412 2.273,-2.046 3.689,-1.418 z"
id="path193"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 256.719,138.374 c 1.364,-0.719 3.055,-0.2 3.777,1.171 0.715,1.362 0.198,3.057 -1.169,3.771 -1.369,0.722 -3.061,0.197 -3.781,-1.167 -0.714,-1.371 -0.196,-3.06 1.173,-3.775 z"
id="path195"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 256.719,138.374 c 1.368,-0.719 3.055,-0.2 3.777,1.171 0.715,1.362 0.198,3.057 -1.169,3.771 -1.369,0.722 -3.061,0.197 -3.781,-1.167 -0.714,-1.371 -0.196,-3.06 1.173,-3.775 z"
id="path197"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 251.605,150.721 c 1.416,0.627 2.047,2.275 1.422,3.687 -0.628,1.412 -2.276,2.053 -3.689,1.425 -1.405,-0.625 -2.047,-2.275 -1.428,-3.686 0.631,-1.413 2.279,-2.046 3.695,-1.426 z"
id="path199"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 251.605,150.721 c 1.416,0.627 2.047,2.275 1.422,3.687 -0.628,1.412 -2.276,2.053 -3.689,1.425 -1.405,-0.625 -2.047,-2.275 -1.428,-3.686 0.631,-1.413 2.279,-2.046 3.695,-1.426 z"
id="path201"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 255.272,156.59 c 1.411,0.622 2.045,2.273 1.423,3.684 -0.627,1.414 -2.278,2.054 -3.691,1.427 -1.405,-0.625 -2.049,-2.276 -1.424,-3.686 0.628,-1.413 2.277,-2.046 3.692,-1.425 z"
id="path203"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 255.272,156.59 c 1.411,0.622 2.045,2.273 1.423,3.684 -0.627,1.414 -2.278,2.054 -3.691,1.427 -1.405,-0.625 -2.049,-2.276 -1.424,-3.686 0.628,-1.413 2.277,-2.046 3.692,-1.425 z"
id="path205"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 275.989,148.936 c 1.414,0.628 2.048,2.282 1.427,3.689 -0.626,1.415 -2.276,2.049 -3.69,1.428 -1.407,-0.633 -2.047,-2.273 -1.428,-3.691 0.632,-1.408 2.28,-2.049 3.691,-1.426 z"
id="path207"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 270.158,142.396 c 1.366,-0.721 3.058,-0.197 3.772,1.171 0.72,1.366 0.194,3.058 -1.17,3.78 -1.36,0.715 -3.051,0.191 -3.771,-1.175 -0.726,-1.368 -0.198,-3.055 1.169,-3.776 z"
id="path209"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 285.66,155.839 c 1.41,0.623 2.052,2.271 1.424,3.684 -0.625,1.411 -2.276,2.046 -3.685,1.424 -1.418,-0.63 -2.053,-2.272 -1.432,-3.683 0.632,-1.412 2.284,-2.057 3.693,-1.425 z"
id="path211"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 275.186,135.425 c 1.371,-0.726 3.064,-0.2 3.779,1.167 0.717,1.363 0.194,3.059 -1.176,3.774 -1.363,0.72 -3.055,0.197 -3.767,-1.168 -0.724,-1.369 -0.196,-3.054 1.164,-3.773 z"
id="path213"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 279.025,141.568 c 1.372,-0.724 3.062,-0.196 3.778,1.169 0.717,1.358 0.194,3.052 -1.172,3.771 -1.365,0.722 -3.053,0.194 -3.773,-1.171 -0.719,-1.368 -0.19,-3.053 1.167,-3.769 z"
id="path215"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 270.158,129.977 c 1.368,-0.72 3.058,-0.201 3.781,1.17 0.714,1.368 0.192,3.052 -1.179,3.776 -1.358,0.717 -3.055,0.193 -3.773,-1.171 -0.718,-1.367 -0.191,-3.055 1.171,-3.775 z"
id="path217"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 263.713,157.114 c -1.045,-1.138 -2.817,-1.215 -3.949,-0.173 -1.143,1.041 -1.22,2.812 -0.175,3.951 1.039,1.135 2.811,1.213 3.951,0.174 1.14,-1.047 1.214,-2.816 0.173,-3.952 z"
id="path219"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 252.823,144.488 c 1.365,-0.723 3.057,-0.195 3.781,1.169 0.713,1.37 0.188,3.061 -1.174,3.779 -1.365,0.721 -3.057,0.195 -3.778,-1.17 -0.719,-1.364 -0.194,-3.056 1.171,-3.778 z"
id="path221"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 256.719,138.374 c 1.368,-0.719 3.055,-0.2 3.777,1.171 0.715,1.362 0.198,3.057 -1.169,3.771 -1.369,0.722 -3.061,0.197 -3.781,-1.167 -0.714,-1.371 -0.196,-3.06 1.173,-3.775 z"
id="path223"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 261.667,143.221 c 1.363,-0.719 3.056,-0.193 3.777,1.171 0.71,1.363 0.19,3.061 -1.18,3.774 -1.366,0.722 -3.049,0.2 -3.773,-1.172 -0.719,-1.364 -0.189,-3.051 1.176,-3.773 z"
id="path225"
inkscape:connector-curvature="0"
style="fill:#002c42" />
<path
d="m 251.605,150.721 c 1.416,0.627 2.047,2.275 1.422,3.687 -0.628,1.412 -2.276,2.053 -3.689,1.425 -1.405,-0.625 -2.047,-2.275 -1.428,-3.686 0.631,-1.413 2.279,-2.046 3.695,-1.426 z"
id="path227"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
<path
d="m 255.272,156.59 c 1.411,0.622 2.045,2.273 1.423,3.684 -0.627,1.414 -2.278,2.054 -3.691,1.427 -1.405,-0.625 -2.049,-2.276 -1.424,-3.686 0.628,-1.413 2.277,-2.046 3.692,-1.425 z"
id="path229"
inkscape:connector-curvature="0"
style="opacity:0.9387;fill:#002c42" />
</g>
</g></g></svg>

After

Width:  |  Height:  |  Size: 36 KiB

View File

@ -1,667 +0,0 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Generator: Adobe Illustrator 23.0.1, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
<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"
xmlns:xlink="http://www.w3.org/1999/xlink"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Ebene_1"
x="0px"
y="0px"
viewBox="0 0 800.78997 132.08001"
xml:space="preserve"
sodipodi:docname="openslides-logo-h.svg"
width="800.78998"
height="132.08"
inkscape:version="0.92.4 5da689c313, 2019-01-14"><metadata
id="metadata213"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs211">
<defs
id="defs5">
<rect
id="SVGID_1_"
x="1.42"
y="1.08"
width="790.87"
height="196.25999" />
</defs>
<clipPath
id="SVGID_2_">
<use
xlink:href="#SVGID_1_"
style="overflow:visible"
id="use7"
x="0"
y="0"
width="100%"
height="100%" />
</clipPath>
</defs><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1916"
inkscape:window-height="1037"
id="namedview209"
showgrid="false"
inkscape:pagecheckerboard="true"
fit-margin-top="5"
fit-margin-left="5"
fit-margin-right="5"
fit-margin-bottom="5"
inkscape:zoom="0.77686418"
inkscape:cx="263.40616"
inkscape:cy="-136.78644"
inkscape:window-x="0"
inkscape:window-y="18"
inkscape:window-maximized="0"
inkscape:current-layer="Ebene_1" />
<style
type="text/css"
id="style2">
.st0{clip-path:url(#SVGID_2_);}
.st1{fill:#FFFFFF;}
.st2{fill:none;}
</style>
<g
id="g708"
transform="translate(-6.48,-6.42)"
style="fill:#0c2c40;fill-opacity:1"><path
class="st1"
d="m 271.78,42.13 c -2.98,4.64 -4.46,12.05 -4.46,22.25 0,10.2 1.51,17.61 4.52,22.25 3.01,4.64 7.42,6.96 13.21,6.96 5.87,0 10.27,-2.3 13.21,-6.9 2.93,-4.6 4.41,-12.03 4.41,-22.31 0,-10.27 -1.47,-17.71 -4.41,-22.3 -2.94,-4.59 -7.34,-6.9 -13.21,-6.9 -5.87,-0.01 -10.29,2.31 -13.27,6.95 m 32.27,-14.78 c 5.33,3.29 9.43,8.05 12.28,14.31 2.86,6.26 4.29,13.83 4.29,22.71 0,8.73 -1.43,16.24 -4.29,22.54 -2.86,6.3 -6.95,11.1 -12.28,14.42 -5.33,3.32 -11.66,4.98 -19,4.98 -7.34,0 -13.69,-1.64 -19.06,-4.92 -5.37,-3.29 -9.48,-8.07 -12.34,-14.37 -2.86,-6.3 -4.29,-13.85 -4.29,-22.65 0,-8.65 1.45,-16.12 4.35,-22.42 2.9,-6.3 7.03,-11.12 12.4,-14.48 5.37,-3.36 11.69,-5.04 18.95,-5.04 7.33,-0.01 13.66,1.64 18.99,4.92"
id="path10"
inkscape:connector-curvature="0"
style="fill:#0c2c40;fill-opacity:1" /><path
class="st1"
d="m 363.84,73.75 c 0,-7.42 -0.9,-12.67 -2.72,-15.75 -1.81,-3.09 -4.57,-4.64 -8.28,-4.64 -2.24,0 -4.33,0.72 -6.26,2.14 -1.93,1.43 -3.63,3.34 -5.1,5.74 V 88 c 2.62,4.02 6.06,6.03 10.31,6.03 8.03,0.01 12.05,-6.75 12.05,-20.28 m 11.53,-24.04 c 3.75,5.68 5.62,13.65 5.62,23.92 0,6.26 -0.97,11.86 -2.9,16.8 -1.93,4.95 -4.73,8.83 -8.4,11.64 -3.67,2.82 -8.02,4.23 -13.04,4.23 -6.26,0 -11.32,-2.2 -15.18,-6.6 v 28.39 l -16.45,1.86 v -86.9 h 14.48 l 0.81,7.19 c 2.32,-3.01 5.04,-5.27 8.17,-6.78 3.13,-1.5 6.28,-2.26 9.44,-2.26 7.89,0 13.7,2.84 17.45,8.51 z"
id="path12"
inkscape:connector-curvature="0"
style="fill:#0c2c40;fill-opacity:1" /><path
class="st1"
d="m 423.86,67.73 c 0,-10.19 -3.67,-15.29 -11.01,-15.29 -3.4,0 -6.04,1.26 -7.94,3.76 -1.89,2.51 -3.03,6.59 -3.42,12.22 h 22.36 v -0.69 z m 15.99,11.01 H 401.5 c 0.54,5.56 2.04,9.5 4.52,11.82 2.47,2.32 5.83,3.48 10.08,3.48 2.62,0 5.1,-0.43 7.42,-1.27 2.32,-0.85 4.83,-2.2 7.53,-4.05 l 6.84,9.27 c -6.88,5.56 -14.64,8.34 -23.29,8.34 -9.66,0 -17.07,-2.9 -22.25,-8.69 -5.18,-5.79 -7.76,-13.63 -7.76,-23.52 0,-6.26 1.1,-11.87 3.3,-16.86 2.2,-4.98 5.4,-8.9 9.62,-11.76 4.21,-2.86 9.21,-4.29 15,-4.29 8.73,0 15.53,2.74 20.39,8.23 4.87,5.48 7.3,13.13 7.3,22.94 -0.01,0.76 -0.12,2.88 -0.35,6.36"
id="path14"
inkscape:connector-curvature="0"
style="fill:#0c2c40;fill-opacity:1" /><path
class="st1"
d="m 491.17,46.12 c 3.01,3.29 4.52,7.82 4.52,13.62 v 44.72 H 479.24 V 62.52 c 0,-3.32 -0.56,-5.66 -1.68,-7.01 -1.12,-1.35 -2.8,-2.02 -5.04,-2.02 -2.32,0 -4.42,0.72 -6.31,2.14 -1.89,1.43 -3.73,3.58 -5.5,6.43 v 42.41 H 444.26 V 43.05 h 14.25 l 1.27,7.76 c 2.55,-3.17 5.35,-5.56 8.4,-7.19 3.05,-1.62 6.51,-2.43 10.37,-2.43 5.4,0.01 9.62,1.65 12.62,4.93"
id="path16"
inkscape:connector-curvature="0"
style="fill:#0c2c40;fill-opacity:1" /><path
class="st1"
d="m 547.78,24.92 c 4.29,1.66 8.24,4.19 11.88,7.59 l -8.23,9.5 c -2.78,-2.4 -5.61,-4.13 -8.46,-5.21 -2.86,-1.08 -5.91,-1.62 -9.15,-1.62 -3.55,0 -6.39,0.75 -8.52,2.26 -2.13,1.5 -3.19,3.65 -3.19,6.43 0,1.93 0.45,3.52 1.33,4.75 0.89,1.24 2.45,2.4 4.69,3.48 2.25,1.08 5.6,2.32 10.08,3.71 7.96,2.55 13.91,5.7 17.84,9.44 3.94,3.75 5.91,9.1 5.91,16.04 0,4.95 -1.24,9.29 -3.71,13.04 -2.47,3.75 -6.07,6.68 -10.78,8.81 -4.72,2.12 -10.24,3.19 -16.57,3.19 -6.33,0 -11.97,-1 -16.92,-3.01 -4.94,-2.01 -9.19,-4.75 -12.74,-8.23 l 8.92,-9.73 c 5.87,5.4 12.63,8.11 20.28,8.11 4.17,0 7.51,-0.97 10.02,-2.9 2.51,-1.93 3.76,-4.64 3.76,-8.11 0,-2.16 -0.45,-3.96 -1.33,-5.39 -0.89,-1.42 -2.41,-2.72 -4.57,-3.88 -2.17,-1.16 -5.3,-2.36 -9.39,-3.59 -8.73,-2.7 -14.97,-5.95 -18.71,-9.73 -3.75,-3.79 -5.62,-8.73 -5.62,-14.84 0,-4.48 1.2,-8.44 3.59,-11.87 2.4,-3.44 5.72,-6.08 9.97,-7.94 4.25,-1.86 9.07,-2.78 14.48,-2.78 5.81,-0.02 10.85,0.82 15.14,2.48"
id="path18"
inkscape:connector-curvature="0"
style="fill:#0c2c40;fill-opacity:1" /><path
class="st1"
d="m 586.53,92.06 c 0.54,0.77 1.35,1.16 2.43,1.16 1.31,0 2.43,-0.23 3.36,-0.69 l 3.36,11.7 c -3.4,1.39 -7.11,2.09 -11.12,2.09 -4.87,0 -8.63,-1.42 -11.3,-4.23 -2.66,-2.82 -3.99,-6.9 -3.99,-12.22 V 18.6 l 16.45,-1.86 v 71.61 c 0,1.7 0.28,2.94 0.81,3.71"
id="path20"
inkscape:connector-curvature="0"
style="fill:#0c2c40;fill-opacity:1" /><path
class="st1"
d="m 602.99,43.05 h 16.45 v 61.41 h -16.45 z m 15.35,-28.91 c 1.89,1.82 2.84,4.12 2.84,6.9 0,2.78 -0.95,5.08 -2.84,6.9 -1.89,1.82 -4.31,2.72 -7.24,2.72 -2.93,0 -5.33,-0.91 -7.19,-2.72 -1.85,-1.81 -2.78,-4.12 -2.78,-6.9 0,-2.78 0.93,-5.08 2.78,-6.9 1.86,-1.81 4.25,-2.72 7.19,-2.72 2.94,0 5.35,0.91 7.24,2.72"
id="path22"
inkscape:connector-curvature="0"
style="fill:#0c2c40;fill-opacity:1" /><path
class="st1"
d="m 661.38,92.18 c 1.86,-1.23 3.6,-3.09 5.22,-5.56 V 59.16 c -1.62,-1.93 -3.25,-3.38 -4.87,-4.35 -1.62,-0.97 -3.52,-1.45 -5.68,-1.45 -3.79,0 -6.76,1.66 -8.92,4.98 -2.17,3.32 -3.24,8.46 -3.24,15.41 0,7.34 0.94,12.55 2.84,15.64 1.89,3.09 4.65,4.63 8.29,4.63 2.38,0.02 4.51,-0.6 6.36,-1.84 m 21.67,12.28 h -14.48 l -0.93,-7.53 c -4.33,6.26 -10.19,9.39 -17.61,9.39 -7.57,0 -13.34,-2.92 -17.32,-8.75 -3.98,-5.83 -5.97,-13.77 -5.97,-23.81 0,-6.34 1.02,-11.95 3.07,-16.86 2.04,-4.9 4.96,-8.75 8.75,-11.53 3.78,-2.78 8.23,-4.17 13.33,-4.17 2.86,0 5.55,0.56 8.05,1.68 2.51,1.12 4.73,2.61 6.66,4.46 V 16.75 l 16.45,1.85 z"
id="path24"
inkscape:connector-curvature="0"
style="fill:#0c2c40;fill-opacity:1" /><path
class="st1"
d="m 730.21,67.73 c 0,-10.19 -3.67,-15.29 -11.01,-15.29 -3.4,0 -6.04,1.26 -7.94,3.76 -1.89,2.51 -3.03,6.59 -3.42,12.22 h 22.36 z m 15.99,11.01 h -38.36 c 0.54,5.56 2.04,9.5 4.52,11.82 2.47,2.32 5.83,3.48 10.08,3.48 2.62,0 5.1,-0.43 7.42,-1.27 2.32,-0.85 4.82,-2.2 7.53,-4.05 l 6.83,9.27 c -6.88,5.56 -14.64,8.34 -23.29,8.34 -9.66,0 -17.07,-2.9 -22.25,-8.69 -5.18,-5.79 -7.77,-13.63 -7.77,-23.52 0,-6.26 1.1,-11.87 3.3,-16.86 2.2,-4.98 5.4,-8.9 9.62,-11.76 4.21,-2.86 9.21,-4.29 15,-4.29 8.73,0 15.52,2.74 20.39,8.23 4.87,5.48 7.3,13.13 7.3,22.94 0.03,0.76 -0.09,2.88 -0.32,6.36 z"
id="path26"
inkscape:connector-curvature="0"
style="fill:#0c2c40;fill-opacity:1" /><path
class="st1"
d="m 800.19,48.61 -6.26,9.62 c -5.02,-3.4 -9.97,-5.1 -14.83,-5.1 -2.86,0 -5.06,0.5 -6.6,1.51 -1.55,1 -2.32,2.36 -2.32,4.05 0,1.23 0.33,2.28 0.98,3.13 0.66,0.85 1.89,1.66 3.71,2.43 1.81,0.77 4.54,1.7 8.17,2.78 6.49,1.78 11.32,4.15 14.48,7.12 3.16,2.98 4.75,7.05 4.75,12.22 0,4.1 -1.18,7.64 -3.54,10.66 -2.35,3.01 -5.55,5.31 -9.56,6.9 -4.02,1.58 -8.5,2.38 -13.44,2.38 -5.17,0 -9.89,-0.79 -14.14,-2.38 -4.25,-1.58 -7.88,-3.76 -10.89,-6.55 l 8.22,-9.15 c 2.32,1.93 4.87,3.44 7.65,4.52 2.78,1.08 5.64,1.62 8.57,1.62 3.17,0 5.66,-0.6 7.48,-1.8 1.81,-1.2 2.72,-2.8 2.72,-4.8 0,-1.62 -0.35,-2.92 -1.05,-3.88 -0.69,-0.97 -1.97,-1.86 -3.82,-2.67 -1.86,-0.81 -4.75,-1.76 -8.7,-2.84 -6.18,-1.7 -10.76,-4.12 -13.73,-7.24 -2.98,-3.13 -4.46,-7.01 -4.46,-11.65 0,-3.47 1,-6.6 3.01,-9.38 2.01,-2.78 4.85,-4.96 8.52,-6.55 3.67,-1.58 7.94,-2.38 12.8,-2.38 8.69,0.02 16.1,2.49 22.28,7.43"
id="path28"
inkscape:connector-curvature="0"
style="fill:#0c2c40;fill-opacity:1" /></g><g
id="g792"
transform="translate(-6.48,-6.42)"
style="fill:#0c2c40;fill-opacity:1"><g
transform="translate(10,10)"
id="g86"
style="fill:#0c2c40;fill-opacity:1">
<g
id="g46"
style="fill:#0c2c40;fill-opacity:1">
<circle
class="st1"
cx="124.67"
cy="90.790001"
r="5.6300001"
id="circle36"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="140.63"
cy="90.790001"
r="5.6300001"
id="circle38"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="156.13"
cy="90.790001"
r="5.6300001"
id="circle40"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="171.64"
cy="90.790001"
r="5.6300001"
id="circle42"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="187.14999"
cy="90.790001"
r="5.6300001"
id="circle44"
style="fill:#0c2c40;fill-opacity:1" />
</g>
<g
id="g58"
style="fill:#0c2c40;fill-opacity:1">
<circle
class="st1"
cx="118.34"
cy="78.449997"
r="5.6300001"
id="circle48"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="127.26"
cy="65.220001"
r="5.6300001"
id="circle50"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="135.92999"
cy="52.360001"
r="5.6300001"
id="circle52"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="144.60001"
cy="39.509998"
r="5.6300001"
id="circle54"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="153.28"
cy="26.65"
r="5.6300001"
id="circle56"
style="fill:#0c2c40;fill-opacity:1" />
</g>
<g
id="g68"
style="fill:#0c2c40;fill-opacity:1">
<circle
class="st1"
cx="136.19"
cy="76.610001"
r="5.6300001"
id="circle60"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="168.53999"
cy="76.169998"
r="5.6300001"
id="circle62"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="184.72"
cy="76.169998"
r="5.6300001"
id="circle64"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="152.37"
cy="76.610001"
r="5.6300001"
id="circle66"
style="fill:#0c2c40;fill-opacity:1" />
</g>
<g
id="g76"
style="fill:#0c2c40;fill-opacity:1">
<circle
class="st1"
cx="146.39"
cy="63.32"
r="5.6300001"
id="circle70"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="180.50999"
cy="62.43"
r="5.6300001"
id="circle72"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="163.89"
cy="62.869999"
r="5.6300001"
id="circle74"
style="fill:#0c2c40;fill-opacity:1" />
</g>
<g
id="g80"
style="fill:#0c2c40;fill-opacity:1">
<circle
class="st1"
cx="155.69"
cy="50.470001"
r="5.6300001"
id="circle78"
style="fill:#0c2c40;fill-opacity:1" />
</g>
<g
id="g84"
style="fill:#0c2c40;fill-opacity:1">
<circle
class="st1"
cx="164.55"
cy="37.169998"
r="5.6300001"
id="circle82"
style="fill:#0c2c40;fill-opacity:1" />
</g>
</g><g
transform="translate(10,10)"
id="g140"
style="fill:#0c2c40;fill-opacity:1">
<g
id="g98"
style="fill:#0c2c40;fill-opacity:1">
<circle
class="st1"
cx="69.589996"
cy="90.790001"
r="5.6300001"
id="circle88"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="53.639999"
cy="90.790001"
r="5.6300001"
id="circle90"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="38.130001"
cy="90.790001"
r="5.6300001"
id="circle92"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="22.620001"
cy="90.790001"
r="5.6300001"
id="circle94"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="7.1100001"
cy="90.790001"
r="5.6300001"
id="circle96"
style="fill:#0c2c40;fill-opacity:1" />
</g>
<g
id="g110"
style="fill:#0c2c40;fill-opacity:1">
<circle
class="st1"
cx="75.93"
cy="78.449997"
r="5.6300001"
id="circle100"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="67.010002"
cy="65.220001"
r="5.6300001"
id="circle102"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="58.34"
cy="52.360001"
r="5.6300001"
id="circle104"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="49.66"
cy="39.509998"
r="5.6300001"
id="circle106"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="40.990002"
cy="26.65"
r="5.6300001"
id="circle108"
style="fill:#0c2c40;fill-opacity:1" />
</g>
<g
id="g120"
style="fill:#0c2c40;fill-opacity:1">
<circle
class="st1"
cx="58.07"
cy="76.610001"
r="5.6300001"
id="circle112"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="25.73"
cy="76.169998"
r="5.6300001"
id="circle114"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="9.5500002"
cy="76.169998"
r="5.6300001"
id="circle116"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="41.900002"
cy="76.610001"
r="5.6300001"
id="circle118"
style="fill:#0c2c40;fill-opacity:1" />
</g>
<g
id="g128"
style="fill:#0c2c40;fill-opacity:1">
<circle
class="st1"
cx="47.880001"
cy="63.32"
r="5.6300001"
id="circle122"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="13.76"
cy="62.43"
r="5.6300001"
id="circle124"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="30.379999"
cy="62.869999"
r="5.6300001"
id="circle126"
style="fill:#0c2c40;fill-opacity:1" />
</g>
<g
id="g134"
style="fill:#0c2c40;fill-opacity:1">
<circle
class="st1"
cx="38.580002"
cy="50.470001"
r="5.6300001"
id="circle130"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="21.07"
cy="49.139999"
r="5.6300001"
id="circle132"
style="fill:#0c2c40;fill-opacity:1" />
</g>
<g
id="g138"
style="fill:#0c2c40;fill-opacity:1">
<circle
class="st1"
cx="29.709999"
cy="37.169998"
r="5.6300001"
id="circle136"
style="fill:#0c2c40;fill-opacity:1" />
</g>
</g><g
transform="translate(10,10)"
id="g194"
style="fill:#0c2c40;fill-opacity:1">
<g
id="g152"
style="fill:#0c2c40;fill-opacity:1">
<circle
class="st1"
cx="104.26"
cy="69.860001"
r="5.6300001"
id="circle142"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="111.62"
cy="55.700001"
r="5.6300001"
id="circle144"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="118.77"
cy="41.939999"
r="5.6300001"
id="circle146"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="125.92"
cy="28.18"
r="5.6300001"
id="circle148"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="133.07001"
cy="14.42"
r="5.6300001"
id="circle150"
style="fill:#0c2c40;fill-opacity:1" />
</g>
<g
id="g164"
style="fill:#0c2c40;fill-opacity:1">
<circle
class="st1"
cx="90.379997"
cy="69.779999"
r="5.6300001"
id="circle154"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="82.760002"
cy="55.77"
r="5.6300001"
id="circle156"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="75.349998"
cy="42.139999"
r="5.6300001"
id="circle158"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="67.949997"
cy="28.52"
r="5.6300001"
id="circle160"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="60.540001"
cy="14.89"
r="5.6300001"
id="circle162"
style="fill:#0c2c40;fill-opacity:1" />
</g>
<g
id="g174"
style="fill:#0c2c40;fill-opacity:1">
<circle
class="st1"
cx="96.989998"
cy="53.09"
r="5.6300001"
id="circle166"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="111.52"
cy="24.190001"
r="5.6300001"
id="circle168"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="118.98"
cy="9.8299999"
r="5.6300001"
id="circle170"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="104.45"
cy="38.740002"
r="5.6300001"
id="circle172"
style="fill:#0c2c40;fill-opacity:1" />
</g>
<g
id="g182"
style="fill:#0c2c40;fill-opacity:1">
<circle
class="st1"
cx="89.900002"
cy="37.919998"
r="5.6300001"
id="circle176"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="104.84"
cy="7.23"
r="5.6300001"
id="circle178"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="97.57"
cy="22.18"
r="5.6300001"
id="circle180"
style="fill:#0c2c40;fill-opacity:1" />
</g>
<g
id="g188"
style="fill:#0c2c40;fill-opacity:1">
<circle
class="st1"
cx="82.779999"
cy="23.74"
r="5.6300001"
id="circle184"
style="fill:#0c2c40;fill-opacity:1" />
<circle
class="st1"
cx="89.68"
cy="7.2199998"
r="5.6300001"
id="circle186"
style="fill:#0c2c40;fill-opacity:1" />
</g>
<g
id="g192"
style="fill:#0c2c40;fill-opacity:1">
<circle
class="st1"
cx="75.080002"
cy="9.7399998"
r="5.6300001"
id="circle190"
style="fill:#0c2c40;fill-opacity:1" />
</g>
</g><circle
class="st1"
cx="183.42"
cy="59.139999"
r="5.6300001"
id="circle196"
style="fill:#0c2c40;fill-opacity:1" /><path
class="st1"
d="M 121.46,133.5 H 93.29 c -3.1,0 -5.63,-2.54 -5.63,-5.63 v 0 c 0,-3.1 2.54,-5.63 5.63,-5.63 h 28.17 c 3.1,0 5.63,2.54 5.63,5.63 v 0 c 0.01,3.09 -2.53,5.63 -5.63,5.63 z"
id="path198"
inkscape:connector-curvature="0"
style="fill:#0c2c40;fill-opacity:1" /></g>
</svg>

Before

Width:  |  Height:  |  Size: 19 KiB

View File

@ -0,0 +1,599 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://opensource.org/licenses/MIT"
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"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Ebene_3"
x="0px"
y="0px"
width="714.50537"
height="511.0267"
viewBox="0 0 714.50529 511.02669"
enable-background="new 0 0 841.89 595.28"
xml:space="preserve"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="openslides-mark-button-dark.svg"
inkscape:export-xdpi="20.83"
inkscape:export-ydpi="20.83"><metadata
id="metadata461"><rdf:RDF><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title><dc:creator><cc:Agent><dc:title>OpenSlides Team</dc:title></cc:Agent></dc:creator></cc:Work></rdf:RDF></metadata><defs
id="defs459">
<filter
id="filter5361"
style="color-interpolation-filters:sRGB;"
inkscape:label="Drop Shadow"><feFlood
id="feFlood5363"
flood-opacity="0.8"
flood-color="rgb(0,0,0)"
result="flood" /><feComposite
id="feComposite5365"
in2="SourceGraphic"
in="flood"
operator="in"
result="composite1" /><feGaussianBlur
id="feGaussianBlur5367"
in="composite"
stdDeviation="15"
result="blur" /><feOffset
id="feOffset5369"
dx="0"
dy="4"
result="offset" /><feComposite
id="feComposite5371"
in2="offset"
in="SourceGraphic"
operator="over"
result="composite2" /></filter></defs><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="965"
inkscape:window-height="838"
id="namedview457"
showgrid="false"
showguides="false"
inkscape:guide-bbox="true"
inkscape:zoom="0.2738534"
inkscape:cx="-900.0578"
inkscape:cy="110.09979"
inkscape:window-x="12"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="Ebene_3"
fit-margin-top="10"
fit-margin-left="10"
fit-margin-right="10"
fit-margin-bottom="4"
units="px"><sodipodi:guide
orientation="0,1"
position="-76.331348,-264.93094"
id="guide3558" /><sodipodi:guide
orientation="0,1"
position="-107.97678,-208.98635"
id="guide3560" /></sodipodi:namedview>
<rect
style="fill:#002c42;fill-opacity:1;fill-rule:nonzero;stroke:none;filter:url(#filter5361)"
id="rect8760"
width="900"
height="900"
x="-92.747368"
y="-191.48665"
ry="105.83367" /><g
id="g29"
transform="matrix(7.8699075,0,0,7.8699075,-1514.7044,-881.81148)"
style="fill:#ffffff">
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path31"
d="m 231.138,168.561 h 15.136 c 1.645,0 2.965,0.99 2.965,2.225 0,1.231 -1.32,2.223 -2.965,2.223 h -15.136 c -1.646,0 -2.969,-0.992 -2.969,-2.223 0,-1.235 1.322,-2.225 2.969,-2.225 z" />
<g
id="g33"
style="fill:#ffffff">
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path35"
d="m 224.244,127.652 c 1.516,0.284 2.521,1.745 2.243,3.26 -0.284,1.519 -1.747,2.523 -3.258,2.239 -1.522,-0.277 -2.526,-1.736 -2.241,-3.258 0.278,-1.519 1.739,-2.519 3.256,-2.241 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path37"
d="m 248.342,127.971 c -0.113,-1.547 -1.455,-2.703 -2.995,-2.586 -1.539,0.114 -2.695,1.456 -2.584,2.996 0.112,1.54 1.455,2.697 2.995,2.576 1.539,-0.111 2.696,-1.453 2.584,-2.986 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path39"
d="m 254.698,130.199 c -0.111,-1.541 -1.447,-2.698 -2.986,-2.584 -1.54,0.119 -2.696,1.454 -2.586,3 0.115,1.532 1.456,2.69 2.996,2.576 1.54,-0.111 2.698,-1.453 2.576,-2.992 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path41"
d="m 228.791,118.638 c -1.282,-0.857 -3.021,-0.527 -3.888,0.749 -0.857,1.282 -0.528,3.014 0.748,3.887 1.282,0.864 3.021,0.526 3.886,-0.749 0.866,-1.282 0.528,-3.019 -0.746,-3.887 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path43"
d="m 244.284,119.378 c -0.113,-1.548 -1.454,-2.703 -2.994,-2.585 -1.535,0.114 -2.698,1.456 -2.579,2.995 0.113,1.54 1.454,2.695 2.987,2.577 1.547,-0.111 2.698,-1.453 2.586,-2.987 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path45"
d="m 244.284,119.378 c -0.113,-1.548 -1.454,-2.703 -2.994,-2.585 -1.535,0.114 -2.698,1.456 -2.579,2.995 0.113,1.54 1.454,2.695 2.987,2.577 1.547,-0.111 2.698,-1.453 2.586,-2.987 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path47"
d="m 251.567,120.753 c -0.111,-1.54 -1.447,-2.699 -2.995,-2.584 -1.54,0.119 -2.69,1.454 -2.576,2.999 0.112,1.533 1.453,2.691 2.993,2.58 1.54,-0.115 2.69,-1.456 2.578,-2.995 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path49"
d="m 251.567,120.753 c -0.111,-1.54 -1.447,-2.699 -2.995,-2.584 -1.54,0.119 -2.69,1.452 -2.576,2.999 0.112,1.533 1.453,2.691 2.993,2.58 1.54,-0.115 2.69,-1.456 2.578,-2.995 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path51"
d="m 255.645,120.877 c 1.521,0.284 2.518,1.74 2.242,3.26 -0.285,1.519 -1.739,2.517 -3.26,2.239 -1.521,-0.284 -2.519,-1.737 -2.24,-3.259 0.284,-1.518 1.745,-2.517 3.258,-2.24 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path53"
d="m 240.216,140.03 c -1.276,-0.865 -3.016,-0.537 -3.88,0.746 -0.866,1.277 -0.538,3.014 0.746,3.88 1.282,0.867 3.013,0.53 3.88,-0.746 0.866,-1.276 0.529,-3.016 -0.746,-3.88 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path55"
d="m 248.446,143.145 c -0.111,-1.54 -1.452,-2.694 -2.992,-2.583 -1.541,0.117 -2.698,1.459 -2.584,2.994 0.112,1.54 1.453,2.695 2.993,2.584 1.54,-0.112 2.696,-1.453 2.583,-2.995 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path57"
d="m 248.446,143.145 c -0.111,-1.54 -1.452,-2.694 -2.992,-2.584 -1.541,0.119 -2.698,1.461 -2.584,2.996 0.112,1.54 1.453,2.695 2.993,2.584 1.54,-0.113 2.696,-1.454 2.583,-2.996 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path59"
d="m 229.154,134.489 c -1.275,-0.864 -3.018,-0.527 -3.88,0.749 -0.867,1.283 -0.529,3.014 0.745,3.88 1.282,0.871 3.012,0.534 3.881,-0.742 0.868,-1.283 0.534,-3.021 -0.746,-3.887 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path61"
d="m 236.296,132.867 c -1.277,-0.864 -3.014,-0.533 -3.881,0.749 -0.866,1.275 -0.527,3.015 0.748,3.88 1.279,0.864 3.021,0.527 3.885,-0.749 0.867,-1.276 0.529,-3.013 -0.752,-3.88 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path63"
d="m 251.567,136.602 c -0.111,-1.539 -1.447,-2.697 -2.995,-2.583 -1.533,0.117 -2.695,1.452 -2.576,2.992 0.112,1.542 1.453,2.697 2.993,2.586 1.54,-0.121 2.698,-1.456 2.578,-2.995 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path65"
d="m 251.567,136.602 c -0.111,-1.541 -1.447,-2.697 -2.995,-2.583 -1.533,0.117 -2.695,1.452 -2.576,2.992 0.112,1.542 1.453,2.697 2.993,2.586 1.54,-0.121 2.698,-1.456 2.578,-2.995 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path67"
d="m 243.808,147.482 c -1.282,-0.868 -3.014,-0.531 -3.881,0.745 -0.864,1.282 -0.535,3.02 0.748,3.886 1.275,0.861 3.014,0.53 3.88,-0.746 0.865,-1.281 0.527,-3.012 -0.747,-3.885 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path69"
d="m 243.808,147.482 c -1.282,-0.868 -3.014,-0.531 -3.881,0.745 -0.864,1.282 -0.535,3.02 0.748,3.886 1.275,0.861 3.014,0.53 3.88,-0.746 0.865,-1.281 0.527,-3.012 -0.747,-3.885 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path71"
d="m 236.887,147.482 c -1.274,-0.868 -3.014,-0.531 -3.879,0.745 -0.866,1.282 -0.535,3.02 0.746,3.886 1.275,0.861 3.014,0.53 3.881,-0.746 0.865,-1.281 0.528,-3.012 -0.748,-3.885 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path73"
d="m 236.887,147.482 c -1.274,-0.868 -3.014,-0.531 -3.879,0.745 -0.866,1.282 -0.535,3.02 0.746,3.886 1.275,0.861 3.014,0.53 3.881,-0.746 0.865,-1.281 0.528,-3.012 -0.748,-3.885 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path75"
d="m 232.399,125.857 c -1.281,-0.867 -3.021,-0.529 -3.887,0.745 -0.866,1.283 -0.528,3.016 0.747,3.887 1.282,0.859 3.015,0.53 3.886,-0.745 0.861,-1.284 0.53,-3.02 -0.746,-3.887 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path77"
d="m 241.034,127.336 c -0.11,-1.54 -1.451,-2.696 -2.991,-2.579 -1.54,0.114 -2.698,1.456 -2.587,2.995 0.114,1.534 1.456,2.69 2.995,2.577 1.546,-0.111 2.7,-1.453 2.583,-2.993 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path79"
d="m 221.422,121.313 c -1.276,-0.866 -3.015,-0.537 -3.88,0.745 -0.867,1.278 -0.529,3.015 0.746,3.88 1.282,0.868 3.015,0.537 3.88,-0.738 0.866,-1.282 0.535,-3.027 -0.746,-3.887 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path81"
d="m 244.284,119.378 c -0.113,-1.548 -1.454,-2.703 -2.994,-2.585 -1.535,0.114 -2.698,1.456 -2.579,2.995 0.113,1.54 1.454,2.695 2.987,2.577 1.547,-0.111 2.698,-1.453 2.586,-2.987 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path83"
d="m 237.039,119.377 c -0.112,-1.546 -1.454,-2.698 -2.993,-2.584 -1.533,0.112 -2.69,1.454 -2.579,2.992 0.112,1.541 1.455,2.692 2.996,2.58 1.539,-0.115 2.688,-1.456 2.576,-2.988 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path85"
d="m 251.567,120.753 c -0.111,-1.54 -1.447,-2.699 -2.995,-2.584 -1.54,0.119 -2.69,1.452 -2.576,2.999 0.112,1.533 1.453,2.691 2.993,2.58 1.54,-0.115 2.69,-1.456 2.578,-2.995 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path87"
d="m 231.97,140.602 c 1.519,0.282 2.523,1.745 2.239,3.257 -0.278,1.521 -1.736,2.525 -3.259,2.242 -1.512,-0.279 -2.518,-1.74 -2.241,-3.258 0.285,-1.523 1.745,-2.52 3.261,-2.241 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path89"
d="m 248.446,143.145 c -0.111,-1.54 -1.452,-2.694 -2.992,-2.584 -1.541,0.119 -2.698,1.461 -2.584,2.996 0.112,1.54 1.453,2.695 2.993,2.584 1.54,-0.113 2.696,-1.454 2.583,-2.996 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path91"
d="m 251.567,136.602 c -0.111,-1.541 -1.447,-2.697 -2.995,-2.583 -1.533,0.117 -2.695,1.452 -2.576,2.992 0.112,1.542 1.453,2.697 2.993,2.586 1.54,-0.121 2.698,-1.456 2.578,-2.995 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path93"
d="m 244.838,134.975 c -0.115,-1.54 -1.456,-2.695 -2.996,-2.583 -1.534,0.117 -2.698,1.459 -2.577,2.999 0.11,1.542 1.445,2.69 2.992,2.579 1.539,-0.113 2.691,-1.455 2.581,-2.995 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path95"
d="m 243.808,147.482 c -1.282,-0.868 -3.014,-0.531 -3.881,0.745 -0.864,1.282 -0.535,3.02 0.748,3.886 1.275,0.861 3.014,0.53 3.88,-0.746 0.865,-1.281 0.527,-3.012 -0.747,-3.885 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path97"
d="m 236.887,147.482 c -1.274,-0.868 -3.014,-0.531 -3.879,0.745 -0.866,1.282 -0.535,3.02 0.746,3.886 1.275,0.861 3.014,0.53 3.881,-0.746 0.865,-1.281 0.528,-3.012 -0.748,-3.885 z" />
</g>
<g
id="g99"
style="fill:#ffffff">
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path101"
d="m 196.938,156.803 c 1.044,-1.134 2.815,-1.213 3.955,-0.173 1.137,1.043 1.212,2.816 0.169,3.949 -1.04,1.143 -2.81,1.22 -3.949,0.173 -1.141,-1.04 -1.215,-2.808 -0.175,-3.949 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path103"
d="m 209.977,136.537 c -1.369,-0.725 -3.061,-0.2 -3.779,1.17 -0.718,1.367 -0.192,3.057 1.173,3.777 1.364,0.72 3.057,0.196 3.771,-1.173 0.719,-1.365 0.197,-3.055 -1.165,-3.774 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path105"
d="m 215.234,132.327 c -1.364,-0.722 -3.053,-0.204 -3.774,1.163 -0.714,1.369 -0.194,3.057 1.176,3.782 1.359,0.716 3.051,0.192 3.772,-1.174 0.719,-1.366 0.196,-3.057 -1.174,-3.771 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path107"
d="m 191.702,148.171 c -1.404,0.633 -2.047,2.282 -1.425,3.693 0.634,1.408 2.277,2.045 3.691,1.426 1.414,-0.63 2.049,-2.284 1.426,-3.693 -0.629,-1.412 -2.278,-2.049 -3.692,-1.426 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path109"
d="m 200.54,135.425 c -1.371,-0.726 -3.062,-0.2 -3.778,1.167 -0.718,1.363 -0.194,3.059 1.173,3.774 1.368,0.72 3.056,0.197 3.769,-1.168 0.725,-1.369 0.196,-3.054 -1.164,-3.773 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path111"
d="m 200.54,135.425 c -1.371,-0.726 -3.062,-0.2 -3.778,1.167 -0.718,1.363 -0.194,3.059 1.173,3.774 1.368,0.72 3.056,0.197 3.769,-1.168 0.725,-1.369 0.196,-3.054 -1.164,-3.773 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path113"
d="m 205.566,129.977 c -1.366,-0.72 -3.055,-0.201 -3.778,1.17 -0.716,1.368 -0.192,3.052 1.177,3.776 1.361,0.717 3.053,0.193 3.774,-1.171 0.719,-1.367 0.191,-3.055 -1.173,-3.775 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path115"
d="m 205.566,129.977 c -1.366,-0.72 -3.055,-0.201 -3.778,1.17 -0.716,1.368 -0.195,3.052 1.177,3.776 1.361,0.717 3.053,0.193 3.774,-1.171 0.719,-1.367 0.191,-3.055 -1.173,-3.775 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path117"
d="m 207.832,126.584 c 1.046,-1.138 2.81,-1.214 3.952,-0.173 1.138,1.046 1.214,2.809 0.172,3.951 -1.048,1.138 -2.807,1.214 -3.95,0.174 -1.137,-1.047 -1.212,-2.815 -0.174,-3.952 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path119"
d="m 215.898,149.818 c -1.412,0.624 -2.056,2.274 -1.424,3.685 0.623,1.413 2.271,2.054 3.686,1.424 1.414,-0.628 2.045,-2.275 1.423,-3.686 -0.622,-1.409 -2.277,-2.045 -3.685,-1.423 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path121"
d="m 222.901,144.488 c -1.364,-0.723 -3.055,-0.195 -3.777,1.171 -0.717,1.368 -0.192,3.059 1.17,3.777 1.367,0.721 3.057,0.195 3.78,-1.17 0.719,-1.364 0.195,-3.056 -1.173,-3.778 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path123"
d="m 222.901,144.488 c -1.364,-0.723 -3.055,-0.195 -3.778,1.169 -0.716,1.37 -0.191,3.061 1.171,3.779 1.367,0.721 3.057,0.195 3.78,-1.17 0.719,-1.364 0.195,-3.056 -1.173,-3.778 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path125"
d="m 205.336,156.264 c -1.407,0.623 -2.045,2.277 -1.421,3.686 0.629,1.414 2.278,2.045 3.687,1.423 1.419,-0.625 2.05,-2.271 1.428,-3.683 -0.63,-1.413 -2.279,-2.054 -3.694,-1.426 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path127"
d="m 207.746,149.348 c -1.409,0.624 -2.048,2.274 -1.422,3.687 0.622,1.411 2.278,2.045 3.688,1.422 1.411,-0.628 2.047,-2.283 1.422,-3.691 -0.621,-1.412 -2.273,-2.046 -3.688,-1.418 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path129"
d="m 219.005,138.374 c -1.363,-0.719 -3.054,-0.2 -3.776,1.171 -0.713,1.362 -0.197,3.057 1.173,3.771 1.366,0.722 3.057,0.197 3.779,-1.167 0.714,-1.371 0.194,-3.06 -1.176,-3.775 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path131"
d="m 219.005,138.374 c -1.363,-0.719 -3.054,-0.2 -3.776,1.171 -0.713,1.362 -0.197,3.057 1.173,3.771 1.366,0.722 3.057,0.197 3.779,-1.167 0.714,-1.371 0.194,-3.06 -1.176,-3.775 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path133"
d="m 224.12,150.721 c -1.414,0.627 -2.045,2.275 -1.423,3.687 0.629,1.412 2.277,2.053 3.691,1.425 1.407,-0.625 2.047,-2.275 1.425,-3.686 -0.628,-1.413 -2.274,-2.046 -3.693,-1.426 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path135"
d="m 224.12,150.721 c -1.414,0.627 -2.045,2.275 -1.423,3.687 0.629,1.412 2.277,2.053 3.691,1.425 1.407,-0.625 2.047,-2.275 1.425,-3.686 -0.628,-1.413 -2.274,-2.046 -3.693,-1.426 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path137"
d="m 220.454,156.59 c -1.412,0.622 -2.047,2.273 -1.424,3.684 0.628,1.414 2.278,2.054 3.691,1.427 1.405,-0.625 2.048,-2.276 1.423,-3.686 -0.627,-1.413 -2.274,-2.046 -3.69,-1.425 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path139"
d="m 220.454,156.59 c -1.412,0.622 -2.047,2.273 -1.424,3.684 0.628,1.414 2.278,2.054 3.691,1.427 1.405,-0.625 2.048,-2.276 1.423,-3.686 -0.627,-1.413 -2.274,-2.046 -3.69,-1.425 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path141"
d="m 199.739,148.936 c -1.418,0.628 -2.052,2.282 -1.429,3.689 0.628,1.415 2.276,2.049 3.692,1.428 1.407,-0.633 2.045,-2.273 1.427,-3.691 -0.633,-1.408 -2.28,-2.049 -3.69,-1.426 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path143"
d="m 205.567,142.396 c -1.363,-0.721 -3.056,-0.197 -3.773,1.171 -0.718,1.366 -0.194,3.058 1.171,3.78 1.361,0.715 3.053,0.191 3.772,-1.175 0.725,-1.368 0.199,-3.055 -1.17,-3.776 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path145"
d="m 190.066,155.839 c -1.412,0.623 -2.052,2.271 -1.425,3.684 0.624,1.411 2.276,2.046 3.686,1.424 1.416,-0.63 2.054,-2.272 1.431,-3.683 -0.628,-1.412 -2.284,-2.057 -3.692,-1.425 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path147"
d="m 200.54,135.425 c -1.371,-0.726 -3.062,-0.2 -3.778,1.167 -0.718,1.363 -0.194,3.059 1.173,3.774 1.368,0.72 3.056,0.197 3.769,-1.168 0.725,-1.369 0.196,-3.054 -1.164,-3.773 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path149"
d="m 196.699,141.568 c -1.37,-0.724 -3.058,-0.196 -3.778,1.169 -0.718,1.358 -0.192,3.052 1.173,3.771 1.366,0.722 3.054,0.194 3.775,-1.171 0.719,-1.368 0.192,-3.053 -1.17,-3.769 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path151"
d="m 205.566,129.977 c -1.366,-0.72 -3.055,-0.201 -3.778,1.17 -0.716,1.368 -0.195,3.052 1.177,3.776 1.361,0.717 3.053,0.193 3.774,-1.171 0.719,-1.367 0.191,-3.055 -1.173,-3.775 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path153"
d="m 212.012,157.114 c 1.046,-1.138 2.819,-1.215 3.95,-0.173 1.144,1.041 1.219,2.812 0.175,3.951 -1.037,1.135 -2.808,1.213 -3.951,0.174 -1.141,-1.047 -1.211,-2.816 -0.174,-3.952 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path155"
d="m 222.901,144.488 c -1.364,-0.723 -3.055,-0.195 -3.778,1.169 -0.716,1.37 -0.191,3.061 1.171,3.779 1.367,0.721 3.057,0.195 3.78,-1.17 0.719,-1.364 0.195,-3.056 -1.173,-3.778 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path157"
d="m 219.005,138.374 c -1.363,-0.719 -3.054,-0.2 -3.776,1.171 -0.713,1.362 -0.197,3.057 1.173,3.771 1.366,0.722 3.057,0.197 3.779,-1.167 0.714,-1.371 0.194,-3.06 -1.176,-3.775 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path159"
d="m 214.061,143.221 c -1.367,-0.719 -3.056,-0.193 -3.776,1.171 -0.715,1.363 -0.193,3.061 1.176,3.774 1.368,0.722 3.049,0.2 3.774,-1.172 0.719,-1.364 0.192,-3.051 -1.174,-3.773 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path161"
d="m 224.12,150.721 c -1.414,0.627 -2.045,2.275 -1.423,3.687 0.629,1.412 2.277,2.053 3.691,1.425 1.407,-0.625 2.047,-2.275 1.425,-3.686 -0.628,-1.413 -2.274,-2.046 -3.693,-1.426 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path163"
d="m 220.454,156.59 c -1.412,0.622 -2.047,2.273 -1.424,3.684 0.628,1.414 2.278,2.054 3.691,1.427 1.405,-0.625 2.048,-2.276 1.423,-3.686 -0.627,-1.413 -2.274,-2.046 -3.69,-1.425 z" />
</g>
<g
id="g165"
style="fill:#ffffff">
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path167"
d="m 278.788,156.803 c -1.044,-1.134 -2.816,-1.213 -3.953,-0.173 -1.136,1.043 -1.213,2.816 -0.172,3.949 1.041,1.143 2.809,1.22 3.95,0.173 1.142,-1.04 1.217,-2.808 0.175,-3.949 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path169"
d="m 265.747,136.537 c 1.371,-0.725 3.063,-0.2 3.78,1.17 0.722,1.367 0.196,3.057 -1.171,3.777 -1.366,0.72 -3.058,0.196 -3.772,-1.173 -0.72,-1.365 -0.194,-3.055 1.163,-3.774 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path171"
d="m 260.49,132.327 c 1.366,-0.722 3.057,-0.204 3.774,1.163 0.716,1.369 0.198,3.057 -1.175,3.782 -1.358,0.716 -3.053,0.192 -3.77,-1.174 -0.722,-1.366 -0.197,-3.057 1.171,-3.771 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path173"
d="m 284.023,148.171 c 1.407,0.633 2.047,2.282 1.423,3.693 -0.631,1.408 -2.274,2.045 -3.69,1.426 -1.412,-0.63 -2.048,-2.284 -1.426,-3.693 0.629,-1.412 2.281,-2.049 3.693,-1.426 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path175"
d="m 275.186,135.425 c 1.371,-0.726 3.064,-0.2 3.779,1.167 0.717,1.363 0.194,3.059 -1.176,3.774 -1.363,0.72 -3.055,0.197 -3.767,-1.168 -0.724,-1.369 -0.196,-3.054 1.164,-3.773 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path177"
d="m 275.186,135.425 c 1.371,-0.726 3.064,-0.2 3.779,1.167 0.717,1.363 0.194,3.059 -1.176,3.774 -1.363,0.72 -3.055,0.197 -3.767,-1.168 -0.724,-1.369 -0.196,-3.054 1.164,-3.773 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path179"
d="m 270.158,129.977 c 1.368,-0.72 3.058,-0.201 3.781,1.17 0.714,1.368 0.192,3.052 -1.179,3.776 -1.358,0.717 -3.055,0.193 -3.773,-1.171 -0.718,-1.367 -0.191,-3.055 1.171,-3.775 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path181"
d="m 270.158,129.977 c 1.368,-0.72 3.058,-0.201 3.781,1.17 0.714,1.368 0.192,3.052 -1.179,3.776 -1.358,0.717 -3.055,0.193 -3.773,-1.171 -0.718,-1.367 -0.191,-3.055 1.171,-3.775 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path183"
d="m 267.894,126.584 c -1.046,-1.138 -2.811,-1.214 -3.952,-0.173 -1.137,1.046 -1.213,2.809 -0.171,3.951 1.045,1.138 2.808,1.214 3.95,0.174 1.135,-1.047 1.211,-2.815 0.173,-3.952 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path185"
d="m 259.827,149.818 c 1.411,0.624 2.055,2.274 1.426,3.685 -0.625,1.413 -2.271,2.054 -3.687,1.424 -1.416,-0.628 -2.047,-2.275 -1.425,-3.686 0.624,-1.409 2.279,-2.045 3.686,-1.423 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path187"
d="m 252.823,144.488 c 1.365,-0.723 3.057,-0.195 3.779,1.171 0.715,1.368 0.189,3.059 -1.172,3.777 -1.365,0.721 -3.057,0.195 -3.778,-1.17 -0.719,-1.364 -0.194,-3.056 1.171,-3.778 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path189"
d="m 252.823,144.488 c 1.365,-0.723 3.057,-0.195 3.781,1.169 0.713,1.37 0.188,3.061 -1.174,3.779 -1.365,0.721 -3.057,0.195 -3.778,-1.17 -0.719,-1.364 -0.194,-3.056 1.171,-3.778 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path191"
d="m 270.387,156.264 c 1.413,0.623 2.046,2.277 1.422,3.686 -0.629,1.414 -2.274,2.045 -3.686,1.423 -1.417,-0.625 -2.048,-2.271 -1.426,-3.683 0.629,-1.413 2.279,-2.054 3.69,-1.426 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path193"
d="m 267.979,149.348 c 1.411,0.624 2.052,2.274 1.421,3.687 -0.622,1.411 -2.274,2.045 -3.685,1.422 -1.411,-0.628 -2.049,-2.283 -1.425,-3.691 0.625,-1.412 2.273,-2.046 3.689,-1.418 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path195"
d="m 256.719,138.374 c 1.364,-0.719 3.055,-0.2 3.777,1.171 0.715,1.362 0.198,3.057 -1.169,3.771 -1.369,0.722 -3.061,0.197 -3.781,-1.167 -0.714,-1.371 -0.196,-3.06 1.173,-3.775 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path197"
d="m 256.719,138.374 c 1.368,-0.719 3.055,-0.2 3.777,1.171 0.715,1.362 0.198,3.057 -1.169,3.771 -1.369,0.722 -3.061,0.197 -3.781,-1.167 -0.714,-1.371 -0.196,-3.06 1.173,-3.775 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path199"
d="m 251.605,150.721 c 1.416,0.627 2.047,2.275 1.422,3.687 -0.628,1.412 -2.276,2.053 -3.689,1.425 -1.405,-0.625 -2.047,-2.275 -1.428,-3.686 0.631,-1.413 2.279,-2.046 3.695,-1.426 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path201"
d="m 251.605,150.721 c 1.416,0.627 2.047,2.275 1.422,3.687 -0.628,1.412 -2.276,2.053 -3.689,1.425 -1.405,-0.625 -2.047,-2.275 -1.428,-3.686 0.631,-1.413 2.279,-2.046 3.695,-1.426 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path203"
d="m 255.272,156.59 c 1.411,0.622 2.045,2.273 1.423,3.684 -0.627,1.414 -2.278,2.054 -3.691,1.427 -1.405,-0.625 -2.049,-2.276 -1.424,-3.686 0.628,-1.413 2.277,-2.046 3.692,-1.425 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path205"
d="m 255.272,156.59 c 1.411,0.622 2.045,2.273 1.423,3.684 -0.627,1.414 -2.278,2.054 -3.691,1.427 -1.405,-0.625 -2.049,-2.276 -1.424,-3.686 0.628,-1.413 2.277,-2.046 3.692,-1.425 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path207"
d="m 275.989,148.936 c 1.414,0.628 2.048,2.282 1.427,3.689 -0.626,1.415 -2.276,2.049 -3.69,1.428 -1.407,-0.633 -2.047,-2.273 -1.428,-3.691 0.632,-1.408 2.28,-2.049 3.691,-1.426 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path209"
d="m 270.158,142.396 c 1.366,-0.721 3.058,-0.197 3.772,1.171 0.72,1.366 0.194,3.058 -1.17,3.78 -1.36,0.715 -3.051,0.191 -3.771,-1.175 -0.726,-1.368 -0.198,-3.055 1.169,-3.776 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path211"
d="m 285.66,155.839 c 1.41,0.623 2.052,2.271 1.424,3.684 -0.625,1.411 -2.276,2.046 -3.685,1.424 -1.418,-0.63 -2.053,-2.272 -1.432,-3.683 0.632,-1.412 2.284,-2.057 3.693,-1.425 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path213"
d="m 275.186,135.425 c 1.371,-0.726 3.064,-0.2 3.779,1.167 0.717,1.363 0.194,3.059 -1.176,3.774 -1.363,0.72 -3.055,0.197 -3.767,-1.168 -0.724,-1.369 -0.196,-3.054 1.164,-3.773 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path215"
d="m 279.025,141.568 c 1.372,-0.724 3.062,-0.196 3.778,1.169 0.717,1.358 0.194,3.052 -1.172,3.771 -1.365,0.722 -3.053,0.194 -3.773,-1.171 -0.719,-1.368 -0.19,-3.053 1.167,-3.769 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path217"
d="m 270.158,129.977 c 1.368,-0.72 3.058,-0.201 3.781,1.17 0.714,1.368 0.192,3.052 -1.179,3.776 -1.358,0.717 -3.055,0.193 -3.773,-1.171 -0.718,-1.367 -0.191,-3.055 1.171,-3.775 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path219"
d="m 263.713,157.114 c -1.045,-1.138 -2.817,-1.215 -3.949,-0.173 -1.143,1.041 -1.22,2.812 -0.175,3.951 1.039,1.135 2.811,1.213 3.951,0.174 1.14,-1.047 1.214,-2.816 0.173,-3.952 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path221"
d="m 252.823,144.488 c 1.365,-0.723 3.057,-0.195 3.781,1.169 0.713,1.37 0.188,3.061 -1.174,3.779 -1.365,0.721 -3.057,0.195 -3.778,-1.17 -0.719,-1.364 -0.194,-3.056 1.171,-3.778 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path223"
d="m 256.719,138.374 c 1.368,-0.719 3.055,-0.2 3.777,1.171 0.715,1.362 0.198,3.057 -1.169,3.771 -1.369,0.722 -3.061,0.197 -3.781,-1.167 -0.714,-1.371 -0.196,-3.06 1.173,-3.775 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path225"
d="m 261.667,143.221 c 1.363,-0.719 3.056,-0.193 3.777,1.171 0.71,1.363 0.19,3.061 -1.18,3.774 -1.366,0.722 -3.049,0.2 -3.773,-1.172 -0.719,-1.364 -0.189,-3.051 1.176,-3.773 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path227"
d="m 251.605,150.721 c 1.416,0.627 2.047,2.275 1.422,3.687 -0.628,1.412 -2.276,2.053 -3.689,1.425 -1.405,-0.625 -2.047,-2.275 -1.428,-3.686 0.631,-1.413 2.279,-2.046 3.695,-1.426 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path229"
d="m 255.272,156.59 c 1.411,0.622 2.045,2.273 1.423,3.684 -0.627,1.414 -2.278,2.054 -3.691,1.427 -1.405,-0.625 -2.049,-2.276 -1.424,-3.686 0.628,-1.413 2.277,-2.046 3.692,-1.425 z" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 29 KiB

View File

@ -0,0 +1,595 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:ns="http://opensource.org/licenses/MIT"
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"
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
version="1.1"
id="Ebene_3"
x="0px"
y="0px"
width="778.53003"
height="442.48001"
viewBox="0 0 778.52994 442.48"
enable-background="new 0 0 841.89 595.28"
xml:space="preserve"
inkscape:version="0.48.3.1 r9886"
sodipodi:docname="openslides-mark-transparent.svg"
inkscape:export-xdpi="20.83"
inkscape:export-ydpi="20.83"><metadata
id="metadata461"><rdf:RDF><ns:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title /><dc:creator><ns:Agent><dc:title>OpenSlides Team</dc:title></ns:Agent></dc:creator></ns:Work><cc:Work
rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
id="defs459">
<filter
id="filter5361"
inkscape:label="Drop Shadow"
color-interpolation-filters="sRGB"><feFlood
id="feFlood5363"
flood-opacity="0.8"
flood-color="rgb(0,0,0)"
result="flood" /><feComposite
id="feComposite5365"
in2="SourceGraphic"
in="flood"
operator="in"
result="composite1" /><feGaussianBlur
id="feGaussianBlur5367"
stdDeviation="15"
result="blur" /><feOffset
id="feOffset5369"
dx="0"
dy="4"
result="offset" /><feComposite
id="feComposite5371"
in2="offset"
in="SourceGraphic"
operator="over"
result="composite2" /></filter></defs><sodipodi:namedview
pagecolor="#ffffff"
bordercolor="#666666"
borderopacity="1"
objecttolerance="10"
gridtolerance="10"
guidetolerance="10"
inkscape:pageopacity="0"
inkscape:pageshadow="2"
inkscape:window-width="1052"
inkscape:window-height="838"
id="namedview457"
showgrid="false"
showguides="false"
inkscape:guide-bbox="true"
inkscape:zoom="0.25264438"
inkscape:cx="-635.64761"
inkscape:cy="138.12794"
inkscape:window-x="12"
inkscape:window-y="0"
inkscape:window-maximized="0"
inkscape:current-layer="Ebene_3"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
units="px"><sodipodi:guide
orientation="0,1"
position="-44.319014,-296.20428"
id="guide3558" /><sodipodi:guide
orientation="0,1"
position="-75.964446,-240.25969"
id="guide3560" /></sodipodi:namedview>
<g
id="g29"
transform="matrix(7.8699075,0,0,7.8699075,-1482.6921,-919.08484)"
style="fill:#ffffff"
inkscape:export-xdpi="300"
inkscape:export-ydpi="300">
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path31"
d="m 231.138,168.561 h 15.136 c 1.645,0 2.965,0.99 2.965,2.225 0,1.231 -1.32,2.223 -2.965,2.223 h -15.136 c -1.646,0 -2.969,-0.992 -2.969,-2.223 0,-1.235 1.322,-2.225 2.969,-2.225 z" />
<g
id="g33"
style="fill:#ffffff">
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path35"
d="m 224.244,127.652 c 1.516,0.284 2.521,1.745 2.243,3.26 -0.284,1.519 -1.747,2.523 -3.258,2.239 -1.522,-0.277 -2.526,-1.736 -2.241,-3.258 0.278,-1.519 1.739,-2.519 3.256,-2.241 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path37"
d="m 248.342,127.971 c -0.113,-1.547 -1.455,-2.703 -2.995,-2.586 -1.539,0.114 -2.695,1.456 -2.584,2.996 0.112,1.54 1.455,2.697 2.995,2.576 1.539,-0.111 2.696,-1.453 2.584,-2.986 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path39"
d="m 254.698,130.199 c -0.111,-1.541 -1.447,-2.698 -2.986,-2.584 -1.54,0.119 -2.696,1.454 -2.586,3 0.115,1.532 1.456,2.69 2.996,2.576 1.54,-0.111 2.698,-1.453 2.576,-2.992 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path41"
d="m 228.791,118.638 c -1.282,-0.857 -3.021,-0.527 -3.888,0.749 -0.857,1.282 -0.528,3.014 0.748,3.887 1.282,0.864 3.021,0.526 3.886,-0.749 0.866,-1.282 0.528,-3.019 -0.746,-3.887 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path43"
d="m 244.284,119.378 c -0.113,-1.548 -1.454,-2.703 -2.994,-2.585 -1.535,0.114 -2.698,1.456 -2.579,2.995 0.113,1.54 1.454,2.695 2.987,2.577 1.547,-0.111 2.698,-1.453 2.586,-2.987 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path45"
d="m 244.284,119.378 c -0.113,-1.548 -1.454,-2.703 -2.994,-2.585 -1.535,0.114 -2.698,1.456 -2.579,2.995 0.113,1.54 1.454,2.695 2.987,2.577 1.547,-0.111 2.698,-1.453 2.586,-2.987 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path47"
d="m 251.567,120.753 c -0.111,-1.54 -1.447,-2.699 -2.995,-2.584 -1.54,0.119 -2.69,1.454 -2.576,2.999 0.112,1.533 1.453,2.691 2.993,2.58 1.54,-0.115 2.69,-1.456 2.578,-2.995 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path49"
d="m 251.567,120.753 c -0.111,-1.54 -1.447,-2.699 -2.995,-2.584 -1.54,0.119 -2.69,1.452 -2.576,2.999 0.112,1.533 1.453,2.691 2.993,2.58 1.54,-0.115 2.69,-1.456 2.578,-2.995 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path51"
d="m 255.645,120.877 c 1.521,0.284 2.518,1.74 2.242,3.26 -0.285,1.519 -1.739,2.517 -3.26,2.239 -1.521,-0.284 -2.519,-1.737 -2.24,-3.259 0.284,-1.518 1.745,-2.517 3.258,-2.24 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path53"
d="m 240.216,140.03 c -1.276,-0.865 -3.016,-0.537 -3.88,0.746 -0.866,1.277 -0.538,3.014 0.746,3.88 1.282,0.867 3.013,0.53 3.88,-0.746 0.866,-1.276 0.529,-3.016 -0.746,-3.88 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path55"
d="m 248.446,143.145 c -0.111,-1.54 -1.452,-2.694 -2.992,-2.583 -1.541,0.117 -2.698,1.459 -2.584,2.994 0.112,1.54 1.453,2.695 2.993,2.584 1.54,-0.112 2.696,-1.453 2.583,-2.995 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path57"
d="m 248.446,143.145 c -0.111,-1.54 -1.452,-2.694 -2.992,-2.584 -1.541,0.119 -2.698,1.461 -2.584,2.996 0.112,1.54 1.453,2.695 2.993,2.584 1.54,-0.113 2.696,-1.454 2.583,-2.996 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path59"
d="m 229.154,134.489 c -1.275,-0.864 -3.018,-0.527 -3.88,0.749 -0.867,1.283 -0.529,3.014 0.745,3.88 1.282,0.871 3.012,0.534 3.881,-0.742 0.868,-1.283 0.534,-3.021 -0.746,-3.887 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path61"
d="m 236.296,132.867 c -1.277,-0.864 -3.014,-0.533 -3.881,0.749 -0.866,1.275 -0.527,3.015 0.748,3.88 1.279,0.864 3.021,0.527 3.885,-0.749 0.867,-1.276 0.529,-3.013 -0.752,-3.88 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path63"
d="m 251.567,136.602 c -0.111,-1.539 -1.447,-2.697 -2.995,-2.583 -1.533,0.117 -2.695,1.452 -2.576,2.992 0.112,1.542 1.453,2.697 2.993,2.586 1.54,-0.121 2.698,-1.456 2.578,-2.995 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path65"
d="m 251.567,136.602 c -0.111,-1.541 -1.447,-2.697 -2.995,-2.583 -1.533,0.117 -2.695,1.452 -2.576,2.992 0.112,1.542 1.453,2.697 2.993,2.586 1.54,-0.121 2.698,-1.456 2.578,-2.995 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path67"
d="m 243.808,147.482 c -1.282,-0.868 -3.014,-0.531 -3.881,0.745 -0.864,1.282 -0.535,3.02 0.748,3.886 1.275,0.861 3.014,0.53 3.88,-0.746 0.865,-1.281 0.527,-3.012 -0.747,-3.885 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path69"
d="m 243.808,147.482 c -1.282,-0.868 -3.014,-0.531 -3.881,0.745 -0.864,1.282 -0.535,3.02 0.748,3.886 1.275,0.861 3.014,0.53 3.88,-0.746 0.865,-1.281 0.527,-3.012 -0.747,-3.885 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path71"
d="m 236.887,147.482 c -1.274,-0.868 -3.014,-0.531 -3.879,0.745 -0.866,1.282 -0.535,3.02 0.746,3.886 1.275,0.861 3.014,0.53 3.881,-0.746 0.865,-1.281 0.528,-3.012 -0.748,-3.885 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path73"
d="m 236.887,147.482 c -1.274,-0.868 -3.014,-0.531 -3.879,0.745 -0.866,1.282 -0.535,3.02 0.746,3.886 1.275,0.861 3.014,0.53 3.881,-0.746 0.865,-1.281 0.528,-3.012 -0.748,-3.885 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path75"
d="m 232.399,125.857 c -1.281,-0.867 -3.021,-0.529 -3.887,0.745 -0.866,1.283 -0.528,3.016 0.747,3.887 1.282,0.859 3.015,0.53 3.886,-0.745 0.861,-1.284 0.53,-3.02 -0.746,-3.887 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path77"
d="m 241.034,127.336 c -0.11,-1.54 -1.451,-2.696 -2.991,-2.579 -1.54,0.114 -2.698,1.456 -2.587,2.995 0.114,1.534 1.456,2.69 2.995,2.577 1.546,-0.111 2.7,-1.453 2.583,-2.993 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path79"
d="m 221.422,121.313 c -1.276,-0.866 -3.015,-0.537 -3.88,0.745 -0.867,1.278 -0.529,3.015 0.746,3.88 1.282,0.868 3.015,0.537 3.88,-0.738 0.866,-1.282 0.535,-3.027 -0.746,-3.887 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path81"
d="m 244.284,119.378 c -0.113,-1.548 -1.454,-2.703 -2.994,-2.585 -1.535,0.114 -2.698,1.456 -2.579,2.995 0.113,1.54 1.454,2.695 2.987,2.577 1.547,-0.111 2.698,-1.453 2.586,-2.987 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path83"
d="m 237.039,119.377 c -0.112,-1.546 -1.454,-2.698 -2.993,-2.584 -1.533,0.112 -2.69,1.454 -2.579,2.992 0.112,1.541 1.455,2.692 2.996,2.58 1.539,-0.115 2.688,-1.456 2.576,-2.988 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path85"
d="m 251.567,120.753 c -0.111,-1.54 -1.447,-2.699 -2.995,-2.584 -1.54,0.119 -2.69,1.452 -2.576,2.999 0.112,1.533 1.453,2.691 2.993,2.58 1.54,-0.115 2.69,-1.456 2.578,-2.995 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path87"
d="m 231.97,140.602 c 1.519,0.282 2.523,1.745 2.239,3.257 -0.278,1.521 -1.736,2.525 -3.259,2.242 -1.512,-0.279 -2.518,-1.74 -2.241,-3.258 0.285,-1.523 1.745,-2.52 3.261,-2.241 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path89"
d="m 248.446,143.145 c -0.111,-1.54 -1.452,-2.694 -2.992,-2.584 -1.541,0.119 -2.698,1.461 -2.584,2.996 0.112,1.54 1.453,2.695 2.993,2.584 1.54,-0.113 2.696,-1.454 2.583,-2.996 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path91"
d="m 251.567,136.602 c -0.111,-1.541 -1.447,-2.697 -2.995,-2.583 -1.533,0.117 -2.695,1.452 -2.576,2.992 0.112,1.542 1.453,2.697 2.993,2.586 1.54,-0.121 2.698,-1.456 2.578,-2.995 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path93"
d="m 244.838,134.975 c -0.115,-1.54 -1.456,-2.695 -2.996,-2.583 -1.534,0.117 -2.698,1.459 -2.577,2.999 0.11,1.542 1.445,2.69 2.992,2.579 1.539,-0.113 2.691,-1.455 2.581,-2.995 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path95"
d="m 243.808,147.482 c -1.282,-0.868 -3.014,-0.531 -3.881,0.745 -0.864,1.282 -0.535,3.02 0.748,3.886 1.275,0.861 3.014,0.53 3.88,-0.746 0.865,-1.281 0.527,-3.012 -0.747,-3.885 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path97"
d="m 236.887,147.482 c -1.274,-0.868 -3.014,-0.531 -3.879,0.745 -0.866,1.282 -0.535,3.02 0.746,3.886 1.275,0.861 3.014,0.53 3.881,-0.746 0.865,-1.281 0.528,-3.012 -0.748,-3.885 z" />
</g>
<g
id="g99"
style="fill:#ffffff">
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path101"
d="m 196.938,156.803 c 1.044,-1.134 2.815,-1.213 3.955,-0.173 1.137,1.043 1.212,2.816 0.169,3.949 -1.04,1.143 -2.81,1.22 -3.949,0.173 -1.141,-1.04 -1.215,-2.808 -0.175,-3.949 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path103"
d="m 209.977,136.537 c -1.369,-0.725 -3.061,-0.2 -3.779,1.17 -0.718,1.367 -0.192,3.057 1.173,3.777 1.364,0.72 3.057,0.196 3.771,-1.173 0.719,-1.365 0.197,-3.055 -1.165,-3.774 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path105"
d="m 215.234,132.327 c -1.364,-0.722 -3.053,-0.204 -3.774,1.163 -0.714,1.369 -0.194,3.057 1.176,3.782 1.359,0.716 3.051,0.192 3.772,-1.174 0.719,-1.366 0.196,-3.057 -1.174,-3.771 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path107"
d="m 191.702,148.171 c -1.404,0.633 -2.047,2.282 -1.425,3.693 0.634,1.408 2.277,2.045 3.691,1.426 1.414,-0.63 2.049,-2.284 1.426,-3.693 -0.629,-1.412 -2.278,-2.049 -3.692,-1.426 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path109"
d="m 200.54,135.425 c -1.371,-0.726 -3.062,-0.2 -3.778,1.167 -0.718,1.363 -0.194,3.059 1.173,3.774 1.368,0.72 3.056,0.197 3.769,-1.168 0.725,-1.369 0.196,-3.054 -1.164,-3.773 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path111"
d="m 200.54,135.425 c -1.371,-0.726 -3.062,-0.2 -3.778,1.167 -0.718,1.363 -0.194,3.059 1.173,3.774 1.368,0.72 3.056,0.197 3.769,-1.168 0.725,-1.369 0.196,-3.054 -1.164,-3.773 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path113"
d="m 205.566,129.977 c -1.366,-0.72 -3.055,-0.201 -3.778,1.17 -0.716,1.368 -0.192,3.052 1.177,3.776 1.361,0.717 3.053,0.193 3.774,-1.171 0.719,-1.367 0.191,-3.055 -1.173,-3.775 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path115"
d="m 205.566,129.977 c -1.366,-0.72 -3.055,-0.201 -3.778,1.17 -0.716,1.368 -0.195,3.052 1.177,3.776 1.361,0.717 3.053,0.193 3.774,-1.171 0.719,-1.367 0.191,-3.055 -1.173,-3.775 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path117"
d="m 207.832,126.584 c 1.046,-1.138 2.81,-1.214 3.952,-0.173 1.138,1.046 1.214,2.809 0.172,3.951 -1.048,1.138 -2.807,1.214 -3.95,0.174 -1.137,-1.047 -1.212,-2.815 -0.174,-3.952 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path119"
d="m 215.898,149.818 c -1.412,0.624 -2.056,2.274 -1.424,3.685 0.623,1.413 2.271,2.054 3.686,1.424 1.414,-0.628 2.045,-2.275 1.423,-3.686 -0.622,-1.409 -2.277,-2.045 -3.685,-1.423 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path121"
d="m 222.901,144.488 c -1.364,-0.723 -3.055,-0.195 -3.777,1.171 -0.717,1.368 -0.192,3.059 1.17,3.777 1.367,0.721 3.057,0.195 3.78,-1.17 0.719,-1.364 0.195,-3.056 -1.173,-3.778 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path123"
d="m 222.901,144.488 c -1.364,-0.723 -3.055,-0.195 -3.778,1.169 -0.716,1.37 -0.191,3.061 1.171,3.779 1.367,0.721 3.057,0.195 3.78,-1.17 0.719,-1.364 0.195,-3.056 -1.173,-3.778 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path125"
d="m 205.336,156.264 c -1.407,0.623 -2.045,2.277 -1.421,3.686 0.629,1.414 2.278,2.045 3.687,1.423 1.419,-0.625 2.05,-2.271 1.428,-3.683 -0.63,-1.413 -2.279,-2.054 -3.694,-1.426 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path127"
d="m 207.746,149.348 c -1.409,0.624 -2.048,2.274 -1.422,3.687 0.622,1.411 2.278,2.045 3.688,1.422 1.411,-0.628 2.047,-2.283 1.422,-3.691 -0.621,-1.412 -2.273,-2.046 -3.688,-1.418 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path129"
d="m 219.005,138.374 c -1.363,-0.719 -3.054,-0.2 -3.776,1.171 -0.713,1.362 -0.197,3.057 1.173,3.771 1.366,0.722 3.057,0.197 3.779,-1.167 0.714,-1.371 0.194,-3.06 -1.176,-3.775 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path131"
d="m 219.005,138.374 c -1.363,-0.719 -3.054,-0.2 -3.776,1.171 -0.713,1.362 -0.197,3.057 1.173,3.771 1.366,0.722 3.057,0.197 3.779,-1.167 0.714,-1.371 0.194,-3.06 -1.176,-3.775 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path133"
d="m 224.12,150.721 c -1.414,0.627 -2.045,2.275 -1.423,3.687 0.629,1.412 2.277,2.053 3.691,1.425 1.407,-0.625 2.047,-2.275 1.425,-3.686 -0.628,-1.413 -2.274,-2.046 -3.693,-1.426 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path135"
d="m 224.12,150.721 c -1.414,0.627 -2.045,2.275 -1.423,3.687 0.629,1.412 2.277,2.053 3.691,1.425 1.407,-0.625 2.047,-2.275 1.425,-3.686 -0.628,-1.413 -2.274,-2.046 -3.693,-1.426 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path137"
d="m 220.454,156.59 c -1.412,0.622 -2.047,2.273 -1.424,3.684 0.628,1.414 2.278,2.054 3.691,1.427 1.405,-0.625 2.048,-2.276 1.423,-3.686 -0.627,-1.413 -2.274,-2.046 -3.69,-1.425 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path139"
d="m 220.454,156.59 c -1.412,0.622 -2.047,2.273 -1.424,3.684 0.628,1.414 2.278,2.054 3.691,1.427 1.405,-0.625 2.048,-2.276 1.423,-3.686 -0.627,-1.413 -2.274,-2.046 -3.69,-1.425 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path141"
d="m 199.739,148.936 c -1.418,0.628 -2.052,2.282 -1.429,3.689 0.628,1.415 2.276,2.049 3.692,1.428 1.407,-0.633 2.045,-2.273 1.427,-3.691 -0.633,-1.408 -2.28,-2.049 -3.69,-1.426 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path143"
d="m 205.567,142.396 c -1.363,-0.721 -3.056,-0.197 -3.773,1.171 -0.718,1.366 -0.194,3.058 1.171,3.78 1.361,0.715 3.053,0.191 3.772,-1.175 0.725,-1.368 0.199,-3.055 -1.17,-3.776 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path145"
d="m 190.066,155.839 c -1.412,0.623 -2.052,2.271 -1.425,3.684 0.624,1.411 2.276,2.046 3.686,1.424 1.416,-0.63 2.054,-2.272 1.431,-3.683 -0.628,-1.412 -2.284,-2.057 -3.692,-1.425 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path147"
d="m 200.54,135.425 c -1.371,-0.726 -3.062,-0.2 -3.778,1.167 -0.718,1.363 -0.194,3.059 1.173,3.774 1.368,0.72 3.056,0.197 3.769,-1.168 0.725,-1.369 0.196,-3.054 -1.164,-3.773 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path149"
d="m 196.699,141.568 c -1.37,-0.724 -3.058,-0.196 -3.778,1.169 -0.718,1.358 -0.192,3.052 1.173,3.771 1.366,0.722 3.054,0.194 3.775,-1.171 0.719,-1.368 0.192,-3.053 -1.17,-3.769 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path151"
d="m 205.566,129.977 c -1.366,-0.72 -3.055,-0.201 -3.778,1.17 -0.716,1.368 -0.195,3.052 1.177,3.776 1.361,0.717 3.053,0.193 3.774,-1.171 0.719,-1.367 0.191,-3.055 -1.173,-3.775 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path153"
d="m 212.012,157.114 c 1.046,-1.138 2.819,-1.215 3.95,-0.173 1.144,1.041 1.219,2.812 0.175,3.951 -1.037,1.135 -2.808,1.213 -3.951,0.174 -1.141,-1.047 -1.211,-2.816 -0.174,-3.952 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path155"
d="m 222.901,144.488 c -1.364,-0.723 -3.055,-0.195 -3.778,1.169 -0.716,1.37 -0.191,3.061 1.171,3.779 1.367,0.721 3.057,0.195 3.78,-1.17 0.719,-1.364 0.195,-3.056 -1.173,-3.778 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path157"
d="m 219.005,138.374 c -1.363,-0.719 -3.054,-0.2 -3.776,1.171 -0.713,1.362 -0.197,3.057 1.173,3.771 1.366,0.722 3.057,0.197 3.779,-1.167 0.714,-1.371 0.194,-3.06 -1.176,-3.775 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path159"
d="m 214.061,143.221 c -1.367,-0.719 -3.056,-0.193 -3.776,1.171 -0.715,1.363 -0.193,3.061 1.176,3.774 1.368,0.722 3.049,0.2 3.774,-1.172 0.719,-1.364 0.192,-3.051 -1.174,-3.773 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path161"
d="m 224.12,150.721 c -1.414,0.627 -2.045,2.275 -1.423,3.687 0.629,1.412 2.277,2.053 3.691,1.425 1.407,-0.625 2.047,-2.275 1.425,-3.686 -0.628,-1.413 -2.274,-2.046 -3.693,-1.426 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path163"
d="m 220.454,156.59 c -1.412,0.622 -2.047,2.273 -1.424,3.684 0.628,1.414 2.278,2.054 3.691,1.427 1.405,-0.625 2.048,-2.276 1.423,-3.686 -0.627,-1.413 -2.274,-2.046 -3.69,-1.425 z" />
</g>
<g
id="g165"
style="fill:#ffffff">
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path167"
d="m 278.788,156.803 c -1.044,-1.134 -2.816,-1.213 -3.953,-0.173 -1.136,1.043 -1.213,2.816 -0.172,3.949 1.041,1.143 2.809,1.22 3.95,0.173 1.142,-1.04 1.217,-2.808 0.175,-3.949 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path169"
d="m 265.747,136.537 c 1.371,-0.725 3.063,-0.2 3.78,1.17 0.722,1.367 0.196,3.057 -1.171,3.777 -1.366,0.72 -3.058,0.196 -3.772,-1.173 -0.72,-1.365 -0.194,-3.055 1.163,-3.774 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path171"
d="m 260.49,132.327 c 1.366,-0.722 3.057,-0.204 3.774,1.163 0.716,1.369 0.198,3.057 -1.175,3.782 -1.358,0.716 -3.053,0.192 -3.77,-1.174 -0.722,-1.366 -0.197,-3.057 1.171,-3.771 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path173"
d="m 284.023,148.171 c 1.407,0.633 2.047,2.282 1.423,3.693 -0.631,1.408 -2.274,2.045 -3.69,1.426 -1.412,-0.63 -2.048,-2.284 -1.426,-3.693 0.629,-1.412 2.281,-2.049 3.693,-1.426 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path175"
d="m 275.186,135.425 c 1.371,-0.726 3.064,-0.2 3.779,1.167 0.717,1.363 0.194,3.059 -1.176,3.774 -1.363,0.72 -3.055,0.197 -3.767,-1.168 -0.724,-1.369 -0.196,-3.054 1.164,-3.773 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path177"
d="m 275.186,135.425 c 1.371,-0.726 3.064,-0.2 3.779,1.167 0.717,1.363 0.194,3.059 -1.176,3.774 -1.363,0.72 -3.055,0.197 -3.767,-1.168 -0.724,-1.369 -0.196,-3.054 1.164,-3.773 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path179"
d="m 270.158,129.977 c 1.368,-0.72 3.058,-0.201 3.781,1.17 0.714,1.368 0.192,3.052 -1.179,3.776 -1.358,0.717 -3.055,0.193 -3.773,-1.171 -0.718,-1.367 -0.191,-3.055 1.171,-3.775 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path181"
d="m 270.158,129.977 c 1.368,-0.72 3.058,-0.201 3.781,1.17 0.714,1.368 0.192,3.052 -1.179,3.776 -1.358,0.717 -3.055,0.193 -3.773,-1.171 -0.718,-1.367 -0.191,-3.055 1.171,-3.775 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path183"
d="m 267.894,126.584 c -1.046,-1.138 -2.811,-1.214 -3.952,-0.173 -1.137,1.046 -1.213,2.809 -0.171,3.951 1.045,1.138 2.808,1.214 3.95,0.174 1.135,-1.047 1.211,-2.815 0.173,-3.952 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path185"
d="m 259.827,149.818 c 1.411,0.624 2.055,2.274 1.426,3.685 -0.625,1.413 -2.271,2.054 -3.687,1.424 -1.416,-0.628 -2.047,-2.275 -1.425,-3.686 0.624,-1.409 2.279,-2.045 3.686,-1.423 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path187"
d="m 252.823,144.488 c 1.365,-0.723 3.057,-0.195 3.779,1.171 0.715,1.368 0.189,3.059 -1.172,3.777 -1.365,0.721 -3.057,0.195 -3.778,-1.17 -0.719,-1.364 -0.194,-3.056 1.171,-3.778 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path189"
d="m 252.823,144.488 c 1.365,-0.723 3.057,-0.195 3.781,1.169 0.713,1.37 0.188,3.061 -1.174,3.779 -1.365,0.721 -3.057,0.195 -3.778,-1.17 -0.719,-1.364 -0.194,-3.056 1.171,-3.778 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path191"
d="m 270.387,156.264 c 1.413,0.623 2.046,2.277 1.422,3.686 -0.629,1.414 -2.274,2.045 -3.686,1.423 -1.417,-0.625 -2.048,-2.271 -1.426,-3.683 0.629,-1.413 2.279,-2.054 3.69,-1.426 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path193"
d="m 267.979,149.348 c 1.411,0.624 2.052,2.274 1.421,3.687 -0.622,1.411 -2.274,2.045 -3.685,1.422 -1.411,-0.628 -2.049,-2.283 -1.425,-3.691 0.625,-1.412 2.273,-2.046 3.689,-1.418 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path195"
d="m 256.719,138.374 c 1.364,-0.719 3.055,-0.2 3.777,1.171 0.715,1.362 0.198,3.057 -1.169,3.771 -1.369,0.722 -3.061,0.197 -3.781,-1.167 -0.714,-1.371 -0.196,-3.06 1.173,-3.775 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path197"
d="m 256.719,138.374 c 1.368,-0.719 3.055,-0.2 3.777,1.171 0.715,1.362 0.198,3.057 -1.169,3.771 -1.369,0.722 -3.061,0.197 -3.781,-1.167 -0.714,-1.371 -0.196,-3.06 1.173,-3.775 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path199"
d="m 251.605,150.721 c 1.416,0.627 2.047,2.275 1.422,3.687 -0.628,1.412 -2.276,2.053 -3.689,1.425 -1.405,-0.625 -2.047,-2.275 -1.428,-3.686 0.631,-1.413 2.279,-2.046 3.695,-1.426 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path201"
d="m 251.605,150.721 c 1.416,0.627 2.047,2.275 1.422,3.687 -0.628,1.412 -2.276,2.053 -3.689,1.425 -1.405,-0.625 -2.047,-2.275 -1.428,-3.686 0.631,-1.413 2.279,-2.046 3.695,-1.426 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path203"
d="m 255.272,156.59 c 1.411,0.622 2.045,2.273 1.423,3.684 -0.627,1.414 -2.278,2.054 -3.691,1.427 -1.405,-0.625 -2.049,-2.276 -1.424,-3.686 0.628,-1.413 2.277,-2.046 3.692,-1.425 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path205"
d="m 255.272,156.59 c 1.411,0.622 2.045,2.273 1.423,3.684 -0.627,1.414 -2.278,2.054 -3.691,1.427 -1.405,-0.625 -2.049,-2.276 -1.424,-3.686 0.628,-1.413 2.277,-2.046 3.692,-1.425 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path207"
d="m 275.989,148.936 c 1.414,0.628 2.048,2.282 1.427,3.689 -0.626,1.415 -2.276,2.049 -3.69,1.428 -1.407,-0.633 -2.047,-2.273 -1.428,-3.691 0.632,-1.408 2.28,-2.049 3.691,-1.426 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path209"
d="m 270.158,142.396 c 1.366,-0.721 3.058,-0.197 3.772,1.171 0.72,1.366 0.194,3.058 -1.17,3.78 -1.36,0.715 -3.051,0.191 -3.771,-1.175 -0.726,-1.368 -0.198,-3.055 1.169,-3.776 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path211"
d="m 285.66,155.839 c 1.41,0.623 2.052,2.271 1.424,3.684 -0.625,1.411 -2.276,2.046 -3.685,1.424 -1.418,-0.63 -2.053,-2.272 -1.432,-3.683 0.632,-1.412 2.284,-2.057 3.693,-1.425 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path213"
d="m 275.186,135.425 c 1.371,-0.726 3.064,-0.2 3.779,1.167 0.717,1.363 0.194,3.059 -1.176,3.774 -1.363,0.72 -3.055,0.197 -3.767,-1.168 -0.724,-1.369 -0.196,-3.054 1.164,-3.773 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path215"
d="m 279.025,141.568 c 1.372,-0.724 3.062,-0.196 3.778,1.169 0.717,1.358 0.194,3.052 -1.172,3.771 -1.365,0.722 -3.053,0.194 -3.773,-1.171 -0.719,-1.368 -0.19,-3.053 1.167,-3.769 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path217"
d="m 270.158,129.977 c 1.368,-0.72 3.058,-0.201 3.781,1.17 0.714,1.368 0.192,3.052 -1.179,3.776 -1.358,0.717 -3.055,0.193 -3.773,-1.171 -0.718,-1.367 -0.191,-3.055 1.171,-3.775 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path219"
d="m 263.713,157.114 c -1.045,-1.138 -2.817,-1.215 -3.949,-0.173 -1.143,1.041 -1.22,2.812 -0.175,3.951 1.039,1.135 2.811,1.213 3.951,0.174 1.14,-1.047 1.214,-2.816 0.173,-3.952 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path221"
d="m 252.823,144.488 c 1.365,-0.723 3.057,-0.195 3.781,1.169 0.713,1.37 0.188,3.061 -1.174,3.779 -1.365,0.721 -3.057,0.195 -3.778,-1.17 -0.719,-1.364 -0.194,-3.056 1.171,-3.778 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path223"
d="m 256.719,138.374 c 1.368,-0.719 3.055,-0.2 3.777,1.171 0.715,1.362 0.198,3.057 -1.169,3.771 -1.369,0.722 -3.061,0.197 -3.781,-1.167 -0.714,-1.371 -0.196,-3.06 1.173,-3.775 z" />
<path
style="fill:#ffffff"
inkscape:connector-curvature="0"
id="path225"
d="m 261.667,143.221 c 1.363,-0.719 3.056,-0.193 3.777,1.171 0.71,1.363 0.19,3.061 -1.18,3.774 -1.366,0.722 -3.049,0.2 -3.773,-1.172 -0.719,-1.364 -0.189,-3.051 1.176,-3.773 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path227"
d="m 251.605,150.721 c 1.416,0.627 2.047,2.275 1.422,3.687 -0.628,1.412 -2.276,2.053 -3.689,1.425 -1.405,-0.625 -2.047,-2.275 -1.428,-3.686 0.631,-1.413 2.279,-2.046 3.695,-1.426 z" />
<path
style="opacity:0.9387;fill:#ffffff"
inkscape:connector-curvature="0"
id="path229"
d="m 255.272,156.59 c 1.411,0.622 2.045,2.273 1.423,3.684 -0.627,1.414 -2.278,2.054 -3.691,1.427 -1.405,-0.625 -2.049,-2.276 -1.424,-3.686 0.628,-1.413 2.277,-2.046 3.692,-1.425 z" />
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 29 KiB

13
make/README.rst Normal file
View File

@ -0,0 +1,13 @@
==================================
Commands for OpenSlides developers
==================================
In here are scripts that are useful for OpenSlides development.
To call a command run:
$ python make COMMAND
To see a list of all commands run:
$ python make --help

13
make/__main__.py Normal file
View File

@ -0,0 +1,13 @@
import sys
import commands # noqa
from parser import parser
if len(sys.argv) < 2:
args = parser.parse_args(['--help'])
else:
args = parser.parse_args()
# Runs the command end exits the script with the return-code of the command
exit(args.func(args))

123
make/commands.py Normal file
View File

@ -0,0 +1,123 @@
import re
from parser import command, argument, call
FAIL = '\033[91m'
SUCCESS = '\033[92m'
RESET = '\033[0m'
@argument('module', nargs='?', default='')
@command('test', help='runs the tests')
def test(args=None):
"""
Runs the tests.
"""
module = getattr(args, 'module', '')
if module == '':
module = 'tests'
else:
module = 'tests.{}'.format(module)
return call("DJANGO_SETTINGS_MODULE='tests.settings' coverage run "
"./manage.py test {}".format(module))
@argument('--plain', action='store_true')
@command('coverage', help='Runs all tests and builds the coverage html files')
def coverage(args=None, plain=None):
"""
Runs the tests and creates a coverage report.
By default it creates a html report. With the argument --plain, it creates
a plain report and fails under a certain amount of untested lines.
"""
if plain is None:
plain = getattr(args, 'plain', False)
if plain:
return call('coverage report -m --fail-under=80')
else:
return call('coverage html')
@command('check', help='Checks for pep8 errors in openslides and tests')
def check(args=None):
"""
Checks for pep8 and other code styling conventions.
"""
return call('flake8 --max-line-length=150 --statistics openslides tests')
@command('travis', help='Runs the code that travis does')
def travis(args=None):
"""
Runs all commands that travis tests.
"""
return_codes = []
with open('.travis.yml') as f:
script_lines = False
for line in (line.strip() for line in f.readlines()):
if line == 'script:':
script_lines = True
continue
if not script_lines or not line:
continue
match = re.search(r'"(.*)"', line)
print('Run: %s' % match.group(1))
return_code = call(match.group(1))
return_codes.append(return_code)
if return_code:
print(FAIL + 'fail!\n' + RESET)
else:
print(SUCCESS + 'success!\n' + RESET)
# Retuns True if one command exited with a different statuscode then 1
return bool(list(filter(bool, return_codes)))
@argument('-r', '--requirements', nargs='?',
default='requirements_production.txt')
@command('min_requirements',
help='Prints a pip line to install the minimum supported versions of '
'the requirements.')
def min_requirements(args=None):
"""
Prints a pip install command to install the minimal supported versions of a
requirement file.
Uses requirements_production.txt by default.
The following line will install the version:
pip install $(python make min_requirements)
"""
import pip
def get_lowest_versions(requirements_file):
for line in pip.req.parse_requirements(requirements_file, session=pip.download.PipSession()):
for specifier in line.req.specifier:
if specifier.operator == '>=':
min_version = specifier.version
break
else:
raise ValueError('Not supported line {}'.format(line))
yield '%s==%s' % (line.req.name, min_version)
print(' '.join(get_lowest_versions(args.requirements)))
@command('clear',
help='Deletes unneeded files and folders')
def clean(args=None):
"""
Deletes all .pyc and .orig files and empty folders.
"""
call('find -name "*.pyc" -delete')
call('find -name "*.orig" -delete')
call('find -type d -empty -delete')
@command('isort',
help='Sorts all imports in all python files.')
def isort(args=None):
return call('isort --recursive openslides tests')

49
make/parser.py Normal file
View File

@ -0,0 +1,49 @@
from argparse import ArgumentParser
from subprocess import call as _call
parser = ArgumentParser(description='Development scripts for OpenSlides')
subparsers = parser.add_subparsers()
def command(*args, **kwargs):
"""
Decorator to create a argparse command.
The arguments to this decorator are used as arguments for the argparse
command.
"""
class decorator:
def __init__(self, func):
self.parser = subparsers.add_parser(*args, **kwargs)
self.parser.set_defaults(func=func)
self.func = func
def __call__(self, *args, **kwargs):
return self.func(*args, **kwargs)
return decorator
def argument(*args, **kwargs):
"""
Decorator to create arguments for argparse commands.
The arguments to this decorator are used as arguments for the argparse
argument.
Does only work if the decorated function was decorated with the
command-decorator before.
"""
def decorator(func):
func.parser.add_argument(*args, **kwargs)
def wrapper(*func_args, **func_kwargs):
return func(*func_args, **func_kwargs)
return wrapper
return decorator
def call(*args, **kwargs):
"""
Calls a command in a shell.
"""
return _call(shell=True, *args, **kwargs)

11
manage.py Executable file
View File

@ -0,0 +1,11 @@
#!/usr/bin/env python
import sys
from openslides.__main__ import main
if __name__ == "__main__":
if len(sys.argv) == 1:
sys.argv.append('--help')
exit(main())

@ -1 +0,0 @@
Subproject commit 3394f64c9022a6db630bee09e3085792b6a6d491

@ -1 +0,0 @@
Subproject commit 3db17ae68a2527ec2e694c60ae69fc0d27c1e9d0

@ -1 +0,0 @@
Subproject commit a363c9694bb5119231df713842e51cb91240af8b

@ -1 +0,0 @@
Subproject commit fd753ea41fcff17ce2bcbc4868945bf6d3fa0afc

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