Repository: magpylib/magpylib (language: python)

Issue:
Update CONTRIBUTING.md
test fork PR



Discussion / hints:

Fix patch:
diff --git a/.gitignore b/.gitignore
index 6b67e1726..50e61f6e0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -29,6 +29,12 @@ share/python-wheels/
 *.egg
 MANIFEST
 
+# docs
+docs/auto_examples
+
+# sphinx-gallery
+auto_examples
+
 # coderunner
 tempCodeRunnerFile.py
 
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 43925140f..ad1dbfc88 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,11 +1,15 @@
 All notable changes to magpylib are documented here.
 
 
-# Releases
+# Changelog
 
-## [4.4.0] 
-- include self-intersection check in `TriangularMesh` ([#589](https://github.com/magpylib/magpylib/issues/589)).
-- disconnected line
+## [4.4.0dev] - Unreleased
+- Included self-intersection check in `TriangularMesh` ([#622](https://github.com/magpylib/magpylib/pull/622)).
+- Fixed incorrect edge case of TriangularMesh reorientation ([#644](https://github.com/magpylib/magpylib/pull/644))
+- Discontinuous segments in `current.Line` are now accepted and correctly treated as separate lines ([#632](https://github.com/magpylib/magpylib/pull/632), [#642](https://github.com/magpylib/magpylib/pull/642)).
+- Objects can now be displayed with missing dimension and/or excitation ([#640](https://github.com/magpylib/magpylib/pull/640)).
+- Added magnetization and current arrows `sizemode` styling option (absolute or scaled) ([#639](https://github.com/magpylib/magpylib/pull/639)).
+- `Collection` objects now also have a default description when displayed (number of chidren) ([#634](https://github.com/magpylib/magpylib/pull/634)).
 
 ## [4.3.0] - 2023-06-25
 - New `TriangularMesh` magnet class added to conveniently work with triangular surface meshes instead of large collections of individual `Triangle` objects. The `TriangularMesh` class performs important checks (closed, connected, oriented) and can directly import pyvista objects and for convex hull bodies. ([#569](https://github.com/magpylib/magpylib/issues/569), [#598](https://github.com/magpylib/magpylib/pull/598)).
@@ -223,7 +227,7 @@ This is a major update that includes
 - Renamed attributes (parameters cannot be initialized in their short forms anymore):
     - `angle` and `axis` are replaced by `orientation`
     - `dimension` is replaced by `diameter` for Loop and Sphere classes.
-    - `angle`&`axis` are replaced by `orientation` (see [Added](### Added) Section)
+    - `angle`&`axis` are replaced by `orientation`.
 
 - Modified rotate methods:
   - The class methods `.rotate(angle, axis, anchor)` have been replaced by a new `.rotate(rotation, anchor, increment, start)` method where `rotation` ist a scipy `Rotation` object.
@@ -252,7 +256,7 @@ This is a major update that includes
       - Objects with shorter paths will be considered as static once their path ends while other paths still continue.
     4. `magpylib.getBv(**kwargs)` gives direct access to the field formulas and mostly replaces the `getBv_XXX()` functionality of v2. All inputs must be arrays of length N or of length 1 (statics will be tiled).
   - While `getBv` is the fastest way to compute the fields it is much more convenient to use `getB()` which mostly provides the same performance. Specifically,the new `getB()` automatically groups all inputs for combined vectorized evaluation. This leads to a massive speedup when dealing with large Collections of similar sources.
-  - In addition to `getB`, the new `getH` returns the field in [kA/m].
+  - In addition to `getB`, the new `getH` returns the field in kA/m.
 
 ### Removed
 - the kwarg `niter=50` does not exist anymore for the Cylinder field computation. The functionality was completely replaced by the config setting `Config.ITER_CYLINDER=50`.
@@ -415,7 +419,7 @@ The first official release of the magpylib library.
 
 ---
 
-[Unreleased]:https://github.com/magpylib/magpylib/compare/4.3.0...HEAD
+[4.4.0dev]:https://github.com/magpylib/magpylib/compare/4.3.0...HEAD
 [4.3.0]:https://github.com/magpylib/magpylib/compare/4.2.0...4.3.0
 [4.2.0]:https://github.com/magpylib/magpylib/compare/4.1.2...4.2.0
 [4.1.2]:https://github.com/magpylib/magpylib/compare/4.1.1...4.1.2
diff --git a/CODE_OF_CONDUCT.md b/CODE_OF_CONDUCT.md
index e0c7ab667..b5bef42d6 100644
--- a/CODE_OF_CONDUCT.md
+++ b/CODE_OF_CONDUCT.md
@@ -1,8 +1,8 @@
-# Magpylib Code of Conduct
+# Code of Conduct
 
 ## Our Pledge
 
-We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation.
+We as Magpylib members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, caste, color, religion, or sexual identity and orientation.
 
 We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.
 
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
new file mode 100644
index 000000000..e673d37fa
--- /dev/null
+++ b/CONTRIBUTING.md
@@ -0,0 +1,40 @@
+# Contribute
+
+The success of Magpylib relies on its user-friedliness. Your feedback and participation in discussions is strongly encouraged. Ask questions about Magpylib. Tell us what you like and what you dislike. Start general discussions in our informal [Discussions](https://github.com/magpylib/magpylib/discussions) channel on GitHub.
+
+We use GitHub [Issues and Milestones](https://github.com/magpylib/magpylib/issues) to plan and track the Magpylib project. Open new Issues to report a bug, to point out a problem, or to  make a feature request, e.g. following a fruitful discussion. Within the Issue we will together define in detail what should be done. For small bug fixes, code cleanups, and other small improvements its not necessary to create issues.
+
+Always feel free to reach out through the official email <magpylib@gmail.com>.
+
+## How to Contribute with Coding...
+
+You are most welcome to become a project contributor by helping us with coding. This includes the implementation of new features, fixing bugs, code cleanup and restructuring as well as documentation improvements. Please abide by the following procedure to make things easy for us to review and to manage the project.
+
+1. Fork the Magpylib repository to your GitHub account
+2. Edit your new repository (good practice: clone to local machine, edit, push changes).
+3. Rebase your new repository (or pull from upstream) regularly to include upstream changes.
+4. Once your changes are complete (see [Coding requirements](coding-requ) below), or you want some feedback, make a pull request (PR) targeting the Magpylib repository. Explain your feature in the PR, and/or refer to the respective issue that you address. Add illustrative code examples.
+5. Once a PR is created, our pipeline tests will automatically check your code. A Magpylib member will review your contributions and discuss your changes. Possible improvements will be requested.
+6. When satisfied, the reviewer will merge your PR and you become an official Magpylib contributor.
+
+(coding-requ)=
+## Coding Requirements
+
+- All code is well documented and all top level doc strings abide by the [Numpy docstring style](https://numpydoc.readthedocs.io/en/latest/format.html).
+- All unit tests are running. We recommend using the [Pytest](https://docs.pytest.org/en/7.4.x/) package.
+- New unit tests are written aiming for 100% code coverage. We use [Coverage](https://coverage.readthedocs.io/en/) to test this.
+- [Pylint](https://pylint.readthedocs.io/en/stable/) rates your code 10/10 and there are no formatting issues reportet (e.g. line-to-long).
+- Your code is PEP8 compliant and formatted with [Black](https://black.readthedocs.io/en/stable/) default settings.
+
+We strongly suggest that you use the [Pre-Commit](https://pre-commit.com/) hooks that apply important code checks which each commit.
+
+## For Your Orientation
+
+The Magpylib repository is structured as follows:
+- **magpylib**
+    - **magpylib**: the actual package.
+        - **_src**: source code
+        - Other files generate the interface
+    - **docs**: documentation that is displayed on [Read the Docs](https://readthedocs.org/) using [Sphinx](https://www.sphinx-doc.org/en/master/).
+    - **tests**: unit tests
+    - Other files are project configuration files, Readme, ...
diff --git a/README.md b/README.md
index 9ee90b614..45d0e980e 100644
--- a/README.md
+++ b/README.md
@@ -1,59 +1,141 @@
 
-<p align="center"><img align="center" src=docs/_static/images/magpylib_flag.png ><p>
-
----
-<div>
-<p align="center"> Builds:
-<a href="https://anaconda.org/conda-forge/magpylib">
-<img align='center' src="https://anaconda.org/conda-forge/magpylib/badges/platforms.svg">
-  </a>
-<a href="https://dev.azure.com/magpylib/magpylib/_build/latest?definitionId=1&branchName=main"> <img align='center' src="https://dev.azure.com/magpylib/magpylib/_apis/build/status/magpylib.magpylib?branchName=main"> </a>
-<a href="https://circleci.com/gh/magpylib/magpylib"> <img align='center' src="https://circleci.com/gh/magpylib/magpylib.svg?style=svg"> </a>
-
-</p>
-
-<p align="center"> Documentation:
-<a href="https://magpylib.readthedocs.io/en/latest/"> <img align='center' src="https://readthedocs.org/projects/magpylib/badge/?version=latest"> </a>
-<a href="https://opensource.org/licenses/BSD-2-Clause"> <img align='center' src="https://img.shields.io/badge/License-BSD_2--Clause-orange.svg"> </a>
-</p>
-
-<p align="center"> Test Coverage:
-<a href="https://codecov.io/gh/magpylib/magpylib">
-  <img src="https://codecov.io/gh/magpylib/magpylib/branch/main/graph/badge.svg" />
-
-
-<p align="center"> Downloads:
-<a href="https://pypi.org/project/magpylib/">
-<img src="https://badge.fury.io/py/magpylib.svg" alt="PyPI version" height="18"></a>
-<a href="https://anaconda.org/conda-forge/magpylib"><img src="https://anaconda.org/conda-forge/magpylib/badges/version.svg" alt="Conda Cloud" height="18"></a>
-<a href="https://anaconda.org/conda-forge/magpylib"><img src="https://anaconda.org/conda-forge/magpylib/badges/downloads.svg" alt="Conda Cloud" height="18"></a>
-
-
-<p align="center"> Try it online:
-<a href="https://mybinder.org/v2/gh/magpylib/magpylib/4.3.0?filepath=docs%2Fexamples">
-<img src="https://mybinder.org/badge_logo.svg" alt="MyBinder link" height="18"></a>
-</p>
-
-</div>
-
----
-
-### What is magpylib ?
-Magpylib is a Python package for calculating **3D static magnetic fields** of magnets, line currents and other sources. The computation is based on analytical expressions and therefore **extremely fast**. A **user friendly geometry interface** enables convenient relative positioning between sources and observers.
-
-<p align="center">
-    <img align='center' src=docs/_static/images/index/source_fundamentals.png>
+<p align="left"><img align="center" src=docs/_static/images/magpylib_flag.png width=35%>
 </p>
 
 ---
 
-### Dependencies:
-_Python3.8+_, _Numpy_, _Scipy_, _Matplotlib_, _Plotly_
-
----
-
-### Documentation & Install:
-
-**Please check out our [documentation](https://magpylib.readthedocs.io/en/latest) for installation, examples and detailed information!**
+<div>
+<a href="https://dev.azure.com/magpylib/magpylib/_build/latest?definitionId=1&branchName=main"> <img src="https://dev.azure.com/magpylib/magpylib/_apis/build/status/magpylib.magpylib?branchName=main">
+</a>
+<a href="https://circleci.com/gh/magpylib/magpylib"> <img src="https://circleci.com/gh/magpylib/magpylib.svg?style=svg">
+</a>
+<a href="https://magpylib.readthedocs.io/en/latest/"> <img src="https://readthedocs.org/projects/magpylib/badge/?version=latest">
+</a>
+<a href="https://opensource.org/licenses/BSD-2-Clause"> <img src="https://img.shields.io/badge/License-BSD_2--Clause-orange.svg">
+</a>
+<a href="https://codecov.io/gh/magpylib/magpylib"> <img src="https://codecov.io/gh/magpylib/magpylib/branch/main/graph/badge.svg">
+</a>
+<a href="https://pypi.org/project/magpylib/"> <img src="https://badge.fury.io/py/magpylib.svg" alt="PyPI version" height="18">
+</a>
+<a href="https://anaconda.org/conda-forge/magpylib"> <img src="https://anaconda.org/conda-forge/magpylib/badges/version.svg" alt="Conda Cloud" height="18">
+</a>
+<a href="https://mybinder.org/v2/gh/magpylib/magpylib/4.4.0dev?filepath=docs%2Fexamples"> <img src="https://mybinder.org/badge_logo.svg" alt="MyBinder link" height="18">
+</a>
+<a href="https://github.com/psf/black"> <img src="https://img.shields.io/badge/code%20style-black-000000.svg" alt="black" height="18">
+</a>
+</div>
 
-Magpylib is on PyPI and conda-forge. **Install using pip** (`pip install magpylib`) or **conda** (`conda install magpylib`) package managers.
+Magpylib is a Python package for calculating **3D static magnetic fields** of magnets, line currents and other sources. The computation is based on explicit expressions and is therefore **extremely fast**. A **user friendly API** enables convenient positioning of sources and observers.
+
+# Installation
+
+Install from PyPI using **pip**
+```
+pip install magpylib
+```
+Install from conda forge using **conda**
+```
+conda install -c conda-forge magpylib
+```
+Magpylib supports _Python3.8+_ and relies on common scientific computation libraries _Numpy_, _Scipy_, _Matplotlib_ and _Plotly_. Optionally, _Pyvista_ is recommended as graphical backend.
+
+# Ressources
+
+ - Check out our **[Documentation](https://magpylib.readthedocs.io/en/latest)** for detailed information.
+ - Please abide by our **[Code of Conduct](https://github.com/magpylib/magpylib/blob/main/CODE_OF_CONDUCT.md)**.
+ - Contribute through **[Discussions](https://github.com/magpylib/magpylib/discussions)** and coding by following the **[Contribution Guide](https://github.com/magpylib/magpylib/blob/main/CONTRIBUTING.md)**. The Git project **[Issues](https://github.com/magpylib/magpylib/issues)** give an up-to-date list of potential enhancements and planned milestones. Propose new ones.
+ - A **[Youtube video](https://www.youtube.com/watch?v=LeUx6cM1vcs)** introdution to Magpylib v4.0.0 within the **[GSC network](https://www.internationalcollaboration.org/).**
+- An **[open-access paper](https://www.sciencedirect.com/science/article/pii/S2352711020300170)** from the year 2020 describes v2 of this library with most basic concepts still intact in later versions.
+
+# Quickstart
+
+Here is an example how to use Magpylib.
+
+```python3
+import magpylib as magpy
+
+# Create a Cuboid magnet with sides 1,2 and 3 mm respectively, and magnetization
+# (polarization) of 1000 mT pointing in x-direction.
+cube = magpy.magnet.Cuboid(
+  magnetization=(1000,0,0),
+  dimension=(1,2,3),
+)
+
+# By default, the magnet position is (0,0,0) and its orientation is the unit
+# rotation (given by a scipy rotation object), which corresponds to magnet sided
+# parallel to global coordinate axes.
+print(cube.position)                   # --> [0. 0. 0.]
+print(cube.orientation.as_rotvec())    # --> [0. 0. 0.]
+
+# Manipulate object position and orientation through the respective attributes,
+# or by using the powerful `move` and `rotate` methods.
+cube.move((0,0,-2))
+cube.rotate_from_angax(angle=45, axis='z')
+print(cube.position)                            # --> [0. 0. -2.]
+print(cube.orientation.as_rotvec(degrees=True)) # --> [0. 0. 45.]
+
+# Compute the magnetic field in units of mT at a set of observer positions. Magpylib
+# makes use of vectorized computation. Hand over all field computation instances,
+# e.g. different observer positions, at one funtion call. Avoid Python loops !!!
+observers = [(0,0,0), (1,0,0), (2,0,0)]
+B = magpy.getB(cube, observers)
+print(B.round()) # --> [[-91. -91.   0.]
+                 #      [  1. -38.  84.]
+                 #      [ 18. -14.  26.]]
+
+# Sensors are observer objects that can have their own position and orientation.
+# Compute the H-field in units of kA/m.
+sensor = magpy.Sensor(position=(0,0,0))
+sensor.rotate_from_angax(angle=45, axis=(1,1,1))
+H = magpy.getH(cube, sensor)
+print(H.round()) # --> [-95. -36. -14.]
+
+# Position and orientation attributes of Magpylib objects can be vectors of
+# multiple positions/orientations refered to as "paths". When computing the
+# magnetic field of an object with a path, it is computed at every path index.
+cube.position = [(0,0,-2), (1,0,-2), (2,0,-2)]
+B = cube.getB(sensor)
+print(B.round()) # --> [[-119.  -45.  -18.]
+                 #      [   8.  -73.  -55.]
+                 #      [  15.  -30.   -8.]]
+
+# When several objects are involved and things are getting complex, make use of
+# the `show` function to view your system through Matplotlib, Plotly or Pyvista backends.
+magpy.show(cube, sensor, backend='pyvista')
+```
+
+More details and other important features are described in detail in the **[Documentation](https://magpylib.readthedocs.io/en/latest)**. Key features are:
+
+- **Collections**: Group multiple objects for common manipulation
+- **Complex shapes**: Create magnets with arbitrary shapes
+- **Graphics**: Styling options, graphic backends, animations, and 3D models
+- **CustomSource**: Integrate your own field implementation
+- **Direct interface**: Bypass the object oriented interface (max speed)
+
+# How can I cite this library ?
+
+We would be happy if you give us credit for our efforts. A valid bibtex entry for the [2020 open-access paper](https://www.sciencedirect.com/science/article/pii/S2352711020300170) would be
+
+```
+@article{ortner2020magpylib,
+  title={Magpylib: A free Python package for magnetic field computation},
+  author={Ortner, Michael and Bandeira, Lucas Gabriel Coliado},
+  journal={SoftwareX},
+  volume={11},
+  pages={100466},
+  year={2020},
+  publisher={Elsevier}
+}
+```
+
+A valid software citation could be
+
+```
+@software{magpylib,
+    author = {{Michael-Ortner et al.}},
+    title = {magpylib},
+    url = {https://magpylib.readthedocs.io/en/latest/},
+    version = {4.4.0dev},
+    date = {2023-06-25},
+}
+```
diff --git a/docs/README.md b/docs/README.md
index 89a692277..15cef9d58 100644
--- a/docs/README.md
+++ b/docs/README.md
@@ -1,22 +1,13 @@
-## About magPyLib Documentation
+## About Magpylib Documentation
 
-- Documentation is done with [Sphinx](http://www.sphinx-doc.org/en/main/) v4.4.0.
-- Sphinx configuration is [conf.py](./conf.py);
-- Docstring format is under the [Numpy Convention](https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_numpy.html).
-- Sphinx is configured to read Docstring information from the codebase and convert it into pages utilizing the [autodoc extension](http://www.sphinx-doc.org/en/main/usage/extensions/autodoc.html).
+The Documentation is built with [Sphinx](http://www.sphinx-doc.org/en/main/) v5.3.0. and the configuration file is [conf.py](./conf.py). Files get converted to `.html` files by Sphinx during build time. Images, web code and videos are kept in the [_static](./_static) folder.
 
-  - These generated files are created at build time and put into a folder called `_autogen`
+### API docs
+ The docstring format is under the [Numpy Convention](https://sphinxcontrib-napoleon.readthedocs.io/en/latest/example_numpy.html). Sphinx is configured to read Docstring information from the codebase and convert it into pages utilizing the [autodoc extension](http://www.sphinx-doc.org/en/main/usage/extensions/autodoc.html). The generated files are created at build time and put into a folder called `_autogen`
 
-- Handwritten document pages and guides are kept in the [_pages](./_pages) folder.
-  - They use a combination of [Markdown](https://commonmark.org/help/) and [restructuredText](http://docutils.sourceforge.net/docs/ref/rst/directives.html), utilizing [recommonmark](https://github.com/rtfd/recommonmark) as interface.
-  - These documents are converted to `.html` files by Sphinx during build time.
+### Handwritten documents
+Handwritten pages and guides are kept in the [_pages](./_pages) folder. They are all written in [Markdown](https://www.markdownguide.org/) using [myst-parser](https://github.com/executablebooks/MyST-Parser) as interface. Some documents like in the examples folder are dynamically computed with [myst-nb](https://github.com/executablebooks/myst-nb) as jupyter notebooks. With the help of the [jupytext](https://github.com/mwouts/jupytext) library ands its jupyterlab extension, examples can be written and executed within the jupyterlab ecosystem and saved as markdown file. It is recommended to use the [jupyterlab-myst](https://github.com/executablebooks/jupyterlab-myst) extension to be able to work with the full set of myst markdown flavor within jupyterlab. When editing the docs with vscode, use the [MyST-Markdown](https://marketplace.visualstudio.com/items?itemName=ExecutableBookProject.myst-highlight) extension to visualize the rendered document.
 
-- Example code with visual output **generated during build time** are kept in the [pyplots](./pyplots) folder.
-  - This utilizes the Matplotlib's [plot directive for restructuredText](https://matplotlib.org/devel/plot_directive.html), placing the code and its graphical output when it is referenced within the directive in the documentation pages.
-
-- Images, web code and videos are kept in the [_static](./_static) folder.
-
----
 
 ### Building Locally
 
diff --git a/docs/_changelog.md b/docs/_changelog.md
deleted file mode 100644
index 9d2e634e6..000000000
--- a/docs/_changelog.md
+++ /dev/null
@@ -1,4 +0,0 @@
-```{include} ../CHANGELOG.md
-:relative-docs: docs/
-:relative-images:
-```
\ No newline at end of file
diff --git a/docs/_pages/docu/docu_graphics.md b/docs/_pages/docu/docu_graphics.md
new file mode 100644
index 000000000..52b311424
--- /dev/null
+++ b/docs/_pages/docu/docu_graphics.md
@@ -0,0 +1,1062 @@
+---
+jupytext:
+  text_representation:
+    extension: .md
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.15.0
+kernelspec:
+  display_name: Python 3 (ipykernel)
+  language: python
+  name: python3
+orphan: true
+---
+
+(docu-magpylib-show)=
+(docu-graphics)=
+
+# Graphics
+
+Once all Magpylib objects and their paths have been created, **`show`** provides a convenient way to graphically display the geometric arrangement using the Matplotlib (default) and Plotly packages. When `show` is called, it generates a new figure which is then automatically displayed.
+
+The desired graphic backend is selected with the `backend` keyword argument. To bring the output to a given, user-defined figure, the `canvas` argument is used. This is demonstrated in {ref}`examples-backends-canvas`.
+
+The following example shows the graphical representation of various Magpylib objects and their paths using the default Matplotlib graphic backend.
+
+```{code-cell} ipython3
+import magpylib as magpy
+import numpy as np
+import pyvista as pv
+
+objects = {
+    "Cuboid": magpy.magnet.Cuboid(
+        magnetization=(0, -100, 0),
+        dimension=(1, 1, 1),
+        position=(-6, 0, 0),
+    ),
+    "Cylinder": magpy.magnet.Cylinder(
+        magnetization=(0, 0, 100),
+        dimension=(1, 1),
+        position=(-5, 0, 0),
+    ),
+    "CylinderSegment": magpy.magnet.CylinderSegment(
+        magnetization=(0, 0, 100),
+        dimension=(0.3, 1, 1, 0, 140),
+        position=(-3, 0, 0),
+    ),
+    "Sphere": magpy.magnet.Sphere(
+        magnetization=(0, 0, 100),
+        diameter=1,
+        position=(-1, 0, 0),
+    ),
+    "Tetrahedron": magpy.magnet.Tetrahedron(
+        magnetization=(0, 0, 100),
+        vertices=((-1, 0, 0), (1, 0, 0), (0, -1, 0), (0, -1, -1)),
+        position=(-4, 0, 4),
+    ),
+    "TriangularMesh": magpy.magnet.TriangularMesh.from_pyvista(
+        magnetization=(0, 0, 100),
+        polydata=pv.Dodecahedron(),
+        position=(-1, 0, 4),
+    ),
+    "Loop": magpy.current.Loop(
+        current=1,
+        diameter=1,
+        position=(4, 0, 0),
+    ),
+    "Line": magpy.current.Line(
+        current=1,
+        vertices=[(1, 0, 0), (0, 1, 0), (-1, 0, 0), (0, -1, 0), (1, 0, 0)],
+        position=(1, 0, 0),
+    ),
+    "Dipole": magpy.misc.Dipole(
+        moment=(0, 0, 100),
+        position=(3, 0, 0),
+    ),
+    "Triangle": magpy.misc.Triangle(
+        magnetization=(0, 0, 100),
+        vertices=((-1, 0, 0), (1, 0, 0), (0, 1, 0)),
+        position=(2, 0, 4),
+    ),
+    "Sensor": magpy.Sensor(
+        pixel=[(0, 0, z) for z in (-0.5, 0, 0.5)],
+        position=(0, -3, 0),
+    ),
+}
+
+objects["Loop"].move(np.linspace((0, 0, 0), (0, 0, 5), 20))
+objects["Cuboid"].rotate_from_angax(np.linspace(0, 90, 20), "z", anchor=0)
+
+magpy.show(*objects.values())
+```
+
+Notice that, objects and their paths are automatically assigned different colors, the magnetization is shown by coloring the poles (default) or by an arrow (via styles). Current directions and dipole objects are indicated by arrows and sensors are shown as tri-colored coordinate cross with pixel as markers.
+
+How objects are represented graphically (color, line thickness, ect.) is defined by their **style** properties. The default style, which can be seen above, is accessed and manipulated through `magpy.defaults.display.style`. In addition, each object can have an individual style, which takes precedence over the default setting. A local style override is also possible by passing style arguments directly to `show`.
+
+The hierarchy that decides about the final graphic object representation, a list of all style parameters and other options for tuning the `show`-output are described in {ref}`examples-graphic-styles` and {ref}`examples-animation`.
+
++++
+
+(examples-backends-canvas)=
+## Plotting backends
+
+
+The plotting backend refers to the plotting library that is used for graphic output. Canvas refers to the frame/window/canvas/axes object the graphic output is forwarded to.
+
+
+Magpylib supports several common graphic backends.
+
+```{code-cell} ipython3
+from magpylib import SUPPORTED_PLOTTING_BACKENDS
+
+SUPPORTED_PLOTTING_BACKENDS
+```
+
+The installation default is set to `'auto'`. In this case the backend is dynamically inferred depending on the current running environment (command-line or notebook), the available installed backend libraries and the set canvas:
+
+| environment      | canvas                                            | inferred backend                        |
+|------------------|---------------------------------------------------|-----------------------------------------|
+| Command-Line     | `None`                                            | `matplotlib`                            |
+| IPython notebook | `None`                                            | `plotly` if installed else `matplotlib` |
+| all              | `matplotlib.axes.Axes`                            | `matplotlib`                            |
+| all              | `plotly.graph_objects.Figure` (or `FigureWidget`) | `plotly`                                |
+| all              | `pyvista.Plotter`                                 | `pyvista`                               |
+
+To explicitly select a graphic backend one can
+1. Change the library default with `magpy.defaults.display.backend = 'plotly'`.
+2. Set the `backend` kwarg in the `show` function, `show(..., backend='matplotlib')`.
+
+There is a high level of **feature parity**, however, not all graphic features are supported by all backends. In addition, some common Matplotlib syntax (e.g. color `'r'`, linestyle `':'`) is automatically translated to other backends.
+
+|                  Feature                                        | Matplotlib | Plotly | Pyvista |
+|:---------------------------------------------------------------:|:----------:|:------:|:-------:|
+| triangular mesh 3d                                              | ✔️         | ✔️    | ✔️      |
+| line 3d                                                         | ✔️         | ✔️    | ✔️      |
+| line style                                                      | ✔️         | ✔️    | ❌      |
+| line color                                                      | ✔️         | ✔️    | ✔️      |
+| line width                                                      | ✔️         | ✔️    | ✔️      |
+| marker 3d                                                       | ✔️         | ✔️    | ✔️      |
+| marker color                                                    | ✔️         | ✔️    | ✔️      |
+| marker size                                                     | ✔️         | ✔️    | ✔️      |
+| marker symbol                                                   | ✔️         | ✔️    | ❌      |
+| marker numbering                                                | ✔️         | ✔️    | ❌      |
+| zoom level                                                      | ✔️         | ✔️    | ❌[^2]  |
+| magnetization color                                             | ✔️[^8]     | ✔️    | ✔️[^3]  |
+| animation                                                       | ✔️         | ✔️    | ✔️[^6]  |
+| animation time                                                  | ✔️         | ✔️    | ✔️[^6]  |
+| animation fps                                                   | ✔️         | ✔️    | ✔️[^6]  |
+| animation slider                                                | ✔️[^1]     | ✔️    | ❌      |
+| subplots 2D                                                     | ✔️         | ✔️    | ✔️[^7]  |
+| subplots 3D                                                     | ✔️         | ✔️    | ✔️      |
+| user canvas                                                     | ✔️         | ✔️    | ✔️      |
+| user extra 3d model [^4]                                        | ✔️         | ✔️    | ✔️ [^5] |
+
+
+[^1]: when returning animation object and exporting it as jshtml.
+
+[^2]: possible but not implemented at the moment.
+
+[^3]: does not work with `ipygany` jupyter backend. As of `pyvista>=0.38` these are deprecated and replaced by the [trame](https://docs.pyvista.org/api/plotting/trame.html) backend.
+
+[^4]: only `"scatter3d"`, and `"mesh3d"`. Gets "translated" to every other backend.
+
+[^5]: custom user defined trace constructors  allowed, which are specific to the backend.
+
+[^6]: animation is only available through export as `gif` or `mp4`
+
+[^7]: 2D plots are not supported for all jupyter_backends. As of pyvista>=0.38 these are deprecated and replaced by the [trame](https://docs.pyvista.org/api/plotting/trame.html) backend.
+
+[^8]: Matplotlib does not support color gradient. Instead magnetization is shown through object slicing and coloring.
+
+The following example demonstrates the currently supported backends:
+
+```{code-cell} ipython3
+import magpylib as magpy
+import numpy as np
+import pyvista as pv
+
+pv.set_jupyter_backend("panel")  # improve rendering in a jupyter notebook (pyvista only)
+
+# define sources and paths
+loop = magpy.current.Loop(current=1, diameter=1)
+loop.position = np.linspace((0, 0, -3), (0, 0, 3), 40)
+
+cylinder = magpy.magnet.Cylinder(
+    magnetization=(0, -100, 0), dimension=(1, 2), position=(0, -3, 0)
+)
+cylinder.rotate_from_angax(np.linspace(0, 300, 40)[1:], "z", anchor=0)
+
+# show the system using different backends
+for backend in magpy.SUPPORTED_PLOTTING_BACKENDS:
+    print(f"Plotting backend: {backend!r}")
+    magpy.show(loop, cylinder, backend=backend)
+```
+
+### Output in custom figure
+
+When calling `show`, a figure is automatically generated and displayed. It is also possible to display the `show` output on a given user-defined canvas with the `canvas` argument.
+
+In the following example we show how to combine a 2D field plot with the 3D `show` output in **Matplotlib**:
+
+```{code-cell} ipython3
+import magpylib as magpy
+import matplotlib.pyplot as plt
+import numpy as np
+
+# setup matplotlib figure and subplots
+fig = plt.figure(figsize=(10, 4))
+ax1 = fig.add_subplot(121)  # 2D-axis
+ax2 = fig.add_subplot(122, projection="3d")  # 3D-axis
+
+# define sources and paths
+loop = magpy.current.Loop(current=1, diameter=1)
+loop.position = np.linspace((0, 0, -3), (0, 0, 3), 40)
+
+cylinder = magpy.magnet.Cylinder(
+    magnetization=(0, -100, 0), dimension=(1, 2), position=(0, -3, 0)
+)
+cylinder.rotate_from_angax(np.linspace(0, 300, 40)[1:], "z", anchor=0)
+
+# compute field and plot in 2D-axis
+B = magpy.getB([loop, cylinder], (0, 0, 0), sumup=True)
+ax1.plot(B)
+
+# display show() output in 3D-axis
+magpy.show(loop, cylinder, canvas=ax2)
+
+# generate figure
+plt.tight_layout()
+plt.show()
+```
+
+A similar example with **Plotly**:
+
+```{code-cell} ipython3
+import magpylib as magpy
+import numpy as np
+import plotly.graph_objects as go
+
+# setup plotly figure and subplots
+fig = go.Figure().set_subplots(
+    rows=1, cols=2, specs=[[{"type": "xy"}, {"type": "scene"}]]
+)
+
+# define sources and paths
+loop = magpy.current.Loop(current=1, diameter=1)
+loop.position = np.linspace((0, 0, -3), (0, 0, 3), 40)
+
+cylinder = magpy.magnet.Cylinder(
+    magnetization=(0, -100, 0), dimension=(1, 2), position=(0, -3, 0)
+)
+cylinder.rotate_from_angax(np.linspace(0, 300, 40)[1:], "z", anchor=0)
+
+# compute field and plot in 2D-axis
+B = magpy.getB([loop, cylinder], (0, 0, 0), sumup=True)
+for i, lab in enumerate(["Bx", "By", "Bz"]):
+    fig.add_trace(go.Scatter(x=np.linspace(0, 1, 40), y=B[:, i], name=lab))
+
+# display show() output in 3D-axis
+temp_fig = go.Figure()
+magpy.show(loop, cylinder, canvas=temp_fig, backend="plotly")
+fig.add_traces(temp_fig.data, rows=1, cols=2)
+fig.layout.scene.update(temp_fig.layout.scene)
+
+# generate figure
+fig.show()
+```
+
+An example with **Pyvista**:
+
+```{code-cell} ipython3
+import magpylib as magpy
+import numpy as np
+import pyvista as pv
+
+pv.set_jupyter_backend("panel")  # improve rending in a jupyter notebook
+
+# define sources and paths
+loop = magpy.current.Loop(current=1, diameter=5)
+loop.position = np.linspace((0, 0, -3), (0, 0, 3), 40)
+
+cylinder = magpy.magnet.Cylinder(
+    magnetization=(0, -100, 0), dimension=(1, 2), position=(0, -3, 0)
+)
+cylinder.rotate_from_angax(np.linspace(0, 300, 40)[1:], "z", anchor=0)
+
+# create a pyvista plotting scene with some graphs
+pl = pv.Plotter()
+line = np.array(
+    [(t * np.cos(15 * t), t * np.sin(15 * t), t - 8) for t in np.linspace(3, 5, 200)]
+)
+pl.add_lines(line, color="black")
+
+# add magpylib.show() output to existing scene
+magpy.show(loop, cylinder, backend="pyvista", canvas=pl)
+
+# display scene
+pl.camera.position = (50, 10, 10)
+pl.set_background("black", top="white")
+pl.show()
+```
+
+### Return figure
+
+Instead of forwarding a figure to an existing canvas, it is also possible to return the figure object for further manipulation using the `return_fig` command. In the following example this is demonstrated for the pyvista backend.
+
+```{code-cell} ipython3
+import magpylib as magpy
+import numpy as np
+import pyvista as pv
+
+pv.set_jupyter_backend("panel")  # improve rending in a jupyter notebook
+
+# define sources and paths
+loop = magpy.current.Loop(current=1, diameter=5)
+loop.position = np.linspace((0, 0, -3), (0, 0, 3), 40)
+
+cylinder = magpy.magnet.Cylinder(
+    magnetization=(0, -100, 0), dimension=(1, 2), position=(0, -3, 0)
+)
+cylinder.rotate_from_angax(np.linspace(0, 300, 40)[1:], "z", anchor=0)
+
+# return pyvista scene from magpylib.show()
+pl = magpy.show(loop, cylinder, backend="pyvista", return_fig=True)
+
+# add line to the pyvista scene
+line = np.array(
+    [(t * np.cos(15 * t), t * np.sin(15 * t), t - 8) for t in np.linspace(3, 5, 200)]
+)
+pl.add_lines(line, color="black")
+
+# display scene
+pl.camera.position = (50, 10, 10)
+pl.set_background("purple", top="lightgreen")
+pl.enable_anti_aliasing("ssaa")
+pl.show()
+```
+
+(examples-graphic-styles)=
+## Styles
+
+The graphic styles define how Magpylib objects are displayed visually when calling `show`. They can be fine-tuned and individualized in many ways.
+
+There are multiple hierarchy levels that decide about the final graphical representation of the objects:
+
+1. When no input is given, the **default style** will be applied.
+2. Collections will override the color property of all children with their own color.
+3. Object **individual styles** will take precedence over these values.
+4. Setting a **local style** in `show()` will take precedence over all other settings.
+
+### Setting the default style
+
+The default style is stored in `magpylib.defaults.display.style`. Default styles can be set as properties,
+
+```python
+magpy.defaults.display.style.magnet.magnetization.show = True
+magpy.defaults.display.style.magnet.magnetization.color.middle = 'grey'
+magpy.defaults.display.style.magnet.magnetization.color.mode = 'bicolor'
+```
+
+by assigning a style dictionary with equivalent keys,
+
+```python
+magpy.defaults.display.style.magnet = {
+    'magnetization': {'show': True, 'color': {'middle': 'grey', 'mode': 'tricolor'}}
+}
+```
+
+or by making use of the `update` method:
+
+```python
+magpy.defaults.display.style.magnet.magnetization.update(
+    'show': True,
+    'color': {'middle'='grey', mode='tricolor',}
+)
+```
+
+All three examples result in the same default style.
+
+Once modified, the library default can always be restored with the `magpylib.style.reset()` method. The following practical example demonstrates how to create and set a user defined magnetization style as default,
+
+```{code-cell} ipython3
+import magpylib as magpy
+
+magpy.defaults.reset()
+
+cube = magpy.magnet.Cuboid(magnetization=(1, 0, 0), dimension=(1, 1, 1))
+cylinder = magpy.magnet.Cylinder(
+    magnetization=(0, -1, 0), dimension=(1, 1), position=(2, 0, 0)
+)
+sphere = magpy.magnet.Sphere(magnetization=(0, 1, 1), diameter=1, position=(4, 0, 0))
+
+print("Default magnetization style")
+magpy.show(cube, cylinder, sphere, backend="plotly")
+
+user_defined_style = {
+    "show": True,
+    "mode": "arrow+color",
+    "size": 0.9,
+    "arrow": {
+        "color": "black",
+        "offset": 0.8,
+        "show": True,
+        "size": 2,
+        "sizemode": "scaled",
+        "style": "solid",
+        "width": 3,
+    },
+    "color": {
+        "transition": 0,
+        "mode": "tricolor",
+        "middle": "white",
+        "north": "magenta",
+        "south": "turquoise",
+    },
+}
+magpy.defaults.display.style.magnet.magnetization = user_defined_style
+
+print("Custom magnetization style")
+magpy.show(cube, cylinder, sphere, backend="plotly")
+```
+
+### Magic underscore notation
+
+To facilitate working with deeply nested properties, all style constructors and object style methods support the magic underscore notation. It enables referencing nested properties by joining together multiple property names with underscores. This feature mainly helps reduce the code verbosity and is heavily inspired by the `plotly` implementation (see [plotly underscore notation](https://plotly.com/python/creating-and-updating-figures/#magic-underscore-notation)).
+
+With magic underscore notation, the previous examples can be written as:
+
+```python
+import magpylib as magpy
+magpy.defaults.display.style.magnet = {
+    'magnetization_show': True,
+    'magnetization_color_middle': 'grey',
+    'magnetization_color_mode': 'tricolor',
+}
+```
+
+or directly as named keywords in the `update` method as:
+
+```python
+import magpylib as magpy
+magpy.defaults.display.style.magnet.update(
+    magnetization_show=True,
+    magnetization_color_middle='grey',
+    magnetization_color_mode='tricolor',
+)
+```
+
+### Setting individual styles
+
+Any Magpylib object can have its own individual style that will take precedence over the default values when `show` is called. When setting individual styles, the object family specifier such as `magnet` or `current` which is required for the defaults settings, but is implicitly defined by the object type, can be omitted.
+
+```{warning}
+Users should be aware that specifying individual style attributes massively increases object initializing time (from <50 to 100-500 $\mu$s). There is however the possibility to define styles without affecting the object creation time, but only if the style is defined in the initialization (e.g.: `magpy.magnet.Cuboid(..., style_label="MyCuboid")`). In this case the style attribute creation is deferred to when is is called the first time, typically when calling the `show` function, or accessing the `style` attribute of the object.
+While this may not be noticeable for a small number of objects, it is best to avoid setting styles until it is plotting time.
+```
+
+In the following example the individual style of `cube` is set at initialization, the style of `cylinder` is the default one, and the individual style of `sphere` is set using the object style properties.
+
+```{code-cell} ipython3
+import magpylib as magpy
+
+magpy.defaults.reset()  # reset defaults defined in previous example
+
+cube = magpy.magnet.Cuboid(
+    magnetization=(1, 0, 0),
+    dimension=(1, 1, 1),
+    style_magnetization_color_mode="tricycle",
+)
+cylinder = magpy.magnet.Cylinder(
+    magnetization=(0, 1, 0),
+    dimension=(1, 1),
+    position=(2, 0, 0),
+)
+sphere = magpy.magnet.Sphere(
+    magnetization=(0, 1, 1),
+    diameter=1,
+    position=(4, 0, 0),
+)
+
+sphere.style.magnetization.color.mode = "bicolor"
+
+magpy.show(cube, cylinder, sphere, backend="plotly")
+```
+
+### Setting style via collections
+
+When displaying collections, the collection object `color` property will be automatically assigned to all its children and override the default style. In addition, it is possible to modify the individual style properties of all children with the `set_children_styles` method. Non-matching properties are simply ignored.
+
+In the following example we show how the french magnetization style is applied to all children in a collection,
+
+```{code-cell} ipython3
+import magpylib as magpy
+
+magpy.defaults.reset()  # reset defaults defined in previous example
+
+cube = magpy.magnet.Cuboid(magnetization=(1, 0, 0), dimension=(1, 1, 1))
+cylinder = magpy.magnet.Cylinder(magnetization=(0, 1, 0), dimension=(1, 1), position=(2, 0, 0))
+sphere = magpy.magnet.Sphere(magnetization=(0, 1, 1), diameter=1, position=(4, 0, 0))
+
+coll = cube + cylinder
+
+coll.set_children_styles(magnetization_color_south="blue")
+
+magpy.show(coll, sphere, backend="plotly")
+```
+
+### Local style override
+
+Finally it is possible to hand style input to the `show` function directly and locally override the given properties for this specific `show` output. Default or individual style attributes will not be modified. Such inputs must start with the `style` prefix and the object family specifier must be omitted. Naturally underscore magic is supported.
+
+```{code-cell} ipython3
+import magpylib as magpy
+
+cube = magpy.magnet.Cuboid(magnetization=(1, 0, 0), dimension=(1, 1, 1))
+cylinder = magpy.magnet.Cylinder(magnetization=(0, 1, 0), dimension=(1, 1), position=(2, 0, 0))
+sphere = magpy.magnet.Sphere(magnetization=(0, 1, 1), diameter=1, position=(4, 0, 0))
+
+# use local style override
+magpy.show(cube, cylinder, sphere, backend="plotly", style_magnetization_show=False)
+```
+
+(examples-list-of-styles)=
+
+### List of style properties
+
+```{code-cell} ipython3
+magpy.defaults.display.style.as_dict(flatten=True, separator=".")
+```
+
+(examples-animation)=
+
+## Animation
+
+With some backends, paths can automatically be animated with `show(animation=True)`. Animations can be fine-tuned with the following properties:
+
+1. `animation_time` (default=3), must be a positive number that gives the animation time in seconds.
+2. `animation_slider` (default=`True`), is boolean and sets if a slider should be displayed in addition.
+3. `animation_fps` (default=30), sets the maximal frames per second.
+
+Ideally, the animation will show all path steps, but when e.g. `time` and `fps` are too low, specific equidistant frames will be selected to adjust to the limited display possibilities. For practicality, the input `animation=x` will automatically set `animation=True` and `animation_time=x`.
+
+The following example demonstrates the animation feature,
+
+```{code-cell} ipython3
+import magpylib as magpy
+import numpy as np
+
+# define objects with paths
+coll = magpy.Collection(
+    magpy.magnet.Cuboid(magnetization=(0, 1, 0), dimension=(2, 2, 2)),
+    magpy.magnet.Cylinder(magnetization=(0, 1, 0), dimension=(2, 2)),
+    magpy.magnet.Sphere(magnetization=(0, 1, 0), diameter=2),
+)
+
+start_positions = np.array([(1.414, 0, 1), (-1, -1, 1), (-1, 1, 1)])
+for pos, src in zip(start_positions, coll):
+    src.position = np.linspace(pos, pos * 5, 50)
+    src.rotate_from_angax(np.linspace(0, 360, 50), "z", anchor=0, start=0)
+
+ts = np.linspace(-0.6, 0.6, 5)
+sensor = magpy.Sensor(pixel=[(x, y, 0) for x in ts for y in ts])
+sensor.position = np.linspace((0, 0, -5), (0, 0, 5), 20)
+
+# show with animation
+magpy.show(
+    coll,
+    sensor,
+    animation=3,
+    animation_fps=20,
+    animation_slider=True,
+    backend="plotly",
+    showlegend=False,  # kwarg to plotly
+)
+```
+
+Notice that the sensor, with the shorter path stops before the magnets do. This is an example where {ref}`gallery-tutorial-paths-edge-padding-end-slicing` is applied.
+
+```{warning}
+Even with some implemented failsafes, such as a maximum frame rate and frame count, there is no guarantee that the animation will be rendered properly. This is particularly relevant when the user tries to animate many objects and/or many path positions at the same time.
+```
+
++++
+
+## Subplots
+
+:::{versionadded} 4.4
+Coupled subplots
+:::
+
+Magpylib also offers the possibility to display objects into separate subplots. It also allows the user to easily display the magnetic field data into 2D scatter along the corresponding 3D models. Objects paths can finally be animated in a coupled 2D/3D manner.
+
++++
+
+### Subplots 3D
+
++++
+
+3D suplots can be directly defined in the `show` function by passing input objects as dictionaries with the arguments `objects`, `col` (column) and `row`, as in the example below. If now `row` or no `col` is specified, it defaults to 1.
+
+```{code-cell} ipython3
+import magpylib as magpy
+import numpy as np
+
+# define sensor and sources
+sensor = magpy.Sensor(pixel=[(-2,0,0), (2,0,0)])
+cyl1 = magpy.magnet.Cylinder(
+    magnetization=(100, 0, 0), dimension=(1, 2), style_label="Cylinder1"
+)
+
+# define paths
+N=40
+sensor.position = np.linspace((0, 0, -3), (0, 0, 3), N)
+cyl1.position = (4, 0, 0)
+cyl1.rotate_from_angax(angle=np.linspace(0, 300, N), start=0, axis="z", anchor=0)
+cyl2 = cyl1.copy().move((0, 0, 5))
+
+# display system in 3D with dict syntax
+magpy.show(
+    {"objects": [cyl1, cyl2], "col": 1},
+    {"objects": [sensor], "col": 2},
+)
+```
+
+### Subplots via context manager `magpylib.show_context`
+
+In order to make the subplot syntax more convenient we introduced the new `show_context` native python context manager. It allows to defer calls to the `show` function while passing additional arguments. This is necessary for Magpylib to now how many rows and columns are been demanded by the user, which single calls to the `show` would not keep track of.
+
+The above example becomes:
+
+```{code-cell} ipython3
+import magpylib as magpy
+import numpy as np
+
+# define sensor and sources
+sensor = magpy.Sensor(pixel=[(-2,0,0), (2,0,0)])
+cyl1 = magpy.magnet.Cylinder(
+    magnetization=(100, 0, 0), dimension=(1, 2), style_label="Cylinder1"
+)
+
+# define paths
+N=40
+sensor.position = np.linspace((0, 0, -3), (0, 0, 3), N)
+cyl1.position = (4, 0, 0)
+cyl1.rotate_from_angax(angle=np.linspace(0, 300, N), start=0, axis="z", anchor=0)
+cyl2 = cyl1.copy().move((0, 0, 5))
+
+# display system in 3D with context manager
+with magpy.show_context(backend="matplotlib") as sc:
+    sc.show(cyl1, cyl2, col=1)
+    sc.show(sensor, col=2)
+```
+
+````{note}
+Using the context manager object as in:
+
+```python
+import magpylib as magpy
+
+obj1 = magpy.magnet.Cuboid()
+obj2 = magpy.magnet.Cylinder()
+
+with magpy.show_context() as sc:
+    sc.show(obj1, col=1)
+    sc.show(obj2, col=2)
+```
+
+is equivalent to the use of `magpylib.show` directly, as long as within the context manager:
+
+```python
+import magpylib as magpy
+
+obj1 = magpy.magnet.Cuboid()
+obj2 = magpy.magnet.Cylinder()
+
+with magpy.show_context():
+    magpy.show(obj1, col=1)
+    magpy.show(obj2, col=2)
+```
+````
+
++++
+
+### Subplots 2D
+
++++
+
+In addition the usual 3D models, it is also possible to draw 2D scatter plots of magnetic field data. This is achieved by assigning the `output` argument in the `show` function.
+By default`output='model3d'` displays the 3D representations of the objects. If output is a tuple of strings it must be a combination of 'B' or 'H' and 'x', 'y' and/or 'z'. When having multiple coordinates, the field value is the combined vector length (e.g. `('Bx', 'Hxy', 'Byz')`). `'Bxy'` is equivalent to `sqrt(|Bx|^2 + |By|^2)`. A 2D line plot is then represented accordingly if the objects contain at least one source and one sensor.
+By default source outputs are summed up and sensor pixel, if any, are aggregated by mean (`pixel_agg="mean"`).
+
+```{code-cell} ipython3
+import magpylib as magpy
+import numpy as np
+
+# define sensor and sources
+sensor = magpy.Sensor(pixel=[(-2,0,0), (2,0,0)])
+cyl1 = magpy.magnet.Cylinder(
+    magnetization=(100, 0, 0), dimension=(1, 2), style_label="Cylinder1"
+)
+
+# define paths
+N=40
+sensor.position = np.linspace((0, 0, -3), (0, 0, 3), N)
+cyl1.position = (4, 0, 0)
+cyl1.rotate_from_angax(angle=np.linspace(0, 300, N), start=0, axis="z", anchor=0)
+cyl2 = cyl1.copy().move((0, 0, 5))
+
+# display field data with context manager
+with magpy.show_context(cyl1, cyl2, sensor):
+    magpy.show(col=1, output=("Hx", "Hy", "Hz"))
+    magpy.show(col=2, output=("Bx", "By", "Bz"))
+
+# display field data with context manager , no sumup
+with magpy.show_context(cyl1, cyl2, sensor):
+    magpy.show(col=1, output="Hxy", sumup=False)
+    magpy.show(col=2, output="Byz", sumup=False)
+
+# display field data with context manager , no sumup, no pixel_agg
+with magpy.show_context(cyl1, cyl2, sensor, sumup=False):
+    magpy.show(col=1, output="H", pixel_agg=None)
+    magpy.show(col=2, output="B", pixel_agg=None)
+```
+
+### Coupled 2D/3D Animation
+
+Finally, Magpylib lets us show coupled 3D models with their field data while animating it.
+
+```{code-cell} ipython3
+import magpylib as magpy
+import numpy as np
+
+# define sensor and sources
+sensor = magpy.Sensor(pixel=[(-2,0,0), (2,0,0)])
+cyl1 = magpy.magnet.Cylinder(
+    magnetization=(100, 0, 0), dimension=(1, 2), style_label="Cylinder1"
+)
+
+# define paths
+N=40
+sensor.position = np.linspace((0, 0, -3), (0, 0, 3), N)
+cyl1.position = (4, 0, 0)
+cyl1.rotate_from_angax(angle=np.linspace(0, 300, N), start=0, axis="z", anchor=0)
+cyl2 = cyl1.copy().move((0, 0, 5))
+
+# display field data with context manager , no sumup, no pixel_agg
+with magpy.show_context(cyl1, cyl2, sensor, animation=True, style_pixel_size=0.2):
+    magpy.show(col=1)
+    magpy.show(col=2, output="Bx")
+```
+
+(examples-3d-models)=
+
+## Special 3D models
+
+(examples-own-3d-models)=
+### Custom 3D models
+
+Each Magpylib object has a default 3D representation that is displayed with `show`. Users can add a custom 3D model to any Magpylib object with help of the `style.model3d.add_trace` method. The new trace is stored in `style.model3d.data`. User-defined traces move with the object just like the default models do. The default trace can be hidden with the command `obj.model3d.showdefault=False`. When using the `'generic'` backend, custom traces are automatically translated into any other backend. If a specific backend is used, it will only show when called with the corresponding backend.
+
+The input `trace` is a dictionary which includes all necessary information for plotting or a `magpylib.graphics.Trace3d` object. A `trace` dictionary has the following keys:
+
+1. `'backend'`: `'generic'`, `'matplotlib'` or `'plotly'`
+2. `'constructor'`: name of the plotting constructor from the respective backend, e.g. plotly `'Mesh3d'` or matplotlib `'plot_surface'`
+3. `'args'`: default `None`, positional arguments handed to constructor
+4. `'kwargs'`: default `None`, keyword arguments handed to constructor
+5. `'coordsargs'`: tells magpylib which input corresponds to which coordinate direction, so that geometric representation becomes possible. By default `{'x': 'x', 'y': 'y', 'z': 'z'}` for the `'generic'` backend and Plotly backend,  and `{'x': 'args[0]', 'y': 'args[1]', 'z': 'args[2]'}` for the Matplotlib backend.
+6. `'show'`: default `True`, toggle if this trace should be displayed
+7. `'scale'`: default 1, object geometric scaling factor
+8. `'updatefunc'`: default `None`, updates the trace parameters when `show` is called. Used to generate  dynamic traces.
+
+The following example shows how a **generic** trace is constructed with  `Mesh3d` and `Scatter3d` and is displayed with three different backends:
+
+```{code-cell} ipython3
+import magpylib as magpy
+import numpy as np
+import pyvista as pv
+
+pv.set_jupyter_backend("panel")  # improve rendering in a jupyter notebook
+
+# Mesh3d trace #########################
+
+trace_mesh3d = {
+    "backend": "generic",
+    "constructor": "Mesh3d",
+    "kwargs": {
+        "x": (1, 0, -1, 0),
+        "y": (-0.5, 1.2, -0.5, 0),
+        "z": (-0.5, -0.5, -0.5, 1),
+        "i": (0, 0, 0, 1),
+        "j": (1, 1, 2, 2),
+        "k": (2, 3, 3, 3),
+        #'opacity': 0.5,
+    },
+}
+coll = magpy.Collection(position=(0, -3, 0), style_label="'Mesh3d' trace")
+coll.style.model3d.add_trace(trace_mesh3d)
+
+# Scatter3d trace ######################
+
+ts = np.linspace(0, 2 * np.pi, 30)
+trace_scatter3d = {
+    "backend": "generic",
+    "constructor": "Scatter3d",
+    "kwargs": {
+        "x": np.cos(ts),
+        "y": np.zeros(30),
+        "z": np.sin(ts),
+        "mode": "lines",
+    },
+}
+dipole = magpy.misc.Dipole(
+    moment=(0, 0, 1), style_label="'Scatter3d' trace", style_size=6
+)
+dipole.style.model3d.add_trace(trace_scatter3d)
+# show the system using different backends
+for backend in magpy.SUPPORTED_PLOTTING_BACKENDS:
+    print(f"Plotting backend: {backend!r}")
+    magpy.show(coll, dipole, backend=backend)
+```
+
+It is possible to have multiple user-defined traces that will be displayed at the same time. In addition, the following code shows how to quickly copy and manipulate trace dictionaries and `Trace3d` objects,
+
+```{code-cell} ipython3
+import copy
+
+dipole.style.size = 3
+
+# generate new trace from dictionary
+trace2 = copy.deepcopy(trace_scatter3d)
+trace2["kwargs"]["y"] = np.sin(ts)
+trace2["kwargs"]["z"] = np.zeros(30)
+
+dipole.style.model3d.add_trace(trace2)
+
+# generate new trace from Trace3d object
+trace3 = dipole.style.model3d.data[1].copy()
+trace3.kwargs["x"] = np.zeros(30)
+trace3.kwargs["z"] = np.cos(ts)
+
+dipole.style.model3d.add_trace(trace3)
+
+dipole.show(dipole, backend="matplotlib")
+```
+
+**Matplotlib** plotting functions often use positional arguments for $(x,y,z)$ input, that are handed over from `args=(x,y,z)` in `trace`. The following examples show how to construct traces with `plot`, `plot_surface` and `plot_trisurf`:
+
+```{code-cell} ipython3
+import magpylib as magpy
+import matplotlib.pyplot as plt
+import matplotlib.tri as mtri
+import numpy as np
+
+# plot trace ###########################
+
+ts = np.linspace(-10, 10, 100)
+xs = np.cos(ts)
+ys = np.sin(ts)
+zs = ts / 20
+
+trace_plot = {
+    "backend": "matplotlib",
+    "constructor": "plot",
+    "args": (xs, ys, zs),
+    "kwargs": {"ls": "--", "lw": 2},
+}
+magnet = magpy.magnet.Cylinder(magnetization=(0, 0, 1), dimension=(0.5, 1))
+magnet.style.model3d.add_trace(trace_plot)
+
+# plot_surface trace ###################
+
+u, v = np.mgrid[0 : 2 * np.pi : 30j, 0 : np.pi : 20j]
+xs = np.cos(u) * np.sin(v)
+ys = np.sin(u) * np.sin(v)
+zs = np.cos(v)
+
+trace_surf = {
+    "backend": "matplotlib",
+    "constructor": "plot_surface",
+    "args": (xs, ys, zs),
+    "kwargs": {"cmap": plt.cm.YlGnBu_r},
+}
+ball = magpy.Collection(position=(-3, 0, 0))
+ball.style.model3d.add_trace(trace_surf)
+
+# plot_trisurf trace ###################
+
+u, v = np.mgrid[0 : 2 * np.pi : 50j, -0.5:0.5:10j]
+u, v = u.flatten(), v.flatten()
+
+xs = (1 + 0.5 * v * np.cos(u / 2.0)) * np.cos(u)
+ys = (1 + 0.5 * v * np.cos(u / 2.0)) * np.sin(u)
+zs = 0.5 * v * np.sin(u / 2.0)
+
+tri = mtri.Triangulation(u, v)
+
+trace_trisurf = {
+    "backend": "matplotlib",
+    "constructor": "plot_trisurf",
+    "args": (xs, ys, zs),
+    "kwargs": {
+        "triangles": tri.triangles,
+        "cmap": plt.cm.coolwarm,
+    },
+}
+mobius = magpy.misc.CustomSource(style_model3d_showdefault=False, position=(3, 0, 0))
+mobius.style.model3d.add_trace(trace_trisurf)
+
+magpy.show(magnet, ball, mobius, zoom=5, backend="matplotlib")
+```
+
+### Pre-defined 3D models
+
+Automatic trace generators are provided for several basic 3D models in `magpylib.graphics.model3d`. If no backend is specified, it defaults back to `'generic'`. They can be used as follows,
+
+```{code-cell} ipython3
+import magpylib as magpy
+from magpylib.graphics import model3d
+
+# prism trace ###################################
+trace_prism = model3d.make_Prism(
+    base=6,
+    diameter=2,
+    height=1,
+    position=(-3, 0, 0),
+)
+obj0 = magpy.Sensor(style_model3d_showdefault=False, style_label="Prism")
+obj0.style.model3d.add_trace(trace_prism)
+
+# pyramid trace #################################
+trace_pyramid = model3d.make_Pyramid(
+    base=30,
+    diameter=2,
+    height=1,
+    position=(3, 0, 0),
+)
+obj1 = magpy.Sensor(style_model3d_showdefault=False, style_label="Pyramid")
+obj1.style.model3d.add_trace(trace_pyramid)
+
+# cuboid trace ##################################
+trace_cuboid = model3d.make_Cuboid(
+    dimension=(2, 2, 2),
+    position=(0, 3, 0),
+)
+obj2 = magpy.Sensor(style_model3d_showdefault=False, style_label="Cuboid")
+obj2.style.model3d.add_trace(trace_cuboid)
+
+# cylinder segment trace ########################
+trace_cylinder_segment = model3d.make_CylinderSegment(
+    dimension=(1, 2, 1, 140, 220),
+    position=(1, 0, -3),
+)
+obj3 = magpy.Sensor(style_model3d_showdefault=False, style_label="Cylinder Segment")
+obj3.style.model3d.add_trace(trace_cylinder_segment)
+
+# ellipsoid trace ###############################
+trace_ellipsoid = model3d.make_Ellipsoid(
+    dimension=(2, 2, 2),
+    position=(0, 0, 3),
+)
+obj4 = magpy.Sensor(style_model3d_showdefault=False, style_label="Ellipsoid")
+obj4.style.model3d.add_trace(trace_ellipsoid)
+
+# arrow trace ###################################
+trace_arrow = model3d.make_Arrow(
+    base=30,
+    diameter=0.6,
+    height=2,
+    position=(0, -3, 0),
+)
+obj5 = magpy.Sensor(style_model3d_showdefault=False, style_label="Arrow")
+obj5.style.model3d.add_trace(trace_arrow)
+
+magpy.show(obj0, obj1, obj2, obj3, obj4, obj5, backend="plotly")
+```
+
+(examples-adding-CAD-model)=
+
+### Adding a CAD model
+
+As shown in {ref}`examples-3d-models`, it is possible to attach custom 3D model representations to any Magpylib object. In the example below we show how a standard CAD model can be transformed into a generic Magpylib graphic trace, and displayed by both `matplotlib` and `plotly` backends.
+
+```{note}
+The code below requires installation of the `numpy-stl` package.
+```
+
+```{code-cell} ipython3
+import os
+import tempfile
+
+import magpylib as magpy
+import numpy as np
+import requests
+from matplotlib.colors import to_hex
+from stl import mesh  # requires installation of numpy-stl
+
+
+def bin_color_to_hex(x):
+    """transform binary rgb into hex color"""
+    sb = f"{x:015b}"[::-1]
+    r = int(sb[:5], base=2) / 31
+    g = int(sb[5:10], base=2) / 31
+    b = int(sb[10:15], base=2) / 31
+    return to_hex((r, g, b))
+
+
+def trace_from_stl(stl_file):
+    """
+    Generates a Magpylib 3D model trace dictionary from an *.stl file.
+    backend: 'matplotlib' or 'plotly'
+    """
+    # load stl file
+    stl_mesh = mesh.Mesh.from_file(stl_file)
+
+    # extract vertices and triangulation
+    p, q, r = stl_mesh.vectors.shape
+    vertices, ixr = np.unique(
+        stl_mesh.vectors.reshape(p * q, r), return_inverse=True, axis=0
+    )
+    i = np.take(ixr, [3 * k for k in range(p)])
+    j = np.take(ixr, [3 * k + 1 for k in range(p)])
+    k = np.take(ixr, [3 * k + 2 for k in range(p)])
+    x, y, z = vertices.T
+
+    # generate and return a generic trace which can be translated into any backend
+    colors = stl_mesh.attr.flatten()
+    facecolor = np.array([bin_color_to_hex(c) for c in colors]).T
+    trace = {
+        "backend": "generic",
+        "constructor": "mesh3d",
+        "kwargs": dict(x=x, y=y, z=z, i=i, j=j, k=k, facecolor=facecolor),
+    }
+    return trace
+
+
+# load stl file from online resource
+url = "https://raw.githubusercontent.com/magpylib/magpylib-files/main/PG-SSO-3-2.stl"
+file = url.split("/")[-1]
+with tempfile.TemporaryDirectory() as temp:
+    fn = os.path.join(temp, file)
+    with open(fn, "wb") as f:
+        response = requests.get(url)
+        f.write(response.content)
+
+    # create traces for both backends
+    trace = trace_from_stl(fn)
+
+# create sensor and add CAD model
+sensor = magpy.Sensor(style_label="PG-SSO-3 package")
+sensor.style.model3d.add_trace(trace)
+
+# create magnet and sensor path
+magnet = magpy.magnet.Cylinder(magnetization=(0, 0, 100), dimension=(15, 20))
+sensor.position = np.linspace((-15, 0, 8), (-15, 0, -4), 21)
+sensor.rotate_from_angax(np.linspace(0, 180, 21), "z", anchor=0, start=0)
+
+# display with matplotlib and plotly backends
+args = (sensor, magnet)
+kwargs = dict(style_path_frames=5)
+magpy.show(args, **kwargs, backend="matplotlib")
+magpy.show(args, **kwargs, backend="plotly")
+```
diff --git a/docs/_pages/docu/docu_index.md b/docs/_pages/docu/docu_index.md
new file mode 100644
index 000000000..4f93b1a20
--- /dev/null
+++ b/docs/_pages/docu/docu_index.md
@@ -0,0 +1,38 @@
+(docu-index)=
+
+# Documentation
+
+::::{grid} 3
+:gutter: 4
+
+:::{grid-item-card} {ref}`docu-magpylib`
+:link: docu-magpylib
+:link-type: ref
+:img-top: ../../_static/images/docu_index_icon_magpylib.png
+Fundamentals and magnetic field computation
+:::
+
+:::{grid-item-card} {ref}`docu-graphics`
+:link: docu-magpylib-show
+:link-type: ref
+:img-top: ../../_static/images/docu_index_icon_magpylib_show.png
+Magpylib graphics, styles, and backend
+:::
+
+:::{grid-item-card} {ref}`docu-physics`
+:link: docu-physics
+:link-type: ref
+:img-top: ../../_static/images/docu_index_icon_physics.png
+Physics and computation background
+:::
+
+::::
+
+```{toctree}
+:maxdepth: 2
+:hidden:
+
+docu_magpylib_api.md
+docu_graphics.md
+docu_physics.md
+```
\ No newline at end of file
diff --git a/docs/_pages/docu/docu_magpylib_api.md b/docs/_pages/docu/docu_magpylib_api.md
new file mode 100644
index 000000000..293391e00
--- /dev/null
+++ b/docs/_pages/docu/docu_magpylib_api.md
@@ -0,0 +1,792 @@
+
+<hr style="border:3px solid gray">
+
+(docu-magpylib)=
+(docu-io)=
+
+# Magpylib API
+
+<hr style="border:3px solid gray">
+
+## Types
+
+Magpylib requires no special input format. All scalar types (`int`, `float`, ...) and vector types (`list`, `tuple`, `np.ndarray`, ... ) are accepted. Magpylib returns everything as `np.ndarray`.
+
+(docu-units)=
+## Units
+
+For historical reasons Magpylib is by default set up for the following units
+
+::::{grid} 3
+:::{grid-item}
+:columns: 1
+:::
+
+:::{grid-item}
+:columns: 10
+| PHYSICAL QUANTITY | MAGPYLIB PARAMETER | UNIT |
+|:---:|:---:|:---:|
+| magnetic polarization  | `magnetization`               | **mT**      |
+| electric current       | `current`                     | **A**       |
+| magnetic dipole moment | `moment`                      | **mT*mm^3** |
+| B-field                | `getB()`                      | **mT**      |
+| H-field                | `getH()`                      | **kA/m**    |
+| length-inputs          | `position`, `dimension`, ...  | **mm**      |
+| angle-inputs           | `angle`, `dimension`, ...     | **deg**     |
+:::
+
+::::
+
+```{warning}
+Unfortunately Magpylib contributes to the naming confusion in magnetism that is explained well [here](https://www.e-magnetica.pl/doku.php/confusion_between_b_and_h). The input `magnetization` in Magpylib refers to the magnetic polarization (and not the magnetization), the difference being only in the physical unit.
+```
+
+The analytical solutions are scale invariant - _"a magnet with 1 mm sides creates the same field at 1 mm distance as a magnet with 1 m sides at 1 m distance"_. The choice of length input unit is therefore not relevant.
+
+In addition, `getB` returns the same unit as given by the `magnetization` input. When the magnetization is given in mT, then `getH` returns kA/m which is simply related by factor of $\frac{10}{4\pi}$.
+
+In {ref}`phys-remanence` the connection between the `magnetization` input and the remanence field of a magnet is explained.
+
+<!-- ################################################################## -->
+<!-- ################################################################## -->
+<!-- ################################################################## -->
+
+<br/><br/>
+<hr style="border:3px solid gray">
+
+(docu-classes)=
+
+# The Magpylib Classes
+
+<hr style="border:3px solid gray">
+
+In Magpylib's object oriented interface magnetic field **sources** (generate the field) and **observers** (read the field) are created as Python objects with various defining attributes and methods.
+
+## Base properties
+
+The following basic properties are shared by all Magpylib classes:
+
+* The <span style="color: orange">**position**</span> and <span style="color: orange">**orientation**</span> attributes describe the object placement in the global coordinate system. By default `position=(0,0,0)` and `orientation=None` (=unit rotation).
+
+* The <span style="color: orange">**move()**</span> and <span style="color: orange">**rotate()**</span> methods enable relative object positioning.
+
+* The <span style="color: orange">**reset_path()**</span> method sets position and orientation to default values.
+
+* The <span style="color: orange">**barycenter**</span> property returns the object barycenter (often the same as position).
+
+See {ref}`docu-position` for more information on these features.
+
+
+* The <span style="color: orange">**style**</span> attribute includes all settings for graphical object representation.
+
+* The <span style="color: orange">**show()**</span> method gives quick access to the graphical representation.
+
+See {ref}`docu-graphics` for more information on graphic output, default styles and customization possibilities.
+
+* The <span style="color: orange">**getB()**</span> and <span style="color: orange">**getH()**</span> methods give quick access to field computation.
+
+See {ref}`docu-field-computation` for more information.
+
+
+* The <span style="color: orange">**parent**</span> attribute references a [Collection](docu-collection) that the object is part of.
+
+* The <span style="color: orange">**copy()**</span> method can be used to create a clone of any object where selected properties, given by kwargs, are modified.
+
+* The <span style="color: orange">**describe()**</span> method provides a brief description of the object and returns the unique object id.
+
+## Local and global coordinates
+
+::::{grid} 2
+:::{grid-item}
+:columns: 9
+Magpylib objects span a local reference frame, and all object properties are defined within this frame, for example the vertices of a `Tetrahedron` magnet (see below). The position and orientation attributes describe how the local frame lies within the global coordinates. The two frames coincide by default, when `position=(0,0,0)` and `orientation=None` (=unit rotation).
+:::
+:::{grid-item}
+:columns: 3
+![](../../_static/images/docu_classes_init_global_local.png)
+:::
+::::
+
+
+---------------------------------------------
+
+
+## Magnet classes
+
+All magnets are sources. They have the <span style="color: orange">**magnetization**</span> attribute which is of the format $(m_x, m_y, m_z)$ and denotes a homogeneous magnetization/polarization vector in the local object coordinates in arbitrary units. Information how this is related to material properties from data sheets is found in the [Physics and Computation](phys-remanence) section.
+
+
+### Cuboid
+```python
+magpy.magnet.Cuboid(magnetization, dimension, position, orientation, style)
+```
+
+::::{grid} 2
+:::{grid-item}
+:columns: 9
+`Cuboid` objects represent magnets with cuboid shape. The <span style="color: orange">**dimension**</span> attribute has the format $(a,b,c)$ and denotes the sides of the cuboid in arbitrary length units. The center of the cuboid lies in the origin of the local coordinates, and the sides are parallel to the coordinate axes.
+:::
+:::{grid-item}
+:columns: 3
+![](../../_static/images/docu_classes_init_cuboid.png)
+:::
+::::
+
+
+### Cylinder
+```python
+magpy.magnet.Cylinder(magnetization, dimension, position, orientation, style)
+```
+
+::::{grid} 2
+:::{grid-item}
+:columns: 9
+`Cylinder` objects represent magnets with cylindrical shape. The <span style="color: orange">**dimension**</span> attribute has the format $(d,h)$ and denotes diameter and height of the cylinder in arbitrary length units. The center of the cylinder lies in the origin of the local coordinates, and the cylinder axis coincides with the z-axis.
+:::
+:::{grid-item}
+:columns: 3
+![](../../_static/images/docu_classes_init_cylinder.png)
+:::
+::::
+
+
+### CylinderSegment
+```python
+magpy.magnet.CylinderSegment(magnetization, dimension, position, orientation, style)
+```
+
+::::{grid} 2
+:::{grid-item}
+:columns: 9
+`CylinderSegment`represents a magnet with the shape of a cylindrical ring section. The <span style="color: orange">**dimension**</span> attribute has the format $(r_1,r_2,h,\varphi_1,\varphi_2)$ and denotes inner radius, outer radius and height in arbitrary length units, and the two section angles $\varphi_1<\varphi_2$ in deg. The center of the full cylinder lies in the origin of the local coordinates, and the cylinder axis coincides with the z-axis.
+:::
+:::{grid-item}
+:columns: 3
+![](../../_static/images/docu_classes_init_cylindersegment.png)
+:::
+:::{grid-item}
+:columns: 12
+**Info:** When the cylinder section angles span 360°, then the much faster `Cylinder` methods are used for the field computation.
+:::
+::::
+
+
+### Sphere
+```python
+magpy.magnet.Sphere(magnetization, diameter, position, orientation, style)
+```
+
+::::{grid} 2
+:::{grid-item}
+:columns: 9
+`Sphere` represents a magnet of spherical shape. The <span style="color: orange">**diameter**</span> attribute is the sphere diameter $d$ in arbitrary length units. The center of the sphere lies in the origin of the local coordinates.
+:::
+:::{grid-item}
+:columns: 3
+![](../../_static/images/docu_classes_init_sphere.png)
+:::
+::::
+
+
+### Tetrahedron
+```python
+magpy.magnet.Tetrahedron(magnetization, vertices, position, orientation, style)
+```
+
+::::{grid} 2
+:::{grid-item}
+:columns: 9
+`Tetrahedron` represents a magnet of tetrahedral shape. The <span style="color: orange">**vertices**</span> attribute stores the four corner points $(P_1, P_2, P_3, P_4)$ in the local object coordinates in arbitrary length units.
+:::
+:::{grid-item}
+:columns: 3
+![](../../_static/images/docu_classes_init_tetra.png)
+:::
+:::{grid-item}
+:columns: 12
+**Info:** The `Tetrahedron` field is computed from four `Triangle` fields.
+:::
+::::
+
+
+### TriangularMesh
+```python
+magpy.magnet.TriangularMesh(magnetization, vertices, faces, position, orientation, check_open, check_disconnected, check_selfintersecting, reorient_faces, style)
+```
+
+::::{grid} 2
+:::{grid-item}
+:columns: 9
+`TriangularMesh` represents a magnet with surface given by a triangular mesh. The mesh is defined by the <span style="color: orange">**vertices**</span> attribute, an array of all unique corner points $(P_1, P_2, ...)$ in arbitrary length units, and the <span style="color: orange">**faces**</span> attribute, which is an array of index-triplets that define individual faces $(F_1, F_2, ...)$. The property <span style="color: orange">**mesh**</span> returns an array of all faces as point-triples $[(P_1^1, P_2^1, P_3^1), (P_1^2, P_2^2, P_3^2), ...]$.
+
+At initialization the mesh integrity is automatically checked, and all faces are reoriented to point outwards. These actions are controlled via the kwargs
+* <span style="color: orange">**check_open**</span>
+* <span style="color: orange">**check_disconnected**</span>
+* <span style="color: orange">**check_selfintersecting**</span>
+* <span style="color: orange">**reorient_faces**</span>
+
+which are all by default set to `"warn"`. Options are `"skip"` (don't perform check), `"ignore"` (ignore if check fails), `"warn"` (warn if check fails), `"raise"` (raise error if check fails).
+
+Results of the checks are stored in the following object attributes
+* <span style="color: orange">**status_open**</span> can be `True`, `False` or `None` (unchecked)
+* <span style="color: orange">**status_open_data**</span> contains an array of open edges
+* <span style="color: orange">**status_disconnected**</span> can be `True`, `False` or `None` (unchecked)
+* <span style="color: orange">**status_disconnected_data**</span> contains an array of mesh parts
+* <span style="color: orange">**status_selfintersecting**</span> can be `True`, `None` or `None` (unchecked)
+* <span style="color: orange">**status_selfintersecting_data**</span> contains an array of self-intersecting faces
+* <span style="color: orange">**status_reoriented**</span> can be `True` or `False`
+
+The checks can also be performed after initialization using the methods
+* <span style="color: orange">**check_open()**</span>
+* <span style="color: orange">**check_disconnected()**</span>
+* <span style="color: orange">**check_selfintersecting()**</span>
+* <span style="color: orange">**reorient_faces()**</span>
+
+The following class methods enable easy mesh loading and creating. They all take the mandatory <span style="color: orange">**magnetization**</span> argument, which overwrites possible magnetization from other inputs, as well as the optional mesh check parameters (see above).
+
+* <span style="color: orange">**TriangularMesh.from_mesh()**</span> requires the input <span style="color: orange">**mesh**</span>, which is an array in the mesh format $[(P_1^1, P_2^1, P_3^1), (P_1^2, P_2^2, P_3^2), ...]$.
+* <span style="color: orange">**TriangularMesh.from_ConvexHull()**</span> requires the input <span style="color: orange">**points**</span>, which is an array of positions $(P_1, P_2, P_3, ...)$ from which the convex Hull is computed via the [Scipy ConvexHull](https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.ConvexHull.html) implementation.
+* <span style="color: orange">**TriangularMesh.from_triangles()**</span> requires the input <span style="color: orange">**triangles**</span>, which is a list or a `Collection` of `Triangle` objects.
+* <span style="color: orange">**TriangularMesh.from_pyvista()**</span> requires the input <span style="color: orange">**polydata**</span>, which is a [Pyvista PolyData](https://docs.pyvista.org/version/stable/api/core/_autosummary/pyvista.PolyData.html) object.
+
+The method <span style="color: orange">**to_TriangleCollection()**</span> transforms a `TriangularMesh` object into a `Collection` of `Triangle` objects.
+:::
+:::{grid-item}
+:columns: 3
+![](../../_static/images/docu_classes_init_trimesh.png)
+:::
+:::{grid-item}
+:columns: 12
+**Info:** While the checks may be disabled, the field computation guarantees correct results only if the mesh is closed, connected, not self-intersecting and all faces are oriented outwards. A tutorial {ref}`gallery-tutorial-trimesh` is provided in the gallery.
+:::
+::::
+
+
+---------------------------------------------
+
+
+## Current classes
+
+All currents are sources. Current objects have the <span style="color: orange">**current**</span> attribute which is a scalar that denotes the electrical current in arbitrary units.
+
+### Loop
+```python
+magpy.current.Loop(current, diameter, position, orientation, style)
+```
+
+::::{grid} 2
+:::{grid-item}
+:columns: 9
+`Current` represents a circular line current loop. The <span style="color: orange">**diameter**</span> attribute is the loop diameter $d$ in arbitrary length units. The loop lies in the xy-plane with it's center in the origin of the local coordinates.
+:::
+:::{grid-item}
+:columns: 3
+![](../../_static/images/docu_classes_init_loop.png)
+:::
+::::
+
+### Line
+```python
+magpy.current.Line(current, vertices, position, orientation, style)
+```
+
+::::{grid} 2
+:::{grid-item}
+:columns: 9
+`Line` represents a set of line current segments that flow from vertex to vertex. The <span style="color: orange">**vertices**</span> attribute is a vector of all vertices $(P_1, P_2, ...)$ given in the local coordinates in arbitrary length units.
+:::
+:::{grid-item}
+:columns: 3
+![](../../_static/images/docu_classes_init_line.png)
+:::
+::::
+
+---------------------------------------------
+
+## Miscellanous classes
+
+There are classes listed hereon that function as sources, but they do not represent physical magnets or current distributions.
+
+
+### Dipole
+```python
+magpy.misc.Dipole(moment, position, orientation, style)
+```
+
+::::{grid} 2
+:::{grid-item}
+:columns: 9
+`Dipole` represents a magnetic dipole moment with the <span style="color: orange">**moment**</span> attribute that describes the magnetic dipole moment $m=(m_x,m_y,m_z)$ in arbitrary units which lies in the origin of the local coordinates.
+:::
+:::{grid-item}
+:columns: 3
+![](../../_static/images/docu_classes_init_dipole.png)
+:::
+:::{grid-item}
+:columns: 12
+**Info:** For homogeneous magnets the relation moment=magnetization$\times$volume holds.
+:::
+::::
+
+
+### Triangle
+```python
+magpy.misc.Triangle(magnetization, vertices, position, orientation, style)
+```
+
+::::{grid} 2
+:::{grid-item}
+:columns: 9
+`Triangle` represents a triangular surface with a homogeneous charge density given by the projection of the magnetization vector onto the surface normal. The <span style="color: orange">**magnetization**</span> attribute stores the magnetization vector $(m_x,m_y,m_z)$  in arbitrary units. The <span style="color: orange">**vertices**</span> attribute is a set of the three triangle corners $(P_1, P_2, P_3)$ in arbitrary length units in the local coordinates.
+:::
+:::{grid-item}
+:columns: 3
+![](../../_static/images/docu_classes_init_triangle.png)
+:::
+:::{grid-item}
+:columns: 12
+**Info:** When multiple Triangles with similar magnetization vectors form a closed surface, and all their orientations (right-hand-rule) point outwards, their total H-field is equivalent to the field of a homogeneous magnet of the same shape. The B-field is only correct on the outside of the body. On the inside the magnetization must be added to the field. This is demonstrated in the tutorial {ref}`gallery-shapes-triangle`.
+:::
+::::
+
+
+### CustomSource
+```python
+magpy.misc.CustomSource(field_func, position, orientation, style)
+```
+
+::::{grid} 2
+:::{grid-item}
+:columns: 9
+`CustomSource` is used to create user defined sources with their own field functions. The argument <span style="color: orange">**field_func**</span> takes a function that is then automatically called for the field computation. This custom field function is treated like a [core function](docu-field-comp-core). It must have the positional arguments `field` with values `"B"` or `"H"`, and `observers` (must accept array with shape (n,3)) and return the B-field and the H-field with a similar shape.
+:::
+:::{grid-item}
+:columns: 3
+![](../../_static/images/docu_classes_init_custom.png)
+:::
+:::{grid-item}
+:columns: 12
+**Info:** A tutorial {ref}`gallery-tutorial-custom` is found in the gallery.
+:::
+::::
+
+
+---------------------------------------------
+
+
+## Sensor
+```python
+magpy.Sensor(position, pixel, orientation, style)
+```
+
+::::{grid} 2
+:::{grid-item}
+:columns: 9
+`Sensor` represents a 3D magnetic field sensor and can be used as Magpylib `observers` input. The <span style="color: orange">**pixel**</span> attribute is an array of positions $(P_1, P_2, ...)$ in arbitrary length units in the local sensor coordinates where the field is computed. By default `pixel=(0,0,0)` and the sensor simply returns the field at it's position.
+:::
+:::{grid-item}
+:columns: 3
+![](../../_static/images/docu_classes_init_sensor.png)
+:::
+:::{grid-item}
+:columns: 12
+**Info:** With sensors it is possible to give observers their own position and orientation. The field is always computed in the reference frame of the sensor, which might itself be moving in the global coordinate system. This is demonstrated in {ref}`gallery-tutorial-field-computation-sensors`.
+:::
+::::
+
+
+---------------------------------------------
+
+
+(docu-collection)=
+
+## Collection
+```python
+magpy.Collection(*children, position, orientation, style)
+```
+
+::::{grid} 2
+:::{grid-item}
+:columns: 9
+A `Collection` is a group of Magpylib objects that is used for common manipulation. All these objects are stored by reference in the <span style="color: orange">**children**</span> attribute. There are several options for accessing only specific children via the following properties
+
+* <span style="color: orange">**sources**</span>: return only sources
+* <span style="color: orange">**observers**</span>: return only observers
+* <span style="color: orange">**collections**</span>: return only collections
+* <span style="color: orange">**sources_all**</span>: return all sources, including the ones from sub-collections
+* <span style="color: orange">**observers_all**</span>: return all observers, including the ones from sub-collections
+* <span style="color: orange">**collections_all**</span>: return all collections, including the ones from sub-collections
+
+Additional methods for adding and removing children:
+
+- <span style="color: orange">**add()**</span>: Add an object to the collection
+- <span style="color: orange">**remove()**</span>: Remove an object from the collection
+:::
+:::{grid-item}
+:columns: 3
+![](../../_static/images/docu_classes_init_collection.png)
+:::
+:::{grid-item}
+:columns: 12
+**Info:** A collection object has its own `position` and `orientation` attributes and spans a local reference frame for all its children. An operation applied to a collection moves the frame, and is individually applied to all children such that their relative position in the local reference frame is maintained. This means that the collection functions  as a container for manipulation, but child position and orientation are always updated in the global coordinate system. After being added to a collection, it is still possible to manipulate the individual children, which will also move them to a new relative position in the collection frame.
+
+Collections have **format** as an additional argument for **describe()** method. Default value is `format="type+id+label"`. Any combination of `"type"`, `"id"`, and `"label"` is allowed.
+
+A tutorial {ref}`gallery-tutorial-collection` is provided in the example gallery.
+:::
+::::
+
+
+<!-- ################################################################## -->
+<!-- ################################################################## -->
+<!-- ################################################################## -->
+
+
+<br/><br/>
+<hr style="border:3px solid gray">
+
+(docu-position)=
+
+# Position, Orientation, and Paths
+
+<hr style="border:3px solid gray">
+
+::::{grid} 2
+
+:::{grid-item}
+:columns: 7
+The explicit magnetic field expressions, implemented in Magpylib, are generally described in convenient coordinates of the sources. It is a common problem to transform the field into an application relevant lab coordinate system. While not technically difficult, such transformations are prone to error.
+
+Here Magpylib helps out. All Magpylib objects lie in a global Cartesian coordinate system. Object position and orientation are defined by the attributes `position` and `orientation`, 😏. Objects can easily be moved around using the `move()` and `rotate()` methods. Eventually, the field is computed in the reference frame of the observers.
+:::
+:::{grid-item}
+:columns: 5
+![](../../_static/images/docu_position_sketch.png)
+:::
+::::
+
+Position and orientation of all Magpylib objects are defined by the two attributes
+
+::::{grid} 2
+:::{grid-item-card}
+:shadow: none
+:columns: 5
+<span style="color: orange">**position**</span> - a point $(x,y,z)$ in the global coordinates, or a set of such points $(P_1, P_2, ...)$. By default objects are created with `position=(0,0,0)`.
+:::
+:::{grid-item-card}
+:shadow: none
+:columns: 7
+<span style="color: orange">**orientation**</span> - a [Scipy Rotation object](https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.transform.Rotation.html) which describes the object rotation relative to its default orientation (defined in {ref}`docu-classes`). By default, objects are created with unit rotation `orientation=None`.
+:::
+::::
+
+The position and orientation attributes can be either **scalar**, i.e. a single position or a single rotation, or **vector**, when they are arrays of such scalars. The two attributes together define the **path** of an object - Magpylib makes sure that they are always of the same length. When the field is computed, it is automatically computed for the whole path.
+
+```{tip}
+To enable vectorized field computation, paths should always be used when modeling multiple object positions. Avoid using Python loops at all costs for that purpose! If your path is difficult to realize, consider using the [direct interface](docu-direct-interface) instead.
+```
+
+Magpylib offers two powerful methods for object manipulation:
+
+::::{grid} 2
+:::{grid-item-card}
+:columns: 5
+:shadow: none
+<span style="color: orange">**move(**</span>`displacement`, `start="auto"`<span style="color: orange">**)**</span> -  move object by `displacement` input. `displacement` is a position vector (scalar input) or a set of position vectors (vector input).
+:::
+:::{grid-item-card}
+:columns: 7
+:shadow: none
+<span style="color: orange">**rotate(**</span>`rotation`, `anchor=None`, `start="auto"`<span style="color: orange">**)**</span> - rotates the object by the `rotation` input about an anchor point defined by the `anchor` input. `rotation` is a [Scipy Rotation object](https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.transform.Rotation.html), and `anchor` is a position vector. Both can be scalar or vector inputs. With `anchor=None` the object is rotated about its `position`.
+:::
+::::
+
+- Scalar input is applied to the whole object path, starting with path index `start`. With the default `start="auto"` the index is set to `start=0` and the functionality is **moving objects around**.
+- Vector input of length $n$ applies the $n$ individual operations to $n$ object path entries, starting with path index `start`. Padding applies when the input exceeds the existing path. With the default `start="auto"` the index is set to `start=len(object path)` and the functionality is **appending paths**.
+
+The practical application of this formalism is best demonstrated by the following program
+
+```python
+import magpylib as magpy
+
+sensor = magpy.Sensor()
+print(sensor.position)                                    # default value
+#   --> [0. 0. 0.]
+
+sensor.move((1,1,1))                                      # scalar input is by default applied
+print(sensor.position)                                    # to the whole path
+#   --> [1. 1. 1.]
+
+sensor.move([(1,1,1), (2,2,2)])                           # vector input is by default appended
+print(sensor.position)                                    # to the existing path
+#   --> [[1. 1. 1.]  [2. 2. 2.]  [3. 3. 3.]]
+
+sensor.move((1,1,1), start=1)                             # scalar input and start=1 is applied
+print(sensor.position)                                    # to whole path starting at index 1
+#   --> [[1. 1. 1.]  [3. 3. 3.]  [4. 4. 4.]]
+
+sensor.move([(0,0,10), (0,0,20)], start=1)                # vector input and start=1 merges
+print(sensor.position)                                    # the input with the existing path
+#   --> [[ 1.  1.  1.]  [ 3.  3. 13.]  [ 4.  4. 24.]]     # starting at index 1.
+```
+
+Several extensions of the `rotate` method give a lot of flexibility with object rotation. They all feature the arguments `anchor` and `start` which work as described above.
+
+:::{dropdown} <span style="color: orange">**rotate_from_angax(**</span>`angle`, `axis`, `anchor=None`, `start="auto"`, `degrees=True` <span style="color: orange">**)**</span>
+* `angle`: scalar or array with shape (n). Angle(s) of rotation.
+* `axis`: array of shape (3,) or string. The direction of the rotation axis. String input can be 'x', 'y' or 'z' to denote respective directions.
+* `degrees`: bool, default=True. Interpret angle input in units of deg (True) or rad (False).
+:::
+
+:::{dropdown} <span style="color: orange">**rotate_from_rotvec(**</span>`rotvec`, `anchor=None`, `start="auto"`, `degrees=True` <span style="color: orange">**)**</span>
+* `rotvec` : array with shape (n,3) or (3,). The rotation vector direction is the rotation axis and the vector length is the rotation angle in units of deg.
+* `degrees`: bool, default=True. Interpret angle input in units of deg (True) or rad (False).
+:::
+
+:::{dropdown} <span style="color: orange">**rotate_from_euler(**</span> `angle`, `seq`, `anchor=None`, `start="auto"`, `degrees=True` <span style="color: orange">**)**</span>
+* `angle`: scalar or array with shape (n). Angle(s) of rotation in units of deg (by default).
+* `seq` : string. Specifies sequence of axes for rotations. Up to 3 characters belonging to the set {'X', 'Y', 'Z'} for intrinsic rotations, or {'x', 'y', 'z'} for extrinsic rotations. Extrinsic and intrinsic rotations cannot be mixed in one function call.
+* `degrees`: bool, default=True. Interpret angle input in units of deg (True) or rad (False).
+:::
+
+:::{dropdown} <span style="color: orange">**rotate_from_quat(**</span>`quat`, `anchor=None`, `start="auto"` <span style="color: orange">**)**</span>
+* `quat` : array with shape (n,4) or (4,). Rotation input in quaternion form.
+:::
+
+:::{dropdown} <span style="color: orange">**rotate_from_mrp(**</span>`matrix`, `anchor=None`, `start="auto"` <span style="color: orange">**)**</span>
+* `matrix` : array with shape (n,3,3) or (3,3). Rotation matrix. See scipy.spatial.transform.Rotation for details.
+:::
+
+:::{dropdown} <span style="color: orange">**rotate_from_mrp(**</span>`mrp`, `anchor=None`, `start="auto"` <span style="color: orange">**)**</span>
+* `mrp` : array with shape (n,3) or (3,). Modified Rodrigues parameter input. See scipy Rotation package for details.
+:::
+
+When objects with different path lengths are combined, e.g. when computing the field, the shorter paths are treated as static beyond their end to make the computation sensible. Internally, Magpylib follows a philosophy of edge-padding and end-slicing when adjusting paths.
+
+::::{grid} 2
+:::{grid-item-card}
+:columns: 7
+:shadow: none
+**Edge-padding:** whenever path entries beyond the existing path length are needed the edge-entries of the existing path are returned. This means that the object is considered to be “static” beyond its existing path.
+:::
+:::{grid-item-card}
+:columns: 5
+:shadow: none
+**End-slicing:** whenever a path is automatically reduced in length, Magpylib will slice such that the ending of the path is kept.
+:::
+::::
+
+The tutorial {ref}`gallery-tutorial-paths` shows intuitive good practice examples of the important functionality described in this section.
+
+
+<!-- ################################################################## -->
+<!-- ################################################################## -->
+<!-- ################################################################## -->
+<br/><br/>
+<hr style="border:3px solid gray">
+
+(docu-field-computation)=
+# Field Computation
+
+<hr style="border:3px solid gray">
+
+Magnetic field computation in Magpylib is done via two top-level functions
+
+::::{grid}
+:gutter: 2
+
+:::{grid-item}
+:columns: 1
+:::
+
+:::{grid-item-card}
+:shadow: none
+:columns: 10
+<span style="color: orange">**getB(**</span>`sources`, `observers`, `squeeze=True`, `pixel_agg=None`, `output="ndarray"`<span style="color: orange">**)**</span>
+:::
+
+:::{grid-item}
+:columns: 1
+:::
+
+:::{grid-item}
+:columns: 1
+:::
+
+:::{grid-item-card}
+:shadow: none
+:columns: 10
+<span style="color: orange">**getH(**</span>`sources`, `observers`, `squeeze=True`, `pixel_agg=None`, `output="ndarray"`<span style="color: orange">**)**</span>
+:::
+
+:::{grid-item}
+:columns: 1
+:::
+
+::::
+
+that compute the magnetic field generated by `sources` as seen by the `observers` in their local coordinates. `sources` can be any Magpylib source object (e.g. magnets) or a flat list thereof. `observers` can be an array of position vectors with shape `(n1,n2,n3,...,3)`, any Magpylib observer object (e.g. sensors), or a flat list thereof. The following code shows a minimal example for Magplyib field computation.
+
+::::{grid}
+:gutter: 5
+
+:::{grid-item}
+:columns: 2
+:::
+
+:::{grid-item}
+:columns: 8
+```python
+import magpylib as magpy
+
+# define source and observer objects
+loop = magpy.current.Loop(current=1, diameter=1)
+sens = magpy.Sensor()
+
+# compute field
+B = magpy.getB(loop, sens)
+
+print(B)
+#  --> [0.     0.     1.2566]
+```
+:::
+::::
+
+The physical unit returned by `getB` and `getH` corresponds to the source excitation input units. For example, when magnet `magnetization` is given in mT, `getB` returns the B-field in units of mT and `getH` the H-field in units of kA/m. This is described in detail in {ref}`docu-units`.
+
+The output of a field computation `magpy.getB(sources, observers)` is by default a Numpy array of shape `(l, m, k, n1, n2, n3, ..., 3)` where `l` is the number of input sources, `m` the (maximal) object path length, `k` the number of observers, `n1,n2,n3,...` the sensor pixel shape or the shape of the observer position array input and `3` the three magnetic field components $(B_x, B_y, B_z)$.
+
+
+* `squeeze`: If True (default) all axes of length 1 in the output (e.g. only a single source) are squeezed.
+
+* `pixel_agg`: Select a compatible numpy aggregator function (e.g. `"min"`, `"mean"`) that is applied to the output. For example, with `pixel_agg="mean"` the mean field of all observer points is returned. Only with this option it is possible to supply `getB` and `getH` with multiple observers that have different pixel shapes.
+
+* `output`: Change the output format. Options are `"ndarray"` (default, returns a Numpy ndarray) and `"dataframe"` (returns a 2D-table Pandas DataFrame).
+
+```{note}
+Magpylib collects all inputs (object parameters), and vectorizes them for the computation which reduces the computation time dramatically for large inputs.
+
+Try to make all field computations with as few calls to `getB` and `getH` as possible. Avoid Python loops at all costs!
+```
+
+The tutorial {ref}`gallery-tutorial-field-computation` shows good practices with Magpylib field computation.
+
+
+(docu-direct-interface)=
+## Direct interface
+
+Users can bypass the object oriented functionality of Magpylib and instead compute the field for n given parameter sets. This is done by providing the following inputs to the top level functions `getB` and `getH`,
+
+1. `sources`: a string denoting the source type. Allowed values are the Magpylib source class names, see {ref}`docu-classes`.
+2. `observers`: array-like of shape (3,) or (n,3) giving the observer positions.
+3. `kwargs`: a dictionary with inputs of shape (x,) or (n,x). Must include all mandatory class-specific inputs. By default, `position=(0,0,0)` and `orientation=None`(=unit rotation).
+
+All "scalar" inputs of shape (x,) are automatically tiled up to shape (n,x) to create a set of n computation instances. The field is returned in the shape (n,3). The following code demonstrates the direct interface.
+
+::::{grid}
+:gutter: 5
+
+:::{grid-item}
+:columns: 2
+:::
+
+:::{grid-item}
+:columns: 8
+```python
+import magpylib as magpy
+
+# compute the cuboid field for 3 input instances
+B = magpy.getB(
+    sources='Cuboid',
+    observers=[(0,0,x) for x in range(3)],
+    dimension=[(d,d,d) for d in range(1,4)],
+    magnetization=(0,0,1000),
+)
+
+print(B.round())
+#  --> [[  0.   0. 667.]
+#       [  0.   0. 436.]
+#       [  0.   0. 307.]]
+```
+:::
+::::
+
+```{note}
+The direct interface is potentially faster than the object oriented one if users know how to generate the input arrays efficiently with numpy (e.g. `np.arange`, `np.linspace`, `np.tile`, `np.repeat`, ...).
+```
+
+
+(docu-field-comp-core)=
+## Core interface
+
+At the heart of Magpylib lies a set of core functions that are our implementations of the explicit field expressions, see {ref}`docu-physics`, described in convenient local source coordinates. Direct access to these functions is given through the `magpylib.core` subpackage which includes,
+
+::::{grid} 1
+:gutter: 1
+
+:::{grid-item}
+<span style="color: orange">**current_line_field(**</span> `field`, `observers`, `current`, `segment_start`, `segment_end`<span style="color: orange">**)**</span>
+:::
+:::{grid-item}
+<span style="color: orange">**current_loop_field(**</span> `field`, `observers`, `current`, `diameter`<span style="color: orange">**)**</span>
+:::
+:::{grid-item}
+<span style="color: orange">**magnet_cuboid_field(**</span> `field`, `observers`, `magnetization`, `dimension`<span style="color: orange">**)**</span>
+:::
+:::{grid-item}
+<span style="color: orange">**magnet_cylinder_field(**</span> `field`, `observers`, `magnetization`, `dimension`<span style="color: orange">**)**</span>
+:::
+:::{grid-item}
+<span style="color: orange">**magnet_cylinder_segment_field(**</span> `field`, `observers`, `magnetization`, `dimension`<span style="color: orange">**)**</span>
+:::
+:::{grid-item}
+<span style="color: orange">**magnet_sphere_field(**</span> `field`, `observers`, `magnetization`, `diameter`<span style="color: orange">**)**</span>
+:::
+:::{grid-item}
+<span style="color: orange">**magnet_tetrahedron_field(**</span> `field`, `observers`, `magnetization`, `vertices`<span style="color: orange">**)**</span>
+:::
+:::{grid-item}
+<span style="color: orange">**dipole_field(**</span> `field`, `observers`, `moment`<span style="color: orange">**)**</span>
+:::
+:::{grid-item}
+<span style="color: orange">**triangle_field(**</span> `field`, `observers`, `magnetization`, `vertices`<span style="color: orange">**)**</span>
+:::
+::::
+
+The input `field` is either `"B"` or `"H`. All other inputs must be Numpy ndarrays of shape (n,x). Their meaning is similar as above. Details can be found in the respective function docstrings. The following example demonstrates the core interface.
+
+::::{grid}
+:gutter: 5
+
+:::{grid-item}
+:columns: 2
+:::
+
+:::{grid-item}
+:columns: 8
+```python
+import numpy as np
+import magpylib as magpy
+
+# prepare input
+mag = np.array([(1000,0,0)]*3)
+dim = np.array([(1,2)]*3)
+obs = np.array([(0,0,0)]*3)
+
+# compute field with core functions
+B = magpy.core.magnet_cylinder_field('B', obs, mag, dim)
+
+print(B.round())
+#  --> [[553.   0.   0.]
+#       [553.   0.   0.]
+#       [553.   0.   0.]]
+```
+:::
+::::
+
+
+## Field computation workflow
+
+The Magpylib field computation internal workflow and different approaches of the three interfaces is outlined in the following sketch.
+
+![](../../_static/images/docu_field_comp_flow.png)
diff --git a/docs/_pages/page_07_physics_computation.md b/docs/_pages/docu/docu_physics.md
similarity index 76%
rename from docs/_pages/page_07_physics_computation.md
rename to docs/_pages/docu/docu_physics.md
index de41b12b1..19fd12f1a 100644
--- a/docs/_pages/page_07_physics_computation.md
+++ b/docs/_pages/docu/docu_physics.md
@@ -1,10 +1,25 @@
-(physcomp)=
+---
+jupytext:
+  text_representation:
+    extension: .md
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.14.5
+kernelspec:
+  display_name: Python 3
+  language: python
+  name: python3
+---
 
-# Physics & Computation
+(docu-physics)=
 
-## The analytical solutions
+# Physics
+
+## When can you use Magpylib ?
 
-**Permanent Magnets**
+The expressions used in Magpylib describe perfectly homogeneous magnets, surface charges, and line currents with natural boundary conditions. Magpylib is at its best when dealing with static air-coils (no eddy currents, no soft-magnetic cores) and high grade permanent magnets (Ferrite, NdFeB, SmCo or similar materials). When **magnet** permeabilities are below $\mu_r < 1.1$ the error typically undercuts few %. Demagnetization factors are not included. The line **current** solutions give the exact same field as outside of a wire that carries a homogeneous current.
+
+## The analytical solutions
 
 Magnetic field computations in Magpylib are based on known analytical solutions (closed form expressions) to permanent magnet and current problems. The Magpylib implementations are based on the following literature references:
 
@@ -28,8 +43,6 @@ $$
 
 where ${\bf r}$ denotes the position, $V$ is the magnetized volume with surface $S$ and normal vector ${\bf n}$ onto the surface. This solution is derived in detail e.g. in \[Jackson1999\].
 
-**Currents**
-
 The fields of currents are directly derived using the law of Biot-Savart with the current distribution ${\bf J}({\bf r})$:
 
 $$
@@ -40,11 +53,11 @@ In some special cases (simple shapes, homogeneous magnetizations and current dis
 
 ## Accuracy of the Solutions and Demagnetization
 
-**Line currents:**
+### Line currents:
 
 The magnetic field of a wire carrying a homogeneous current density is (on the outside) similar to the field of a line current positioned in the center of the wire, which carries the same total current. Current distributions become inhomogeneous at bends of the wire or when eddy currents (finite frequencies) are involved.
 
-**Magnets and Demagnetization**
+### Magnets and Demagnetization
 
 The analytical solutions are exact when bodies have a homogeneous magnetization. However, real materials always have a material response which results in an inhomogeneous magnetization even when the initial magnetization is perfectly homogeneous. There is a lot of literature on such [demagnetization effects](https://en.wikipedia.org/wiki/Demagnetizing_field).
 
@@ -54,25 +67,18 @@ Error estimation as a result of the material response is evaluated in more detai
 
 Demagnetization factors can be used to compensate a large part of the demagnetization effect. Analytical expressions for the demagnetization factors of cuboids can be found at [magpar.net](http://www.magpar.net/static/magpar/doc/html/demagcalc.html).
 
-**Soft-Magnetic Materials**
+(phys-remanence)=
+### Modelling a datasheet magnet
 
-Soft-magnetic materials like iron or steel with large permeabilities $\mu_r \sim 1000$ and low remanence fields are dominated by the material response. It is not possible to describe such bodies with analytical solutions. However, recent developments showed that the Magnetostatic Method of Moments can be a powerful tool in combination with Magpylib to compute such a material response. An integration into Magpylib is planned for the future.
-
-(docu-units-scaling)=
+The material remanence, often found in data sheets, simply corresponds to the material magnetization/polarization when not under the influence of external fields. This can never happen, as the material itself generates a magnetic field. Such self-interactions result in self-demagnetization that can be approximated using the demagnetization factors and the material permeability (or susceptibility).
 
-## Units and scaling property
+For example, a cube with 1 mm sides has a demagnetization factor is 0.333, see [magpar.net](http://www.magpar.net/static/magpar/doc/html/demagcalc.html). When the remanence field of this cube is 1 T, and its susceptibility is 0.1, the magnetization resulting from self-interaction is reduced to 1 T - 0.3333*0.1 T = 0.9667 T, assuming linear material laws.
 
-Magpylib uses the following physical units:
+It must be understood that the change in magnetization resulting from self-interaction has a homogeneous contribution which is approximated by the demagnetization factor, and an inhomogeneous contribution which cannot be modeled easily with analytical solutions. The inhomogeneous part, however, is typically an order of magnitude lower than the homogenous part. You can use the Magpylib extension [Magpylib material response](https://github.com/magpylib/magpylib-material-response) to model the self-interactions.
 
-- \[mT\]: for the B-field and the magnetization (µ0\*M).
-- \[kA/m\]: for the H-field.
-- \[mm\]: for position and length inputs.
-- \[deg\]: for angle inputs by default.
-- \[A\]: for current inputs.
+### Soft-Magnetic Materials
 
-However, the analytical solutions scale in such a way that the magnetic field is the same when the system scales in size. This means that a 1-meter sized magnet in a distance of 1-meter produces the same field as a 1-millimeter sized magnet in a distance of 1-millimeter. The choice of position/length input dimension is therefore not relevant - the Magpylib choice of \[mm\] is a result of history and practical considerations when working with position and orientation systems.
-
-In addition, `getB` returns the unit of the input magnetization. The Magpylib choice of \[mT\] (theoretical physicists will point out that it is µ0\*M) is historical and convenient. When the magnetization is given in \[mT\], then `getH` returns \[kA/m\] which is simply related by factor of $\frac{10}{4\pi}$. Of course, `getB` also adds the magnet magnetization when computing the field inside the magnet, while `getH` does not.
+Soft-magnetic materials like iron or steel with large permeabilities $\mu_r \sim 1000$ and low remanence fields are dominated by the material response. It is not possible to describe such bodies with analytical solutions. However, recent developments showed that the Magnetostatic Method of Moments can be a powerful tool in combination with Magpylib to compute such a material response. An integration into Magpylib is planned for the future.
 
 
 (docu-performance)=
@@ -84,13 +90,13 @@ Magpylib code is fully [vectorized](https://en.wikipedia.org/wiki/Array_programm
 Maximal performance is achieved when `.getB(sources, observers)` is called only a single time in your program. Try not to use loops.
 ```
 
-The objective oriented interface comes with an overhead. If you want to achieve maximal performance this overhead can be avoided with {ref}`intro-direct-interface`.
+The object oriented interface comes with an overhead. If you want to achieve maximal performance this overhead can be avoided with {ref}`docu-direct-interface`.
 
 The analytical solutions provide extreme performance. Single field evaluations take of the order of `100 µs`. For large input arrays (e.g. many observer positions or many similar magnets) the computation time drops below `1 µs` per evaluation point on single state-of-the-art x86 mobile cores (tested on `Intel Core i5-8365U @ 1.60GHz`), depending on the source type.
 
 ## Numerical stability
 
-Many expressions provided in the literature have very questionable numerical stability. Many of these problems are fixed in Magpylib, but one should be aware that accuracy can be a problem very close to objects, close the z-axis in cylindrical symmetries, at adge extensions, and at large distances. We are working on fixing these problems. Some details can be found in \[Ortner2022\].
+Many expressions provided in the literature have very questionable numerical stability. Many of these problems are fixed in Magpylib, but one should be aware that accuracy can be a problem very close to objects, close the z-axis in cylindrical symmetries, at edge extensions, and at large distances. We are working on fixing these problems. Some details can be found in \[Ortner2022\].
 
 **References**
 
diff --git a/docs/examples/examples_31_end_of_shaft.md b/docs/_pages/gallery/gallery_app_end_of_shaft.md
similarity index 93%
rename from docs/examples/examples_31_end_of_shaft.md
rename to docs/_pages/gallery/gallery_app_end_of_shaft.md
index 3b19181af..68d119831 100644
--- a/docs/examples/examples_31_end_of_shaft.md
+++ b/docs/_pages/gallery/gallery_app_end_of_shaft.md
@@ -1,4 +1,5 @@
 ---
+orphan: true
 jupytext:
   text_representation:
     extension: .md
@@ -11,7 +12,9 @@ kernelspec:
   name: python3
 ---
 
-# Angle sensor
+(gallery-app-end-of-shaft)=
+
+# Magnetic Angle Sensor
 
 End of shaft angle sensing is a classical example for a magnetic position system. The goal is to determine the angular position of a rotating shaft. A magnet, typically a diametrically magnetized cylinder, is mounted at the end of the shaft. A 2D sensor is mounted below. When the shaft rotates the two sensor outputs will be $s_1=B_0 sin(\varphi)$ and $s_2=B_0 cos(\varphi)$, so that the angle is uniquely given by $\varphi = arctan(s_1/s_2)$.
 
@@ -72,14 +75,14 @@ fig1.show()
 # show sensor output in plotly
 fig2 = go.Figure()
 df = sens.getB(magnet, output="dataframe")
-df["angle [deg]"] = angles[df["path"]]
+df["angle (deg)"] = angles[df["path"]]
 
 fig2 = px.line(
     df,
-    x="angle [deg]",
+    x="angle (deg)",
     y=["Bx", "By"],
     line_dash="pixel",
-    labels={"value": "Field [mT]"},
+    labels={"value": "Field (mT)"},
 )
 fig2.show()
 ```
diff --git a/docs/_pages/gallery/gallery_app_halbach.md b/docs/_pages/gallery/gallery_app_halbach.md
new file mode 100644
index 000000000..de91666f9
--- /dev/null
+++ b/docs/_pages/gallery/gallery_app_halbach.md
@@ -0,0 +1,20 @@
+---
+orphan: true
+jupytext:
+  text_representation:
+    extension: .md
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.13.7
+kernelspec:
+  display_name: Python 3
+  language: python
+  name: python3
+---
+
+(gallery-app-halbach)=
+
+# Halbach Magnets
+
+- halbach ring with fine discretization
+- discreete halbach cylinder models
diff --git a/docs/examples/examples_30_coil_field_lines.md b/docs/_pages/gallery/gallery_app_helmholtz.md
similarity index 91%
rename from docs/examples/examples_30_coil_field_lines.md
rename to docs/_pages/gallery/gallery_app_helmholtz.md
index 04c5ba81b..8fe59d20c 100644
--- a/docs/examples/examples_30_coil_field_lines.md
+++ b/docs/_pages/gallery/gallery_app_helmholtz.md
@@ -1,18 +1,27 @@
 ---
+orphan: true
 jupytext:
   text_representation:
     extension: .md
     format_name: myst
     format_version: 0.13
-    jupytext_version: 1.14.4
+    jupytext_version: 1.13.7
 kernelspec:
   display_name: Python 3
   language: python
   name: python3
 ---
 
-# Magnetic field lines
+(gallery-app-helmholtz)=
 
+# Helmholtz Coils
+
+- coil modeling
+- vizualization of homogenity
+
+
+
+<!-- 
 In this example we model the **magnetic field of a coil**, and show how to display it with spectacular **field line** representations.
 
 ## Coil models
@@ -96,19 +105,19 @@ ax2.streamplot(
 # figure styling
 ax1.set(
     title='Magnetic field of coil1',
-    xlabel='x-position [mm]',
-    ylabel='z-position [mm]',
+    xlabel='x-position (mm)',
+    ylabel='z-position (mm)',
     aspect=1,
 )
 ax2.set(
     title='Magnetic field of coil2',
-    xlabel='x-position [mm]',
-    ylabel='z-position [mm]',
+    xlabel='x-position (mm)',
+    ylabel='z-position (mm)',
     aspect=1,
 )
 
-plt.colorbar(sp.lines, ax=ax1, label='[mT]')
-plt.colorbar(cp, ax=ax2, label='[mT]')
+plt.colorbar(sp.lines, ax=ax1, label='(mT)')
+plt.colorbar(cp, ax=ax2, label='(mT)')
 
 plt.tight_layout()
 plt.show()
@@ -160,7 +169,7 @@ pl = pv.Plotter()
 
 # add field lines and legend to scene
 legend_args = {
-    'title': 'B [mT]',
+    'title': 'B (mT)',
     'title_font_size': 20,
     'color': 'black',
     'position_y': 0.25,
@@ -180,4 +189,4 @@ pl.add_mesh(
 pl.camera.position=(160, 10, -10)
 pl.set_background("white")
 pl.show()
-```
+``` -->
diff --git a/docs/_pages/gallery/gallery_app_scales.md b/docs/_pages/gallery/gallery_app_scales.md
new file mode 100644
index 000000000..92cbbac4e
--- /dev/null
+++ b/docs/_pages/gallery/gallery_app_scales.md
@@ -0,0 +1,22 @@
+---
+orphan: true
+jupytext:
+  text_representation:
+    extension: .md
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.13.7
+kernelspec:
+  display_name: Python 3
+  language: python
+  name: python3
+---
+
+(gallery-app-scales)=
+
+# Magnetic Scales
+
+- model
+- experiment
+- 4-pol magnet with inhomogeneous magnetization ?
+- refer to DS 91411 and 91479
diff --git a/docs/_pages/gallery/gallery_index.md b/docs/_pages/gallery/gallery_index.md
new file mode 100644
index 000000000..eb01e2d6c
--- /dev/null
+++ b/docs/_pages/gallery/gallery_index.md
@@ -0,0 +1,211 @@
+(gallery)=
+
+# Examples and Tutorials
+
+Notice that most examples use  interactive notebooks via [sphinx-thebe](https://sphinx-thebe.readthedocs.io/en/latest/), see 🚀.
+## Tutorials
+
+::::{grid} 3
+:gutter: 5
+
+:::{grid-item-card} {ref}`gallery-tutorial-paths`
+:text-align: center
+:link: gallery-tutorial-paths
+:link-type: ref
+:link-alt: link to example
+:img-bottom: ../../_static/images/gallery_icon_tutorial_paths.png
+:::
+
+:::{grid-item-card} {ref}`gallery-tutorial-field-computation`
+:text-align: center
+:link: gallery-tutorial-field-computation
+:link-type: ref
+:link-alt: link to example
+:img-bottom: ../../_static/images/gallery_icon_tutorial_field_computation.png
+:::
+
+:::{grid-item-card} {ref}`gallery-tutorial-collection`
+:text-align: center
+:link: gallery-tutorial-collection
+:link-type: ref
+:link-alt: link to example
+:img-bottom: ../../_static/images/gallery_icon_tutorial_collection.png
+:::
+
+:::{grid-item-card} {ref}`gallery-tutorial-trimesh`
+:text-align: center
+:link: gallery-tutorial-trimesh
+:link-type: ref
+:link-alt: link to example
+:img-bottom: ../../_static/images/gallery_icon_WIP.png
+:::
+
+:::{grid-item-card} {ref}`gallery-tutorial-custom`
+:text-align: center
+:link: gallery-tutorial-custom
+:link-type: ref
+:link-alt: link to example
+:img-bottom: ../../_static/images/gallery_icon_WIP.png
+:::
+
+
+
+::::
+
+## Visualizations
+
+::::{grid} 3
+:gutter: 5
+
+:::{grid-item-card} {ref}`gallery-vis-mpl-streamplot`
+:text-align: center
+:link: gallery-vis-mpl-streamplot
+:link-type: ref
+:link-alt: link to example
+:img-bottom: ../../_static/images/gallery_icon_viz_mpl_streamplot.png
+:::
+
+:::{grid-item-card} {ref}`gallery-vis-pv-streamlines`
+:text-align: center
+:link: gallery-vis-pv-streamlines
+:link-type: ref
+:link-alt: link to example
+:img-bottom: ../../_static/images/gallery_icon_viz_pv_streamlines.png
+:::
+
+:::{grid-item-card} {ref}`gallery-vis-animations`
+:text-align: center
+:link: gallery-vis-animations
+:link-type: ref
+:link-alt: link to example
+:img-bottom: ../../_static/images/gallery_icon_WIP.png
+:::
+
+:::{grid-item-card} {ref}`gallery-vis-subplots`
+:text-align: center
+:link: gallery-vis-subplots
+:link-type: ref
+:link-alt: link to example
+:img-bottom: ../../_static/images/gallery_icon_WIP.png
+:::
+
+::::
+
+## Complex Magnet Shapes
+
+::::{grid} 3
+:gutter: 5
+
+:::{grid-item-card} {ref}`gallery-shapes-superpos`
+:text-align: center
+:link: gallery-shapes-superpos
+:link-type: ref
+:link-alt: link to example
+:img-bottom: ../../_static/images/gallery_icon_shapes_superpos.png
+:::
+
+:::{grid-item-card} {ref}`gallery-shapes-convex-hull`
+:text-align: center
+:link: gallery-shapes-convex-hull
+:link-type: ref
+:link-alt: link to example
+:img-bottom: ../../_static/images/gallery_icon_shapes_convex_hull.png
+:::
+
+:::{grid-item-card} {ref}`gallery-shapes-triangle`
+:text-align: center
+:link: gallery-shapes-triangle
+:link-type: ref
+:link-alt: link to example
+:img-bottom: ../../_static/images/gallery_icon_shapes_triangle.png
+:::
+
+:::{grid-item-card} {ref}`gallery-shapes-pyvista`
+:text-align: center
+:link: gallery-shapes-pyvista
+:link-type: ref
+:link-alt: link to example
+:img-bottom: ../../_static/images/gallery_icon_shapes_pyvista.png
+:::
+
+:::{grid-item-card} {ref}`gallery-shapes-3d-models`
+:text-align: center
+:link: gallery-shapes-3d-models
+:link-type: ref
+:link-alt: link to example
+:img-bottom: ../../_static/images/gallery_icon_WIP.png
+:::
+
+::::
+
+
+## Miscellaneous
+
+::::{grid} 3
+:gutter: 5
+
+:::{grid-item-card} {ref}`gallery-misc-compound`
+:text-align: center
+:link: gallery-misc-compound
+:link-type: ref
+:link-alt: link to example
+:img-bottom: ../../_static/images/gallery_icon_misc_compound.png
+:::
+
+:::{grid-item-card} {ref}`gallery-misc-field-interpolation`
+:text-align: center
+:link: gallery-misc-field-interpolation
+:link-type: ref
+:link-alt: link to example
+:img-bottom: ../../_static/images/gallery_icon_misc_field_interpolation.png
+:::
+
+:::{grid-item-card} {ref}`gallery-misc-inhom`
+:text-align: center
+:link: gallery-misc-inhom
+:link-type: ref
+:link-alt: link to example
+:img-bottom: ../../_static/images/gallery_icon_WIP.png
+:::
+
+::::
+
+## Applications
+
+::::{grid} 3
+:gutter: 5
+
+:::{grid-item-card} {ref}`gallery-app-end-of-shaft`
+:text-align: center
+:link: gallery-app-end-of-shaft
+:link-type: ref
+:link-alt: link to example
+:img-bottom: ../../_static/images/gallery_icon_app_end_of_shaft.png
+:::
+
+:::{grid-item-card} {ref}`gallery-app-halbach`
+:text-align: center
+:link: gallery-app-halbach
+:link-type: ref
+:link-alt: link to example
+:img-bottom: ../../_static/images/gallery_icon_WIP.png
+:::
+
+:::{grid-item-card} {ref}`gallery-app-helmholtz`
+:text-align: center
+:link: gallery-app-helmholtz
+:link-type: ref
+:link-alt: link to example
+:img-bottom: ../../_static/images/gallery_icon_WIP.png
+:::
+
+:::{grid-item-card} {ref}`gallery-app-scales`
+:text-align: center
+:link: gallery-app-scales
+:link-type: ref
+:link-alt: link to example
+:img-bottom: ../../_static/images/gallery_icon_WIP.png
+:::
+
+::::
+
diff --git a/docs/_pages/gallery/gallery_misc_compound.md b/docs/_pages/gallery/gallery_misc_compound.md
new file mode 100644
index 000000000..9ae4425d8
--- /dev/null
+++ b/docs/_pages/gallery/gallery_misc_compound.md
@@ -0,0 +1,201 @@
+---
+orphan: true
+jupytext:
+  text_representation:
+    extension: .md
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.13.7
+kernelspec:
+  display_name: Python 3
+  language: python
+  name: python3
+---
+
+(gallery-misc-compound)=
+
+# Compounds
+
+The `Collection` class is a powerful tool for grouping and tracking object assemblies. However, it is often convenient to have assembly parameters themselves, like number of magnets, as variables. This is achieved by sub-classing `Collection`. We refer to such classes as "**Compounds**" and show how to seamlessly integrate them into Magpylib.
+
+## Subclassing collections
+
+In the following example we design a compound class `MagnetRing` which represents a ring of cuboid magnets with the parameter `cubes` that should refer to the number of magnets on the ring. The ring will automatically adjust its size when `cubes` is modified. We also add an encompassing 3D model.
+
+```{code-cell} ipython3
+import magpylib as magpy
+
+class MagnetRing(magpy.Collection):
+    """ A ring of cuboid magnets
+
+    Parameters
+    ----------
+    cubes: int, default=6
+        Number of cubes on ring.
+    """
+
+    def __init__(self, cubes=6, **kwargs):
+        super().__init__(**kwargs)             # hand over style args
+        self._update(cubes)
+
+    @property
+    def cubes(self):
+        """Number of cubes"""
+        return self._cubes
+
+    @cubes.setter
+    def cubes(self, inp):
+        """Set cubes"""
+        self._update(inp)
+
+    def _update(self, cubes):
+        """Update MagnetRing instance"""
+        self._cubes = cubes
+        ring_radius = cubes/3
+
+        # Store existing path
+        pos_temp = self.position
+        ori_temp = self.orientation
+        
+        # Clean up old object properties
+        self.reset_path()
+        self.children = []
+        self.style.model3d.data.clear()
+
+        # Add children
+        for i in range(cubes):
+            child = magpy.magnet.Cuboid(
+                magnetization=(0,0,1000),
+                dimension=(1,1,1),
+                position=(ring_radius,0,0)
+            )
+            child.rotate_from_angax(360/cubes*i, 'z', anchor=0)
+            self.add(child)
+
+        # Re-apply path
+        self.position = pos_temp
+        self.orientation = ori_temp
+
+        # Add parameter-dependent 3d trace
+        trace = magpy.graphics.model3d.make_CylinderSegment(
+            dimension=(cubes/3-.6, cubes/3+0.6, 1.1, 0, 360),
+            vert=150,
+            opacity=0.2,
+        )
+        self.style.model3d.add_trace(trace)
+
+        return self
+```
+
+This new `MagnetRing` class seamlessly integrates into Magpylib and makes use of the position and orientation interface, field computation and graphic display.
+
+```{code-cell} ipython3
+# Add a sensor
+sensor = magpy.Sensor(position=(0, 0, 0))
+
+# Create a MagnetRing object
+ring = MagnetRing()
+
+# Move MagnetRing around
+ring.rotate_from_angax(angle=45, axis='x')
+
+# Compute field
+print(f"B-field at sensor → {ring.getB(sensor).round(2)}")
+
+# Display graphically
+magpy.show(ring, sensor, backend='plotly')
+```
+
+The `MagnetRing` parameter `cubes` can be modified dynamically:
+
+```{code-cell} ipython3
+
+print(f"B-field at sensor for modified ring → {ring.getB(sensor).round(2)}")
+
+ring.cubes = 10
+
+print(f"B-field at sensor for modified ring → {ring.getB(sensor).round(2)}")
+
+magpy.show(ring, sensor, backend='plotly')
+```
+
+## Postponed trace construction
+
+In the above example, the trace is constructed in `_update`, every time the parameter `cubes` is modified. This can lead to an unwanted computational overhead, especially as the construction is only necessary for graphical representation.
+
+To make our compounds ready for heavy computation, while retaining Magpylib graphic posibilities, it is possible to provide a trace which will only be constructed when `show` is called. The following modification of the above example demonstrates this:
+
+```{code-cell} ipython3
+class MagnetRingAdv(magpy.Collection):
+    """ A ring of cuboid magnets
+
+    Parameters
+    ----------
+    cubes: int, default=6
+        Number of cubes on ring.
+    """
+
+    def __init__(self, cubes=6, **style_kwargs):
+        super().__init__(**style_kwargs)             # hand over style args
+        self._update(cubes)
+
+        # Hand trace over as callable
+        self.style.model3d.add_trace(self._custom_trace3d)
+
+    @property
+    def cubes(self):
+        """Number of cubes"""
+        return self._cubes
+
+    @cubes.setter
+    def cubes(self, inp):
+        """Set cubes"""
+        self._update(inp)
+
+    def _update(self, cubes):
+        """Update MagnetRing instance"""
+        self._cubes = cubes
+        ring_radius = cubes/3
+
+        # Store existing path and reset
+        pos_temp = self.position
+        ori_temp = self.orientation
+        self.reset_path()
+
+        # Add children
+        for i in range(cubes):
+            child = magpy.magnet.Cuboid(
+                magnetization=(0,0,1000),
+                dimension=(1,1,1),
+                position=(ring_radius,0,0)
+            )
+            child.rotate_from_angax(360/cubes*i, 'z', anchor=0)
+            self.add(child)
+
+        # Re-apply path
+        self.position = pos_temp
+        self.orientation = ori_temp
+
+        return self
+
+    def _custom_trace3d(self):
+        """ creates a parameter-dependent 3d model"""
+        trace = magpy.graphics.model3d.make_CylinderSegment(
+            dimension=(self.cubes/3-.6, self.cubes/3+0.6, 1.1, 0, 360),
+            vert=150,
+            opacity=0.2,
+        )
+        return trace
+```
+
+We have removed the trace construction from the `_update` method, and instead provided `_custom_trace3d` as a callable.
+
+```{code-cell} ipython3
+ring0 = MagnetRing()
+%time for _ in range(100): ring0.cubes=10
+
+ring1 = MagnetRingAdv()
+%time for _ in range(100): ring1.cubes=10
+```
+
+This example is not very impressive because the provided trace is not very heavy.
diff --git a/docs/_pages/gallery/gallery_misc_field_interpolation.md b/docs/_pages/gallery/gallery_misc_field_interpolation.md
new file mode 100644
index 000000000..532fc52d9
--- /dev/null
+++ b/docs/_pages/gallery/gallery_misc_field_interpolation.md
@@ -0,0 +1,158 @@
+---
+orphan: true
+jupytext:
+  text_representation:
+    extension: .md
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.13.6
+kernelspec:
+  display_name: Python 3
+  language: python
+  name: python3
+---
+
+(gallery-misc-field-interpolation)=
+
+# Field Interpolation
+
+There are several reasons for working with field interpolations rather than computing the field on demand.
+
+1. Very large grids take a lot of time to compute, even with Magpylib.
+2. The field might not be accessible through Magpylib, e.g. when demagnetization is included, but it can be computed with a 3rd party FE tool or is the result of an experiment.
+
+Combining field interpolation and `CustomSource` enables integration of pre-computed solutions. In the following example we show how this can be done.
+
+## Interpolation
+
+We start by defining a 3D vector-field interpolation function relying on Scipy `RegularGridInterpolator`.
+
+```{code-cell} ipython3
+import numpy as np
+from scipy.interpolate import RegularGridInterpolator
+import magpylib as magpy
+
+def interpolation(observer, data, method="linear", bounds_error=False, fill_value=np.nan):
+    """ Creates a 3D-vector field interpolation from regular grid data
+
+    Parameters
+    ----------
+    observer: ndarray, shape (n,3)
+        Array of n position vectors (x,y,z).
+
+    data: ndarray, shape (n,3)
+        Array of corresponding n interpolation data vectors.
+
+    method : str, optional
+        The method of interpolation to perform. Supported are "linear" and
+        "nearest". Default is "linear".
+
+    bounds_error : bool, optional
+        If True, when interpolated values are requested outside of the
+        domain of the input data, a ValueError is raised. If False,
+        then `fill_value` is returned.
+
+    fill_value : number, optional
+        Value returned when points outside the interpolation domain are
+        sampled.
+
+    Returns
+    -------
+        callable: interpolating function for field values
+    """
+
+    # Condition input
+    X, Y, Z = [np.unique(o) for o in observer.T]
+    nx, ny, nz = len(X), len(Y), len(Z)
+
+    # Construct interpolations with RegularGridInterpolator for each field component
+    rgi = [
+        RegularGridInterpolator(
+            points=(X, Y, Z),
+            values=d.reshape(nx, ny, nz),
+            bounds_error=bounds_error,
+            fill_value=fill_value,
+            method=method,
+        )
+        for d in data.T]
+
+    # Define field_func usable by Magpylib that returns the interpolation
+    def field_func(field, observers):
+        return np.array([f(observers) for f in rgi]).T
+    return field_func
+```
+
+## CustomSource with Interpolation Field
+
+In the second step we create a custom source with an interpolated field `field_func` input. The data for the interpolation is generated from the Magpylib `Cuboid` field, which makes it easy to verify the approach afterwards. To the custom source a nice 3D model is added that makes it possible to display it and the cuboid at the same time.
+
+```{code-cell} ipython3
+# Create data for interpolation
+cube = magpy.magnet.Cuboid(magnetization=(0,0,1000), dimension=(2,2,2))
+ts = np.linspace(-7, 7, 21)
+grid = np.array([(x,y,z) for x in ts for y in ts for z in ts])
+data = cube.getB(grid)
+
+# Create custom source with interpolation field
+custom = magpy.misc.CustomSource(
+    field_func=interpolation(grid, data),
+    style_label="custom",
+)
+
+# Add nice 3D model (dashed outline) to custom source
+xs = 1.1*np.array([-1, -1,  1,  1, -1, -1, -1, -1, -1,  1,  1,  1,  1, 1,  1, -1])
+ys = 1.1*np.array([-1,  1,  1, -1, -1, -1,  1,  1,  1,  1,  1,  1, -1, -1, -1, -1])
+zs = 1.1*np.array([-1, -1, -1, -1, -1,  1,  1, -1,  1,  1, -1,  1,  1, -1,  1,  1])
+trace = dict(
+    backend='matplotlib',
+    constructor='plot',
+    args=(xs, ys, zs),
+    kwargs={'ls':'--', 'marker':'', 'lw':1, 'color':'k'},
+)
+custom.style.model3d.add_trace(trace)
+custom.style.model3d.showdefault = False
+
+# Display custom
+magpy.show(custom, cube, zoom=1, backend="matplotlib")
+```
+
+## Testing Interpolation Accuracy
+
+Finally, we compare the "exact" field of the cuboid source with the interpolated field of the custom source. For this purpose a sensor is added and a generic rotation is applied to the sources. Naturally there is some error that can be reduced by increasing the interpolation grid finesse.
+
+```{code-cell} ipython3
+import matplotlib.pyplot as plt
+
+# Modify orientation of cube and custom
+for src in [cube, custom]:
+    src.rotate_from_angax(angle=45, axis=(1,1,1))
+
+# Add a sensor for testing
+sensor = magpy.Sensor(position=(-5,0,0))
+angs = np.linspace(3,150,49)
+sensor.rotate_from_angax(angle=angs, axis="y", anchor=0)
+
+# Display system graphically
+magpy.show(cube, custom, sensor, backend="matplotlib")
+
+# Create Matplotlib plotting axis
+ax = plt.subplot()
+
+# Compute and plot fields
+B_cube = cube.getB(sensor)
+B_custom = custom.getB(sensor)
+for i,lab in enumerate(["Bx", "By", "Bz"]):
+    ax.plot(B_cube[:,i], ls="-", label=lab)
+    ax.plot(B_custom[:,i], ls="--", color="k")
+
+# Matplotlib figure styling
+ax.legend()
+ax.grid(color=".9")
+ax.set(
+    title="Field at sensor - real (solid), interpolated (dashed)",
+    xlabel="sensor rotation angle (deg)",
+    ylabel="(mT)",
+)
+
+plt.show()
+```
\ No newline at end of file
diff --git a/docs/_pages/gallery/gallery_misc_inhom.md b/docs/_pages/gallery/gallery_misc_inhom.md
new file mode 100644
index 000000000..d4bd30b60
--- /dev/null
+++ b/docs/_pages/gallery/gallery_misc_inhom.md
@@ -0,0 +1,19 @@
+---
+orphan: true
+jupytext:
+  text_representation:
+    extension: .md
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.13.7
+kernelspec:
+  display_name: Python 3
+  language: python
+  name: python3
+---
+
+(gallery-misc-inhom)=
+
+# Inhomogeneous Magnetization
+
+WIP: din spec example
\ No newline at end of file
diff --git a/docs/_pages/gallery/gallery_shapes_3d_models.md b/docs/_pages/gallery/gallery_shapes_3d_models.md
new file mode 100644
index 000000000..c79efac19
--- /dev/null
+++ b/docs/_pages/gallery/gallery_shapes_3d_models.md
@@ -0,0 +1,23 @@
+---
+orphan: true
+jupytext:
+  text_representation:
+    extension: .md
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.13.7
+kernelspec:
+  display_name: Python 3
+  language: python
+  name: python3
+---
+
+(gallery-shapes-3d-models)=
+
+# 3D Models
+
+cow - spider from pyvista examples
+
+CAD import
+
+...
\ No newline at end of file
diff --git a/docs/_pages/gallery/gallery_shapes_convex_hull.md b/docs/_pages/gallery/gallery_shapes_convex_hull.md
new file mode 100644
index 000000000..a8aa63d73
--- /dev/null
+++ b/docs/_pages/gallery/gallery_shapes_convex_hull.md
@@ -0,0 +1,39 @@
+---
+orphan: true
+jupytext:
+  text_representation:
+    extension: .md
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.13.7
+kernelspec:
+  display_name: Python 3
+  language: python
+  name: python3
+---
+
+(gallery-shapes-convex-hull)=
+
+# Convex Hull
+
+In geometry the convex hull of a point cloud is the smallest convex shape that contains all points, see [Wikipedia](https://en.wikipedia.org/wiki/Convex_hull).
+
+Magpylib offers construction of convex hull magnets by combining the `magpylib.magnets.TriangularMesh` and the [scipy.spatial.ConvexHull](https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.ConvexHull.html) classes via the classmethod `from_ConvexHull`. Note, that the Scipy method does not guarantee correct face orientations if `reorient_faces` is disabled.
+
+## Pyramid magnet
+
+This is the fastest way to construct a pyramid magnet.
+
+```{code-cell} ipython3
+import magpylib as magpy
+
+# Create pyramid magnet
+points = [(-2,-2,0), (-2,2,0), (2,-2,0), (2,2,0), (0,0,3)]
+tmesh_pyramid = magpy.magnet.TriangularMesh.from_ConvexHull(
+    magnetization=(0, 0, 1000),
+    points=points,
+)
+
+# Display graphically
+tmesh_pyramid.show(backend='plotly')
+```
\ No newline at end of file
diff --git a/docs/_pages/gallery/gallery_shapes_pyvista.md b/docs/_pages/gallery/gallery_shapes_pyvista.md
new file mode 100644
index 000000000..36de486d1
--- /dev/null
+++ b/docs/_pages/gallery/gallery_shapes_pyvista.md
@@ -0,0 +1,118 @@
+---
+orphan: true
+jupytext:
+  text_representation:
+    extension: .md
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.13.7
+kernelspec:
+  display_name: Python 3
+  language: python
+  name: python3
+---
+
+(gallery-shapes-pyvista)=
+
+# Pyvista Bodies
+
+[Pyvista](https://docs.pyvista.org/version/stable/) is a powerful open-source tool for the creation and vizualization of meshes. Pyvista `PolyData` objects can be directly transformed into Magylib `TriangularMesh` magnets via the classmethod `from_pyvista`.
+
+```{note}
+The Pyvista library used in the following examples is not automatically installed with Magpylib. A Pyvista installation guide is found [here](https://docs.pyvista.org/getting-started/installation.html).
+```
+
+## Dodecahedron Magnet
+
+In this example a Magpylib magnet is generated directly from a Pyvista body.
+
+```{code-cell} ipython3
+import numpy as np
+import pyvista as pv
+import magpylib as magpy
+
+# Create a simple pyvista PolyData object
+dodec_mesh = pv.Dodecahedron()
+
+dodec = magpy.magnet.TriangularMesh.from_pyvista(
+    magnetization=(0, 0, 100),
+    polydata=dodec_mesh,
+)
+
+# Add a sensor with path
+sens = magpy.Sensor(position=np.linspace((-2,0,1), (2,0,1), 100))
+
+# Show system and field
+with magpy.show_context(dodec, sens, backend='plotly') as s:
+    s.show(col=1)
+    s.show(col=2, output=['Bx', 'Bz'])
+
+```
+
+## Boolean operations with Pyvista
+
+With Pyvista it is possible to build complex shapes with boolean geometric operations. However, such operations often result in open and disconnected meshes that require some refinement to produce solid magnets. The following example demonstrates the problem, how to analyze and fix it.
+
+```{code-cell} ipython3
+import pyvista as pv
+import magpylib as magpy
+
+# Create a complex pyvista PolyData object using a boolean operation
+sphere = pv.Sphere(radius=0.6)
+cube = pv.Cube().triangulate()
+obj = cube.boolean_difference(sphere)
+
+# Construct magnet from PolyData object and ignore check results
+magnet = magpy.magnet.TriangularMesh.from_pyvista(
+    magnetization=(0, 0, 100),
+    polydata=obj,
+    check_disconnected="ignore",
+    check_open="ignore",
+    reorient_faces="ignore",
+    style_label="magnet",
+)
+
+print(f'mesh status open: {magnet.status_open}')
+print(f'mesh status disconnected: {magnet.status_disconnected}')
+print(f"mesh status self-intersecting: {magnet.status_selfintersecting}")
+print(f'mesh status reoriented: {magnet.status_reoriented}')
+
+magnet.show(
+    backend="plotly",
+    style_mesh_open_show=True,
+    style_mesh_disconnected_show=True,
+)
+```
+
+The result cannot be used for magnetic field computation. Even if all faces were present, the reorient-faces algorithm would fail when these faces are disconnected. Such problems can be fixed by
+
+1. giving Pyvista a finer mesh to work with from the start
+2. Pyvista mesh cleaning (merge duplicate points, remove unused points, remove degenerate faces)
+
+The following code produces a clean magnet .
+
+```{code-cell} ipython3
+import pyvista as pv
+import magpylib as magpy
+
+# Create a complex pyvista PolyData object using a boolean operation. Start with
+# finer mesh and clean after operation
+sphere = pv.Sphere(radius=0.6)
+cube = pv.Cube().triangulate().subdivide(2)
+obj = cube.boolean_difference(sphere)
+obj = obj.clean()
+
+# Construct magnet from PolyData object
+magnet = magpy.magnet.TriangularMesh.from_pyvista(
+    magnetization=(0, 0, 100),
+    polydata=obj,
+    style_label="magnet",
+)
+
+print(f'mesh status open: {magnet.status_open}')
+print(f'mesh status disconnected: {magnet.status_disconnected}')
+print(f"mesh status self-intersecting: {magnet.status_selfintersecting}")
+print(f'mesh status reoriented: {magnet.status_reoriented}')
+
+magnet.show(backend="plotly")
+```
diff --git a/docs/_pages/gallery/gallery_shapes_superpos.md b/docs/_pages/gallery/gallery_shapes_superpos.md
new file mode 100644
index 000000000..6244e1c07
--- /dev/null
+++ b/docs/_pages/gallery/gallery_shapes_superpos.md
@@ -0,0 +1,97 @@
+---
+orphan: true
+jupytext:
+  text_representation:
+    extension: .md
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.13.7
+kernelspec:
+  display_name: Python 3
+  language: python
+  name: python3
+---
+
+(gallery-shapes-superpos)=
+
+# Superposition
+
+The [superposition principle](https://en.wikipedia.org/wiki/Superposition_principle) states that the net response caused by two or more stimuli is the sum of the responses caused by each stimulus individually. This principle holds in magnetostatics when there is no material response, and simply states that the total field created by multiple magnets and currents is the sum of the individual fields.
+
+When two magnets overlap geometrically, the magnetization in the overlap region is given by the vector sum of the two individual magnetizations. This enables two geometric operations,
+
+:::::{grid} 2
+
+::::{grid-item-card} Union
+:img-bottom: ../../_static/images/docu_field_superpos_union.png
+:shadow: None
+Build complex forms by aligning base shapes (no overlap) with each other with similar magnetization vector.
+::::
+
+::::{grid-item-card} Cut-Out
+:img-bottom: ../../_static/images/docu_field_superpos_cutout.png
+:shadow: None
+When two objects with opposing magnetization vectors of similar amplitude overlap, they will just cancel in the overlap region. This enables geometric cut-out operations.
+::::
+:::::
+
+
+## Union operation
+
+Geometric union by superposition is demonstrated in the following example where a wedge-shaped magnet with a round back is constructed from three base-forms: a CylinderSegment, a Cuboid and a TriangularMesh.
+
+```{code-cell} ipython3
+import numpy as np
+import magpylib as magpy
+
+# Create three magnet parts with similar magnetization
+pt1 = magpy.magnet.CylinderSegment(
+    magnetization=(500,0,0),
+    dimension=(0,4,2,90,270),
+)
+pt2 = magpy.magnet.Cuboid(
+    magnetization=(500,0,0),
+    dimension=(2,8,2),
+    position=(1,0,0)
+)
+pt3 = magpy.magnet.TriangularMesh.from_ConvexHull(
+    magnetization=(500,0,0),
+    points=[(2,4,-1),(2,4,1),(2,-4,-1),(2,-4,1),(6,0,1),(6,0,-1)]
+)
+
+# Combine parts in a Collection
+magnet = magpy.Collection(pt1, pt2, pt3)
+
+# Add a sensor with path
+sensor = magpy.Sensor()
+sensor.position = np.linspace((7,-10,0), (7,10,0), 100)
+
+# Plot
+with magpy.show_context(magnet, sensor, backend='plotly', showlegend=False) as s:
+    s.show(col=1)
+    s.show(output='B', col=2)
+
+```
+
+
+## Cut-out operation
+
+When two objects with opposing magnetization vectors of similar amplitude overlap, they will just cancel in the overlap region. This enables geometric cut-out operations. In the following example we construct an exact hollow cylinder solution from two concentric cylinder shapes with opposite magnetizations, and compare the result to the `CylinderSegment` class solution.
+
+```{code-cell} ipython3
+from magpylib.magnet import Cylinder, CylinderSegment
+
+# Create ring with CylinderSegment
+ring0 = CylinderSegment(magnetization=(0,0,100), dimension=(2,3,1,0,360))
+
+# Create ring with cut-out
+inner = Cylinder(magnetization=(0,0,-100), dimension=(4,1))
+outer = Cylinder(magnetization=(0,0, 100), dimension=(6,1))
+ring1 = inner + outer
+
+# Print results
+print('CylinderSegment result:', ring0.getB((1,2,3)))
+print('Cut-out result:        ', ring1.getB((1,2,3)))
+```
+
+Note that, it is faster to compute the `Cylinder` field two times than computing the `CylinderSegment` field one time. This is why Magpylib automatically falls back to the `Cylinder` solution whenever `CylinderSegment` is called with 360 deg section angles. Unfortunately, cut-out operations cannot be displayed graphically at the moment, but {ref}`examples-own-3d-models` offer a solution here.
diff --git a/docs/_pages/gallery/gallery_shapes_triangle.md b/docs/_pages/gallery/gallery_shapes_triangle.md
new file mode 100644
index 000000000..d5be4e880
--- /dev/null
+++ b/docs/_pages/gallery/gallery_shapes_triangle.md
@@ -0,0 +1,150 @@
+---
+orphan: true
+jupytext:
+  text_representation:
+    extension: .md
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.13.7
+kernelspec:
+  display_name: Python 3
+  language: python
+  name: python3
+---
+
+(gallery-shapes-triangle)=
+
+# Triangular Meshes
+
+The magnetic field of a homogenously magnetized body is equivalent to the field of a charged surface. The surface is the hull of the body and the charge density is proportional to the projection of the magnetization vector onto the surface normal.
+
+It is very common to approximate the surface of bodies by triangular meshes, which can then be transformed into magnets using the `Triangle` and the `TriangularMesh` classes. When using these classes one should abide by the following rules:
+
+1. The surface must be closed, or, all missing faces must have zero charge (magnetization vector perpendicular to surface normal).
+2. All triangles are oriented outwards (right-hand-rule)
+3. The surface must not be self-intersecting.
+4. For the B-field the magnetic polarization must be added on the inside of the body.
+
+## Cubeoctahedron Magnet
+
+In this example `Triangle` is used to create a magnet with cuboctahedral shape. Notice that triangle orientation is displayed by default for convenience.
+
+```{code-cell} ipython3
+import magpylib as magpy
+
+# Create collection of triangles
+triangles = [
+    ([ 0, 1,-1], [-1, 1, 0], [ 1, 1, 0]),
+    ([ 0, 1, 1], [ 1, 1, 0], [-1, 1, 0]),
+    ([ 0, 1, 1], [-1, 0, 1], [ 0,-1, 1]),
+    ([ 0, 1, 1], [ 0,-1, 1], [ 1, 0, 1]),
+    ([ 0, 1,-1], [ 1, 0,-1], [ 0,-1,-1]),
+    ([ 0, 1,-1], [ 0,-1,-1], [-1, 0,-1]),
+    ([ 0,-1, 1], [-1,-1, 0], [ 1,-1, 0]),
+    ([ 0,-1,-1], [ 1,-1, 0], [-1,-1, 0]),
+    ([-1, 1, 0], [-1, 0,-1], [-1, 0, 1]),
+    ([-1,-1, 0], [-1, 0, 1], [-1, 0,-1]),
+    ([ 1, 1, 0], [ 1, 0, 1], [ 1, 0,-1]),
+    ([ 1,-1, 0], [ 1, 0,-1], [ 1, 0, 1]),
+    ([ 0, 1, 1], [-1, 1, 0], [-1, 0, 1]),
+    ([ 0, 1, 1], [ 1, 0, 1], [ 1, 1, 0]),
+    ([ 0, 1,-1], [-1, 0,-1], [-1, 1, 0]),
+    ([ 0, 1,-1], [ 1, 1, 0], [ 1, 0,-1]),
+    ([ 0,-1,-1], [-1,-1, 0], [-1, 0,-1]),
+    ([ 0,-1,-1], [ 1, 0,-1], [ 1,-1, 0]),
+    ([ 0,-1, 1], [-1, 0, 1], [-1,-1, 0]),
+    ([ 0,-1, 1], [ 1,-1, 0], [ 1, 0, 1]),
+]
+cuboc = magpy.Collection()
+for t in triangles:
+    cuboc.add(
+        magpy.misc.Triangle(
+            magnetization=(100, 200, 300),
+            vertices=t,
+        )
+    )
+
+# Display collection of triangles
+magpy.show(
+    cuboc,
+    backend='pyvista',
+    style_magnetization_mode='arrow',
+    style_orientation_color='yellow',
+    jupyter_backend="panel", # better pyvista rendering in a jupyter notebook
+)
+```
+
+## Triangular Prism Magnet
+
+Consider a prism with triangular base that is magnetized orthogonal to the base. All surface normals of the sides of the prism are orthogonal to the magnetization vector. As a result the sides do not contribute to the magnetic field because their charge density disappears. Only top and bottom surfaces contribute. One must be very careful when defining those surfaces in such a way that the surface normals point outwards.
+
+Leaving out parts of the surface that do not contribute to the field is beneficial for the computation speed.
+
+```{code-cell} ipython3
+import magpylib as magpy
+
+# Create prism magnet as triangle collection
+top = magpy.misc.Triangle(
+    magnetization=(0,0,1000),
+    vertices=((-1,-1,1), (1,-1,1), (0,2,1)),
+    style_label="top"
+)
+bott = magpy.misc.Triangle(
+    magnetization=(0,0,1000),
+    vertices=((-1,-1,-1), (0,2,-1), (1,-1,-1)),
+    style_label="bottom"
+)
+prism = magpy.Collection(top, bott)
+
+# Display graphically
+magpy.show(
+    *prism,
+    backend='plotly',
+    style_opacity=0.5,
+    style_magnetization_show=False
+)
+```
+
+## Triangular Mesh Magnet
+
+While `Triangle` simply provides the field of a charged triangle and can be used to contruct complex forms, it is prone to error and tedious to work with when meshes become large. For this purpose the `TriangularMesh` class ensures proper and convenient magnet creation by automatically checking mesh integrity and by orienting the faces at initialization.
+
+```{attention}
+Automatic face reorientation of `TriangularMesh` may fail when the mesh is open.
+```
+
+In this example we revisit the cubeoctahedron, but generate it through the `TriangularMesh` class.
+
+```{code-cell} ipython3
+import magpylib as magpy
+
+# Create cubeoctahedron magnet 
+vertices = [
+    ( 0, 1,-1), (-1, 1, 0), ( 1, 1, 0),
+    ( 0, 1, 1), (-1, 0, 1), ( 0,-1, 1),
+    ( 1, 0, 1), ( 1, 0,-1), ( 0,-1,-1),
+    (-1, 0,-1), (-1,-1, 0), ( 1,-1, 0),
+]
+faces = [
+    (0,1,2),   (3,2,1),   (3,4,5),   (3,5,6),
+    (0,7,8),   (0,8,9), (5,10,11), (8,11,10),
+    (1,9,4),  (10,4,9),   (2,6,7),  (11,7,6),
+    (3,1,4),   (3,6,2),   (0,9,1),   (0,2,7),
+    (8,10,9), (8,7,11),  (5,4,10),  (5,11,6),
+]
+cuboc = magpy.magnet.TriangularMesh(
+    magnetization=(100, 200, 300),
+    vertices=vertices,
+    faces=faces
+)
+
+# Display TriangularMesh body
+magpy.show(
+    cuboc,
+    backend='plotly',
+    style_mesh_grid_show=True,
+    style_mesh_grid_line_width=4
+)
+```
+
+Details about the `TriangularMesh` class are discussed in {ref}`gallery-tutorial-trimesh`.
\ No newline at end of file
diff --git a/docs/_pages/gallery/gallery_tutorial_collection.md b/docs/_pages/gallery/gallery_tutorial_collection.md
new file mode 100644
index 000000000..378fd3403
--- /dev/null
+++ b/docs/_pages/gallery/gallery_tutorial_collection.md
@@ -0,0 +1,258 @@
+---
+orphan: true
+jupytext:
+  text_representation:
+    extension: .md
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.13.7
+kernelspec:
+  display_name: Python 3
+  language: python
+  name: python3
+---
+
+
+(gallery-tutorial-collection)=
+
+# Working with Collections
+
+The top level class `Collection` allows users to group objects by reference for common manipulation. The idea is that
+
+1. A collection spans its own local frame of reference with position and orientation, to which the children are added. Thus, any operation applied to the collection is individually applied to all its children.
+2.  The collection itself behaves like a single Magpylib object (can be source and/or observer)
+3. All children inside the collection can be individually addressed and manipulated at all times.
+4. Collections have their own `style` attributes, their paths are displayed in `show`, and all children are automatically assigned their parent color.
+
+## Constructing Collections
+
+Collections have the attributes `children`, `sources`, `sensors` and `collections`. These attributes are ordered lists that contain objects that are added to the collection by reference (not copied). `children` returns a list of all objects in the collection. `sources` returns a list of the sources, `sensors` a list of the sensors and `collections` a list of "sub-collections" within the collection.
+
+```{code-cell} ipython3
+import magpylib as magpy
+
+x1 = magpy.Sensor(style_label="x1")
+s1 = magpy.magnet.Cuboid(style_label="s1")
+c1 = magpy.Collection(style_label="c1")
+
+coll = magpy.Collection(x1, s1, c1, style_label="coll")
+
+print(f"children:    {coll.children}")
+print(f"sources:     {coll.sources}")
+print(f"sensors:     {coll.sensors}")
+print(f"collections: {coll.collections}")
+```
+
+New additions are always added at the end. Use the **`add`** method or the parameters.
+
+```{code-cell} ipython3
+
+# Copy adjusts object label automatically
+x2 = x1.copy()
+s2 = s1.copy()
+c2 = c1.copy()
+
+# Add objects with add method
+coll.add(x2, s2)
+
+# Add objects with parameters
+coll.collections += [c2]
+
+print(f"children:    {coll.children}")
+print(f"sources:     {coll.sources}")
+print(f"sensors:     {coll.sensors}")
+print(f"collections: {coll.collections}")
+```
+
+The **`describe`** method is a very convenient way to view a Collection structure, especially when the collection is nested, i.e. when containing other collections.
+
+```{code-cell} ipython3
+# Add more objects
+c1.add(x2.copy())
+c2.add(s2.copy())
+
+coll.describe(format="label+type")
+```
+
+The parameter `format` can be any combination of `"type"`, `"label"`, `"id"` and `"properties"`.
+
+For convenience, any two Magpylib objects can be added up with `+` to form a collection.
+
+```{code-cell} ipython3
+import magpylib as magpy
+
+x1 = magpy.Sensor(style_label="x1")
+s1 = magpy.magnet.Cuboid(style_label="s1")
+
+coll = x1 + s1
+
+coll.describe(format="label")
+```
+
+## Child-Parent Relations
+
+Objects that are part of a collection become children of that collection, and the collection itself becomes their parent. Every Magpylib object has the `parent` attribute, which is `None` by default.
+
+```{code-cell} ipython3
+import magpylib as magpy
+
+x1 = magpy.Sensor()
+c1 = magpy.Collection(x1)
+
+print(f"x1.parent:   {x1.parent}")
+print(f"c1.parent:   {c1.parent}")
+print(f"c1.children: {c1.children}")
+```
+
+Rather than adding objects to a collection, as described above, one can also set the `parent` parameter. A Magpylib object can only have a single parent, i.e. it can only be part of a single collection. As a result, changing the parent will automatically remove the object from it's previous collection.
+
+```{code-cell} ipython3
+import magpylib as magpy
+
+x1 = magpy.Sensor(style_label="x1")
+c1 = magpy.Collection(style_label="c1")
+c2 = magpy.Collection(c1, style_label="c2")
+
+print("Two empty, nested collections")
+c2.describe(format="label")
+
+print("\nSet x1 parent to c1")
+x1.parent = c1
+c2.describe(format="label")
+
+print("\nChange x1 parent to c2")
+x1.parent = c2
+c2.describe(format="label")
+```
+
+## Accessing Children
+
+Collections have `__getitem__` through the attribute `children` defined which enables using collections directly as iterators,
+
+```{code-cell} ipython3
+import magpylib as magpy
+
+x1 = magpy.Sensor()
+x2 = magpy.Sensor()
+
+coll = x1 + x2
+
+for child in coll:
+    print(child)
+```
+
+and makes it possible to directly reference to a child object by index:
+
+```{code-cell} ipython3
+print(coll[0])
+```
+
+Collection nesting is powerful to create a self-consistent hierarchical structure, however, it is often in the way of quick child access in nested trees. For this, the `children_all`, `sources_all`, `sensors_all` and `collections_all` read-only parameters, return all objects in the tree:
+
+```{code-cell} ipython3
+import magpylib as magpy
+
+s1 = magpy.Sensor(style_label="s1")
+s2 = s1.copy()
+s3 = s2.copy()
+
+# this creates anested collection
+coll = s1 + s2 + s3
+coll.describe(format="label")
+
+# _all gives access to the whole tree
+print([s.style.label for s in coll.sensors_all])
+```
+
+## Practical Example
+
+The following example demonstrates how collections enable user-friendly manipulation of groups, sub-groups and individual objects.
+
+```{code-cell} ipython3
+import numpy as np
+import magpylib as magpy
+
+# Construct two coils from windings
+coil1 = magpy.Collection(style_label="coil1")
+for z in np.linspace(-.5, .5, 5):
+    coil1.add(magpy.current.Loop(current=1, diameter=20, position=(0,0,z)))
+coil1.position = (0,0,-5)
+coil2 = coil1.copy(position=(0,0,5))
+
+# Helmholtz consists of two coils
+helmholtz = coil1 + coil2
+
+# Move the helmholtz
+helmholtz.position = np.linspace((0,0,0), (10,0,0), 15)
+helmholtz.rotate_from_angax(np.linspace(0,180,15), "x", start=0)
+
+# Move the coils
+coil1.move(np.linspace((0,0,0), ( 5,0,0), 15))
+coil2.move(np.linspace((0,0,0), (-5,0,0), 15))
+
+# Move the windings
+for coil in [coil1, coil2]:
+    for i,wind in enumerate(coil):
+        wind.move(np.linspace((0,0,0), (0,0,2-i), 15))
+
+# Display as animation
+magpy.show(*helmholtz, animation=True, style_path_show=False)
+```
+
+For magnetic field computation a collection with source children behaves like a single source object, and a collection with sensor children behaves like a flat list of it's sensors when provided as `sources` and `observers` input respectively.
+
+```{code-cell} ipython3
+import matplotlib.pyplot as plt
+
+B = magpy.getB(helmholtz, (10,0,0))
+plt.plot(B, label=["Bx", "By", "Bz"])
+
+plt.gca().set(
+    title="B-field (mT) at position (10,0,0)",
+    xlabel="helmholtz path position index"
+)
+plt.gca().grid(color=".9")
+plt.gca().legend()
+plt.show()
+```
+
+## Efficient 3D Models
+
+The graphical backend libraries were not designed for complex 3D graphic output. As a result, it becomes often inconvenient and slow when attempting to display many 3D objects. One solution to this problem when dealing with large collections, is to represent the latter by a single encompassing body, and to deactivate the individual 3D models of all children.
+
+```{code-cell} ipython3
+import magpylib as magpy
+
+# Create collection
+coll = magpy.Collection()
+for index in range(10):
+    cuboid = magpy.magnet.Cuboid(
+        magnetization=(0, 0, 1000 * (index%2-.5)),
+        dimension=(10,10,10),
+        position=(index*10,0,0),
+    )
+    coll.add(cuboid)
+
+# Add an encompassing 3D-trace
+trace = magpy.graphics.model3d.make_Cuboid(
+    dimension=(104, 12, 12),
+    position=(45, 0, 0),
+    opacity=0.5,
+)
+coll.style.model3d.add_trace(trace)
+
+coll.style.label="Collection with visible children"
+coll.show()
+
+# Hide the children default 3D representation
+coll.set_children_styles(model3d_showdefault=False)
+coll.style.label = "Collection with hidden children"
+coll.show()
+```
+
+## Compound Objects
+
+Collections can be subclassed to form dynamic groups that seamlessly integrate into Magpylib. Such classes are referred to as **compounds**. An example how this is done is shown in {ref}`gallery-misc-compound`.
+
+
+
diff --git a/docs/examples/examples_04_custom_source.md b/docs/_pages/gallery/gallery_tutorial_custom.md
similarity index 62%
rename from docs/examples/examples_04_custom_source.md
rename to docs/_pages/gallery/gallery_tutorial_custom.md
index aa758b9f3..7507a1ccd 100644
--- a/docs/examples/examples_04_custom_source.md
+++ b/docs/_pages/gallery/gallery_tutorial_custom.md
@@ -1,20 +1,40 @@
 ---
+orphan: true
 jupytext:
   text_representation:
     extension: .md
     format_name: myst
     format_version: 0.13
-    jupytext_version: 1.13.7
+    jupytext_version: 1.14.5
 kernelspec:
-  display_name: Python 3 (ipykernel)
+  display_name: Python 3
   language: python
   name: python3
 ---
 
-(examples-custom-source-objects)=
-# CustomSource class
+(gallery-tutorial-custom)=
+
+# CustomSource Class
+
+## Simple example
+
+**User-defined source objects** are easily realized with the `CustomSource` class. Such a custom source object is provided with a user-defined field computation function, that is stored in the attribute `field_func` and is used when `getB` and `getH` are called. Similar to core functions, `field_func` must have the two positional arguments `field` (can be `'B'` or `'H'`) and `observers` (must accept ndarrays of shape (n,3)), and return the respective fields in units of mT and kA/m in the same shape.
+
+```{code-cell} ipython3
+import numpy as np
+import magpylib as magpy
+
+#only monopole
+
+```
+
+## Adding a 3D model to CustomSource
+
+**User-defined 3D models** (traces) for any object that will be displayed by `show`, can be stored in `style.model3d.data`. A trace itself is a dictionary that contains all information necessary for plotting, and can be added with the method `style.model3d.data.add_trace`. In the example gallery {ref}`gallery-shapes-3d-models` it is explained how to create custom traces with standard plotting backends such as `scatter3d` or `mesh3d` in Plotly, or `plot`, `plot_surface` and `plot_trisurf` in Matplotlib. Some pre-defined models are also provided for easy parts visualization.
+
+
+While each of these features can be used individually, the combination of the two (own source class with own 3D representation) enables a high level of customization in Magpylib. Such user-defined objects will feel like native Magpylib objects and can be used in combination with all other features, which is demonstrated in the following example:
 
-The class `CustomSource` allows users to integrate their own custom-object field computation into the Magpylib interface. For this, the argument `field_func` must be provided with a function that is then automatically called with `getB` and `getH`. This custom field function is treated like a core function. It must have the positional arguments `field` (with values `'B'` or `'H'`), and `observers` (must accept array_like, shape (n,3)) and return the B-field in units of \[mT\] and the H-field in units of \[kA/m\] with a similar shape. A fundamental example how to create a custom source object is shown below:
 
 ```{code-cell} ipython3
 import numpy as np
@@ -42,7 +62,7 @@ H = magpy.getH(source, sensor)
 print(H)
 ```
 
-Custom sources behave like native Magpylib objects. They can make full use of the geometry interface, have style properties, and can be part of collections and field computation together with all other source types. A custom 3D representation for display in `show` can be provided via the `style.model3d` attribute, see {ref}`examples-own-3d-models`.
+Custom sources behave like native Magpylib objects. They can make full use of the geometry interface, have style properties, and can be part of collections and field computation together with all other source types. A custom 3D representation for display in `show` can be provided via the `style.model3d` attribute, see {ref}`gallery-shapes-3d-models`.
 
 In the following example we show this functionality by constructing a quadrupole collection from custom source monopoles:
 
@@ -107,14 +127,14 @@ ax2.plot(pole_pos[:,0], pole_pos[:,2], marker='o', ms=10, mfc='k', mec='w', ls='
 # plot styling
 ax1.set(
     title='3D model',
-    xlabel='x-position [mm]',
-    ylabel='y-position [mm]',
-    zlabel='z-position [mm]',
+    xlabel='x-position (mm)',
+    ylabel='y-position (mm)',
+    zlabel='z-position (mm)',
 )
 ax2.set(
     title='Quadrupole field',
-    xlabel='x-position [mm]',
-    ylabel='z-position [mm]',
+    xlabel='x-position (mm)',
+    ylabel='z-position (mm)',
     aspect=1,
 )
 fig.colorbar(cp, label='[$charge/mm^2$]', ax=ax2)
diff --git a/docs/_pages/gallery/gallery_tutorial_field_computation.md b/docs/_pages/gallery/gallery_tutorial_field_computation.md
new file mode 100644
index 000000000..b7390396d
--- /dev/null
+++ b/docs/_pages/gallery/gallery_tutorial_field_computation.md
@@ -0,0 +1,230 @@
+---
+orphan: true
+jupytext:
+  text_representation:
+    extension: .md
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.14.5
+kernelspec:
+  display_name: Python 3
+  language: python
+  name: python3
+---
+
+(gallery-tutorial-field-computation)=
+
+# Computing the Field
+
+## Most basic Example
+
+The v2 slogan was *"The magnetic field is only three lines of code away"*, which is demonstrated by the most fundamental use of Magpylib.
+
+```{code-cell} ipython3
+import magpylib as magpy                          # Import Magpylib
+loop = magpy.current.Loop(current=1, diameter=1)  # Create magnetic source
+B = magpy.getB(loop, observers=(0,0,0))           # Compute field
+
+print(B.round(decimals=3))
+```
+
+## Field on a Grid
+
+When handed multiple observer positions, `getB` and `getH` will return the field in the shape of the input. In the following example, B- and H-field of a diametrally magnetized cylinder magnet are computed on a position grid in the symmetry plane, and are then displayed using Matplotlib.
+
+```{code-cell} ipython3
+import numpy as np
+import matplotlib.pyplot as plt
+import magpylib as magpy
+
+fig, [ax1,ax2] = plt.subplots(1, 2, figsize=(10,5))
+
+# Create an observer grid in the xz-symmetry plane
+X, Y = np.mgrid[-5:5:100j, -5:5:100j].transpose((0, 2, 1))
+grid = np.stack([X, Y, np.zeros((100, 100))], axis=2)
+
+# Compute B- and H-fields of a cylinder magnet on the grid
+cyl = magpy.magnet.Cylinder(magnetization=(500,500,0), dimension=(4,2))
+B = cyl.getB(grid)
+H = cyl.getH(grid)
+
+# Display field with Pyplot
+ax1.streamplot(grid[:,:,0], grid[:,:,1], B[:,:,0], B[:,:,1], density=1.5,
+    color=np.log(np.linalg.norm(B, axis=2)), linewidth=1, cmap='spring_r')
+
+ax2.streamplot(grid[:,:,0], grid[:,:,1], H[:,:,0], H[:,:,1], density=1.5,
+    color=np.log(np.linalg.norm(B, axis=2)), linewidth=1, cmap='winter_r')
+
+# Outline magnet boundary
+for ax in [ax1,ax2]:
+    ts = np.linspace(0, 2*np.pi, 50)
+    ax.plot(2*np.sin(ts), 2*np.cos(ts), 'k--')
+
+plt.tight_layout()
+plt.show()
+```
+
+(gallery-tutorial-field-computation-sensors)=
+
+## Using Sensors
+
+The `Sensor` class enables relative positioning of observer grids in the global coordinate system. The observer grid is stored in the `pixel` parameter of the sensor object which is `(0,0,0)` by default (sensor position = observer position).
+
+The following example shows a moving and rotating sensor with two pixel. At the same time, the source objects are moving to demonstrate the versatility of the field computation.
+
+```{code-cell} ipython3
+import numpy as np
+import magpylib as magpy
+
+# Reset defaults set in previous example
+magpy.defaults.reset()
+
+
+# Define sensor with path
+sensor = magpy.Sensor(pixel=[(0,0,-.5), (0,0,.5)], style_size=1.5)
+sensor.position = np.linspace((0,0,-3), (0,0,3), 37)
+
+angles = np.linspace(0, 360, 37)
+sensor.rotate_from_angax(angles, 'z', start=0)
+
+# Define source with path
+cyl1 = magpy.magnet.Cylinder(magnetization=(100,0,0), dimension=(1,2), position=(3,0,0))
+cyl2 = cyl1.copy(position=(-3,0,0))
+coll = magpy.Collection(cyl1, cyl2)
+coll.rotate_from_angax(-angles, 'z', start=0)
+
+# Display system and field at sensor
+with magpy.show_context(sensor, coll, animation=True, backend='plotly'):
+    magpy.show(col=1)
+    magpy.show(output='Bx', col=2, pixel_agg=None)
+```
+
+## Multiple Inputs
+
+When `getB` and `getH` receive multiple inputs for sources and observers they will compute all possible combinations. It is still beneficial to call the field computation only a single time, because similar sources will be grouped and the computation will be vectorized automatically.
+
+```{code-cell} ipython3
+import magpylib as magpy
+
+# Three sources
+cube1 = magpy.magnet.Cuboid(magnetization=(0,0,1000), dimension=(1,1,1))
+cube2 = cube1.copy()
+cube3 = cube1.copy()
+
+# Two sensors with 4x5 pixel each
+pixel = [[[(i,j,0)] for i in range(4)] for j in range(5)]
+sens1 = magpy.Sensor(pixel=pixel)
+sens2 = sens1.copy()
+
+# Compute field
+B = magpy.getB([cube1, cube2, cube3], [sens1, sens2])
+
+# The result includes all combinations
+B.shape
+```
+
+Select the second cube (first index), the first sensor (second index), pixel 3-4 (index three and four) and the Bz-component of the field (index five)
+
+```{code-cell} ipython3
+B[1, 0, 2, 3, 2]
+```
+
+A path will add another index. Every higher pixel dimension will add another index as well.
+
+## Field as Pandas Dataframe
+
+Instead of a Numpy `ndarray`, the field computation can also return a [pandas](https://pandas.pydata.org/).[dataframe](https://pandas.pydata.org/docs/user_guide/dsintro.html#dataframe) using the `output='dataframe'` kwarg.
+
+```{code-cell} ipython3
+import numpy as np
+import magpylib as magpy
+
+cube = magpy.magnet.Cuboid(
+    magnetization=(0, 0, 1000),
+    dimension=(1, 1, 1),
+    style_label='cube'
+)
+loop = magpy.current.Loop(
+    current=200,
+    diameter=2,
+    style_label='loop',
+)
+sens1 = magpy.Sensor(
+    pixel=[(0,0,0), (.5,0,0)],
+    position=np.linspace((-4, 0, 2), (4, 0, 2), 30),
+    style_label='sens1'
+)
+sens2 = sens1.copy(style_label='sens2').move((0,0,1))
+
+B = magpy.getB(
+    [cube, loop],
+    [sens1, sens2],
+    output='dataframe',
+)
+
+B
+```
+
+Plotting libraries such as [plotly](https://plotly.com/python/plotly-express/) or [seaborn](https://seaborn.pydata.org/introduction.html) can take advantage of this feature, as they can deal with `dataframes` directly.
+
+```{code-cell} ipython3
+import plotly.express as px
+fig = px.line(
+    B,
+    x="path",
+    y="Bx",
+    color="pixel",
+    line_group="source",
+    facet_col="source",
+    symbol="sensor",
+)
+fig.show()
+```
+
+## Direct Interface
+
+All above computations demonstrate the convenient object oriented interface of Magpylib. However, there are instances when it is better to work with the direct interface instead.
+
+1. Reduce overhead of Python objects
+2. Complex computation instances
+
+In the following example we show how complex instances are computed using the direct interface.
+
+```{important}
+Use numpy operations for input array creation as shown in the example !
+```
+
+```{code-cell} ipython3
+import numpy as np
+import magpylib as magpy
+
+# Two different magnet dimensions
+dim1 = (2,4,4)
+dim2 = (4,2,2)
+DIM = np.vstack((
+    np.tile(dim1, (6,1)),
+    np.tile(dim2, (6,1)),
+    ))
+
+# Sweep through different magnetization for each magnet type
+mags = np.linspace((0,0,500), (0,0,1000), 6)
+MAG = np.tile(mags, (2,1))
+
+# Airgap must stay the same
+pos1 = (0,0,3)
+pos2 = (0,0,2)
+POS = np.vstack((
+    np.tile(pos1, (6,1)),
+    np.tile(pos2, (6,1)),
+    ))
+
+# Compute all instances with the direct interface
+B = magpy.getB(
+    sources='Cuboid',
+    observers=POS,
+    magnetization=MAG,
+    dimension=DIM,
+)
+
+B.round(decimals=2)
+```
diff --git a/docs/examples/examples_02_paths.md b/docs/_pages/gallery/gallery_tutorial_paths.md
similarity index 57%
rename from docs/examples/examples_02_paths.md
rename to docs/_pages/gallery/gallery_tutorial_paths.md
index 366620b60..19f680d41 100644
--- a/docs/examples/examples_02_paths.md
+++ b/docs/_pages/gallery/gallery_tutorial_paths.md
@@ -1,25 +1,30 @@
 ---
+orphan: true
 jupytext:
   text_representation:
     extension: .md
     format_name: myst
     format_version: 0.13
-    jupytext_version: 1.13.7
+    jupytext_version: 1.14.0
 kernelspec:
-  display_name: Python 3 (ipykernel)
+  display_name: Python 3
   language: python
   name: python3
 ---
 
-(examples-paths)=
+(gallery-tutorial-paths)=
 
-# Paths
+# Working with Paths
 
-Magpylib objects all have `position` and `orientation` attributes in the global reference frame. These attributes can be single instances describing a single position and a single orientation of an object, but they can also be vectors of positions and orientations. In this case the attributes represent multiple object locations and orientaions and are referred to as a **path**. When the field of an object is computed, it is automatically computed for the whole path. The reason is that computation is much more efficient when all instances are computed in a single operation. The introduction to `position` and `orientation` attributes and path can be found in {ref}`intro-position-and-orientation`. Here we show how to work with paths properly.
+The position and orientation attributes are key elements of Magpylib. The documentation section {ref}`docu-position` describes how they work. However, these definitions can seem abstract, but the interface was constructed as intuitive as possbile.
 
+```{important}
+Always make use of paths when computing with multiple Magpylib object position and orientation instances. This enables vectorized computation. Avoid Python loops at all costs!
+```
+
+In this tutorial we show some good practice examples.
 
-(examples-assign-absolute-path)=
-## Assigning absolute paths
+## Assigning Absolute Paths
 
 Absolute object paths are assigned at initialization or through the object properties.
 
@@ -28,89 +33,93 @@ import numpy as np
 from scipy.spatial.transform import Rotation as R
 import magpylib as magpy
 
-ts = np.linspace(0, 10, 51)
+# Create paths
+ts = np.linspace(0, 10, 31)
 pos = np.array([(t, 0, np.sin(t)) for t in ts])
 ori = R.from_rotvec(np.array([(0, -np.cos(t)*0.785, 0) for t in ts]))
 
-# set path at initialization
+# Set path at initialization
 sensor = magpy.Sensor(position=pos, orientation=ori)
 
-# set path through properties
-cube = magpy.magnet.Cuboid(magnetization=(0,0,1), dimension=(.5,.5,.5))
+# Set path through properties
+cube = magpy.magnet.Cuboid(magnetization=(0,0,1), dimension=(1,1,1))
 cube.position = pos + np.array((0,0,3))
 cube.orientation = ori
 
-magpy.show(sensor, cube, style_path_frames=10)
-```
-
-(examples-move-and-rotate)=
-## Move and rotate
+# Display as animation
+magpy.show(sensor, cube, animation=True, backend='plotly')
 
-The attributes position and orientation can be either of “scalar” nature, i.e. a single position or a single rotation, or “vectors” when they are arrays of such scalars. The two attributes together define an object “path”.
+```
 
-The move and rotate methods obey the following rules:
+## Relative Paths
 
-- Scalar input is applied to the whole object path, starting with path index `start`. With the default `start='auto'` the index is set to `start=0` and the functionality is *moving objects around*.
-- Vector input of length $n$ applies the individual $n$ operations to $n$ object path entries, starting with path index `start`. Padding applies when the input exceeds the existing path. With the default `start='auto'` the index is set to `start=len(object path)` and the functionality is *appending paths*.
+`move` and `rotate` input is interpreted relative to the existing path. When the input is scalar the whole existing path is moved.
 
-```python
+```{code-cell} ipython3
+import numpy as np
+from scipy.spatial.transform import Rotation as R
 import magpylib as magpy
 
-sensor = magpy.Sensor()
+# Create paths
+ts = np.linspace(0, 10, 21)
+pos = np.array([(t, 0, np.sin(t)) for t in ts])
+ori = R.from_rotvec(np.array([(0, -np.cos(t)*0.785, 0) for t in ts]))
 
-sensor.move((1,1,1))                                      # scalar input is by default applied
-print(sensor.position)                                    # to the whole path
-# out: [1. 1. 1.]
+# Set path at initialization
+sens1 = magpy.Sensor(position=pos, orientation=ori, style_label='sens1')
 
-sensor.move([(1,1,1), (2,2,2)])                           # vector input is by default appended
-print(sensor.position)                                    # to the existing path
-# out: [[1. 1. 1.]  [2. 2. 2.]  [3. 3. 3.]]
+# Apply move operation to whole path with scalar input
+sens2 = sens1.copy(style_label='sens2')
+sens2.move((0,0,2))
 
-sensor.move((1,1,1), start=1)                             # scalar input and start=1 is applied
-print(sensor.position)                                    # to whole path starting at index 1
-# out: [[1. 1. 1.]  [3. 3. 3.]  [4. 4. 4.]]
+# Apply rotate operation to whole path with scalar input
+sens3 = sens1.copy(style_label='sens3')
+sens3.rotate_from_angax(angle=90, axis='y', anchor=0)
 
-sensor.move([(0,0,10), (0,0,20)], start=1)                # vector input and start=1 merges
-print(sensor.position)                                    # the input with the existing path
-# out: [[ 1.  1.  1.]  [ 3.  3. 13.]  [ 4.  4. 24.]]      # starting at index 1.
+# Display paths
+magpy.show(sens1, sens2, sens3)
 ```
 
-(examples-relative-paths)=
-
-## Relative paths
-
-`move` and `rotate` input is interpreted relative to the existing path. Vector input is by default appended:
+When the input is a vector, the path is by default appended.
 
 ```{code-cell} ipython3
 import numpy as np
 from magpylib.magnet import Sphere
 
+# Create paths
 x_path = np.linspace((0,0,0), (10,0,0), 10)[1:]
 z_path = np.linspace((0,0,0), (0,0,10), 10)[1:]
 
+# Create sphere object
 sphere = Sphere(magnetization=(0,0,1), diameter=3)
 
+# Apply paths subsequently
 for _ in range(3):
     sphere.move(x_path).move(z_path)
 
+# Display paths
 sphere.show()
 ```
 
-(examples-merging-paths)=
-
 ## Merging paths
 
-Complex paths can be created by merging multiple path operations. This is done with vector input for the `move` and `rotate` methods, and choosing values for `start` that will make the paths overlap. In the following example we combine a linear path with a rotation about self (`anchor=None`) until path index 30. Thereon, a second rotation about the origin is applied, creating a spiral motion.
+Complex paths can be created by merging multiple path operations. This is done with vector input for the `move` and `rotate` methods, and choosing values for `start` that will make the paths overlap. In the following example we combine a linear path with a rotation about self (`anchor=None`) until path index 30. Thereon, a second rotation about the origin is applied, creating a spiral.
 
 ```{code-cell} ipython3
 import numpy as np
 from magpylib.magnet import Cuboid
 
+# Create cube and set linear path
 cube =  Cuboid(magnetization=(0,0,100), dimension=(2,2,2))
 cube.position = np.linspace((0,0,0), (10,0,0), 60)
+
+# Apply rotation about self - starting at index 0
 cube.rotate_from_rotvec(np.linspace((0,0,0), (0,0,360), 30), start=0)
+
+# Apply rotation about origin - starting at index 30
 cube.rotate_from_rotvec(np.linspace((0,0,0), (0,0,360), 30), anchor=0, start=30)
 
+# Display paths as animation
 cube.show(backend='plotly', animation=True)
 ```
 
@@ -121,18 +130,17 @@ The `reset_path()` method allows users to reset an object path to `position=(0,0
 ```{code-cell} ipython3
 import magpylib as magpy
 
-# create sensor object with complex path
-sensor=magpy.Sensor()
-sensor.rotate_from_angax([1,2,3,4,5], (1,2,3), anchor=(0,3,5))
+# Create sensor object with complex path
+sensor=magpy.Sensor().rotate_from_angax([1,2,3,4], (1,2,3), anchor=(0,3,5))
 
-# reset path
+# Reset path
 sensor.reset_path()
 
 print(sensor.position)
 print(sensor.orientation.as_quat())
 ```
 
-(examples-edge-padding-end-slicing)=
+(gallery-tutorial-paths-edge-padding-end-slicing)=
 
 ## Edge-padding and end-slicing
 
@@ -180,4 +188,4 @@ sensor = Sensor(
 sensor.position=[(1,2,3), (2,3,4)]
 print(sensor.position)
 print(sensor.orientation.as_rotvec())
-```
+```
\ No newline at end of file
diff --git a/docs/_pages/gallery/gallery_tutorial_trimesh.md b/docs/_pages/gallery/gallery_tutorial_trimesh.md
new file mode 100644
index 000000000..154075770
--- /dev/null
+++ b/docs/_pages/gallery/gallery_tutorial_trimesh.md
@@ -0,0 +1,107 @@
+---
+orphan: true
+jupytext:
+  text_representation:
+    extension: .md
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.13.7
+kernelspec:
+  display_name: Python 3
+  language: python
+  name: python3
+---
+
+(gallery-tutorial-trimesh)=
+
+# TriangularMesh Class
+
+The `TriangularMesh` class is used to create magnets from triangular surface meshes, instead of assembling them from individual `Triangle` objects as described in {ref}`gallery-shapes-triangle`. This class is initialized with the `vertices` (an array_like of positions) and the `faces` (an array_like of index triplets) inputs. In addition, a set of useful classmethods enables initialization from various inputs:
+
+- `TriangularMesh.from_mesh()`: from an array_like of triplets of vertices
+- `TriangularMesh.from_triangles()`: from a list of `Triangle` objects
+- `TriangularMesh.from_ConvexHull()`: from the convex hull of a given point cloud
+- `TriangularMesh.from_pyvista()`: from a Pvista `PolyData` object
+
+In contrast to a `Collection` of `Triangle` objects the `TriangularMesh` class performs several important checks at initialization by default to ensure that the given triangular mesh can form a proper magnet:
+
+- `check_open`: checks if given mesh forms a closed surface
+- `check_disconnected`: checks if given mesh is connected
+- `check_selfintersecting`: checks if given mesh is self-intersecting
+- `reorient_faces`: checks if faces are oriented outwards, and flips the ones wrongly oriented. This works only if the mesh is closed.
+
+All four checks will throw warnings by default if the mesh is open, disconnected, self-intersecting, or cannot be reoriented. Four options enable error handling: `"skip"` (=`False`), `"ignore"`, `"warn"` (=default=`True`), `"raise"`. If skipped at initialization, the checks can be performed by hand via respective methods.
+
+The mesh status is set by the checks, and can be viewed via the properties `status_open`, `status_disconnected` and `status_reoriented` with possible values `None`, `True`, `False`. Problems of the mesh (e.g. open edges) are stored in `status_open_data` and `status_disconnected_data`. Such problems can be viewed with `show`.
+
+```{caution}
+* `getB` and `getH` compute the fields correctly only if the mesh is closed, not self-intersecting, and all faces are properly oriented outwards.
+
+* Input checks and face reorientation can be computationally expensive. The checks can be individually deactivated by setting `reorient_faces="skip"`, `check_open="skip"`, `check_disconnected="skip"`, and `check_selfintersecting="skip"` at initialization of `TriangularMesh` objects. The checks can also be performed by hand after initialization.
+
+* Meshing tools such as the [Pyvista](https://docs.pyvista.org/) library can be very convenient for building complex shapes, but often do not guarantee that the mesh is properly closed or connected.
+
+* Meshing tools often create meshes with a lot of faces, especially when working with curved surfaces. Keep in mind that the field computation takes of the order of a few microseconds per observer position per face, and that RAM is a limited resource.
+```
+
+## Example - Tetrahedron magnet
+
+```{code-cell} ipython3
+import magpylib as magpy
+
+# create faceted tetrahedron from vertices and faces
+tmesh_tetra = magpy.magnet.TriangularMesh(
+    magnetization=(0, 0, 1000),
+    vertices=((0, 0, 0), (1, 0, 0), (0, 1, 0), (0, 0, 1)),
+    faces=((2, 1, 0), (3, 0, 1), (3, 2, 0), (3, 1, 2)),
+)
+
+# print mesh status
+print("mesh status open:", tmesh_tetra.status_open)
+print("mesh status disconnected:", tmesh_tetra.status_disconnected)
+print("mesh status selfintersecting:", tmesh_tetra.status_selfintersecting)
+print("mesh status reoriented:", tmesh_tetra.status_reoriented)
+
+tmesh_tetra.show()
+```
+
+## Prism magnet with open mesh
+
+In some cases it may be desirable to generate a `TriangularMesh` object from an open mesh, as described in {ref}`gallery-shapes-triangle`. In this case one has to be extremely careful because one cannot rely on the checks. Not to generate warnings or error messages, these checks can be disabled with `"skip"` or their outcome can be ignored with `"ignore"`. The `show` function can be used to view open edges and disconnected parts. In the following example we generate such an open mesh directly from `Triangle` objects.
+
+```{code-cell} ipython3
+import magpylib as magpy
+import numpy as np
+
+top = magpy.misc.Triangle(
+    magnetization=(1000,0,0),
+    vertices= ((-1,-1,1), (1,-1,1), (0,2,1)),
+)
+bottom = magpy.misc.Triangle(
+    magnetization=(1000,0,0),
+    vertices= ((-1,-1,-1), (0,2,-1), (1,-1,-1)),
+)
+
+# create faceted prism with open edges
+prism = magpy.magnet.TriangularMesh.from_triangles(
+    magnetization=(0, 0, 1000),   # overrides triangles magnetization
+    triangles=[top, bottom],
+    check_open="ignore",        # check but ignore open mesh
+    check_disconnected="ignore",     # check but ignore disconnected mesh
+    reorient_faces="ignore",      # check but ignore non-orientable mesh
+    style_label="Open prism",
+)
+prism.style.magnetization.mode = "arrow"
+
+print("mesh status open:", prism.status_open)
+print("mesh status disconnected:", prism.status_disconnected)
+print("mesh status self-intersecting:", prism.status_selfintersecting)
+print("mesh status reoriented:", prism.status_reoriented)
+
+prism.show(
+    backend="plotly",
+    style_mesh_open_show=True,
+    style_mesh_disconnected_show=True,
+)
+```
+
diff --git a/docs/_pages/gallery/gallery_vis_animations.md b/docs/_pages/gallery/gallery_vis_animations.md
new file mode 100644
index 000000000..6035d2e4a
--- /dev/null
+++ b/docs/_pages/gallery/gallery_vis_animations.md
@@ -0,0 +1,19 @@
+---
+orphan: true
+jupytext:
+  text_representation:
+    extension: .md
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.14.5
+kernelspec:
+  display_name: Python 3
+  language: python
+  name: python3
+---
+
+(gallery-vis-animations)=
+
+# Animations
+
+some really cool animation
\ No newline at end of file
diff --git a/docs/_pages/gallery/gallery_vis_mpl_streamplot.md b/docs/_pages/gallery/gallery_vis_mpl_streamplot.md
new file mode 100644
index 000000000..2d8dd077b
--- /dev/null
+++ b/docs/_pages/gallery/gallery_vis_mpl_streamplot.md
@@ -0,0 +1,118 @@
+---
+orphan: true
+jupytext:
+  text_representation:
+    extension: .md
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.14.5
+kernelspec:
+  display_name: Python 3
+  language: python
+  name: python3
+---
+
+(gallery-vis-mpl-streamplot)=
+
+# Matplotlib Streamplot
+
+## Example 1: Cuboid Magnet
+
+In this example we show the B-field of a cuboid magnet using Matplotlib streamlines. Streamlines are not magnetic field lines in the sense that the field amplitude cannot be derived from their density. However, Matplotlib streamlines can show the field amplitude via color and line thickness. One must be carefult that streamlines can only display two components of the field. In the following example the third component is always zero - but this is generally not the case.
+
+```{code-cell} ipython3
+import matplotlib.pyplot as plt
+import numpy as np
+import magpylib as magpy
+
+# Create a Matplotlib figure
+fig, ax = plt.subplots()
+
+# Create an observer grid in the xz-symmetry plane
+X, Z = np.mgrid[-5:5:40j, -5:5:40j].transpose((0, 2, 1))
+grid = np.stack([X, np.zeros((40, 40)), Z], axis=2)
+
+# Compute the B-field of a cube magnet on the grid
+cube = magpy.magnet.Cuboid(magnetization=(500, 0, 500), dimension=(2, 2, 2))
+B = cube.getB(grid)
+log10_norm_B = np.log10(np.linalg.norm(B, axis=2))
+
+# Display the B-field with streamplot using log10-scaled
+# color function and linewidth
+splt = ax.streamplot(
+    X,
+    Z,
+    B[:, :, 0],
+    B[:, :, 2],
+    color=log10_norm_B,
+    density=1,
+    linewidth=log10_norm_B*2,
+    cmap="autumn",
+)
+
+# Add colorbar with logarithmic labels
+cb = fig.colorbar(splt.lines, ax=ax, label="|B| (mT)")
+ticks = np.array([3,10,30,100,300])
+cb.set_ticks(np.log10(ticks))
+cb.set_ticklabels(ticks)
+
+# Outline magnet boundary
+ax.plot([1, 1, -1, -1, 1], [1, -1, -1, 1, 1], "k--", lw=2)
+
+# Figure styling
+ax.set(
+    xlabel="x-position (mm)",
+    ylabel="z-position (mm)",
+)
+
+plt.tight_layout()
+plt.show()
+```
+
+## Example 2 - Hollow Cylinder Magnet
+
+A nice vizualizaion is achieved by combining streamplot with contourf. In this example we show the B-field of a hollow Cylinder magnet with diametral magnetization in the xy-symmetry plane.
+
+```{code-cell} ipython3
+import numpy as np
+import matplotlib.pyplot as plt
+import magpylib as magpy
+
+# Create a Matplotlib figure
+fig, ax = plt.subplots()
+
+# Create an observer grid in the xy-symmetry plane
+X, Y = np.mgrid[-5:5:100j, -5:5:100j].transpose((0, 2, 1))
+grid = np.stack([X, Y, np.zeros((100, 100))], axis=2)
+
+# Create a hollow cylinder magnet
+cyl1 = magpy.magnet.Cylinder(magnetization=( 100,0,0), dimension=(6,5))
+cyl2 = magpy.magnet.Cylinder(magnetization=(-100,0,0), dimension=(4,5))
+magnet = magpy.Collection(cyl1, cyl2)
+
+# Compute magnetic field on grid
+B = magnet.getB(grid)
+normB = np.linalg.norm(B, axis=2)
+
+# combine streamplot with contourf
+cp = ax.contourf(X, Y, normB, cmap='rainbow', levels=100, zorder=1)
+splt = ax.streamplot(X, Y, B[:, :, 0], B[:, :, 1], color='k', density=1.5, linewidth=1, zorder=3)
+
+# Add colorbar
+fig.colorbar(cp, ax=ax, label="|B| (mT)")
+
+# Outline magnet boundary
+ts = np.linspace(0, 2*np.pi, 50)
+ax.plot(3*np.cos(ts), 3*np.sin(ts), "w-", lw=2, zorder=2)
+ax.plot(2*np.cos(ts), 2*np.sin(ts), "w-", lw=2, zorder=2)
+
+# Figure styling
+ax.set(
+    xlabel="x-position (mm)",
+    ylabel="z-position (mm)",
+    aspect=1,
+)
+
+plt.tight_layout()
+plt.show()
+```
\ No newline at end of file
diff --git a/docs/_pages/gallery/gallery_vis_pv_streamlines.md b/docs/_pages/gallery/gallery_vis_pv_streamlines.md
new file mode 100644
index 000000000..c05c7b4d1
--- /dev/null
+++ b/docs/_pages/gallery/gallery_vis_pv_streamlines.md
@@ -0,0 +1,73 @@
+---
+orphan: true
+jupytext:
+  text_representation:
+    extension: .md
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.14.5
+kernelspec:
+  display_name: Python 3
+  language: python
+  name: python3
+---
+
+(gallery-vis-pv-streamlines)=
+
+# Field lines with Pyvista streamlines
+
+Pyvista offers field-line computation and visualization in 3D. In addition to the field computation, Magpylib offers magnet visualization that seamlessly integrates into a Pyvista plotting scene.
+
+```{code-cell} ipython3
+import pyvista as pv
+import magpylib as magpy
+
+# Create a magnet with Magpylib
+magnet = magpy.magnet.Cylinder((0, 0, 1000), (10, 4))
+
+# Create a 3D grid with Pyvista
+grid = pv.UniformGrid(
+    dimensions=(41, 41, 41),
+    spacing=(1, 1, 1),
+    origin=(-20, -20, -20),
+)
+
+# Compute B-field and add as data to grid
+grid["B"] = magnet.getB(grid.points)
+
+# Compute the field lines
+seed = pv.Disc(inner=1, outer=3, r_res=1, c_res=6)
+strl = grid.streamlines_from_source(
+    seed,
+    vectors="B",
+    max_time=180,
+    initial_step_length=0.01,
+    integration_direction="both",
+)
+
+# Create a Pyvista plotting scene
+pl = pv.Plotter()
+
+# Add magnet to scene
+magpy.show(magnet, canvas=pl, backend="pyvista")
+
+# Prepare legend parameters
+legend_args = {
+    "title": "B (mT)",
+    "title_font_size": 20,
+    "color": "black",
+    "position_y": 0.25,
+    "vertical": True,
+}
+
+# Add streamlines and legend to scene
+pl.add_mesh(
+    strl.tube(radius=0.2),
+    cmap="bwr",
+    scalar_bar_args=legend_args,
+)
+
+# Prepare and show scene
+pl.camera.position = (30, 30, 20)
+pl.show()
+```
\ No newline at end of file
diff --git a/docs/_pages/gallery/gallery_vis_subplots.md b/docs/_pages/gallery/gallery_vis_subplots.md
new file mode 100644
index 000000000..641a471ba
--- /dev/null
+++ b/docs/_pages/gallery/gallery_vis_subplots.md
@@ -0,0 +1,21 @@
+---
+orphan: true
+jupytext:
+  text_representation:
+    extension: .md
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.14.5
+kernelspec:
+  display_name: Python 3
+  language: python
+  name: python3
+---
+
+(gallery-vis-subplots)=
+
+# Subplots
+
+Fast plotting and combining 3D and 2D plots easily.
+
+Its quite annoying to do this by hand.
diff --git a/docs/_pages/page_01_introduction.md b/docs/_pages/page_01_introduction.md
deleted file mode 100644
index 77c469b35..000000000
--- a/docs/_pages/page_01_introduction.md
+++ /dev/null
@@ -1,659 +0,0 @@
----
-jupytext:
-  text_representation:
-    extension: .md
-    format_name: myst
-    format_version: 0.13
-    jupytext_version: 1.14.5
-kernelspec:
-  display_name: Python 3
-  language: python
-  name: python3
----
-
-
-(intro)=
-
-# Introduction
-
-This section gives an introduction to the Magpylib API. More detailed information and practical examples how to use Magpylib can be found in the example galleries. The package docstrings are found in the {ref}`modindex`.
-
-## Contents
-
-- {ref}`intro-idea`
-- {ref}`intro-when-to-use`
-- {ref}`intro-magpylib-objects`
-- {ref}`intro-position-and-orientation`
-- {ref}`intro-paths`
-- {ref}`intro-graphic-output`
-- {ref}`intro-field-computation`
-- {ref}`intro-direct-interface`
-- {ref}`intro-collections`
-- {ref}`intro-customization`
-
-(intro-idea)=
-
-## The idea behind Magpylib
-
-Magpylib provides fast and accurate magnetostatic field computation based on **analytical solutions** to permanent magnet and current problems. The fast field computation is coupled to a **position and orientation API** that makes it easy to work with relative object positioning.
-
-The idea behind the main object oriented interface is:
-
-1. Sensors, magnets, currents, etc. are created as Python objects with defined position and orientation in a global coordinate system.
-2. After initialization, the Magpylib objects can easily be manipulated, grouped, moved around and displayed graphically using 3D graphic backends (Matplotlib, Plotly, Pyvista).
-3. When all objects are set up, the magnetic field generated by the source objects is computed at the observer objects.
-
-The following example code outlines this functionality:
-
-```{code-cell} ipython3
-import numpy as np
-import matplotlib.pyplot as plt
-import magpylib as magpy
-
-# 1. define sources and observers as objects
-cube = magpy.magnet.Cuboid(magnetization=(0,0,100), dimension=(1,1,1))
-loop = magpy.current.Loop(current=5, diameter=3, position=(0,0,-3))
-sensor = magpy.Sensor(position=(0,0,2), style_size=1.8)
-
-# 2. move objects and display graphically
-sensor.rotate_from_rotvec((0,0,225), degrees=True)
-cube.position = np.linspace((-3,0,0), (3,0,0), 50)
-loop.move(np.linspace((0,0,0), (0,0,6), 50), start=0)
-
-with magpy.show_context(backend='plotly', animation=2, style_path_show=False, layout_height=500):
-    magpy.show(loop, cube, sensor, output="model3d", col=1)
-    magpy.show(loop, cube, sensor, output=("Bx", "By", "Bz"), sumup=True, col=2)
-
-# 3. compute field at sensor
-B = sensor.getB(cube, loop, output="dataframe")
-B
-```
-
-
-For users who would like to avoid the object oriented interface, the field implementations can also be accessed directly, see {ref}`intro-direct-interface`. Details on how the analytical solutions are mathematically obtained can be found in the {ref}`physComp` section.
-
-(intro-when-to-use)=
-
-## When can you use Magpylib ?
-
-The analytical solutions are exact when there is no material response and natural boundary conditions can be assumed. In general, Magpylib is at its best when dealing with air-coils (no eddy currents) and high grade permanent magnets (Ferrite, NdFeB, SmCo or similar materials).
-
-When **magnet** permeabilities are below $\mu_r < 1.1$ the error typically undercuts 1-5 % (long magnet shapes are better, large distance from magnet is better). Demagnetization factors are not automatically included at this point. They typically reduce the error by an order of magnitude. The line **current** solutions give the exact same field as outside of a wire that carries a homogeneous current. For more details check out the {ref}`physComp` section.
-
-Magpylib only provides solutions for simple geometric forms (cuboids, cylinders, lines, ...). How **complex shapes** can be constructed from these simple base shapes is described in {ref}`examples-complex-forms`.
-
-(intro-magpylib-objects)=
-
-## The Magpylib objects
-
-The most convenient way of working with Magpylib is through the **object oriented interface**. Magpylib objects represent magnetic field sources, sensors and collections with various defining attributes and methods. By default all objects are initialized with `position=(0,0,0)`, `orientation=None`, and default graphic `style` settings. Additional `**kwargs` mostly include style shortcuts, see {ref}`intro-graphic-output`. The following classes are implemented:
-
-**Magnets**
-
-All magnet objects have the `magnetization` attribute which must be of the format $(m_x, m_y, m_z)$ and denotes the homogeneous magnetization vector in the local object coordinates in units of \[mT\]. It is often referred to as the remanence ($B_r=\mu_0 M$) in material data sheets. All magnets can be used as Magpylib `sources` input.
-
-- **`Cuboid`**`(magnetization, dimension, position, orientation, style)` represents a magnet with cuboid shape. `dimension` has the format $(a,b,c)$ and denotes the sides of the cuboid in units of \[mm\]. By default the center of the cuboid lies in the origin of the global coordinates, and the sides are parallel to the coordinate axes.
-
-- **`Cylinder`**`(magnetization, dimension, position, orientation, style)` represents a magnet with cylindrical shape. `dimension` has the format $(d,h)$ and denotes diameter and height of the cylinder in units of \[mm\]. By default the center of the cylinder lies in the origin of the global coordinates, and the cylinder axis coincides with the z-axis.
-
-- **`CylinderSegment`**`(magnetization, dimension, position, orientation, style)` represents a magnet with the shape of a cylindrical ring section. `dimension` has the format $(r_1,r_2,h,\varphi_1,\varphi_2)$ and denotes inner radius, outer radius and height in units of \[mm\] and the two section angles $\varphi_1<\varphi_2$ in \[deg\]. By default the center of the full cylinder lies in the origin of the global coordinates, and the cylinder axis coincides with the z-axis.
-
-- **`Sphere`**`(magnetization, diameter, position, orientation, style)` represents a magnet of spherical shape. `diameter` is the sphere diameter $d$ in units of \[mm\]. By default the center of the sphere lies in the origin of the global coordinates.
-
-- **`Tetrahedron`**`(magnetization, vertices, position, orientation, style)` represents a magnet of tetrahedral shape. `vertices` corresponds to the four corner points in units of \[mm\]. By default the vertex positions coincide in the local object coordinates and the global coordinates.
-
-- **`TriangularMesh`**`(magnetization, vertices, faces, position, orientation, validate_closed, validate_connected, reorient_faces, style)` represents a magnet with surface given by a triangular mesh. The `vertices` correspond to the corner points in units of \[mm\] and the `faces` are index-triplets for each face. By default, input checks are performed to see if the mesh is closed, connected and if its faces are correctly oriented. At initialization, the vertex positions coincide in the local object coordinates and the global coordinates.
-
-**Currents**
-
-All current objects have the `current` attribute which must be a scalar $i_0$ and denotes the electrical current in units of \[A\]. All currents can be used as Magpylib `sources` input.
-
-- **`Loop`**`(current, diameter, position, orientation, style)` represents a circular current loop where `diameter` is the loop diameter $d$ in units of \[mm\]. By default the loop lies in the xy-plane with it's center in the origin of the global coordinates.
-
-- **`Line`**`(current, vertices, position, orientation, style)` represents electrical current segments that flow in a straight line from vertex to vertex. By default the vertex positions coincide in the local object coordinates and the global coordinates.
-
-**Other**
-
-- **`Dipole`**`(moment, position, orientation, style)` represents a magnetic dipole moment with moment $(m_x,m_y,m_z)$ given in \[mT mm³]. For homogeneous magnets the relation moment=magnetization$\times$volume holds. Can be used as Magpylib `sources` input.
-
-- **`Triangle`**`(magnetization, vertices, position, orientation, style)` represents a triangular surface with a homogeneous charge given by the projection of the `magnetization` vector onto the surface normal. `vertices` is a set of the three corners given in \[mm³\]. When multiple Triangles form a closed surface, on the outside their total magnetic field correponds to the one of a homogeneously charged magnet.
-
-- **`CustomSource`**`(field_func, position, orientation, style)` is used to create user defined custom sources with their own field functions. Can be used as Magpylib `sources` input.
-
-- **`Sensor`**`(position, pixel, orientation, style)` represents a 3D magnetic field sensor. The field is evaluated at the given pixel positions. By default (`pixel=(0,0,0)`) the pixel position coincide in the local object coordinates and the global coordinates. Can be used as Magpylib `observers` input.
-
-- **`Collection`**`(*children, position, orientation, style)` is a group of source and sensor objects (children) that is used for common manipulation. Depending on the children, a collection can be used as Magpylib `sources` and/or `observers` input.
-
-
-(intro-position-and-orientation)=
-
-## Position and orientation
-
-All Magpylib objects have the `position` and `orientation` attributes that refer to position and orientation in the global Cartesian coordinate system. The `position` attribute is a numpy ndarray, shape (3,) or (m,3) and corresponds to the coordinates $(x,y,z)$ in units of [mm]. By default every object is created in the origin of the global coordinate system, at `position=(0,0,0)`. The `orientation` attribute is a scipy [Rotation object](https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.transform.Rotation.html) and corresponds to the object orientation relative to its initial state. By default objects are created with initial orientation, `orientation=None`, which is the unit rotation. The initial orientation of every object, e.g. current loop lies in the x-y plane, is described in the respective class docstrings.
-
-```python
-import magpylib as magpy
-
-# init object with default values
-sensor = magpy.Sensor()
-print(sensor.position)                                     # out: [0. 0. 0.]
-print(sensor.orientation.as_euler('xyz', degrees=True))    # out: [0. 0. 0.]
-```
-
-Set absolute object position and orientation attributes at object initialization or directly through the properties.
-
-```python
-import magpylib as magpy
-from scipy.spatial.transform import Rotation as R
-
-# set attributes at initialization
-sensor = magpy.Sensor(position=(1,1,1))
-print(sensor.position)                                     # out: [1. 1. 1.]
-print(sensor.orientation.as_euler('xyz', degrees=True))    # out: [0. 0. 0.]
-
-# set properties directly
-sensor.orientation = R.from_rotvec((0,0,45), degrees=True)
-print(sensor.position)                                     # out: [1. 1. 1.]
-print(sensor.orientation.as_euler('xyz', degrees=True))    # out: [ 0.  0. 45.]
-```
-
-The `move` and `rotate` methods are powerful tools to change the relative position and orientation of an existing object. **Move** the object by a `displacement` vector. **Rotate** an object by specifying the angle of rotation `angle` (scalar), an axis of rotation `axis` (vector or `'x'`, `'y'`, `'z'`) and an anchor point `anchor` (vector) through which the rotation axis passes through. By default `anchor=self.position`, meaning that the object rotates about itself.
-
-```python
-import magpylib as magpy
-
-# init object with default values
-sensor = magpy.Sensor()
-
-# move
-sensor.move(displacement=(1,1,3))
-print(sensor.position)                                     # out: [1. 1. 3.]
-print(sensor.orientation.as_euler('xyz', degrees=True))    # out: [ 0.  0.  0.]
-
-# rotate about self
-sensor.rotate_from_angax(angle=45, axis='z')
-print(sensor.position)                                     # out: [1. 1. 3.]
-print(sensor.orientation.as_euler('xyz', degrees=True))    # out: [ 0.  0. 45.]
-
-# rotate with anchor
-sensor.rotate_from_angax(angle=90, axis='z', anchor=(0,0,0))
-print(sensor.position)                                     # out: [-1. 1. 3.]
-print(sensor.orientation.as_euler('xyz', degrees=True))    # out: [ 0.  0. 135.]
-```
-
-
-(intro-paths)=
-
-## Paths
-
-The attributes `position` and `orientation` can be either of **"scalar"** nature, i.e. a single position or a single rotation like in the examples above, or **"vectors"** when they are arrays of such scalars. The two attributes together define an object **"path"**. Paths should always be used when modeling object motion as the magnetic field is computed on the whole path with increased performance.
-
-With vector inputs, the `move` and `rotate` methods provide *append* and *merge* functionality.  The following example shows how a path `path1` is assigned to a magnet object, how `path2` is appended with `move` and how `path3` is merged on top starting at path index 25.
-
-```{code-cell} ipython3
-import numpy as np
-from magpylib.magnet import Cylinder
-
-magnet = Cylinder(magnetization=(100,0,0), dimension=(2,2))
-
-# assign path
-path1 = np.linspace((0,0,0), (0,0,5), 20)
-magnet.position = path1
-
-# append path
-path2 = np.linspace((0,0,0), (0,10,0), 40)
-magnet.move(path2[1:])
-
-# merge path
-path3 = np.linspace(0, 360, 20)
-magnet.rotate_from_angax(angle=path3, axis='z', anchor=0, start=25)
-
-magnet.show(backend='plotly')
-```
-
-
-Notice that when one of the `position` and `orientation` attributes are modified in length, the other is automatically adjusted to the same length. A detailed outline of the functionality of `position`, `orientation`, `move`, `rotate` and paths is given in {ref}`examples-paths`.
-
-
-
-(intro-graphic-output)=
-
-## Graphic output
-
-Once all Magpylib objects and their paths have been created, **`show`** provides a convenient way to graphically display the geometric arrangement using the Matplotlib (default) and Plotly packages. When `show` is called, it generates a new figure which is then automatically displayed.
-
-The desired graphic backend is selected with the `backend` keyword argument. To bring the output to a given, user-defined figure, the `canvas` kwarg is used. This is demonstrated in {ref}`examples-backends-canvas`.
-
-The following example shows the graphical representation of various Magpylib objects and their paths using the default Matplotlib graphic backend.
-
-```{code-cell} ipython3
-import numpy as np
-import magpylib as magpy
-from magpylib.magnet import Cuboid, Cylinder, CylinderSegment, Sphere, Tetrahedron, TriangularMesh
-from magpylib.current import Loop, Line
-from magpylib.misc import Dipole, Triangle
-import pyvista as pv
-
-objects = [
-    Cuboid(
-        magnetization=(0,-100,0),
-        dimension=(1,1,1),
-        position=(-6,0,0),
-    ),
-    Cylinder(
-        magnetization=(0,0,100),
-        dimension=(1,1),
-        position=(-5,0,0),
-    ),
-    CylinderSegment(
-        magnetization=(0,0,100),
-        dimension=(.3,1,1,0,140),
-        position=(-3,0,0),
-    ),
-    Sphere(
-        magnetization=(0,0,100),
-        diameter=1,
-        position=(-1,0,0),
-    ),
-    Tetrahedron(
-        magnetization=(0,0,100),
-        vertices=((-1,0,0), (1,0,0), (0,-1,0), (0,-1,-1)),
-        position=(-4,0,4)
-    ),
-    Loop(
-        current=1,
-        diameter=1,
-        position=(4,0,0),
-    ),
-    Line(
-        current=1,
-        vertices=[(1,0,0), (0,1,0), (-1,0,0), (0,-1,0), (1,0,0)],
-        position=(1,0,0),
-    ),
-    Dipole(
-        moment=(0,0,100),
-        position=(3,0,0),
-    ),
-    Triangle(
-        magnetization=(0,0,100),
-        vertices=((-1,0,0), (1,0,0), (0,1,0)),
-        position=(2,0,4),
-    ),
-    TriangularMesh.from_pyvista(
-        magnetization=(0,0,100),
-        polydata=pv.Dodecahedron(),
-        position=(-1,0,4),
-    ),
-    magpy.Sensor(
-        pixel=[(0,0,z) for z in (-.5,0,.5)],
-        position=(0,-3,0),
-    ),
-]
-
-objects[5].move(np.linspace((0,0,0), (0,0,7), 20))
-objects[0].rotate_from_angax(np.linspace(0, 90, 20), 'z', anchor=0)
-
-magpy.show(objects)
-```
-
-Notice that, objects and their paths are automatically assigned different colors, the magnetization vector, current directions and dipole objects are indicated by arrows and sensors are shown as tri-colored coordinate cross with pixel as markers.
-
-How objects are represented graphically (color, line thickness, ect.) is defined by the **style**. The default style, which can be seen above, is accessed and manipulated through `magpy.defaults.display.style`. In addition, each object can have an individual style, which takes precedence over the default setting. A local style override is also possible by passing style arguments directly to `show`.
-
-Some practical ways to set styles are shown in the next example:
-
-```{code-cell} ipython3
-import magpylib as magpy
-from magpylib.magnet import Cuboid
-
-cube1 = Cuboid(magnetization=(0,0,1), dimension=(2,4,4))
-cube2 = cube1.copy(position=(3,0,0))
-cube3 = cube1.copy(position=(6,0,0))
-
-# change the default
-magpy.defaults.display.style.base.color = 'crimson'
-
-# set individual style through properties
-cube2.style.color = 'orangered'
-
-# set individual style using update with style dictionary
-cube3.style.update({'color': 'gold'})
-
-# set individual style at initialization with underscore magic
-cube4 = cube1.copy(position=(9,0,0), style_color='linen')
-
-# show with local style override
-magpy.show(cube1, cube2, cube3, cube4, style_magnetization_show=False)
-```
-
-The hierarchy that decides about the final graphic object representation, a list of all style parameters and other options for tuning the `show`-output are described in {ref}`examples-graphic-styles` and {ref}`examples-animation`.
-
-(intro-field-computation)=
-
-## Magnetic field computation
-
-Magnetic field computation in Magpylib is achieved through:
-
-- **`getB`**`(sources, observers)` computes the B-field seen by `observers` generated by `sources` in units of \[mT\]
-- **`getH`**`(sources, observers)` computes the H-field seen by `observers` generated by `sources` in units of \[kA/m\]
-
-The argument `sources` can be any Magpylib **source object** or a flat list thereof. The argument `observers` can be an array_like of position vectors with shape $(n_1,n_2,n_3,...,3)$, any Magpylib **observer object** or a flat list thereof. `getB` and `getH` return the field for all combinations of sources, observers and paths.
-
-The output of a field computation `getB(sources, observers)` is a Numpy ndarray (alternatively a Pandas DataFrame, see below) of shape `(l, m, k, n1, n2, n3, ..., 3)` where `l` is the number of input sources, `m` the (maximal) object path length, `k` the number of sensors, `n1,n2,n3,...` the sensor pixel shape or the shape of the observer position vector input and `3` the three magnetic field components $(B_x, B_y, B_z)$.
-
-**Example 1:** As expressed by the old v2 slogan *"The magnetic field is only three lines of code away"*, this example demonstrates the most fundamental field computation:
-
-```{code-cell} ipython3
-import magpylib as magpy
-loop = magpy.current.Loop(current=1, diameter=2)
-B = magpy.getB(loop, (1,2,3))
-print(B)
-```
-
-**Example 2:** When handed with multiple observer positions, `getB` and `getH` will return the field in the shape of the observer input. In the following example, B- and H-field of a cuboid magnet are computed on a position grid, and then displayed using Matplotlib:
-
-```{code-cell} ipython3
-import numpy as np
-import matplotlib.pyplot as plt
-import magpylib as magpy
-
-fig, [ax1,ax2] = plt.subplots(1, 2, figsize=(10,5))
-
-# create an observer grid in the xz-symmetry plane
-ts = np.linspace(-3, 3, 30)
-grid = np.array([[(x,0,z) for x in ts] for z in ts])
-
-# compute B- and H-fields of a cuboid magnet on the grid
-cube = magpy.magnet.Cuboid(magnetization=(500,0,500), dimension=(2,2,2))
-B = cube.getB(grid)
-H = cube.getH(grid)
-
-# display field with Pyplot
-ax1.streamplot(grid[:,:,0], grid[:,:,2], B[:,:,0], B[:,:,2], density=2,
-    color=np.log(np.linalg.norm(B, axis=2)), linewidth=1, cmap='autumn')
-
-ax2.streamplot(grid[:,:,0], grid[:,:,2], H[:,:,0], H[:,:,2], density=2,
-    color=np.log(np.linalg.norm(B, axis=2)), linewidth=1, cmap='winter')
-
-# outline magnet boundary
-for ax in [ax1,ax2]:
-    ax.plot([1,1,-1,-1,1], [1,-1,-1,1,1], 'k--')
-
-plt.tight_layout()
-plt.show()
-```
-
-**Example 3:** The following example code shows how the field in a position system is computed with a sensor object. Both, magnet and sensor are moving. The 3D system and the field along the path are displayed with Plotly:
-
-```{code-cell} ipython3
-import numpy as np
-import magpylib as magpy
-
-# reset defaults set in previous example
-magpy.defaults.reset()
-
-# define sensor and source
-sensor = magpy.Sensor(pixel=[(0,0,-.2), (0,0,.2)], style_size=1.5)
-magnet = magpy.magnet.Cylinder(magnetization=(100,0,0), dimension=(1,2))
-
-# define paths
-sensor.position = np.linspace((0,0,-3), (0,0,3), 40)
-magnet.position = (4,0,0)
-magnet.rotate_from_angax(angle=np.linspace(0, 300, 40)[1:], axis='z', anchor=0)
-
-# display system in 3D and field values along paths
-with magpy.show_context(magnet, sensor, backend='plotly'):
-    magpy.show(output="model3d", col=1)
-    magpy.show(output=("Bx", "By", "Bz"), pixel_agg=None, sumup=True, col=2)
-```
-
-
-**Example 4:** The last example demonstrates the most general form of a `getB` computation with multiple source and sensor inputs. Specifically, 3 sources, one with path length 11, and two sensors, each with pixel shape (4,5). Note that, when input objects have different path lengths, objects with shorter paths are treated as static beyond their path end.
-
-```{code-cell} ipython3
-import magpylib as magpy
-
-# 3 sources, one with length 11 path
-pos_path = [(i,0,1) for i in range(-1,1)]
-source1 = magpy.misc.Dipole(moment=(0,0,100), position=pos_path)
-source2 = magpy.current.Loop(current=10, diameter=3)
-source3 = source1 + source2
-
-# 2 observers, each with 4x5 pixel
-pixel = [[[(i,j,0)] for i in range(4)] for j in range(5)]
-sensor1 = magpy.Sensor(pixel=pixel, position=(-1,0,-1))
-sensor2 = sensor1.copy().move((2,0,0))
-
-sources = [source1, source2, source3]
-sensors = [sensor1, sensor2]
-# compute field
-B = magpy.getB(sources, sensors)
-print(B.shape)
-```
-
-
-Instead of a Numpy `ndarray`, the field computation can also return a [pandas](https://pandas.pydata.org/).[dataframe](https://pandas.pydata.org/docs/user_guide/dsintro.html#dataframe) using the `output='dataframe'` kwarg.
-
-```{code-cell} ipython3
-import numpy as np
-import magpylib as magpy
-
-cube = magpy.magnet.Cuboid(
-    magnetization=(0, 0, 1000),
-    dimension=(1, 1, 1),
-    style_label='cube'
-)
-loop = magpy.current.Loop(
-    current=200,
-    diameter=2,
-    style_label='loop',
-)
-sens1 = magpy.Sensor(
-    pixel=[(0,0,0), (.5,0,0)],
-    position=np.linspace((-4, 0, 2), (4, 0, 2), 30),
-    style_label='sens1'
-)
-sens2 = sens1.copy(style_label='sens2').move((0,0,1))
-
-B_as_df = magpy.getB(
-    [cube, loop],
-    [sens1, sens2],
-    output='dataframe',
-)
-
-B_as_df
-```
-
-
-Plotting libraries such as [plotly](https://plotly.com/python/plotly-express/) or [seaborn](https://seaborn.pydata.org/introduction.html) can take advantage of this feature, as they can deal with `dataframes` directly.
-
-```{code-cell} ipython3
-import plotly.express as px
-fig = px.line(
-    B_as_df,
-    x="path",
-    y="Bx",
-    color="pixel",
-    line_group="source",
-    facet_col="source",
-    symbol="sensor",
-)
-fig.show()
-```
-
-
-In terms of **performance** it must be noted that Magpylib automatically vectorizes all computations when `getB` and `getH` are called. This reduces the computation time dramatically for large inputs. For maximal performance try to make all field computations with as few calls to `getB` and `getH` as possible.
-
-(intro-direct-interface)=
-
-## Direct interface and core
-
-The **direct interface** allows users to bypass the object oriented functionality of Magpylib. The magnetic field is computed for a set of $n$ arbitrary input instances by providing the top level functions `getB` and `getH` with
-
-1. `sources`: a string denoting the source type
-2. `observers`: array_like of shape (3,) or (n,3) giving the positions
-3. `kwargs`: a dictionary with array_likes of shape (x,) or (n,x) for all other inputs
-
-All "scalar" inputs of shape (x,) are automatically tiled up to shape (n,x), and for every of the $n$ given instances the field is computed and returned with shape (n,3). The allowed source types are similar to the Magpylib source class names (see {ref}`intro-magpylib-objects`), and the required dictionary inputs are the respective class inputs.
-
-In the following example we compute the cuboid field for 5 input instances, each with different position and orientation and similar magnetization:
-
-```{code-cell} ipython3
-import magpylib as magpy
-
-B = magpy.getB(
-    sources='Cuboid',
-    observers=[(0,0,x) for x in range(5)],
-    dimension=[(d,d,d) for d in range(1,6)],
-    magnetization=(0,0,1000),
-)
-
-print(B)
-```
-
-
-The direct interface is convenient for users who work with complex inputs or favor a more functional programming paradigm. It is typically faster than the object oriented interface, but it also requires that users know how to generate the inputs efficiently with numpy (e.g. `np.arange`, `np.linspace`, `np.tile`, `np.repeat`, ...).
-
-At the heart of Magpylib lies a set of **core functions** that are our implementations of the analytical field expressions, see {ref}`physcomp`. For users who are not interested in the position/orientation interface, the `magpylib.core` subpackage gives direct access to these functions. Inputs are ndarrays of shape (n,x). Details can be found in the respective function docstrings.
-
-```{code-cell} ipython3
-import numpy as np
-import magpylib as magpy
-
-mag = np.array([(100,0,0)]*5)
-dim = np.array([(1,2,3,45,90)]*5)
-obs = np.array([(0,0,0)]*5)
-
-B = magpy.core.magnet_cylinder_segment_field('B', obs, mag, dim)
-print(B)
-```
-
-
-(intro-collections)=
-
-## Collections
-
-The top level class `Collection` allows users to group objects by reference for common manipulation. Objects that are part of a collection become **children** of that collection, and the collection itself becomes their **parent**. An object can only have a single parent. The child-parent relation is demonstrated with the `describe` method in the following example:
-
-```{code-cell} ipython3
-import magpylib as magpy
-
-sens = magpy.Sensor(style_label='sens')
-loop = magpy.current.Loop(style_label='loop')
-line = magpy.current.Line(style_label='line')
-cube = magpy.magnet.Cuboid(style_label='cube')
-
-coll1 = magpy.Collection(sens, loop, line, style_label='Nested Collection')
-coll2 = cube + coll1
-coll2.style.label="Root Collection"
-coll2.describe(format='label')
-```
-
-
-A detailed review of collection properties and construction is provided in the example gallery {ref}`examples-collections-construction`. It is specifically noteworthy in the above example, that any two Magpylib objects can simply be added up to form a collection.
-
-A collection object has its own `position` and `orientation` attributes and spans a local reference frame for all its children. An operation applied to a collection moves the frame, and is individually applied to all children such that their relative position in the local reference frame is maintained. This means that the collection functions only as a container for manipulation, but child position and orientation are always updated in the global coordinate system. After being added to a collection, it is still possible to manipulate the individual children, which will also move them to a new relative position in the collection frame.
-
-This enables user-friendly manipulation of groups, sub-groups and individual objects, which is demonstrated in the following example:
-
-```{code-cell} ipython3
-import numpy as np
-import magpylib as magpy
-from magpylib.current import Loop
-
-# construct two coil collections from windings
-coil1 = magpy.Collection(style_label='coil1')
-for z in np.linspace(-.5, .5, 5):
-    coil1.add(Loop(current=1, diameter=20, position=(0,0,z)))
-coil1.position = (0,0,-5)
-coil2 = coil1.copy(position=(0,0,5))
-
-# helmholtz consists of two coils
-helmholtz = coil1 + coil2
-
-# move the helmholz
-helmholtz.position = np.linspace((0,0,0), (10,0,0), 30)
-helmholtz.rotate_from_angax(np.linspace(0,180,30), 'x', start=0)
-
-# move the coils
-coil1.move(np.linspace((0,0,0), ( 5,0,0), 30))
-coil2.move(np.linspace((0,0,0), (-5,0,0), 30))
-
-# move the windings
-for coil in [coil1, coil2]:
-    for i,wind in enumerate(coil):
-        wind.move(np.linspace((0,0,0), (0,0,2-i), 20))
-
-magpy.show(*helmholtz, backend='plotly', animation=4, style_path_show=False)
-```
-
-
-Notice, that collections have their own `style` attributes, their paths are displayed in `show`, and all children are automatically assigned their parent color.
-
-For magnetic field computation a collection with source children behaves like a single source object, and a collection with sensor children behaves like a flat list of it's sensors when provided as `sources` and `observers` input respectively. This is demonstrated in the following continuation of the previous Helmholtz example:
-
-```{code-cell} ipython3
-import matplotlib.pyplot as plt
-
-B = helmholtz.getB((10,0,0))
-plt.plot(B, label=['Bx', 'By', 'Bz'])
-
-plt.gca().set(
-    title='B-field [mT] at position (10,0,0)',
-    xlabel='helmholtz path position index'
-)
-plt.gca().grid(color='.9')
-plt.gca().legend()
-plt.show()
-```
-
-
-One central motivation behind the `Collection` class is enabling users to build **compound objects**, which refer to custom classes that inherit `Collection`. They can represent complex magnet structures like magnetic encoders, motor parts, Halbach arrays, and other arrangements, and will naturally integrate into the Magpylib interface. An advanced tutorial how to sub-class `Collection` with dynamic properties and custom 3D models is given in {ref}`examples-compounds`.
-
-(intro-customization)=
-
-## Customization
-
-**User-defined 3D models** (traces) for any object that will be displayed by `show`, can be stored in `style.model3d.data`. A trace itself is a dictionary that contains all information necessary for plotting, and can be added with the method `style.model3d.data.add_trace`. In the example gallery {ref}`examples-3d-models` it is explained how to create custom traces with standard plotting backends such as `scatter3d` or `mesh3d` in Plotly, or `plot`, `plot_surface` and `plot_trisurf` in Matplotlib. Some pre-defined models are also provided for easy parts visualization.
-
-**User-defined source objects** are easily realized with the `CustomSource` class. Such a custom source object is provided with a user-defined field computation function, that is stored in the attribute `field_func` and is used when `getB` and `getH` are called. Similar to core functions, `field_func` must have the two positional arguments `field` (can be `'B'` or `'H'`) and `observers` (must accept ndarrays of shape (n,3)), and return the respective fields in units of \[mT\] and \[kA/m\] in the same shape. Details on working with custom sources are given in {ref}`examples-custom-source-objects`.
-
-While each of these features can be used individually, the combination of the two (own source class with own 3D representation) enables a high level of customization in Magpylib. Such user-defined objects will feel like native Magpylib objects and can be used in combination with all other features, which is demonstrated in the following example:
-
-```{code-cell} ipython3
-import numpy as np
-import magpylib as magpy
-
-# define B/H field function for custom source
-def easter_field(field, observers):
-    """ points in z-direction and decays with 1/r^3"""
-    dist = np.linalg.norm(observers, axis=1)
-    dist+=1e-16 # avoid zero division
-    return np.c_[np.zeros((len(observers),2)), 1/dist**3]
-
-# create custom source
-egg = magpy.misc.CustomSource(
-    field_func=easter_field,
-    style=dict(color='orange', model3d_showdefault=False, label='The Egg'),
-)
-
-# add a custom 3D model
-trace = magpy.graphics.model3d.make_Ellipsoid(
-    dimension=(1,1,1.4),
-)
-egg.style.model3d.add_trace(trace)
-
-# move the egg
-ts = np.linspace(-2*np.pi, 2*np.pi, 70)
-ts = ts + 0.75*np.sin(ts-np.pi/8)**2
-egg.position = [(t/3, 0, -0.2*np.sin(t)**2) for t in ts]
-egg.rotate_from_euler(ts, 'y', start=0, degrees=False)
-
-# add sensor
-sensor = magpy.Sensor(position=(0,0,1.5), style_size=2)
-
-# animate path and plot field
-with magpy.show_context(egg, sensor, backend='plotly', animation=True):
-    magpy.show(col=1, output="model3d", style_path_show=False)
-    magpy.show(col=2, output=("Bx", "By", "Bz"))
-```
diff --git a/docs/_pages/page_03_installation.md b/docs/_pages/page_03_installation.md
deleted file mode 100644
index 2b86d7d43..000000000
--- a/docs/_pages/page_03_installation.md
+++ /dev/null
@@ -1,29 +0,0 @@
-(installation)=
-
-# Installation
-
-For fast installation with a **package manager**, Magpylib is uploaded to the PyPI and conda-forge repositories. Install with [pip](https://pypi.org/project/pip/),
-
-```console
-pip install magpylib
-```
-
-or with [conda](https://docs.conda.io/en/latest/).
-
-```console
-conda install -c conda-forge magpylib
-```
-
-Magpylib is hosted for **download** at the following locations:
-
-- [Conda Cloud](https://anaconda.org/conda-forge/magpylib)
-- [Python Package Index](https://pypi.org/project/magpylib/)
-- [GitHub repository](https://github.com/magpylib/magpylib)
-
-The Magpylib **dependencies** are as follows (check on [GitHub](https://github.com/magpylib/magpylib) for the latest version requirements):
-
-- Python 3.8 or later
-- numpy
-- scipy (.spatial.transform, .special)
-- matplotlib
-- plotly
diff --git a/docs/_pages/page_09_contguide.md b/docs/_pages/page_09_contguide.md
deleted file mode 100644
index c06b6d08b..000000000
--- a/docs/_pages/page_09_contguide.md
+++ /dev/null
@@ -1,49 +0,0 @@
-# Credits, Contribution & Citation
-
-## Maintainers & Contact
-
-**Michael Ortner** - Concept, Physics, Coding.
-
-- <mailto:michael.ortner@silicon-austria.com>
-- Silicon Austria Labs, Sensors division, 9500 Villach, Austria
-
-**Lucas Gabriel Coliado Bandeira** - Software engineering
-
-- <mailto:lucascoliado@hotmail.com>
-
-**Jaka Pribosek** - Concepts.
-
-**Alexandre Boisselet** - Python code layout, plotting backends.
-
-## Credits
-
-We want to thank a lot of ppl who have helped to realize and advance this project over the years. The project was initiated at CTR-AG and is now supported by the [Silicon Austria Labs](https://silicon-austria-labs.com/) public research center.
-
-## Contributions
-
-We welcome any feedback (Bug reports, feature requests, comments, ...) via email [magpylib@gmail.com](mailto:magpylib@gmail.com) or through [gitHub](https://github.com/magpylib/magpylib/issues) channels.
-
-## Citation
-
-We are thankful for any reference and citation through the [original publication](https://authors.elsevier.com/sd/article/S2352711020300170).
-
-A valid bibtex entry would be
-
-```latex
-@Article{magpylib2020,
-title = {Magpylib: A free Python package for magnetic field computation},
-author  ={Ortner, Michael and Coliado Bandeira, Lucas Gabriel},
-year    = {2020},
-journal = {SoftwareX},
-publisher = {Elsevier},
-doi = {10.1016/j.softx.2020.100466}
-}
-```
-
-## License
-
-Magpylib is published under the open source [FreeBSD](https://www.freebsd.org/copyright/freebsd-license/) license.
-
-- *Permissions:* Commercial use, Modification, Distribution, Private use
-- *Limitations:* Liability, Warranty
-- *Conditions:* License and copyright notice
diff --git a/docs/_pages/reso_changelog.md b/docs/_pages/reso_changelog.md
new file mode 100644
index 000000000..2fe3f818b
--- /dev/null
+++ b/docs/_pages/reso_changelog.md
@@ -0,0 +1,6 @@
+(changelog)=
+
+```{include} ../../CHANGELOG.md
+:relative-docs: docs/
+:relative-images:
+```
\ No newline at end of file
diff --git a/docs/_pages/reso_code_of_conduct.md b/docs/_pages/reso_code_of_conduct.md
new file mode 100644
index 000000000..3772e418c
--- /dev/null
+++ b/docs/_pages/reso_code_of_conduct.md
@@ -0,0 +1,6 @@
+(code_of_conduct)=
+
+```{include} ../../CODE_OF_CONDUCT.md
+:relative-docs: docs/
+:relative-images:
+```
diff --git a/docs/_pages/reso_contributing.md b/docs/_pages/reso_contributing.md
new file mode 100644
index 000000000..77e1e7a6c
--- /dev/null
+++ b/docs/_pages/reso_contributing.md
@@ -0,0 +1,6 @@
+(contributing)=
+
+```{include} ../../CONTRIBUTING.md
+:relative-docs: docs/
+:relative-images:
+```
\ No newline at end of file
diff --git a/docs/_pages/reso_get_started.md b/docs/_pages/reso_get_started.md
new file mode 100644
index 000000000..89b71d12e
--- /dev/null
+++ b/docs/_pages/reso_get_started.md
@@ -0,0 +1,269 @@
+---
+jupytext:
+  text_representation:
+    extension: .md
+    format_name: myst
+    format_version: 0.13
+    jupytext_version: 1.13.7
+kernelspec:
+  display_name: Python 3 (ipykernel)
+  language: python
+  name: python3
+---
+
+(get-started)=
+
+# Get Started
+
+## Installation and Dependencies
+
+Magpylib supports *Python3.8+* and relies on common scientific computation libraries *Numpy*, *Scipy*, *Matplotlib* and *Plotly*. Optionally, *Pyvista* is recommended as graphical backend.
+
+::::{grid} 2
+:::{grid-item-card} Install with pip:
+:text-align: center
+:shadow: none
+```console
+pip install magpylib
+```
+:::
+:::{grid-item-card} Install with conda:
+:text-align: center
+:shadow: none
+```console
+conda install -c conda-forge magpylib
+```
+:::
+::::
+
+## Magpylib fundamentals
+
+Learn the Magpylib fundamentals in 5 minutes. This requires a basic understanding of the Python programming language, the [Numpy array class](https://numpy.org/doc/stable/) and the [Scipy Rotation class](https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.transform.Rotation.html).
+
+### Step 1: Create sources and observers as Python objects
+
+```python
+import magpylib as magpy
+
+# Create a Cuboid magnet with magnetic polarization
+# of 1000 mT pointing in x-direction and sides of
+# 1,2 and 3 mm respectively.
+
+cube = magpy.magnet.Cuboid(magnetization=(1000,0,0), dimension=(1,2,3))
+
+# Create a Sensor for measuring the field
+
+sensor = magpy.Sensor()
+```
+
+### Step2: Manipulate object position and orientation
+
+```python
+# By default, the position of a Magpylib object is
+# (0,0,0) and its orientation is the unit rotation,
+# given by a scipy rotation object.
+
+print(cube.position)                   # -> [0. 0. 0.]
+print(cube.orientation.as_rotvec())    # -> [0. 0. 0.]
+
+# Manipulate object position and orientation through
+# the respective attributes:
+
+from scipy.spatial.transform import Rotation as R
+cube.position = (1,0,0)
+cube.orientation = R.from_rotvec((0,0,45), degrees=True)
+
+print(cube.position)                            # -> [1. 0.  0.]
+print(cube.orientation.as_rotvec(degrees=True)) # -> [0. 0. 45.]
+
+# Apply relative motion with the powerful `move`
+# and `rotate` methods.
+sensor.move((-1,0,0))
+sensor.rotate_from_angax(angle=-45, axis='z')
+
+print(sensor.position)                            # -> [-1.  0.  0.]
+print(sensor.orientation.as_rotvec(degrees=True)) # -> [ 0.  0. -45.]
+```
+
+### Step 3: View your system
+
+```python
+# Use the `show` function to view your system
+# through Matplotlib, Plotly or Pyvista backends.
+
+magpy.show(cube, sensor, backend='plotly')
+```
+
+<img src="/_static/images/getting_started_fundamentals1.png" width=50%>
+
+### Step 4: Compute the magnetic field
+
+```python
+# Compute the B-field in units of mT for some points.
+
+points = [(0,0,-1), (0,0,0), (0,0,1)]
+B = magpy.getB(cube, points)
+
+print(B.round()) # -> [[263.  68.  81.]
+                 #     [276.  52.   0.]
+                 #     [263.  68. -81.]]
+
+# Compute the H-field in units of kA/m at the sensor.
+
+H = magpy.getH(cube, sensor)
+
+print(H.round()) # -> [220.  41.   0.]
+```
+
+```{warning}
+Magpylib makes use of vectorized computation (massive speedup). This requires that you hand over all field computation instances (multiple objects with multiple positions (=paths)) at the same time to `getB` or `getH`. Avoid Python loops at all costs !!!
+```
+
+## Other important features
+
+:::{dropdown} Paths
+Magpylib position and orientation attributes can store multiple values that are referred to as paths. The field will automatically be computed for all path positions. Use this to model objects moving to multiple locations.
+
+```python
+import numpy as np
+import magpylib as magpy
+
+# Create magnet
+sphere = magpy.magnet.Sphere(diameter=1, magnetization=(0,0,1000))
+
+# Assign a path
+sphere.position = np.linspace((-2,0,0), (2,0,0), 7)
+
+# The field is automatically computed for every path position
+B = sphere.getB((0,0,1))
+print(B.round())  # ->[[  4.   0.  -1.]
+                  #    [ 13.   0.   1.]
+                  #    [ 33.   0.  26.]
+                  #    [  0.   0.  83.]
+                  #    [-33.   0.  26.]
+                  #    [-13.   0.   1.]
+                  #    [ -4.   0.  -1.]]
+```
+:::
+
+
+
+:::{dropdown} Collections
+Magpylib objects can be grouped into Collections. An operation applied to a Collection is applied to every object in it.
+
+```python
+import magpylib as magpy
+
+# Create objects
+obj1 = magpy.Sensor()
+obj2 = magpy.magnet.Cuboid(magnetization=(0,0,1000), dimension=(1,2,3))
+
+# Group objects
+coll = magpy.Collection(obj1, obj2)
+
+# Manipulate Collection
+coll.move((1,2,3))
+
+print(obj1.position.round()) # -> [1. 2. 3.]
+print(obj2.position.round()) # -> [1. 2. 3.]
+```
+:::
+
+
+
+:::{dropdown} Complex Magnet Shapes
+There most convenient way to create a magnet with complex shape is by using the ConvexHull of a point cloud (= simplest form that includes all given points).
+
+```python
+import magpylib as magpy
+
+# Create a Pyramid magnet
+points = [
+    (-1,-1, 0),
+    (-1, 1, 0),
+    ( 1,-1, 0),
+    ( 1, 1, 0),
+    ( 0, 0, 2),
+]
+pyramid = magpy.magnet.TriangularMesh.from_ConvexHull(
+    magnetization=(0,0,1000),
+    points=points
+)
+
+# Display the magnet graphically
+pyramid.show()
+```
+<img src="../_static/images/getting_started_complex_shapes.png" width=50%>
+:::
+
+
+
+:::{dropdown} Graphic Styles
+Magpylib offers many ways to customize the graphic output.
+
+```python
+import magpylib as magpy
+
+# create Cuboid magnet with custom style
+cube = magpy.magnet.Cuboid(
+    magnetization=(0,0,1000),
+    dimension=(1,1,1),
+    style_color='r',
+    style_magnetization_mode='arrow'
+)
+
+# create Cylinder magnet with custom style
+cyl = magpy.magnet.Cylinder(
+    magnetization=(0,0,1000),
+    dimension=(1,1),
+    position=(2,0,0),
+    style_magnetization_color_mode='bicolor',
+    style_magnetization_color_north='m',
+    style_magnetization_color_south='c',
+)
+magpy.show(cube, cyl)
+```
+<img src="../_static/images/getting_started_styles.png" width=50%>
+:::
+
+
+
+:::{dropdown} Animation
+Object paths can be animated
+
+```python
+import numpy as np
+import magpylib as magpy
+
+
+# Create magnet with path
+cube = magpy.magnet.Cuboid(magnetization=(0,0,1000), dimension=(1,1,1))
+cube.rotate_from_angax(angle=np.linspace(10,360,18), axis='x')
+
+# Generate an animation with `show`
+cube.show(animation=True, backend="plotly")
+```
+<img src="../_static/images/getting_started_animation.png" width=50%>
+:::
+
+
+
+:::{dropdown} Direct interface
+Magpylib's object oriented interface is convenient to work with but is also slowed down by object initialization and handling. The direct interface bypasses this load and enables field computation for a set of input parameters.
+
+```python
+import magpylib as magpy
+
+# Compute the magnetic field via the direct interface.
+B = magpy.getB(
+    sources="Cuboid",
+    observers=[(-1,0,1), (0,0,1), (1,0,1)],
+    dimension=(1,1,1),
+    magnetization=(0,0,1000)
+)
+
+print(B.round()) # -> [[-43.   0.  14.]
+                 #     [  0.   0. 135.]
+                 #     [ 43.   0.  14.]]
+```
+:::
diff --git a/docs/_pages/reso_license.md b/docs/_pages/reso_license.md
new file mode 100644
index 000000000..8bc1cc434
--- /dev/null
+++ b/docs/_pages/reso_license.md
@@ -0,0 +1,16 @@
+(license)=
+
+# License
+
+Magpylib is published under the open source [FreeBSD](https://www.freebsd.org/copyright/freebsd-license/) license.
+
+- *Permissions:* Commercial use, Modification, Distribution, Private use
+- *Limitations:* Liability, Warranty
+- *Conditions:* License and copyright notice
+
+## License Text
+
+```{include} ../../LICENSE
+:relative-docs: docs/
+:relative-images:
+```
diff --git a/docs/_pages/reso_news.md b/docs/_pages/reso_news.md
new file mode 100644
index 000000000..0fffc0c9f
--- /dev/null
+++ b/docs/_pages/reso_news.md
@@ -0,0 +1,10 @@
+(news)=
+
+# News
+
+## New Documentation
+**18.08.2023**
+
+- Happy to announce our new, more attractive, more user-fiendly and more complete documentation ! Give us Feedback what you think :). There are still a lot of things to do (specifically in the Example section). Documentation updates coming regularly now.
+
+- It is set up for Magpylib version 4.4 - so some documented features might not be working in 4.3 - release is imminent ! If you cannot wait install from  [main branch](https://github.com/magpylib/magpylib).
diff --git a/docs/_pages/reso_site_notice.md b/docs/_pages/reso_site_notice.md
new file mode 100644
index 000000000..bc439dd87
--- /dev/null
+++ b/docs/_pages/reso_site_notice.md
@@ -0,0 +1,5 @@
+(site-notice)=
+
+# Site Notice
+
+Magpylib is supported by [Silicon Austria Labs](https://silicon-austria-labs.com/).
diff --git a/docs/_static/css/stylesheet.css b/docs/_static/css/stylesheet.css
deleted file mode 100644
index 609a61f6f..000000000
--- a/docs/_static/css/stylesheet.css
+++ /dev/null
@@ -1,3 +0,0 @@
-.center {
-    text-align: center
-}
diff --git a/docs/_static/custom.css b/docs/_static/custom.css
new file mode 100644
index 000000000..d7acfdc57
--- /dev/null
+++ b/docs/_static/custom.css
@@ -0,0 +1,13 @@
+#galleryimg {
+    background: red;
+}
+
+/* fix image transparency in docu WTF? */
+html[data-theme=dark] .bd-content img:not(.only-dark):not(.dark-light) {
+    background: none;
+}
+
+/* custom padding for index page*/
+.sectiontext {
+    margin-top:-40px;
+}
diff --git a/docs/_static/images/docu_classes_init_collection.png b/docs/_static/images/docu_classes_init_collection.png
new file mode 100644
index 000000000..f5c9ea143
Binary files /dev/null and b/docs/_static/images/docu_classes_init_collection.png differ
diff --git a/docs/_static/images/docu_classes_init_cuboid.png b/docs/_static/images/docu_classes_init_cuboid.png
new file mode 100644
index 000000000..4b5e1d372
Binary files /dev/null and b/docs/_static/images/docu_classes_init_cuboid.png differ
diff --git a/docs/_static/images/docu_classes_init_custom.png b/docs/_static/images/docu_classes_init_custom.png
new file mode 100644
index 000000000..e00b5036d
Binary files /dev/null and b/docs/_static/images/docu_classes_init_custom.png differ
diff --git a/docs/_static/images/docu_classes_init_cylinder.png b/docs/_static/images/docu_classes_init_cylinder.png
new file mode 100644
index 000000000..9e00fc544
Binary files /dev/null and b/docs/_static/images/docu_classes_init_cylinder.png differ
diff --git a/docs/_static/images/docu_classes_init_cylindersegment.png b/docs/_static/images/docu_classes_init_cylindersegment.png
new file mode 100644
index 000000000..73350d008
Binary files /dev/null and b/docs/_static/images/docu_classes_init_cylindersegment.png differ
diff --git a/docs/_static/images/docu_classes_init_dipole.png b/docs/_static/images/docu_classes_init_dipole.png
new file mode 100644
index 000000000..90a859558
Binary files /dev/null and b/docs/_static/images/docu_classes_init_dipole.png differ
diff --git a/docs/_static/images/docu_classes_init_global_local.png b/docs/_static/images/docu_classes_init_global_local.png
new file mode 100644
index 000000000..38f23f91c
Binary files /dev/null and b/docs/_static/images/docu_classes_init_global_local.png differ
diff --git a/docs/_static/images/docu_classes_init_line.png b/docs/_static/images/docu_classes_init_line.png
new file mode 100644
index 000000000..54530886f
Binary files /dev/null and b/docs/_static/images/docu_classes_init_line.png differ
diff --git a/docs/_static/images/docu_classes_init_loop.png b/docs/_static/images/docu_classes_init_loop.png
new file mode 100644
index 000000000..09502024b
Binary files /dev/null and b/docs/_static/images/docu_classes_init_loop.png differ
diff --git a/docs/_static/images/docu_classes_init_sensor.png b/docs/_static/images/docu_classes_init_sensor.png
new file mode 100644
index 000000000..9a529585c
Binary files /dev/null and b/docs/_static/images/docu_classes_init_sensor.png differ
diff --git a/docs/_static/images/docu_classes_init_sphere.png b/docs/_static/images/docu_classes_init_sphere.png
new file mode 100644
index 000000000..69e05523d
Binary files /dev/null and b/docs/_static/images/docu_classes_init_sphere.png differ
diff --git a/docs/_static/images/docu_classes_init_tetra.png b/docs/_static/images/docu_classes_init_tetra.png
new file mode 100644
index 000000000..9e0c030ba
Binary files /dev/null and b/docs/_static/images/docu_classes_init_tetra.png differ
diff --git a/docs/_static/images/docu_classes_init_triangle.png b/docs/_static/images/docu_classes_init_triangle.png
new file mode 100644
index 000000000..ff2e8f5db
Binary files /dev/null and b/docs/_static/images/docu_classes_init_triangle.png differ
diff --git a/docs/_static/images/docu_classes_init_trimesh.png b/docs/_static/images/docu_classes_init_trimesh.png
new file mode 100644
index 000000000..e142afa87
Binary files /dev/null and b/docs/_static/images/docu_classes_init_trimesh.png differ
diff --git a/docs/_static/images/docu_field_comp_flow.png b/docs/_static/images/docu_field_comp_flow.png
new file mode 100644
index 000000000..6ecc10d5b
Binary files /dev/null and b/docs/_static/images/docu_field_comp_flow.png differ
diff --git a/docs/_static/images/docu_field_superpos_cutout.png b/docs/_static/images/docu_field_superpos_cutout.png
new file mode 100644
index 000000000..88378c8b0
Binary files /dev/null and b/docs/_static/images/docu_field_superpos_cutout.png differ
diff --git a/docs/_static/images/docu_field_superpos_union.png b/docs/_static/images/docu_field_superpos_union.png
new file mode 100644
index 000000000..06caf2f7a
Binary files /dev/null and b/docs/_static/images/docu_field_superpos_union.png differ
diff --git a/docs/_static/images/docu_index_icon_magpylib.png b/docs/_static/images/docu_index_icon_magpylib.png
new file mode 100644
index 000000000..d6fbc95a2
Binary files /dev/null and b/docs/_static/images/docu_index_icon_magpylib.png differ
diff --git a/docs/_static/images/docu_index_icon_magpylib_show.png b/docs/_static/images/docu_index_icon_magpylib_show.png
new file mode 100644
index 000000000..9e75b3885
Binary files /dev/null and b/docs/_static/images/docu_index_icon_magpylib_show.png differ
diff --git a/docs/_static/images/docu_index_icon_physics.png b/docs/_static/images/docu_index_icon_physics.png
new file mode 100644
index 000000000..363c9723e
Binary files /dev/null and b/docs/_static/images/docu_index_icon_physics.png differ
diff --git a/docs/_static/images/docu_position_sketch.png b/docs/_static/images/docu_position_sketch.png
new file mode 100644
index 000000000..050cb90bb
Binary files /dev/null and b/docs/_static/images/docu_position_sketch.png differ
diff --git a/docs/_static/images/gallery_icon_WIP.png b/docs/_static/images/gallery_icon_WIP.png
new file mode 100644
index 000000000..5d592d851
Binary files /dev/null and b/docs/_static/images/gallery_icon_WIP.png differ
diff --git a/docs/_static/images/gallery_icon_app_end_of_shaft.png b/docs/_static/images/gallery_icon_app_end_of_shaft.png
new file mode 100644
index 000000000..99c401317
Binary files /dev/null and b/docs/_static/images/gallery_icon_app_end_of_shaft.png differ
diff --git a/docs/_static/images/gallery_icon_ext_custom_quadrupole.png b/docs/_static/images/gallery_icon_ext_custom_quadrupole.png
new file mode 100644
index 000000000..49f4cedff
Binary files /dev/null and b/docs/_static/images/gallery_icon_ext_custom_quadrupole.png differ
diff --git a/docs/_static/images/gallery_icon_misc_compound.png b/docs/_static/images/gallery_icon_misc_compound.png
new file mode 100644
index 000000000..d59e657d6
Binary files /dev/null and b/docs/_static/images/gallery_icon_misc_compound.png differ
diff --git a/docs/_static/images/gallery_icon_misc_field_interpolation.png b/docs/_static/images/gallery_icon_misc_field_interpolation.png
new file mode 100644
index 000000000..ae02969e5
Binary files /dev/null and b/docs/_static/images/gallery_icon_misc_field_interpolation.png differ
diff --git a/docs/_static/images/gallery_icon_shapes_convex_hull.png b/docs/_static/images/gallery_icon_shapes_convex_hull.png
new file mode 100644
index 000000000..cbab713e4
Binary files /dev/null and b/docs/_static/images/gallery_icon_shapes_convex_hull.png differ
diff --git a/docs/_static/images/gallery_icon_shapes_pyvista.png b/docs/_static/images/gallery_icon_shapes_pyvista.png
new file mode 100644
index 000000000..d5de5bdee
Binary files /dev/null and b/docs/_static/images/gallery_icon_shapes_pyvista.png differ
diff --git a/docs/_static/images/gallery_icon_shapes_superpos.png b/docs/_static/images/gallery_icon_shapes_superpos.png
new file mode 100644
index 000000000..ebfba4568
Binary files /dev/null and b/docs/_static/images/gallery_icon_shapes_superpos.png differ
diff --git a/docs/_static/images/gallery_icon_shapes_triangle.png b/docs/_static/images/gallery_icon_shapes_triangle.png
new file mode 100644
index 000000000..3e8649311
Binary files /dev/null and b/docs/_static/images/gallery_icon_shapes_triangle.png differ
diff --git a/docs/_static/images/gallery_icon_tutorial_collection.png b/docs/_static/images/gallery_icon_tutorial_collection.png
new file mode 100644
index 000000000..0ac472ab4
Binary files /dev/null and b/docs/_static/images/gallery_icon_tutorial_collection.png differ
diff --git a/docs/_static/images/gallery_icon_tutorial_field_computation.png b/docs/_static/images/gallery_icon_tutorial_field_computation.png
new file mode 100644
index 000000000..78f4257f5
Binary files /dev/null and b/docs/_static/images/gallery_icon_tutorial_field_computation.png differ
diff --git a/docs/_static/images/gallery_icon_tutorial_paths.png b/docs/_static/images/gallery_icon_tutorial_paths.png
new file mode 100644
index 000000000..7fe965995
Binary files /dev/null and b/docs/_static/images/gallery_icon_tutorial_paths.png differ
diff --git a/docs/_static/images/gallery_icon_viz_mpl_streamplot.png b/docs/_static/images/gallery_icon_viz_mpl_streamplot.png
new file mode 100644
index 000000000..9475ea752
Binary files /dev/null and b/docs/_static/images/gallery_icon_viz_mpl_streamplot.png differ
diff --git a/docs/_static/images/gallery_icon_viz_pv_streamlines.png b/docs/_static/images/gallery_icon_viz_pv_streamlines.png
new file mode 100644
index 000000000..68595d2b7
Binary files /dev/null and b/docs/_static/images/gallery_icon_viz_pv_streamlines.png differ
diff --git a/docs/_static/images/getting_started_animation.png b/docs/_static/images/getting_started_animation.png
new file mode 100644
index 000000000..2c307f4ac
Binary files /dev/null and b/docs/_static/images/getting_started_animation.png differ
diff --git a/docs/_static/images/getting_started_complex_shapes.png b/docs/_static/images/getting_started_complex_shapes.png
new file mode 100644
index 000000000..f4e2813ee
Binary files /dev/null and b/docs/_static/images/getting_started_complex_shapes.png differ
diff --git a/docs/_static/images/getting_started_fundamentals1.png b/docs/_static/images/getting_started_fundamentals1.png
new file mode 100644
index 000000000..0902e7a6e
Binary files /dev/null and b/docs/_static/images/getting_started_fundamentals1.png differ
diff --git a/docs/_static/images/getting_started_styles.png b/docs/_static/images/getting_started_styles.png
new file mode 100644
index 000000000..1f491bcb8
Binary files /dev/null and b/docs/_static/images/getting_started_styles.png differ
diff --git a/docs/_static/images/index/sal.svg b/docs/_static/images/index/sal.svg
deleted file mode 100644
index 7278ec9b2..000000000
--- a/docs/_static/images/index/sal.svg
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- Generator: Adobe Illustrator 15.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0)  -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="304px" height="66px" viewBox="0 0 304 66" enable-background="new 0 0 304 66" xml:space="preserve">
-<polyline fill-rule="evenodd" clip-rule="evenodd" fill="none" points="1,1 302.299,1 302.299,64.82 1,64.82 "/>
-<polyline fill="none" points="1,1 303,1 303,65 1,65 "/>
-<polyline fill="#009A9B" points="1,10.431 37.803,5.254 37.803,1 1,6.176 "/>
-<polygon fill="#6F6F6E" points="39.221,5.254 39.221,1 69.074,5.184 69.074,9.438 "/>
-<polygon fill="#6F6F6E" points="42.943,9.332 69.074,12.098 69.074,16.352 42.943,13.586 "/>
-<polyline fill-rule="evenodd" clip-rule="evenodd" fill="none" points="1,1 302.299,1 302.299,64.82 1,64.82 "/>
-<polyline fill="none" points="1,1 303,1 303,65 1,65 "/>
-<polyline fill="#009A9B" points="1,17.841 41.525,13.586 41.525,9.332 1,13.586 "/>
-<polygon fill="#6F6F6E" points="46.631,17.806 69.074,19.366 69.074,23.621 46.631,22.061 "/>
-<polyline fill-rule="evenodd" clip-rule="evenodd" fill="none" points="1,1 302.299,1 302.299,64.82 1,64.82 "/>
-<polyline fill="none" points="1,1 303,1 303,65 1,65 "/>
-<polyline fill="#009A9B" points="1,25.145 45.213,22.061 45.213,17.806 1,20.891 "/>
-<polygon fill="#6F6F6E" points="46.702,26.634 69.074,27.414 69.074,31.669 46.702,30.889 "/>
-<polyline fill-rule="evenodd" clip-rule="evenodd" fill="none" points="1,1 302.299,1 302.299,64.82 1,64.82 "/>
-<polyline fill="none" points="1,1 303,1 303,65 1,65 "/>
-<polyline fill="#009A9B" points="1,32.414 45.284,30.889 45.284,26.634 1,28.159 "/>
-<rect x="43.192" y="35.463" fill="#6F6F6E" width="25.882" height="4.254"/>
-<polyline fill="#009A9B" points="1,35.463 41.773,35.463 41.773,39.717 1,39.717 "/>
-<polyline fill-rule="evenodd" clip-rule="evenodd" fill="none" points="1,1 302.299,1 302.299,64.82 1,64.82 "/>
-<polyline fill="none" points="1,1 303,1 303,65 1,65 "/>
-<polygon fill="#6F6F6E" points="39.611,48.297 69.074,47.27 69.074,43.015 39.611,44.043 "/>
-<polyline fill="#009A9B" points="1,42.73 38.192,44.043 38.192,48.297 1,46.985 "/>
-<polyline fill-rule="evenodd" clip-rule="evenodd" fill="none" points="1,1 302.299,1 302.299,64.82 1,64.82 "/>
-<polyline fill="none" points="1,1 303,1 303,65 1,65 "/>
-<polygon fill="#6F6F6E" points="32.378,64.819 69.074,60.955 69.074,56.7 32.378,60.564 "/>
-<polyline fill="#009A9B" points="1,57.409 30.959,60.564 30.959,64.819 1,61.664 "/>
-<polyline fill="#009A9B" points="1,49.999 34.576,52.375 34.576,56.629 1,54.254 "/>
-<polyline fill-rule="evenodd" clip-rule="evenodd" fill="none" points="1,1 302.299,1 302.299,64.82 1,64.82 "/>
-<polyline fill="none" points="1,1 303,1 303,65 1,65 "/>
-<polygon fill="#6F6F6E" points="35.994,56.629 69.074,54.289 69.074,50.035 35.994,52.375 "/>
-<polyline fill="none" points="1,1 303,1 303,65 1,65 "/>
-<path fill="#009A9B" d="M92.936,29.683c-2.695,0-7.126-0.638-9.679-1.205v7.126c3.014,0.567,6.772,1.028,10.424,1.028  c6.772,0,12.834-2.376,12.834-10.424c0-12.622-14.714-7.162-14.714-11.842c0-2.057,1.879-2.659,4.574-2.659  c2.73,0,6.134,0.425,8.403,0.815V5.361c-2.694-0.248-5.673-0.638-8.757-0.638c-6.559,0-13.295,1.844-13.295,9.857  c0,12.834,14.572,7.587,14.572,12.232C97.296,28.797,95.843,29.683,92.936,29.683 M106.196,36.137h9.396l1.489-5.532h9.856  l1.489,5.532h9.396l-9.856-30.917h-11.984L106.196,36.137z M124.987,23.585h-6.063l2.836-11.31h0.39 M139.63,5.254v30.882h21.734  v-7.056h-12.729V5.254H139.63z"/>
-<polyline fill="none" points="1,1 303,1 303,65 1,65 "/>
-<path fill="#009A9B" d="M87.298,59.75c-1.277,0-2.375-0.143-4.042-0.426v1.524c1.17,0.177,2.588,0.354,4.148,0.354  c3.51,0,5.46-1.702,5.46-4.645c0-3.404-2.447-3.794-4.68-4.148c-1.773-0.283-3.404-0.603-3.404-2.695  c0-2.092,1.524-2.693,3.829-2.693c1.241,0,2.588,0.177,3.51,0.283v-1.489c-1.028-0.106-2.269-0.248-3.51-0.248  c-2.801,0-5.531,0.745-5.531,4.147c0,3.156,2.198,3.759,4.325,4.078c1.915,0.318,3.758,0.603,3.758,2.694  C91.198,58.721,89.851,59.75,87.298,59.75 M95.24,60.92h1.631V45.815H95.24V60.92z M100.239,45.815V60.92h8.97v-1.454h-7.375v-13.65  H100.239z M111.301,60.92h1.631V45.815h-1.631V60.92z M115.698,53.367c0,4.787,2.092,7.836,6.772,7.836  c1.063,0,2.517-0.178,3.829-0.567v-1.524c-1.206,0.426-2.588,0.639-3.758,0.639c-2.872,0-5.176-1.703-5.176-6.418  c0-4.609,2.127-6.275,5.318-6.275c1.099,0,2.481,0.248,3.616,0.566V46.1c-1.418-0.32-2.694-0.497-3.829-0.497  C117.86,45.567,115.698,48.616,115.698,53.367 M139.24,53.367c0,4.539-1.879,6.383-4.893,6.383s-4.893-1.88-4.893-6.383  c0-4.502,1.879-6.346,4.893-6.346S139.24,48.865,139.24,53.367 M127.752,53.367c0,4.822,1.986,7.836,6.595,7.836  c4.645,0,6.524-3.014,6.524-7.836c0-4.786-1.879-7.765-6.524-7.765C129.738,45.567,127.752,48.545,127.752,53.367 M153.529,60.92  h1.808V45.815h-1.631v12.622l-8.403-12.622h-1.772V60.92h1.631v-12.48L153.529,60.92z M163.385,60.92h1.738l1.24-3.546h7.127  l1.24,3.546h1.773l-5.39-15.104h-2.376L163.385,60.92z M169.768,47.234h0.318l3.014,8.686h-6.346L169.768,47.234z M189.303,56.133  V45.815h-1.631v10.424c0,2.481-2.127,3.475-4.077,3.475c-1.915,0-4.077-0.993-4.077-3.475V45.815h-1.596v10.282  c0,3.403,2.375,5.07,5.673,5.07C186.856,61.168,189.303,59.572,189.303,56.133 M195.934,59.75c-1.277,0-2.376-0.143-4.043-0.426  v1.524c1.17,0.177,2.589,0.354,4.113,0.354c3.51,0,5.46-1.702,5.46-4.645c0-3.404-2.446-3.794-4.68-4.148  c-1.772-0.283-3.403-0.603-3.403-2.695c0-2.092,1.523-2.693,3.828-2.693c1.241,0,2.589,0.177,3.511,0.283v-1.489  c-1.028-0.106-2.27-0.248-3.511-0.248c-2.801,0-5.531,0.745-5.531,4.147c0,3.156,2.199,3.759,4.326,4.078  c1.914,0.318,3.758,0.603,3.758,2.694C199.833,58.721,198.486,59.75,195.934,59.75 M215.043,45.815h-12.338v1.454h5.354v13.65h1.631  V47.27h5.354V45.815z M217.135,45.815V60.92h1.631v-5.496h2.802c0.673,0,1.17-0.07,1.276-0.07l2.871,5.566h1.809l-3.119-6.027  c1.771-0.958,2.375-2.802,2.375-4.256c0-2.906-1.773-4.785-5.105-4.785h-4.539V45.815z M218.73,47.27h3.049  c2.341,0,3.298,1.666,3.298,3.297c0,1.737-0.957,3.404-3.155,3.404h-3.191V47.27L218.73,47.27z M229.793,60.92h1.631V45.815h-1.631  V60.92z M233.657,60.92h1.737l1.241-3.546h7.126l1.241,3.546h1.772l-5.389-15.104h-2.375L233.657,60.92z M240.004,47.234h0.319  l3.014,8.686h-6.347L240.004,47.234z M254.754,45.815V60.92h8.97v-1.454h-7.375v-13.65H254.754z M265.178,60.92h1.736l1.241-3.546  h7.126l1.242,3.546h1.771l-5.389-15.104h-2.375L265.178,60.92z M271.523,47.234h0.319l3.014,8.686h-6.347L271.523,47.234z   M285.741,45.815h-5.495V60.92h5.814c2.836,0,4.609-1.738,4.609-4.148c0-1.738-0.993-3.121-2.943-3.582  c1.666-0.814,2.34-2.162,2.34-3.651C290.102,47.623,288.684,45.815,285.741,45.815 M285.989,59.501h-4.147v-5.495h3.936  c1.949,0,3.19,1.063,3.19,2.658C288.968,58.26,287.975,59.501,285.989,59.501 M281.842,52.588V47.27h3.687  c1.985,0,2.979,1.135,2.979,2.481c0,1.596-1.241,2.837-2.837,2.837H281.842z M296.732,59.75c-1.276,0-2.375-0.143-4.042-0.426v1.524  c1.17,0.177,2.589,0.354,4.148,0.354c3.51,0,5.46-1.702,5.46-4.645c0-3.404-2.446-3.794-4.68-4.148  c-1.773-0.283-3.404-0.603-3.404-2.695c0-2.092,1.525-2.693,3.829-2.693c1.241,0,2.589,0.177,3.511,0.283v-1.489  c-1.029-0.106-2.27-0.248-3.511-0.248c-2.801,0-5.53,0.745-5.53,4.147c0,3.156,2.197,3.759,4.325,4.078  c1.915,0.318,3.759,0.603,3.759,2.694C300.598,58.721,299.25,59.75,296.732,59.75"/>
-</svg>
\ No newline at end of file
diff --git a/docs/_static/images/index/source_fundamentals.eps b/docs/_static/images/index/source_fundamentals.eps
deleted file mode 100644
index c2824aee8..000000000
--- a/docs/_static/images/index/source_fundamentals.eps
+++ /dev/null
@@ -1,12919 +0,0 @@
-%!PS-Adobe-3.0 EPSF-3.0
-%%Creator: cairo 1.17.7 (https://cairographics.org)
-%%CreationDate: Wed Jun 07 08:35:43 2023
-%%Pages: 1
-%%DocumentData: Clean7Bit
-%%LanguageLevel: 2
-%%BoundingBox: 0 0 396 135
-%%EndComments
-%%BeginProlog
-50 dict begin
-/q { gsave } bind def
-/Q { grestore } bind def
-/cm { 6 array astore concat } bind def
-/w { setlinewidth } bind def
-/J { setlinecap } bind def
-/j { setlinejoin } bind def
-/M { setmiterlimit } bind def
-/d { setdash } bind def
-/m { moveto } bind def
-/l { lineto } bind def
-/c { curveto } bind def
-/h { closepath } bind def
-/re { exch dup neg 3 1 roll 5 3 roll moveto 0 rlineto
-      0 exch rlineto 0 rlineto closepath } bind def
-/S { stroke } bind def
-/f { fill } bind def
-/f* { eofill } bind def
-/n { newpath } bind def
-/W { clip } bind def
-/W* { eoclip } bind def
-/BT { } bind def
-/ET { } bind def
-/BDC { mark 3 1 roll /BDC pdfmark } bind def
-/EMC { mark /EMC pdfmark } bind def
-/cairo_store_point { /cairo_point_y exch def /cairo_point_x exch def } def
-/Tj { show currentpoint cairo_store_point } bind def
-/TJ {
-  {
-    dup
-    type /stringtype eq
-    { show } { -0.001 mul 0 cairo_font_matrix dtransform rmoveto } ifelse
-  } forall
-  currentpoint cairo_store_point
-} bind def
-/cairo_selectfont { cairo_font_matrix aload pop pop pop 0 0 6 array astore
-    cairo_font exch selectfont cairo_point_x cairo_point_y moveto } bind def
-/Tf { pop /cairo_font exch def /cairo_font_matrix where
-      { pop cairo_selectfont } if } bind def
-/Td { matrix translate cairo_font_matrix matrix concatmatrix dup
-      /cairo_font_matrix exch def dup 4 get exch 5 get cairo_store_point
-      /cairo_font where { pop cairo_selectfont } if } bind def
-/Tm { 2 copy 8 2 roll 6 array astore /cairo_font_matrix exch def
-      cairo_store_point /cairo_font where { pop cairo_selectfont } if } bind def
-/g { setgray } bind def
-/rg { setrgbcolor } bind def
-/d1 { setcachedevice } bind def
-/cairo_data_source {
-  CairoDataIndex CairoData length lt
-    { CairoData CairoDataIndex get /CairoDataIndex CairoDataIndex 1 add def }
-    { () } ifelse
-} def
-/cairo_flush_ascii85_file { cairo_ascii85_file status { cairo_ascii85_file flushfile } if } def
-/cairo_image { image cairo_flush_ascii85_file } def
-/cairo_imagemask { imagemask cairo_flush_ascii85_file } def
-%%EndProlog
-%%BeginSetup
-%%BeginResource: font Calibri
-11 dict begin
-/FontType 42 def
-/FontName /Calibri def
-/PaintType 0 def
-/FontMatrix [ 1 0 0 1 0 0 ] def
-/FontBBox [ 0 0 0 0 ] def
-/Encoding 256 array def
-0 1 255 { Encoding exch /.notdef put } for
-Encoding 46 /period put
-Encoding 65 /A put
-Encoding 66 /B put
-Encoding 67 /C put
-Encoding 69 /E put
-Encoding 71 /G put
-Encoding 72 /H put
-Encoding 77 /M put
-Encoding 78 /N put
-Encoding 79 /O put
-Encoding 82 /R put
-Encoding 83 /S put
-Encoding 84 /T put
-Encoding 85 /U put
-Encoding 97 /a put
-Encoding 101 /e put
-Encoding 103 /g put
-Encoding 105 /i put
-Encoding 109 /m put
-Encoding 110 /n put
-Encoding 111 /o put
-Encoding 112 /p put
-Encoding 114 /r put
-Encoding 115 /s put
-Encoding 116 /t put
-Encoding 118 /v put
-/CharStrings 27 dict dup begin
-/.notdef 0 def
-/period 1 def
-/g 2 def
-/e 3 def
-/t 4 def
-/B 5 def
-/C 6 def
-/U 7 def
-/R 8 def
-/E 9 def
-/N 10 def
-/T 11 def
-/S 12 def
-/H 13 def
-/M 14 def
-/A 15 def
-/G 16 def
-/O 17 def
-/m 18 def
-/o 19 def
-/v 20 def
-/r 21 def
-/a 22 def
-/i 23 def
-/n 24 def
-/p 25 def
-/s 26 def
-end readonly def
-/sfnts [
-<00010000000900800003001063767420b970d83500002610000005bc6670676d7ede03370000
-2bcc00000d2b676c79662011c5a20000009c0000257468656164f84d79b1000038f800000036
-686865610dad035c0000393000000024686d747870400ba6000039540000006c6c6f63610002
-0364000039c0000000706d617870130f2a6f00003a3000000020707265701367221900003a50
-000024eb00050000fe7303d2050e000300070039004d004e0097b0852b58bc000d0152001600
-3a01b5b5154444082d07be0143000200200154000800010143400f04020db71a1a3f23b73506
-8d031149b8012db43f078d0202003ffddefdce2ffddeed12392fed012fdde1dee110f1ce1139
-2f33e1d4e131301b40141a0db76c1a1a3f3523b76c3503068d6c03113f49b8012d40096c3f40
-02078d6c020200183f2b1ace2bce2f2bce2b12392f2b303159011121110111211101140e0207
-07140623222e02352726363333323e0235342623220e0223222e02353436373e0333321e0203
-140e0223222e0235343e0233321e020103d2fc5a034ffd06027e233f5633051e1a0f140d0605
-021c18122d3c2510535b253c2e1d0703070603050807283742224b6c4522da07111d15161d12
-0808121d16151d1107fddb050efaf2050efb43046cfb9403063b5c3f2403980a0802040606b8
-1e18192a3b2149560f1310040b13101116080712110c28445cfd86151c120808121c15151d12
-0808121dfd4d000000010097fff7016e00e0000b0029b0852b58b10006b8ffc0b60c014d0609
-034c003fcd012f2bc131301bb30940034c00183f1acd30315925140623222635343633321601
-6e2f3e3c2e2f3e3c2e6d472f2e45472f2e00000000030035fe93038903c8003e004e005f0116
-b0852b584015122d47100f014d47080c014d47201013014c47333fb8fff8b30c014d3fb8fff0
-b30f014d3fb8ffe0b61013014c3f074fb8ffe0400d0f12014c4f1b040f3003330707b8ffe0b3
-10014d1bb8ffc0400d10014d2d33071b1b07332d0400b8ffe040340b014d0058100f014d5820
-1012014c582a25400b12014c250f300703384ada0c53e81515603803e93c482a2042d9384a5b
-d9204f003fed3fed12393fed1112392fedd6ed121739012f2b33cd2b2bc42b17392f2f2f2f2b
-2b1112173910cd2b10cd2b2b2b10cd2b2b2b10cd31301b40270f300703380c4ada6c0c151553
-e86c151560383c03e96c3c482a203842d96c384a205bd96c204f00183f2b3f2b12393f2b1112
-392f2b10c62b1217393031590114062323161615140e0223222627060615141617171e031514
-0e0223222e0235343e0237262635343637262635343e023332161721321601342623220e0215
-141633323e0213342627270e0315141633323e020389130f81231c325d804e37631b12174136
-eb4370522e346ba6716d99622c10213120312f32251f24345c814c29471f01101111fefe655d
-30472f17655b31482f17535f51e92029180984764b653e1b0374231f24572f4e78532c1d1612
-2e1e232e020a02213d593b3e70553125405934213e383319194c2c3d6026255d424d7a542d09
-0821fef15c672038492859661f3748fd5e3a3f0208192d29281541431d303e000002005dffed
-039903ca002b003400eab0852b58402a2f363f366f360313200d014d13200f014d1313212c10
-0c014d2c180b014d2c100d014d2c100f10014c2cb801f9b5442ba42b022bb8fff0b50f014d2b
-3404b8ffe0b30d014d04b8ffeeb30c014d04b8ffe0b30b014d04b8ffe8b40f10014c04b8020a
-4021212cc78004900402c00401d0040104041c2fdc264a18ea600e700e020e09ea1c4d003ffd
-d45ded3fed12392f5d7172ed012fe12b2b2b2b32dd2b5de12b2b2b2b12392f2b2b31305d1b40
-22042cc76c76040104041c262fdc6c264a0e18ea6c000e100e020f030e1c09ea6c1c4d00183f
-2bc45f5e5d2b3f2b12392f5d2b3031590114062321141e0233323e0233321e0215140e062322
-2e0235343e0233321e021527362623220e020703992719fdb21e4670514064492f0c070b0603
-0203070b365671406fa7723a3c71a0636a95602da60379773d5c3e2202020227214b78562e15
-1a15070e19120d130f0c0b1918133e7ab87a74b9814544739b581382942e4c65370000000001
-0021ffef026d04ad003a0089b0852b58b4290011232db8fff0b30f014d2db8fff0b30d014d2d
-b8fff6b30c014d2db8ffe8b310014d2db8ffe8b30b014d2db801f8400c170d2ded23481d0ded
-174831b80104b1074d003fed3fedcd3fed012f33e12b2b2b2b2b32cdc43231301b4011232ded
-6c23481d1740170ded6c17480731b80104b26c074d00183f2b3f2b1a10cd3f2b30315925140e
-0423222e02351123222635343e02333335343e0233321e02151533321e021514062323111416
-33323e0233321e02026d081020292e174664401d7e0f1205080d087d0713201819201208e708
-0c0904120fe7374717241c1408050905045b1d22100e0906254b734e020e2024131a1107d607
-0c090404090c07d607111a132420fe0a5d5f090a09050e18000300ac00000401050e001e002b
-003800f7b0852b58401a1f1810014d1f100f014d1f100d014d1f180c014d1f200b014d1fb802
-2e40281a154010014d15400f014d15150b2c1810014d2c100f014d2c100d014d2c180c014d2c
-200b014d2cba02320000ffc0b50b014d002633b8ffe8b310014d33b8fff0b30f014d33b8fff0
-b30d014d33b8fff6b30c014d33b8ffe8b30b014d33b80210400da00bc00b020b1a27f4313107
-24b80109b2105134b8010bb10754003fed3fed12392fed39012f5de12b2b2b2b2b32d42be12b
-2b2b2b2b12392f2b2b39e12b2b2b2b2b31301b400a1a3127f46c3131071024b80109b46c1051
-0734b8010bb26c075400183f2b3f2b12392f2b3930315901140e042321222635113436332132
-1e0215140e02071e0301342e0223231133323e0213342e0223231133323e0204011f384f6371
-49feae17292917012674946332162b412a355c4528fefd1a385a4ab2c4435236194e25476b51
-cefa3b58432601733d67523e2a151f270482271f2c547a4d2e544738120a35526e02012f4c35
-1cfe5d233b4ffddd3a583c1ffe381c37520000010061fff0040c051e00390097b0852b58b31c
-003b2bb8ffe8b310014d2bb8fff0b30f014d2bb8ffecb30d014d2bb8ffeeb30c014d2bb8ffe8
-b30b014d2bbe0233000e0018012f00210026012cb2135304bb012a00350030012eb10956003f
-fdd4ed3ffdd4ed012fe12b2b2b2b2b10d6c431301bb12118b8012fb36c211326b8012cb46c13
-533504b8012ab36c350930b8012eb26c095600183f2bc42b3f2bc42b30315925140e0623222e
-0235343e0233321e0615140e0223222e0223220e0215141e0233323e0233321e02040c020508
-14405f7b497ecb8f4d5396d17f386a5a461b08050304080b080e324f714f568d64373563905b
-4d7351340f070a0603b71018120e1429271b54a4f19da1fcaf5c15202a1b0e131a12141c1309
-272f274586c17c7bbd7f41262f2606111e00000100aaffed04790514002b00b5b0852b58401d
-602d01201810014d20100f014d20100d014d200a0c014d20180b014d20b80210401100401501
-4d004013014d004011014d0016b8ffe8b310014d16b8fff0b30f014d16b8fff0b30d014d16b8
-fff6b30c014d16b8ffe8b30b014d16ba0210000affc0b315014d0ab8ffc0400913014d0a2652
-10521bb80129b10556003fed3f3f012f2b2be12b2b2b2b2bd42b2b2be12b2b2b2b2b31305d1b
-b526521052051bb80129b26c055600183f2b3f3f30315901140e0223222e023511343e023332
-1e021511141e0233323e023511343e0233321e021504794580b8756bb07e440814201a182213
-082c5375494b75512b081421191821130901de76b980423e79b6770323080c070505070c08fc
-f25a86592d2c5882570317080c070505070c08000000000200acfffa040b050e0036004400bd
-b0852b58401e102e1137080b014d37100f014d37100c0d014c371810014d37180b014d37b802
-33b7294010014d293f11b8fff0b310014d11b8fff0b30f014d11b8fff0b30d014d11b8fff6b3
-0c014d11b8ffe8b30b014d11b80211b21c2e10b80108b67040014040173db8010bb521511755
-0555003f3f3fed12392f5ded39012fe12b2b2b2b2b32d42be12b2b2b2b2b12393931301bb22e
-4010b80108b56c404017213db8010bb66c21511755055500183f3f3f2b12392f2b3930315925
-140e0223222e0227032e03232311140e0223222e023511343633213216171e0315140e02071e
-031713161601342627262623231133323e02040b0614241e1a21140b0477152d3e543b730913
-2119192114082917011331411a4b734e2723425c3920342d2814740e08fefd4450193f3391a8
-4463421f1a080c08040409100c013134573f23fdd9080c070505070c0804ae271f05030d3856
-6f4341674f3a140e2b3c4e31fee3241d03854c69170706fe4c213b500000000100ac0000037c
-050e002c00aeb0852b58b11a27b8ffe8b310014d27b8fff0b30f014d27b8fff0b30d014d27b8
-fff6b30c014d27b8ffe8b30b014d27b80211400909132013200009001ab80108400d802601c0
-2601d0260126260619b8010cb20d5127b8010cb10654003fed3fed12392f5d7172ed012f2f12
-39392f2f10e12b2b2b2b2b3231301bb1261ab80108400b6c00260116032626060d19b8010cb4
-6c0d510627b8010cb26c065400183f2b3f2b12392f5f5e5d2b30315925140e02232122263511
-34363321321e0215140e0223211121321e0215140e0223211121321e02037c040a0d08fd9317
-2929170266080d080505080d08fe0601b2080d090404090d08fe4e0201080d0a0447121b1208
-1f270482271f08121b14121b1108fe6a09101c13121a1007fe3108111b00000100acfffa047e
-0511003d00a6b0852b58b3270f0f14b8ffe8b310014d14b8ffe8b30f014d14b8ffe8b30d014d
-14b8fff0b30c014d14b8ffe8b30b014d14b80211401e1e0a2e2e321810014d32180f014d3218
-0d014d32100c014d32180b014d32b802114010001e38520a2e0f270419225119550654003f3f
-3f1217393f012fd4e12b2b2b2b2b32113310e12b2b2b2b2b322f3331301b400e38520a2e0f27
-041922511955065400183f3f3f1217393f30315925140e022323222e02270126262723161615
-11140e0223222e02351134363333321e0217011e03173326263511343e0233321e0215047e0d
-151a0d371a27232315fe6820411c02020208131f18181f12082c1a521d271f1d11013a1d3632
-311801020108131f191620120847141c12080b1d322702e0397d3b48964afcf3070d07050507
-0d0704aa28220a17291ffdc83463605d2f4fab4f02be070c090404090c0700000001000ffffa
-03d7050e00220080b0852b58b718400d014d181100b8ffc0b40d014d0006b8ffe8b310014d06
-b8fff0b30f014d06b8fff0b30d014d06b8fff6b30c014d06b8ffe8b30b014d06ba02110011ff
-c0b50d014d110612b80128b31d510c55003f3fed32012f2bf12b2b2b2b2bc52b10c42b31301b
-b2061d12b80128b46c1d510c5500183f3f2b3230315901140e02232111140e0223222e023511
-21222e0235343e023321321e0203d704090d08fe940814211918221408fe94080d080505080d
-080384080d090404c4131c1108fb9e080c070505070c08046208111c13131d120808121d0001
-0047ffed0363052100490128b0852b58b90041ffe8b40f10014c41b8fff0b30d014d41b8fff0
-b310014d41b8fff0b30c014d41b8ffe8b30b014d41b8022c402b32401314014c324011014d24
-3224320c1b180f10014c1b100d014d1b1010014d1b100c014d1b180b014d1bba02310000ffc0
-b31b014d00b8ffc0b319014d00b8ffc0b314014d00b8ffc0b60f11014c000c2ebb0127003700
-0a0126400b1120370137400b0c014c11b8ffc0400a0b0c014c37113711163cb8010cb5411b05
-295316b80129b10556003fed3f123939ed1139392f2f2b2b5d10ed10ed012fd42b2b2b2be12b
-2b2b2b2b1239392f2f2b2be12b2b2b2b2b31301bb1372eb80127b26c110ab80126b76c371137
-1116293cb8010cb76c411b0529530516b80129b26c055600183f2b3f1239392b1139392f2f2b
-2b30315901140e0223222e0435343e0233321e0233323e0235342e0635343e0233321e061514
-0e0223222e0223220e0215141e0603634377a15d416f573b170b04080c080e3350714a385d43
-243252696e6852333b6991542b574d3c1306040203060b070b2f445d3a3650341a32536a6e6a
-5333016b5b8e633216202218251f161d12072228231e375033374e3b31333e54714f517f562d
-0f191f130b111813121c13091c231d1d304225364e3c32333d5371000000000100acfffa0450
-0514002f00e6b0852b58b43f3101230cb8ffe8b310014d0cb8fff0b30f014d0cb8fff0b30d01
-4d0cb8fff6b30c014d0cb8ffe8b30b014d0cb80211401c17240b1810014d0b100f014d0b100d
-014d0b0a0c014d0b180b014d0bb802104017004015014d004013014d00401011014c00400c01
-4d0017b8ffc0b315014d17b8ffc0b613014d172a5224b8012c400fc00c01d00c010c0c121d52
-12550555003f3f3f12392f5d71ed3f012f2b2bd42b2b2b2be12b2b2b2b2b3210e12b2b2b2b2b
-3231305d1bb32a520c24b8012c400f6c000c0116030c0c121d521255055500183f3f3f12392f
-5f5e5d2b3f30315925140e0223222e0235112111140e0223222e023511343e0233321e021511
-2111343e0233321e02150450081421181a201408fdb308142119182214080814221819211408
-024d0814201a182114081a080c070505070c08023efdc2080c070505070c0804da080c070505
-070c08fdfa0206080c070505070c08000000000100acfffa062b050e003c00d6b0852b584010
-603e703e020d3030172f2f0a2e18181ab8ffe8b310014d1ab8fff0b30f014d1ab8fff0b30d01
-4d1ab8fff6b30c014d1ab8ffe8b30b014d1ab80211401e24310c0c0a1810014d0a100f014d0a
-100d014d0a0a0c014d0a180b014d0aba02110000ffc040190b014d002436510b18170d2f1831
-2e061f28511f5512550555003f3f3f3f12173911333f012fd42be12b2b2b2b2b32113310e12b
-2b2b2b2b32113311393d2f3333113331305d1b401436510b18170d2f18312e061f28511f5512
-55055500183f3f3f3f12173911333f30315925140e0223222e02351123010e0323222e022701
-2311140e0223222e02351134363333321e02170133013e033333321e0215062b08141f191721
-130802fe33030b151d14151e140b02fe470108142019182013072c1b68203024180901770501
-860b1a1f26196d0f1b130c1a080c070505070c080467fb94070a070304070a06046cfb99080c
-070505070c0804a62a240c1a281bfc5703a61e2a190b09131d1500020023fffa047e05140022
-002600dcb0852b58b90024ffe8b40c10014c23b8ffe8b40c10014c26b8fff0b40b10014c0bb8
-fff0b40b10014c0ab8fff0401a0b10014c25100b10014c0d100b10014c0c100b10014c402801
-25b8fff0402c0b014d24232625f40c0b0c18221d230a0d0116040c000c100c02af23bf23cf23
-03230c230c121d5212550555003f3f3f1239392f2f5d5d11173911123939113310ed32113331
-30012b5d2b2b2b2b2b2b002b2b1b401e2423260c25f46c0b0c18221d230a0d0116040c230c23
-0c121d521255055500183f3f3f1239392f2f1117391112393911332b32113330315925161606
-0623222e02270321030e03232226263637013e0333321e0217072303210475080110251f1f25
-1309046ffde66a030a13231c1d250f010801b2040d19271e202a1a0e047b01df01c23d161b0e
-0403070c09013bfec9090d0904050e1b1604b20b0e080303080f0b8dfd7b00000001005bffee
-04780520003f00ddb0852b58401d1c1c0f181810014d18100f014d18100d014d180a0c014d18
-100b014d18b80211400d00bf270120274027602703270fb8ffe8b310014d0fb8fff0b30f014d
-0fb8ffecb30d014d0fb8ffeeb30c014d0fb8ffe8b30b014d0fb80232b42f34013418b8010ab4
-2222392f3ebb010a0005000a0129b2395314b8012cb12f56003fed3ffdd4ed1112392fed012f
-5de12b2b2b2b2bd45d5dc4e12b2b2b2b2b12392f31301bb12218b8010ab66c2222392f053eb8
-010ab36c05390ab80129b46c39532f14b8012cb26c2f5600183f2b3f2bc42b1112392f2b3031
-5901140e0223222e0223220e0215141e02333236371121222635343e023321321e021511140e
-0423222e0235343e0233321e04047804080c070c385e835a6baa763f457aa9653c7b35fed411
-1104090c09019b0b16120a123a5c62643196eca3565da9ed904a8265451a0a045e131d130826
-2e264e8abe6f7cc084441d1d01792224131b110808101c12fe131a261d22180c5dacf0949afa
-b0611a23291a2200000000020063ffed04e8052100130027009db0852b58401a141810014d14
-100f014d14140d014d14120c014d14180b014d14b80233400920003000800003001eb8ffe8b3
-10014d1eb8fff0b30f014d1eb8ffecb30d014d1eb8ffeeb30c014d1eb8ffe8b30b014d1ebb02
-33000a00190129b20f5323b8012bb10556003fed3fed012fe12b2b2b2b2bd45de12b2b2b2b2b
-31301bb10f19b80129b46c0f530523b8012bb26c055600183f2b3f2b30315901140e0223222e
-0235343e0233321e0207342e0223220e0215141e0233323e0204e84a93de9492d58b444a94de
-948fd48d45b5275b987070985f29265a9772719a5e2802969dfcb15f57a6f6a099faaf5f56a5
-f3a96ebd8b4e548cbb6772c08b4d548fbc00000000010099fffa05d003ca0050011eb0852b58
-401b12100b014d13180b014d26100b0c014c27180b0c014c7052014613b8fff6b30c014d13b8
-ffe8b30b014d13b8fff0b310014d13b8fff0b30f014d13b8ffeab30d014d13b801f8401e1e16
-0d014d1e1e320a0a0c014d0a100d014d0a180b014d0a100f10014c0ab801f9b7504011014d50
-3e27b8fff6b30c014d27b8ffe8b30b014d27b8fff0b310014d27b8fff0b30f014d27b8fff0b3
-0d014d27bb01f8003200100106b24b4a24b80106400d414a3e462d38492d4c194c054c003f3f
-3f3f1239393fed3fed012fe12b2b2b2b2b39d42be12b2b2b2b11392f2be12b2b2b2b2b393130
-5d002b2b2b2b1bb14b10b80106b46c4b4a4124b80106400e6c414a3e462d38492d4c194c054c
-00183f3f3f3f1239393f2b3f2b30315925140e0223222e023511342e022322060711140e0223
-222e023511342e022322060711140e0223222e023511343e0233321e021515363633321e0217
-3e0333321e021505d00812201819201308142c442e3973450813201817211307162c432e3974
-44081220191820130706121c17161d10074c8f4938594430102d514b47245776491f19080b08
-0404080b080223395e44245855fd8b080b080404080b080223395e44245855fd8b080b080404
-080b080384080b090303090b0877554f1a2f412831442a133d66894c00000002005affed03de
-03ca0013002700c9b0852b58401c3f2901281201291101260d01260c012608012607012a0301
-2902011eb8ffe8b310014d1eb8fff0b30f014d1eb8ffe0b30d014d1eb8ffeeb30c014d1eb8ff
-e8b30b014d1eb8020a401e2f0a010a141810014d14100f014d14200d014d14120c014d14180b
-014d14ba020a0000ffc0b70f004d7000010019b80101b20f4a23b80102b1054d003fed3fed01
-2f5d2be12b2b2b2b2b2f5de12b2b2b2b2b31305d5d5d5d5d5d5d5d5d1bb10f19b80101b46c0f
-4a0523b80102b26c054d00183f2b3f2b30315901140e0223222e0235343e0233321e0207342e
-0223220e0215141e0233323e0203de3a73ad726fa56e363973ac736fa56e37ae1b3e6a4f4969
-44211b3f6a4f486a442001e56eb9864b427eb4726eb9864a427eb47c49826239345f824d4a82
-6139345e8200000000010022fffa037b03bc002c010db0852b58b90023fff840170b0c014c1f
-080b0c014c251f011e080b0c014c251e0116b8fff0b30b014d15b8fff0b30b014d14b8ffe8b3
-0b014d13b8ffe8b30b014d12b8ffe8b30b014d11b8fff040370b014d37110126110127100128
-050122280b014d3d220124220121280b014d3f210124210120280b014d3d2001242001270f01
-76210121b8ffd04009111548212013014d21b8ffe8400910014d21200f014d21b8ffe8b30c01
-4d21b8fff0400c0b014d212849210b1a490b4c003f3f12393f012f2b2b2b2b2b002b5d31305d
-5d5d2b5d5d2b5d5d2b015d5d5d5d2b2b2b2b2b2b5d2b5d2b2b1bb5002101100521b8ffd0400b
-1115482849210b1a490b4c00183f3f12393f2b5f5e5d30315901140e0207010e0323222e0227
-012e0235343e0233321e0217131737133e0333321e02037b01020302fecd040d1a281e1e2819
-0e04fece04050108131f171d23130904fe0403fb020a13211b171e1107039f04090a0c07fca9
-0b0e080304080e0a03570c120903080c070203080c09fd1a0c0c02e6090c080302080b000001
-0099fffa02a703ca00330086b0852b58b4703501260fb8fff6b30c014d0fb8ffe8b30b014d0f
-b8fff0b40f10014c0fb8fff0b30d014d0fb801f84012004013014d004011014d00200d014d00
-1a0ab8012540092b4a260f152049154c003f3f1239393fed012fc42b2b2be12b2b2b2b393130
-5d1bb12b0ab80125400a6c2b4a260f152049154c00183f3f1239393f2b30315901140e022322
-2e0223220e020711140e0223222e023511343e0233321e0215153e0333321e0602a702060908
-08171d24151930353a23081220191820130706121c17161d100725413a391d0d21241d0c0403
-010362161e1109090908142e4c37fdb0080b080404080b080384080b090303090b0883364427
-0f03080a0a090e1b0002005cffed033f03ca0033004000f6b0852b5840200f421f422f42030b
-0917340c0c014d34100d014d34180b014d34100f10014c34b801f7400e0027270f00010c0010
-0f014d003ab8fff0b30c014d3ab8ffe8b30d014d3ab8ffe8b30b014d3ab8ffe8b40f10014c3a
-b8020840141117c500341034023bc0340100340134342e412ab8011b400fd022012222041dea
-2e4a3ddc0c4d04002f3fed3fed12392f5ded1112392f5d715e5ded012fe12b2b2b2bc42b5e5d
-392f10e12b2b2b2b323931305e5d1b400d0b17013417c56c34342e41222ab8011b40166c0022
-0116042222042e1dea6c2e4a0c3ddc6c0c4d0400182f3f2b3f2b12392f5f5e5d2b1112392f2b
-5d30315925140606232226263535060623222e0235343e02333335342e0223220e0223222e02
-35343e0433321e02150723220e0215141633323637033f101c1b1a1f0e3b91514773512d3e74
-a8697c16314e393d6149310c080c0904071b4256663461885426a48d4464421f5950416f3d18
-0c0c06060c0c5a3f46254666414c704a25463450351b1d231d0810190f191d1a231d132c557e
-54c4172d3f294653424400020085fffa0151052f0015002100a7b0852b58b73f234f236f2303
-16b8ffe8b30d014d16b8fff6b30c014d16b8ffe8b313014d16b8ffe0b310014d16b8fff0b30f
-014d16b8ffe8b30b014d16bb0271001c0015fff0b30d014d15b8fff6b30c014d15b8ffe8b30b
-014d15b8fff0b40f10014c15b801f8b60a1f400f014d1fb8013eb4191049054c003f3fd6ed2b
-012fe12b2b2b2bd4e12b2b2b2b2b2b31305d1bb1191fb8013eb56c191049054c00183f3fc62b
-30315925140e0223222e023511343e0233321e0215131406232226353436333216013e081220
-19182013070713201819201208132c3b3a2b2c3b3a2b19080b080404080b080384070c080404
-080c0701303a2a29393a2a2900010099fffa03a003ca003200b8b0852b58400f12100b014d13
-100b014d3f34012a13b8fff0b310014d13b8fff0b30f014d13b8fff0b30d014d13b8fff6b30c
-014d13b8ffe8b30b014d13b801f8401b1e0b1010014d0b100d014d0b100f014d0b0a0c014d0b
-180b014d0bb801f8b700400c014d001e10b80106400a2d4a2a192449194c054c003f3f3f1239
-3fed012f2f2be12b2b2b2b2b10e12b2b2b2b2b3931305d002b2b1bb12d10b80106400b6c2d4a
-2a192449194c054c00183f3f3f12393f2b30315925140e0223222e023511342e022322060711
-140e0223222e023511343e0233321e021515363633321e021503a00812201819201208182e49
-303e7c44081220191820130706121c17161d10074c974d5a7b4c2119080b080404080b08020f
-4d5e44245855fd8b080b080404080b080384080b090303090b0877554f3d6689600000000002
-0099fe9403d503ca002a003d00b1b0852b58b53f3f0121360ab8fff0b30d014d0ab8fff6b30c
-014d0ab8fff0b40f10014c0ab8ffe8b30b014d0ab801f84017152b200d014d2b120c014d2b18
-0f10014c2b180b014d2bb8020a400900150a363521040530b80105b6264a1b49104f39b80105
-b1054d003fed3f3f3fed121739012fd4e12b2b2b2b10e12b2b2b2b323931305d1bb70a363521
-04052630b8010540096c264a1b49104f0539b80105b26c054d00183f2b3f3f3f2b1217393031
-5901140e0223222e022711140e0223222e023511343e0233321e0215153e0333321e0207342e
-0223220e020711161633323e0203d53363925e2844414024081220191820130706121c14151b
-1207294c4d512d628a5728ae15335640203e404627447a433e59371a01e976bc834710223423
-fe3e080c080404080c0804e9090b080303080b09792a3e29154c84af754581643c13294331fe
-9a53583c647c000000010051ffed02ce03ca00490110b0852b58400c2f4b3f4b4f4b7f4baf4b
-0541b8fff0b30d014d41b8fff6b30c014d41b8fff0b30f014d41b8ffc0b313014d41b8fff0b3
-10014d41b8fff0b30b014d41b801dc401f243224320c1b100d014d1b0a0c014d1b1010014d1b
-100b014d1b100f014d1bba01f60000ffc0400a0f014d000c400b014d0cb8ffc0402613014d3f
-0caf0c020c2edd370aeb115011601170110337113711163cdb411b05294a16e8054d003fed3f
-123939ed1139392f2f5d10ed10ed012f5d2b2bd42be12b2b2b2b2b1239392f2fe12b2b2b2b2b
-2b31305d1b4025372edd6c110aeb6c001110112011030e033711371116293cdb6c411b05294a
-0516e86c054d00183f2b3f1239392b1139392f2f5f5e5d2b2b30315901140e0223222e043534
-3e0233321e0233323e0235342e0635343e0233321e0615140e0223222e0223220e0215141e06
-02ce335e824e30574530160a04060b070b2b3f56382a44321b2740505551402729527b522448
-3a291507030303070a06092236492f2a40291528405255534027010e456c4a260f171914241f
-131a10071b201b122336252634281f222b3e563c3561492c0c1215100c0f1610111910071619
-161323301c27352820222a3c540000000000079e0000fe930000000000000000000000000050
-006a0073008000800086008d009300bf00db006200830093009900a000a600a900b000c100c9
-00d7000000000000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000000000000000
-0000fe79056d000c03b7000600130000fffaffedfea6ffedfeb8050e000600130000fffaffed
-fe93050e00130420000600130000fffaffedff10ffee050e00130420000600130000fffaffee
-fe93ff10feb80612000a050e0006000d02d2fffafff301fdfffa023f0006000dff36fffafff3
-02870006000f0000fffafff1079efeaffea700000000000000000000000000500051005a005b
-005c005d006000610062006400680069006a006b006c006d006e00680069006e00600067006e
-00660068005f00610063006400660068006a006b006c006d006e006f0070006f007200740075
-00760076007000720073007400750076006f007000710072007300750077007700780079007a
-007b007c007d007b007c007d00770079007a007c0078007a007c007d0078007d007e007f0080
-00810082007e007f00810082007e007f00800081008200830084008500860087008800890083
-008400850086008700880089008300840085008600870088008900890086008700880089008a
-008b008c008d008e008f008a008b008c008d008e008f008a008b008c008d008e008f008d008a
-008b008c008d008e008f0090009000910092009300940095009600980099009b009c00900091
-00920093009400950096009700980099009a009e009f00a60090009100950098009f00900091
-0096009700bc00c600b500ae00af00b6006800690063006a006f00700071006f007000710072
-0066006c006d00700079007c007f00830086008700880089008a0074007500760077007a007b
-007c007d007e008200850086008a0088008900830078007b0082008300860087008800890076
-0079007a007c007d007e0083008500880089008a0073007400750077007a007d00880089008a
-008b008c008d008e00900094008b008c008d00910092009300940095008c008d00910095008f
-009000910092009300940095008b008c008d008e008f009000910092009300940095008b008c
-008d008e008f00900091009200930096009700980099009c0096009700980099009a009b009c
-00960099009a009c0096009700980099009a009b009c009700980099009a009b009c00970098
-0099009a009b009c0096009d00a000a1009d009e009f00a000a100a2009d009f00a000a1009f
-00a2009d009e009f00a000a100a2009d009e00a000a1009d009e00a000a2009d00a300a400a5
-00a600a700a300a400a600a700a300a400a500a600a700a600a300a700a800a900aa00ab00ac
-00ac00a800a900aa00ab00ac00a800a900aa00ab00ac00a800aa00ab00ac00ae00ad00ae00af
-00b000b100b200b300b400b500b600b700b800ad00ae00ad00ae00af00b000b100b200b300b4
-00b500b600b700b800ad00ae00af00b000b100b200b300b400b500b600b700b800b300ae00af
-00b000b200b500b600b700b800b900ba00bb00bc00be00c000c100c200c200b900ba00bb00bc
-00bd00be00bf00c000c100c200c400ba00bb00be00bf00c000c200c300c400b900ba00bf00c0
-00c200c600c700c900ca00cb00cc00cf00c500c700ce00c500c700c800cf00d000d200d300d7
-010d00d000d100e900d000fd00d005e4000e0041000005ba009c009c005e005e000000000000
-0000000000000000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000000000000000
-00000000000000000000051a001500a0fff8ff77fff803480066015401cc00ac00a200b4008c
-0101006e00000000000000000000011f000a04e2001400b4fff6035c00140028fdda0568fea2
-ffef405a868574737271706f6e6d6c6b6a696867666564625f5e5d5c5b5a5958555453525150
-4f4e4d4c4b4a494847464544434241403f3e3d3c3b3a39383736352f2e2d2c2826252423221f
-181411100f0d0b0a090807060504030201002c4523466020b02660b004262348482d2c452346
-236120b02661b004262348482d2c45234660b0206120b04660b004262348482d2c4523462361
-b0206020b02661b02061b004262348482d2c45234660b0406120b06660b004262348482d2c45
-23462361b0406020b02661b04061b004262348482d2c0110203c003c2d2c20452320b0cd4423
-20b8015a51582320b08d44235920b0ed51582320b04d44235920b0042651582320b00d442359
-21212d2c20204518684420b001602045b04676688a4560442d2c01b10b0a432343650a2d2c00
-b10a0b4323430b2d2c00b0282370b101283e01b0282370b10228453ab10200080d2d2c2045b0
-0325456164b050515845441b2121592d2c2045b0004360442d2c01b00643b00743650a2d2c20
-69b04061b0008b20b12cc08a8cb8100062602b0c642364615c58b00361592d2c8a03458a8a87
-b0112bb0292344b0297ae4182d2c4565b02c234445b02b23442d2c4b525845441b2121592d2c
-01b005251023208af500b0016023edec2d2c01b005251023208af500b0016123edec2d2c01b0
-062510f500edec2d2c20b001600110203c003c2d2c20b001610110203c003c2d2c00b00743b0
-06430b2d2c21210c6423648bb84000622d2c21b08051580c6423648bb82000621bb200402f2b
-59b002602d2c21b0c051580c6423648bb81555621bb200802f2b59b002602d2c0c6423648bb8
-4000626023212d2c4523456023456023456023766818b08062202d2cb00426b00426b00425b0
-042545234520b003266062636820b0032661658a2344442d2c2045b0005458b040442045b040
-61441b2121592d2c45b1302f4523456160b0016069442d2c4b5158b02f2370b01423421b2121
-592d2c4b515820b0032545695358441b2121591b2121592d2c45b01443b0006063b001606944
-2d2cb02f45442d2c452320458a60442d2c45234560442d2c4b235158b90033ffe0b134201bb3
-330034005944442d2cb0164358b00326458a586466b01f601b64b020606620581b21b04059b0
-01615923586559b02923442310b029e01b2121212121592d2cb0164358b004254564b0206066
-20581b21b04059b0016123586559b0292344b00425b00725082058021b0359b0052510b00425
-2046b0042523423cb0072510b006252046b00425b0016023423c2058011b0059b0052510b004
-25b029e0b0072510b00625b029e0b00425b00725082058021b0359b00425b003254348b00625
-b00325b0016043481b2159212121212121212d2cb0164358b004254564b020606620581b21b0
-4059b0016123581b6559b0292344b00525b00825082058021b0359b0042510b005252046b004
-2523423cb00425b0072508b0072510b006252046b00425b0016023423c2058011b0059b00425
-10b00525b029e0b02920456544b0072510b00625b029e0b00525b00825082058021b0359b005
-25b003254348b00425b0072508b00625b00325b0016043481b2159212121212121212d2c02b0
-0425202046b004252342b0052508b003254548212121212d2c02b0032520b0042508b0022543
-482121212d2c452320451820b00050205823652359236820b040505821b04059235865598a60
-442d2c4b53234b515a5820458a60441b2121592d2c4b545820458a60441b2121592d2c4b5323
-4b515a58381b2121592d2cb000214b5458381b2121592d2cb002435458b0462b1b2121212159
-2d2cb002435458b0472b1b212121592d2cb002435458b0482b1b21212121592d2cb002435458
-b0492b1b212121592d2c2320b000508a8a64b10003255458b0401bb10103255458b005438b59
-b04f2b5923b0622b2321235865592d2cb108000c215460432d2c014623466023466123201020
-468a61b8ff80628ab140408a704560683a2d2c208a2349648a2353583c1b21592d2c4b52587d
-1b7a592d2cb012004b014b54422d2cb1020042b123018851b1400188535a58b9100000208854
-58b202010243604259b12401885158b920000040885458b2020202436042b12401885458b202
-2002436042004b014b5258b2020802436042591bb940000080885458b202040243604259b940
-00008063b80100885458b202080243604259b94000010063b80200885458b202100243604259
-b12601885158b94000020063b80400885458b202400243604259b94000040063b80800885458
-b202800243604259b12801885158b94000080063b81000885458ba0002010000024360425959
-5959595959b10002435458400a0540084009400c020d021bb10102435458b2054008ba010000
-090100b30c010d011bb18002435258b2054008b80180b109401bb901000002435258b2054008
-ba0180000901401bb901800002435258b2054008b80200b109401bb2054008ba010000090100
-595959b9400000808855b94000020063b8040088555a58b30c000d011bb30c000d0159595942
-424242422d2c451868234b51582320452064b04050587c59688a6059442d2cb00016b00225b0
-022501b001233e00b002233eb10102060cb00a236542b00b234201b001233f00b002233fb101
-02060cb006236542b0072342b00116012d2c20b82000628a6023622d2cb0072558001b0159b0
-042510b00325b0022520b8ffff545821cd1bed5921b006255cb006255a58b0092b5920b00525
-4ab0042547b004254760b0062547b0806361b00225b0005558b00325b00725496359b0082558
-001b0159b00425b0062549b009255cb009255a58b0092b59b0072546b0806361b0032520b000
-5558631b2159612320b0005558b080631b21b08059b0592bb006255c586959b00425202010b0
-0048233ab0062658001b0159b0052658b003252f598a12233221212d2cb00625b00a2587b006
-25b009254ab0005358b00625b00a251bb00925b0072559b00225b00225070cb005256323b006
-25636020b94000040063535821b00426b00426b00a1bb94000040063655158b0042665b00426
-65b00a1bb00426b00426b000b00325b003250b0d0ab0092eb00725b007250b0d0ab00b2eb005
-25b0052507595920b0005558b00525b0052587b00725b007250bb0092510b00b25b0092620b8
-ffff545821cd1bed59b00525b0052507b00825b00b254923b00625b0062587b00a2510b00b25
-c15920b00051b800522378b00161b00225b00725b0072507b00a25b00d254961b08062b00525
-b005250bb00a252338b00625b0062587b00825b008250bb00a2510b00b25c4b00625b0062507
-b00925b00c2549b0032554b8ffa723792121212121212121212121212d2c23b0005458b94000
-00001bb900004000598ab0005458b9400000001bb90000400059b05b2b2d2c08b0005458b940
-0000001bb900004000590db05b2b2d2c8a8a080d8ab0005458b9400000001bb90000400059b0
-5b2b2d2cb00426b00426080db00426b00426080db05b2b2d2cb0022563b0206066b00225b820
-00626023622d2c204569442d2c234ab1024e2b2d2c234ab1014e2b2d2c238a4a234564b00225
-64b002256164b00343525821206459b1024e2b23b000505865592d2c238a4a234564b0022564
-b002256164b00343525821206459b1014e2b23b000505865592d2c20b003254ab1024e2b8a10
-3b2d2c20b003254ab1014e2b8a103b2d2cb00325b003258ab0672b8a103b2d2cb00325b00325
-8ab0682b8a103b2d2cb0032546b003254660b004252eb00425b00425b0042620b000505821b0
-6a1bb06c592bb0032546b00325466061b08062208a2010233a232010233a2d2cb0032547b003
-254760b0052547b0806361b00225b00625496323b005254ab080632058621b2159b004264660
-8a468a4660b02063612d2cb00426b00425b00425b00426b06e2b208a2010233a232010233a2d
-2c2320b001545821b00225b1024e2bb0805020605920606020b001515821211b20b005515821
-206661b0402361b100032550b00325b00325505a5820b00325618a535821b000591b21591bb0
-0754582066616523211b2121b000595959b1024e2b2d2cb00225b004254ab0005358b0001b8a
-8a238ab00159b004254620666120b00526b0062649b00526b00526b0702b236165b020602066
-61b02061652d2cb0022546208a20b000505821b1024e2b1b452321596165b00225103b2d2cb0
-042620b802006220b80200638a236120b05d602bb00525118a128a20398a58ba005d10000004
-266356602b23212010204620b1024e2b23611b2321208a201049b1024e2b593b2d2cba005d10
-000009256356602bb00525b00525b00526b06d2bb15d0725602bb00525b00525b00525b00525
-b06f2bba005d10000008266356602b20b0005258b0502bb00525b00525b00725b00725b00525
-b0712bb0021738b00052b00225b001525a58b00425b0062549b00325b00525496020b0405258
-211bb000525820b0025458b00425b00425b00725b0072549b00217381bb00425b00425b00425
-b0062549b0021738595959595921212121212d2cb12801885158b94000040063b8080088545c
-1bb001592d2cb12801885158b94000040063b8080088545c1bb001592d000001000000063ae1
-12a8df8f5f0f3cf50019080000000000bbeb7ccc00000000d749774ffbfafd8009ec08360000
-00090002000100000000000100000600fe0001c40aa0fbfafaa009ec00010000000000000000
-000000000000001b040e00000205009703c4003503fb005d02ae0021045a00ac044400610522
-00aa045800ac03e800ac052a00ac03e6000f03ad004704fc00ac06d700ac04a10023050c005b
-054c0063066400990438005a039d002202ca009903d5005c01d6008504340099043400990321
-00510000000000000180000001d8000003f8000005780000069c000008380000096800000a9c
-00000c2000000d5000000ea800000f9000001178000012e80000146c000015c8000017540000
-186800001a6000001ba000001d3800001e4c00001ff0000020fc00002244000023a400002574
-00010000001b043a00170118000800020010002f00870000123624eb00070001b10903415302
-c802c60038001f02c702c60038001f02dd003802da005502d9003802d7005502d8003802d700
-5502d6003802d5005502d4003802d3005502d2003802d1005502bf003802be005502bd003802
-bc0055000402db003402db005402db0003003402db005402db006402db00a402db00d402db00
-05006b02d50001000b02d10001001402c2004402c2006402c2007402c2009402c2000500a402
-be000100a402bc000100200284b40918014a20b80283b40918014a20b80282b40918014a20b8
-0281b40918014a20b80280b40918014a20b8027fb40918014a20b8027eb40918014a20b8027d
-b40918014a20b8027cb40918014a20b8027bb40918014a20b8027ab40918014a20b80279b409
-18014a20b80278b40918014a20b80277b40918014a20b80276b40918014a20b80275b4091801
-4a20b80274b40918014a20b80273b40918014a20b80271b40918014a20b80270b40918014a20
-b8026fb40918014a20b8026eb40918014a20b8026db40918014a20b8026cb40918014a20b802
-6bb40918014a20b8026ab40918014a20b80269b40918014a20b80268b40918014a20b80267b4
-0918014a20b80266b40918014a20b80265b40918014a20b80264b40918014a20b80263b40918
-014a20b80262b40918014a20b80261b40918014a20b80260b40918014a20b8025fb40918014a
-20b8025eb40918014a20b8025db40918014a20b8025cb40918014a20b8025bb40918014a20b8
-025ab40918014a20b80259b40918014a20b80258b40918014a20b80257b40918014a20b80256
-b40918014a20b80255b40918014a20b80254b40918014a20b80253b40918014a20b80252b409
-18014a20b80251b40918014a20b80250b40918014a20b8024fb40918014a20b8024eb4091801
-4a20b8024db40918014a20b8024cb40918014a20b8024bb40918014a20b8024ab40918014a20
-b80249b40918014a20b80248b40918014a20b80247b40918014a20b80246b40918014a20b802
-45b40918014a20b80244b40918014a20b80243b40918014a20b80242b40918014a20b80241b4
-0918014a20b80240b40918014a20b8023fb40918014a20b8023eb40918014a20b8023db40918
-014a20b8023cb40918014a20b8023bb40918014a20b8023ab40918014a20b80239b40918014a
-20b80238b40918014a20b80237b40918014a20b80236b40918014a20b80235b40918014a20b8
-0234b40918014a20b80233b40918014a20b80232b40918014a20b80231b40918014a20b80230
-b40918014a20b8022fb40918014a20b8022eb40918014a20b8022db40918014a20b8022cb409
-18014a20b8022bb40918014a20b8022ab40918014a20b80229b40918014a20b80228b4091801
-4a20b80227b40918014a20b80226b40918014a20b80225b40918014a20b80224b40918014a20
-b80223b40918014a20b80222b40918014a20b80221b40918014a20b80220b40918014a20b802
-1fb40918014a20b8021eb40918014a20b8021db40918014a20b8021cb40918014a20b8021bb4
-0918014a20b8021ab40918014a20b80219b40918014a20b80218b40918014a20b80217b40918
-014a20b80216b40918014a20b80215b40918014a20b80214b40918014a20b80213b40918014a
-20b80212b40918014a20b80211b40918014a20b80210b40918014a20b8020fb40918014a20b8
-020eb40918014a20b8020db40918014a20b8020cb40918014a20b8020bb40918014a20b8020a
-b40918014a20b80209b40918014a20b80208b40918014a20b80207b40918014a20b80206b409
-18014a20b80205b40918014a20b80204b40918014a20b80203b40918014a20b80202b4091801
-4a20b80201b40918014a20b80200b40918014a20b801ffb40918014a20b801feb40918014a20
-b801fdb40918014a20b801fcb40918014a20b801fbb40918014a20b801fab40918014a20b801
-f9b40918014a20b801f8b40918014a20b801f7b40918014a20b801f6b40918014a20b801f5b4
-0918014a20b801f4b40918014a20b801f3b40918014a20b801f2b40918014a20b801f1b40918
-014a20b801f0b40918014a20b801efb40918014a20b801eeb40918014a20b801edb40918014a
-20b801ecb40918014a20b801ebb40918014a20b801eab40918014a20b801e9b40918014a20b8
-01e8b40918014a20b801e7b40918014a20b801e6b40918014a20b801e5b40918014a20b801e4
-b40918014a20b801e3b40918014a20b801e2b40918014a20b801e1b40918014a20b801e0b409
-18014a20b801dfb40918014a20b801deb40918014a20b801ddb40918014a20b801dcb4091801
-4a20b801dbb40918014a20b801dab40918014a20b801d9b40918014a20b801d8b40918014a20
-b801d7b40918014a20b801d6b40918014a20b801d5b40918014a20b801d4b40918014a20b801
-d3b40918014a20b801d2b40918014a20b801d1b40918014a20b801d0b40918014a20b801cfb4
-0918014a20b801ceb40918014a20b801cdb40918014a20b801ccb40918014a20b801cbb40918
-014a20b801cab40918014a20b801c9b40918014a20b801c8b40918014a20b801c7b40918014a
-20b801c6b40918014a20b801c5b40918014a20b801c4b40918014a20b801c3b40918014a20b8
-01c2b40918014a20b801c1b40918014a20b801c0b40918014a20b801bfb40918014a20b801be
-b40918014a20b801bdb40918014a20b801bcb40918014a20b801bbb40918014a20b801bab409
-18014a20b801b9b40918014a20b801b8b40918014a20b801b7b40918014a20b801b6b4091801
-4a20b801b5b40918014a20b801b4b40918014a20b801b3b40918014a20b801b2b40918014a20
-b801b1b40918014a20b801b0b40918014a20b801afb40918014a20b801aeb40918014a20b801
-adb40918014a20b801acb40918014a20b801abb40918014a20b801aab40918014a20b801a9b4
-0918014a20b801a8b40918014a20b801a7b40918014a20b801a6b40918014a20b801a5b40918
-014a20b801a4b40918014a20b801a3b40918014a20b801a2b40918014a20b801a1b40918014a
-20b801a0b40918014a20b8019fb40918014a20b8019eb40918014a20b8019db40918014a20b8
-019cb40918014a20b8019bb40918014a20b8019ab40918014a20b80199b40918014a20b80198
-b40918014a20b80197b40918014a20b80196b40918014a20b80195b40918014a20b80194b409
-18014a20b80193b40918014a20b80192b40918014a20b80191b40918014a20b80190b4091801
-4a20b8018fb40918014a20b8018eb40918014a20b8018db40918014a20b8018cb40918014a20
-b8018bb40918014a20b8018ab40918014a20b80189b40918014a20b80188b40918014a20b801
-87b40918014a20b80186b40918014a20b80185b40918014a20b80184b40918014a20b80183b4
-0918014a20b80182b40918014a20b80181b40918014a20b80180b40918014a20b8017fb40918
-014a20b8017eb40918014a20b8017db40918014a20b8017cb40918014a20b8017bb40918014a
-20b8017ab40918014a20b80179b40918014a20b80178b40918014a20b80177b40918014a20b8
-0176b40918014a20b80175b40918014a20b80174b40918014a20b80173b40918014a20b80172
-b40918014a20b80171b40918014a20b80170b40918014a20b8016fb40918014a20b8016eb409
-18014a20b8016db40918014a20b8016cb40918014a20b8016bb40918014a20b8016ab4091801
-4a20b80169b40918014a20b80168b40918014a20b80167b40918014a20b80166b40918014a20
-b80165b40918014a20b80164b40918014a20b80163b40918014a20b80162b40918014a20b801
-61b40918014a20b80160b40918014a20b8015fb40918014a20b8015eb40918014a20b8015db4
-0918014a20b8015cb40918014a20b8015bb40918014a20b8015ab40918014a20b80159b40918
-014a20b80158b40918014a20b80157b40918014a20b80156b40918014a20b80155b40918014a
-20b80154b40918014a20b80153b40918014a20b80152b40918014a20b80150b40918014a20b8
-014fb40918014a20b8014eb40918014a20b8014cb40918014a20b8014bb40918014a20b8014a
-b40918014a20b80149b40918014a20b80148b40918014a20b80147b40918014a20b80146b409
-18014a20b80145b40918014a20b80144b40918014a20b80143b30918014ab80284b21e3e1fb8
-0283b21e151fb80282b21e3e1fb80281b21e3a1fb80280b21e3e1fb8027fb21e3e1fb8027eb2
-1e0c1fb8027db21e3e1fb8027cb21e3e1fb8027bb21e3e1fb8027ab21e3e1fb80279b21d411f
-b80278b21d431fb80277b21d431fb80276b21d431fb80275b21d411fb80274b21d431fb80273
-b21d431fb80272b21d411fb80271b21d421fb80270b21d421fb8026fb21d421fb8026eb21d43
-1fb8026db21d431fb8026cb21d431fb8026bb21c451fb8026ab21c451fb80269b21c451fb802
-68b21c451fb80267b21c451fb80266b21c441fb80265b21c451fb80264b21c451fb80263b21c
-451fb80262b21c451fb80261b21c451fb80260b21c451fb8025fb21c451fb8025eb21c441fb8
-025db21c451fb8025cb21c451fb8025bb21c451fb8025ab21c451fb80259b21c451fb80258b2
-1c451fb80257b21c451fb80256b21c451fb80255b21c451fb80254b21c451fb80253b21c451f
-b80252b21c451fb80251b21c451fb80250b21c451fb8024fb21c451fb8024eb21c451fb8024d
-b21c451fb8024cb21c451fb8024bb21c451fb8024ab21b491fb80249b21b491fb80248b21b4a
-1fb80247b21b4a1fb80246b21b4b1fb80245b21b4c1fb80244b21b4c1fb80243b21b4c1fb802
-42b21b4b1fb80241b21b491fb80240b21b491fb8023fb21b4a1fb8023eb21b4a1fb8023db21b
-4a1fb8023cb21b4b1fb8023bb21b4b1fb8023ab21b4c1fb80239b21b4c1fb80238b21b4c1fb8
-0237b21b4c1fb80236b21b4c1fb80235b21b491fb80234b21b491fb80233b21b4a1fb80232b2
-1b4a1fb80231b21b4a1fb80230b21b4b1fb8022fb21b4b1fb8022eb21b4c1fb8022db21b4c1f
-b8022cb21b4c1fb8022bb21b4c1fb8022ab21b4c1fb80229b21b4c1fb80228b21b4c1fb80227
-b21b491fb80226b21b491fb80225b21b4a1fb80224b21b4a1fb80223b21b4a1fb80222b21b4b
-1fb80221b21b4b1fb80220b21b4c1fb8021fb21b4c1fb8021eb21b4c1fb8021db21b4c1fb802
-1cb21b4c1fb8021bb21b4c1fb8021ab21a4e1fb80219b21a4e1fb80218b21a4f1fb80217b21a
-4f1fb80216b21a4e1fb80215b21a4e1fb80214b21a4f1fb80213b21a4f1fb80212b21a4f1fb8
-0211b21a4e1fb80210b21a4e1fb8020fb21a4f1fb8020eb21a4f1fb8020db21a4f1fb8020cb2
-1a4e1fb8020bb21a4e1fb8020ab21a4e1fb80209b21a4f1fb80208b21a4f1fb80207b21a4f1f
-b80206b219501fb80205b219511fb80204b219511fb80203b219501fb80202b219511fb80201
-b219511fb80200b219511fb801ffb219511fb801feb219501fb801fdb219511fb801fcb21951
-1fb801fbb219511fb801fab219501fb801f9b219511fb801f8b219511fb801f7b219511fb801
-f6b219511fb801f5b218541fb801f4b218531fb801f3b218541fb801f2b218541fb801f1b218
-541fb801f0b218531fb801efb218541fb801eeb218541fb801edb218541fb801ecb218531fb8
-01ebb218531fb801eab218541fb801e9b218541fb801e8b218541fb801e7b218541fb801e6b2
-18531fb801e5b218541fb801e4b218531fb801e3b218541fb801e2b218541fb801e1b218541f
-b801e0b218531fb801dfb218531fb801deb218541fb801ddb218541fb801dcb218541fb801db
-b218541fb801dab218531fb801d9b218541fb801d8b218541fb801d7b217571fb801d6b21756
-1fb801d5b217561fb801d4b217571fb801d3b217571fb801d2b217571fb801d1b217571fb801
-d0b217561fb801cfb217561fb801ceb217571fb801cdb217571fb801ccb217571fb801cbb217
-571fb801cab217561fb801c9b217561fb801c8b217571fb801c7b217571fb801c6b217571fb8
-01c5b217571fb801c4b217571fb801c3b217561fb801c2b217571fb801c1b217571fb801c0b2
-17571fb801bfb217561fb801beb217561fb801bdb217571fb801bcb217571fb801bbb217571f
-b801bab217571fb801b9b217571fb801b8b217561fb801b7b217571fb801b6b217571fb801b5
-b217571fb801b4b217571fb801b3b2163f1fb801b2b2165b1fb801b1b2165b1fb801b0b2165b
-1fb801afb2165b1fb801aeb2165b1fb801adb2165b1fb801acb2165b1fb801abb2165b1fb801
-aab2163e1fb801a9b2163f1fb801a8b2163f1fb801a7b2165b1fb801a6b2165b1fb801a5b216
-5b1fb801a4b2165b1fb801a3b2165b1fb801a2b2165b1fb801a1b2165b1fb801a0b2165b1fb8
-019fb2163e1fb8019eb2163f1fb8019db2163f1fb8019cb2165b1fb8019bb2165b1fb8019ab2
-165b1fb80199b2165b1fb80198b2163e1fb80197b2165b1fb80196b2165b1fb80195b2165b1f
-b80194b2163e1fb80193b2163f1fb80192b2163f1fb80191b2165b1fb80190b2165b1fb8018f
-b2165b1fb8018eb2165b1fb8018db2165b1fb8018cb2163f1fb8018bb2165b1fb8018ab2165b
-1fb80189b2165b1fb80188b2165b1fb80187b2165b1fb80186b215611fb80185b215621fb801
-84b215621fb80183b215661fb80182b215661fb80181b215551fb80180b215451fb8017fb215
-361fb8017eb215361fb8017db215611fb8017cb215621fb8017bb215621fb8017ab215641fb8
-0179b215661fb80178b215661fb80177b215661fb80176b215661fb80175b215661fb80174b2
-15661fb80173b215451fb80172b215621fb80171b215621fb80170b215631fb8016fb215641f
-b8016eb215661fb8016db215661fb8016cb215661fb8016bb215661fb8016ab215661fb80169
-b215621fb80168b215621fb80167b215611fb80166b215641fb80165b215641fb80164b21566
-1fb80163b215661fb80162b215661fb80161b215661fb80160b215661fb8015fb215661fb801
-5eb215551fb8015db215451fb8015cb215451fb8015bb215361fb8015ab215611fb80159b215
-621fb80158b215621fb80157b215631fb80156b215641fb80155b215661fb80154b215661fb8
-0153b215661fb80152b215661fb80151b214401fb80150b214551fb8014fb214561fb8014eb2
-14831fb8014db2142d1fb8014cb214401fb8014bb214401fb8014ab214411fb80149b214401f
-b80148b214401fb80147b214411fb80146b2147e1fb80145b214871fb80144b2147f1fb80143
-b214801fb80142b212461fb80141b212461fb80140b212461fb8013fb212461fb8013eb21244
-1fb8013db212461fb8013cb211591fb8013bb211591fb8013ab2115b1fb80139b2115b1fb801
-38b211471fb80137b211581fb80136b2115a1fb80135b2115b1fb80134b2115b1fb80133b211
-2c1fb80132b211471fb80131b211551fb80130b211571fb8012fb211571fb8012eb211581fb8
-012db211591fb8012cb211591fb8012bb2115a1fb8012ab2115a1fb80129b2115b1fb80128b2
-115b1fb80127b2115b1fb80126b2115b1fb80125b211561fb80124b211561fb80123b211571f
-b80122b211581fb80121b211591fb80120b2115a1fb8011fb2115a1fb8011eb2115b1fb8011d
-b2115b1fb8011cb2115b1fb8011bb2115b1fb8011ab2115b1fb80119b2105d1fb80118b2105e
-1fb80117b2105f1fb80116b2105f1fb80115b2105f1fb80114b2105f1fb80113b2105f1fb801
-12b2105d1fb80111b2105e1fb80110b2105f1fb8010fb2105f1fb8010eb2105f1fb8010db210
-5f1fb8010cb2105d1fb8010bb2105e1fb8010ab2105f1fb80109b2105f1fb80108b2105f1fb8
-0107b2105f1fb80106b2105d1fb80105b2105e1fb80104b2105f1fb80103b2105f1fb80102b2
-105f1fb80101b2105f1fb8010040ff0f621fff0f621ffe0f631ffd0f641ffc0f621ffb0f621f
-fa0f621ff90f631ff80f641ff70f641ff60f641ff50f641ff40f621ff30f621ff20f631ff10f
-641ff00f641fef0f641fee0f641fed0f621fec0f621feb0f631fea0f641fe90f641fe80f641f
-e70f641fe60e671fe50e681fe40e681fe30e681fe20e681fe10e671fe00e681fdf0e681fde0e
-681fdd0e671fdc0e681fdb0e681fda0e681fd90e681fd80d6b1fd70d311fd60d6b1fd50d6c1f
-d40d261fd30d261fd20d6c1fd10d2b1fd00d2b1fcf0d2b1fce0d6b1fcd0d6c1fcc0d6d1fcb0d
-6b1fca0d6c1fc90d6d1fc80d6a1fc70d691fc60d681fc50d671fc40d261fc30d311fc20d311f
-c10d311f40ffc00d311fbf0d311fbe0d311fbd0c711fbc0c721fbb0c731fba0c741fb90c741f
-b80c741fb70c711fb60c711fb50c721fb40c731fb30c741fb20c741fb10c741fb00c741faf0b
-791fae0b7a1fad0b7c1fac0b7d1fab0b7e1faa0b7e1fa90b7e1fa80b7e1fa70b7e1fa60b7e1f
-a50b2d1fa40b7e1fa30b7e1fa20b791fa10b7e1fa00b6b1f9f0b791f9e0b7e1f9d0b7e1f9c0b
-791f9b0b7a1f9a0b7c1f990b7d1f980b7e1f970b7e1f960b7e1f950b7e1f940b7e1f930b7e1f
-920b6b1f910b2d1f900a4e1f8f0a4f1f8e0a671f8d0aa51f8c0aa71f8503251f8403381f8301
-381f8255805581ab80557f557d557eab7d550b7d010b7d1b7d4b7d7b7dab7ddb7d4012060a7c
-557a557bab7a557955775578ab7755ba028600660285403c5576ab755504751475747503f475
-01ab750144750130750102007510752075030c7455725573ab7255007250728072b072043bb0
-72e072020072010ab8ffc0b3721b1e46b8ffc0407c720d104671556f5570ab6f556e666d556a
-03251f6938675568ab67556638645565ab645563386255613860555f385d555eab5d555c385a
-555bab5a55593858555703251f5638545555ab54555338515552ab51554f384e554e03251f4d
-384b554cab4b554a38485549ab4855473846554503381f001c101c201c0310b8ffc0404e1c1b
-1e46001b0142301b401be01bf01b04001bb01bc01b03120f1a1f1a02290f1901434f19016f19
-7f198f19030f18cf18024018292c460f17cf17df17ef1704134017292e460016101620160315
-b8ffc0b3164d5446b8ffc0b3163f4446b8ffc0b316313546b8ffc0401f162326460f15010f15
-1f150245ef1501860003012001010001100120010308b8ffc0b401151f4603bd010001000005
-0001019000542b4bb80800524bb008505bb00188b02553b00188b040515ab00688b000555a5b
-58b101018e59b101024354b0144b515a58b101018e59858d8d001d424bb01d5358b203a0a01d
-42594bb0805358b20340401d42594bb0ff5358b20300001d42592b5e7375732b58403d0011e0
-11f0110315bf10cf10020f0f010f0fff0f02400f3135460f0e1f0e020f0e1f0eff0e03400e31
-37460f0d1f0d020f0d1f0dff0d0316400d313746b8ffc040270c5054460f0b1f0b02553f0b4f
-0b02400b3f4346400b2d30460003012001010001100120010308b8ffc0b301151f462b5e7375
-732b2b745e732b2b5e73742b73742b7374745e735901755e73742b2b2b2b5e732b5e732b7374
-755e735e735e73755e732b5e73002b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b5e73755e732b2b5e735f73737373742b2b2b2b2b2b5e73742b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b012b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2bb1000243545841ff02840064028300640282006402810064028000
-64027f0064027e0064027d0064027c0064027b0064027a006402790064027800640277006402
-7600640275006402740064027300640271006402700064026f0064026e0064026d0064026c00
-64026b0064026a00640269006402680064026700640266006402650064026400640263006402
-6200640261006402600064025f0064025e0064025d0064025c0064025b0064025a0064025900
-6402580064025700640256006402550064025400640253006402520064025100640250006402
-4f0064024e0064024d0064024c0064024b0064024a0064024900640248006402470064024600
-64024500640244006402430064024200640241006402400064023f0064023e0064023d006402
-3c0064023b0064023a0064023900640238006402370064023600640235006402340064023300
-64023200640231006402300064022f0064022e0064022d0064022c0064022b0064022a006402
-2900640228006402270064022600640225006402240064022300640222006402210064022000
-64021f0064021e0064021d0064021c0064021b0064021a006402190064021800640217006402
-160064021500640214006402130064021200640211006402100064020f0064020e0064020d00
-64020c0064020b0064020a00640209006402080064020700640206006402050064020441ff00
-640203006402020064020100640200006401ff006401fe006401fd006401fc006401fb006401
-fa006401f9006401f8006401f7006401f6006401f5006401f4006401f3006401f2006401f100
-6401f0006401ef006401ee006401ed006401ec006401eb006401ea006401e9006401e8006401
-e7006401e6006401e5006401e4006401e3006401e2006401e1006401e0006401df006401de00
-6401dd006401dc006401db006401da006401d9006401d8006401d7006401d6006401d5006401
-d4006401d3006401d2006401d1006401d0006401cf006401ce006401cd006401cc006401cb00
-6401ca006401c9006401c8006401c7006401c6006401c5006401c4006401c3006401c2006401
-c1006401c0006401bf006401be006401bd006401bc006401bb006401ba006401b9006401b800
-6401b7006401b6006401b5006401b4006401b3006401b2006401b1006401b0006401af006401
-ae006401ad006401ac006401ab006401aa006401a9006401a8006401a7006401a6006401a500
-6401a4006401a3006401a2006401a1006401a00064019f0064019e0064019d0064019c006401
-9b0064019a006401990064019800640197006401960064019500640194006401930064019200
-640191006401900064018f0064018e0064018d0064018c0064018b0064018a00640189006401
-8800640187006401860064018500644180018400640183006401820064018100640180006401
-7f0064017e0064017d0064017c0064017b0064017a0064017900640178006401770064017600
-64017500640174006401730064017200640171006401700064016f0064016e0064016d006401
-6c0064016b0064016a0064016900640168006401670064016600640165006401640064016300
-64016200640161006401600064015f0064015e0064015d0064015c0064015b0064015a006401
-5900640158006401570064015600640155006401540064015300640152006401500064014f00
-64014e0064014c0064014b0064014a0064014900640148006401470064014600640145006401
-440064014300642b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b592b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-00737373737373742b2b2b2b2b2b2b2b2b2b185f5e0000>
-] def
-/f-0-0 currentdict end definefont pop
-%%EndResource
-%%BeginResource: font Calibri
-11 dict begin
-/FontType 42 def
-/FontName /Calibri def
-/PaintType 0 def
-/FontMatrix [ 1 0 0 1 0 0 ] def
-/FontBBox [ 0 0 0 0 ] def
-/Encoding 256 array def
-0 1 255 { Encoding exch /.notdef put } for
-Encoding 1 /g1 put
-/CharStrings 2 dict dup begin
-/.notdef 0 def
-/g1 1 def
-end readonly def
-/sfnts [
-<00010000000900800003001063767420b970d835000003a8000005bc6670676d7ede03370000
-096400000d2b676c7966a192c6df0000009c0000030c68656164f84d79b10000169000000036
-686865610dad0345000016c800000024686d74780ece0042000016ec000000106c6f63610000
-08d4000016fc000000146d61787012f82a6f0000171000000020707265701367221900001730
-000024eb00050000fe7303d2050e000300070039004d004e0097b0852b58bc000d0152001600
-3a01b5b5154444082d07be0143000200200154000800010143400f04020db71a1a3f23b73506
-8d031149b8012db43f078d0202003ffddefdce2ffddeed12392fed012fdde1dee110f1ce1139
-2f33e1d4e131301b40141a0db76c1a1a3f3523b76c3503068d6c03113f49b8012d40096c3f40
-02078d6c020200183f2b1ace2bce2f2bce2b12392f2b303159011121110111211101140e0207
-07140623222e02352726363333323e0235342623220e0223222e02353436373e0333321e0203
-140e0223222e0235343e0233321e020103d2fc5a034ffd06027e233f5633051e1a0f140d0605
-021c18122d3c2510535b253c2e1d0703070603050807283742224b6c4522da07111d15161d12
-0808121d16151d1107fddb050efaf2050efb43046cfb9403063b5c3f2403980a0802040606b8
-1e18192a3b2149560f1310040b13101116080712110c28445cfd86151c120808121c15151d12
-0808121dfd4d0000ffff0021ffef03ef052f02260002000000070003029e000000010021ffef
-03dc04ad00410068b0852b58b22f4110b801f8b42b1e1e2b0fb801f9400c03352b4148102bed
-3b354814b80104b3254d094c003f3fed3fcded323f012f32dde112392f10e1322f31301b400d
-414810352bed6c3b4035482514b80104b46c254d094c00183f3f2b3f1acd2b323f3031590132
-161511140e0223222e0235112111141633323e0233321e0215140e0423222e02351123222635
-343e02333335343e0233321e02151503a81e160813201719201308fe2f374717241c14080509
-0504081020292e174664401d7e0f1205080d087d071320181920120803b71b1afc97080b0804
-04080b080315fe0a5d5f090a09050e18121d21110e0906254b734e020e2024131a1107d6070c
-090404090c07d6000002000003b70151052f000b000c0028b0852b58b900000271b40609030c
-48003fdecd012fe131301bb40903400c4800183f1adecd303159011406232226353436333216
-0101512c3b3a2b2c3b3a2bfeaf04cd3a2a29393a2a29feb10000079e0000fe93000000000000
-0000000000000050006a0073008000800086008d009300bf00db006200830093009900a000a6
-00a900b000c100c900d700000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000000000000000
-00000000000000000000fe79056d000c03b7000600130000fffaffedfea6ffedfeb8050e0006
-00130000fffaffedfe93050e00130420000600130000fffaffedff10ffee050e001304200006
-00130000fffaffeefe93ff10feb80612000a050e0006000d02d2fffafff301fdfffa023f0006
-000dff36fffafff302870006000f0000fffafff1079efeaffea7000000000000000000000000
-00500051005a005b005c005d006000610062006400680069006a006b006c006d006e00680069
-006e00600067006e00660068005f00610063006400660068006a006b006c006d006e006f0070
-006f00720074007500760076007000720073007400750076006f007000710072007300750077
-007700780079007a007b007c007d007b007c007d00770079007a007c0078007a007c007d0078
-007d007e007f008000810082007e007f00810082007e007f0080008100820083008400850086
-0087008800890083008400850086008700880089008300840085008600870088008900890086
-008700880089008a008b008c008d008e008f008a008b008c008d008e008f008a008b008c008d
-008e008f008d008a008b008c008d008e008f0090009000910092009300940095009600980099
-009b009c0090009100920093009400950096009700980099009a009e009f00a6009000910095
-0098009f009000910096009700bc00c600b500ae00af00b6006800690063006a006f00700071
-006f0070007100720066006c006d00700079007c007f00830086008700880089008a00740075
-00760077007a007b007c007d007e008200850086008a0088008900830078007b008200830086
-00870088008900760079007a007c007d007e0083008500880089008a0073007400750077007a
-007d00880089008a008b008c008d008e00900094008b008c008d00910092009300940095008c
-008d00910095008f009000910092009300940095008b008c008d008e008f0090009100920093
-00940095008b008c008d008e008f00900091009200930096009700980099009c009600970098
-0099009a009b009c00960099009a009c0096009700980099009a009b009c009700980099009a
-009b009c009700980099009a009b009c0096009d00a000a1009d009e009f00a000a100a2009d
-009f00a000a1009f00a2009d009e009f00a000a100a2009d009e00a000a1009d009e00a000a2
-009d00a300a400a500a600a700a300a400a600a700a300a400a500a600a700a600a300a700a8
-00a900aa00ab00ac00ac00a800a900aa00ab00ac00a800a900aa00ab00ac00a800aa00ab00ac
-00ae00ad00ae00af00b000b100b200b300b400b500b600b700b800ad00ae00ad00ae00af00b0
-00b100b200b300b400b500b600b700b800ad00ae00af00b000b100b200b300b400b500b600b7
-00b800b300ae00af00b000b200b500b600b700b800b900ba00bb00bc00be00c000c100c200c2
-00b900ba00bb00bc00bd00be00bf00c000c100c200c400ba00bb00be00bf00c000c200c300c4
-00b900ba00bf00c000c200c600c700c900ca00cb00cc00cf00c500c700ce00c500c700c800cf
-00d000d200d300d7010d00d000d100e900d000fd00d005e4000e0041000005ba009c009c005e
-005e000000000000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000000051a001500a0fff8ff77fff803480066015401cc
-00ac00a200b4008c0101006e00000000000000000000011f000a04e2001400b4fff6035c0014
-0028fdda0568fea2ffef405a868574737271706f6e6d6c6b6a696867666564625f5e5d5c5b5a
-59585554535251504f4e4d4c4b4a494847464544434241403f3e3d3c3b3a39383736352f2e2d
-2c2826252423221f181411100f0d0b0a090807060504030201002c4523466020b02660b00426
-2348482d2c452346236120b02661b004262348482d2c45234660b0206120b04660b004262348
-482d2c4523462361b0206020b02661b02061b004262348482d2c45234660b0406120b06660b0
-04262348482d2c4523462361b0406020b02661b04061b004262348482d2c0110203c003c2d2c
-20452320b0cd442320b8015a51582320b08d44235920b0ed51582320b04d44235920b0042651
-582320b00d44235921212d2c20204518684420b001602045b04676688a4560442d2c01b10b0a
-432343650a2d2c00b10a0b4323430b2d2c00b0282370b101283e01b0282370b10228453ab102
-00080d2d2c2045b00325456164b050515845441b2121592d2c2045b0004360442d2c01b00643
-b00743650a2d2c2069b04061b0008b20b12cc08a8cb8100062602b0c642364615c58b0036159
-2d2c8a03458a8a87b0112bb0292344b0297ae4182d2c4565b02c234445b02b23442d2c4b5258
-45441b2121592d2c01b005251023208af500b0016023edec2d2c01b005251023208af500b001
-6123edec2d2c01b0062510f500edec2d2c20b001600110203c003c2d2c20b001610110203c00
-3c2d2c00b00743b006430b2d2c21210c6423648bb84000622d2c21b08051580c6423648bb820
-00621bb200402f2b59b002602d2c21b0c051580c6423648bb81555621bb200802f2b59b00260
-2d2c0c6423648bb84000626023212d2c4523456023456023456023766818b08062202d2cb004
-26b00426b00425b0042545234520b003266062636820b0032661658a2344442d2c2045b00054
-58b040442045b04061441b2121592d2c45b1302f4523456160b0016069442d2c4b5158b02f23
-70b01423421b2121592d2c4b515820b0032545695358441b2121591b2121592d2c45b01443b0
-006063b0016069442d2cb02f45442d2c452320458a60442d2c45234560442d2c4b235158b900
-33ffe0b134201bb3330034005944442d2cb0164358b00326458a586466b01f601b64b0206066
-20581b21b04059b001615923586559b02923442310b029e01b2121212121592d2cb0164358b0
-04254564b020606620581b21b04059b0016123586559b0292344b00425b00725082058021b03
-59b0052510b004252046b0042523423cb0072510b006252046b00425b0016023423c2058011b
-0059b0052510b00425b029e0b0072510b00625b029e0b00425b00725082058021b0359b00425
-b003254348b00625b00325b0016043481b2159212121212121212d2cb0164358b004254564b0
-20606620581b21b04059b0016123581b6559b0292344b00525b00825082058021b0359b00425
-10b005252046b0042523423cb00425b0072508b0072510b006252046b00425b0016023423c20
-58011b0059b0042510b00525b029e0b02920456544b0072510b00625b029e0b00525b0082508
-2058021b0359b00525b003254348b00425b0072508b00625b00325b0016043481b2159212121
-212121212d2c02b00425202046b004252342b0052508b003254548212121212d2c02b0032520
-b0042508b0022543482121212d2c452320451820b00050205823652359236820b040505821b0
-4059235865598a60442d2c4b53234b515a5820458a60441b2121592d2c4b545820458a60441b
-2121592d2c4b53234b515a58381b2121592d2cb000214b5458381b2121592d2cb002435458b0
-462b1b21212121592d2cb002435458b0472b1b212121592d2cb002435458b0482b1b21212121
-592d2cb002435458b0492b1b212121592d2c2320b000508a8a64b10003255458b0401bb10103
-255458b005438b59b04f2b5923b0622b2321235865592d2cb108000c215460432d2c01462346
-6023466123201020468a61b8ff80628ab140408a704560683a2d2c208a2349648a2353583c1b
-21592d2c4b52587d1b7a592d2cb012004b014b54422d2cb1020042b123018851b1400188535a
-58b910000020885458b202010243604259b12401885158b920000040885458b2020202436042
-b12401885458b2022002436042004b014b5258b2020802436042591bb940000080885458b202
-040243604259b94000008063b80100885458b202080243604259b94000010063b80200885458
-b202100243604259b12601885158b94000020063b80400885458b202400243604259b9400004
-0063b80800885458b202800243604259b12801885158b94000080063b81000885458ba000201
-00000243604259595959595959b10002435458400a0540084009400c020d021bb10102435458
-b2054008ba010000090100b30c010d011bb18002435258b2054008b80180b109401bb9010000
-02435258b2054008ba0180000901401bb901800002435258b2054008b80200b109401bb20540
-08ba010000090100595959b9400000808855b94000020063b8040088555a58b30c000d011bb3
-0c000d0159595942424242422d2c451868234b51582320452064b04050587c59688a6059442d
-2cb00016b00225b0022501b001233e00b002233eb10102060cb00a236542b00b234201b00123
-3f00b002233fb10102060cb006236542b0072342b00116012d2c20b82000628a6023622d2cb0
-072558001b0159b0042510b00325b0022520b8ffff545821cd1bed5921b006255cb006255a58
-b0092b5920b005254ab0042547b004254760b0062547b0806361b00225b0005558b00325b007
-25496359b0082558001b0159b00425b0062549b009255cb009255a58b0092b59b0072546b080
-6361b0032520b0005558631b2159612320b0005558b080631b21b08059b0592bb006255c5869
-59b00425202010b00048233ab0062658001b0159b0052658b003252f598a12233221212d2cb0
-0625b00a2587b00625b009254ab0005358b00625b00a251bb00925b0072559b00225b0022507
-0cb005256323b00625636020b94000040063535821b00426b00426b00a1bb940000400636551
-58b0042665b0042665b00a1bb00426b00426b000b00325b003250b0d0ab0092eb00725b00725
-0b0d0ab00b2eb00525b0052507595920b0005558b00525b0052587b00725b007250bb0092510
-b00b25b0092620b8ffff545821cd1bed59b00525b0052507b00825b00b254923b00625b00625
-87b00a2510b00b25c15920b00051b800522378b00161b00225b00725b0072507b00a25b00d25
-4961b08062b00525b005250bb00a252338b00625b0062587b00825b008250bb00a2510b00b25
-c4b00625b0062507b00925b00c2549b0032554b8ffa723792121212121212121212121212d2c
-23b0005458b9400000001bb900004000598ab0005458b9400000001bb90000400059b05b2b2d
-2c08b0005458b9400000001bb900004000590db05b2b2d2c8a8a080d8ab0005458b940000000
-1bb90000400059b05b2b2d2cb00426b00426080db00426b00426080db05b2b2d2cb0022563b0
-206066b00225b82000626023622d2c204569442d2c234ab1024e2b2d2c234ab1014e2b2d2c23
-8a4a234564b0022564b002256164b00343525821206459b1024e2b23b000505865592d2c238a
-4a234564b0022564b002256164b00343525821206459b1014e2b23b000505865592d2c20b003
-254ab1024e2b8a103b2d2c20b003254ab1014e2b8a103b2d2cb00325b003258ab0672b8a103b
-2d2cb00325b003258ab0682b8a103b2d2cb0032546b003254660b004252eb00425b00425b004
-2620b000505821b06a1bb06c592bb0032546b00325466061b08062208a2010233a232010233a
-2d2cb0032547b003254760b0052547b0806361b00225b00625496323b005254ab08063205862
-1b2159b0042646608a468a4660b02063612d2cb00426b00425b00425b00426b06e2b208a2010
-233a232010233a2d2c2320b001545821b00225b1024e2bb0805020605920606020b001515821
-211b20b005515821206661b0402361b100032550b00325b00325505a5820b00325618a535821
-b000591b21591bb00754582066616523211b2121b000595959b1024e2b2d2cb00225b004254a
-b0005358b0001b8a8a238ab00159b004254620666120b00526b0062649b00526b00526b0702b
-236165b02060206661b02061652d2cb0022546208a20b000505821b1024e2b1b452321596165
-b00225103b2d2cb0042620b802006220b80200638a236120b05d602bb00525118a128a20398a
-58ba005d10000004266356602b23212010204620b1024e2b23611b2321208a201049b1024e2b
-593b2d2cba005d10000009256356602bb00525b00525b00526b06d2bb15d0725602bb00525b0
-0525b00525b00525b06f2bba005d10000008266356602b20b0005258b0502bb00525b00525b0
-0725b00725b00525b0712bb0021738b00052b00225b001525a58b00425b0062549b00325b005
-25496020b0405258211bb000525820b0025458b00425b00425b00725b0072549b00217381bb0
-0425b00425b00425b0062549b0021738595959595921212121212d2cb12801885158b9400004
-0063b8080088545c1bb001592d2cb12801885158b94000040063b8080088545c1bb001592d00
-0001000000063ae1d2be21575f0f3cf50019080000000000bbeb7ccc00000000d749774ffbfa
-fd8009ec0836000000090002000100000000000100000600fe0001c40aa0fbfafaa009ec0001
-00000000000000000000000000000004040e0000047500210475002101d60000000000000000
-018000000198000002b00000030c000100000004043a00170118000800020010002f00870000
-123624eb00070001b10903415302c802c60038001f02c702c60038001f02dd003802da005502
-d9003802d7005502d8003802d7005502d6003802d5005502d4003802d3005502d2003802d100
-5502bf003802be005502bd003802bc0055000402db003402db005402db0003003402db005402
-db006402db00a402db00d402db0005006b02d50001000b02d10001001402c2004402c2006402
-c2007402c2009402c2000500a402be000100a402bc000100200284b40918014a20b80283b409
-18014a20b80282b40918014a20b80281b40918014a20b80280b40918014a20b8027fb4091801
-4a20b8027eb40918014a20b8027db40918014a20b8027cb40918014a20b8027bb40918014a20
-b8027ab40918014a20b80279b40918014a20b80278b40918014a20b80277b40918014a20b802
-76b40918014a20b80275b40918014a20b80274b40918014a20b80273b40918014a20b80271b4
-0918014a20b80270b40918014a20b8026fb40918014a20b8026eb40918014a20b8026db40918
-014a20b8026cb40918014a20b8026bb40918014a20b8026ab40918014a20b80269b40918014a
-20b80268b40918014a20b80267b40918014a20b80266b40918014a20b80265b40918014a20b8
-0264b40918014a20b80263b40918014a20b80262b40918014a20b80261b40918014a20b80260
-b40918014a20b8025fb40918014a20b8025eb40918014a20b8025db40918014a20b8025cb409
-18014a20b8025bb40918014a20b8025ab40918014a20b80259b40918014a20b80258b4091801
-4a20b80257b40918014a20b80256b40918014a20b80255b40918014a20b80254b40918014a20
-b80253b40918014a20b80252b40918014a20b80251b40918014a20b80250b40918014a20b802
-4fb40918014a20b8024eb40918014a20b8024db40918014a20b8024cb40918014a20b8024bb4
-0918014a20b8024ab40918014a20b80249b40918014a20b80248b40918014a20b80247b40918
-014a20b80246b40918014a20b80245b40918014a20b80244b40918014a20b80243b40918014a
-20b80242b40918014a20b80241b40918014a20b80240b40918014a20b8023fb40918014a20b8
-023eb40918014a20b8023db40918014a20b8023cb40918014a20b8023bb40918014a20b8023a
-b40918014a20b80239b40918014a20b80238b40918014a20b80237b40918014a20b80236b409
-18014a20b80235b40918014a20b80234b40918014a20b80233b40918014a20b80232b4091801
-4a20b80231b40918014a20b80230b40918014a20b8022fb40918014a20b8022eb40918014a20
-b8022db40918014a20b8022cb40918014a20b8022bb40918014a20b8022ab40918014a20b802
-29b40918014a20b80228b40918014a20b80227b40918014a20b80226b40918014a20b80225b4
-0918014a20b80224b40918014a20b80223b40918014a20b80222b40918014a20b80221b40918
-014a20b80220b40918014a20b8021fb40918014a20b8021eb40918014a20b8021db40918014a
-20b8021cb40918014a20b8021bb40918014a20b8021ab40918014a20b80219b40918014a20b8
-0218b40918014a20b80217b40918014a20b80216b40918014a20b80215b40918014a20b80214
-b40918014a20b80213b40918014a20b80212b40918014a20b80211b40918014a20b80210b409
-18014a20b8020fb40918014a20b8020eb40918014a20b8020db40918014a20b8020cb4091801
-4a20b8020bb40918014a20b8020ab40918014a20b80209b40918014a20b80208b40918014a20
-b80207b40918014a20b80206b40918014a20b80205b40918014a20b80204b40918014a20b802
-03b40918014a20b80202b40918014a20b80201b40918014a20b80200b40918014a20b801ffb4
-0918014a20b801feb40918014a20b801fdb40918014a20b801fcb40918014a20b801fbb40918
-014a20b801fab40918014a20b801f9b40918014a20b801f8b40918014a20b801f7b40918014a
-20b801f6b40918014a20b801f5b40918014a20b801f4b40918014a20b801f3b40918014a20b8
-01f2b40918014a20b801f1b40918014a20b801f0b40918014a20b801efb40918014a20b801ee
-b40918014a20b801edb40918014a20b801ecb40918014a20b801ebb40918014a20b801eab409
-18014a20b801e9b40918014a20b801e8b40918014a20b801e7b40918014a20b801e6b4091801
-4a20b801e5b40918014a20b801e4b40918014a20b801e3b40918014a20b801e2b40918014a20
-b801e1b40918014a20b801e0b40918014a20b801dfb40918014a20b801deb40918014a20b801
-ddb40918014a20b801dcb40918014a20b801dbb40918014a20b801dab40918014a20b801d9b4
-0918014a20b801d8b40918014a20b801d7b40918014a20b801d6b40918014a20b801d5b40918
-014a20b801d4b40918014a20b801d3b40918014a20b801d2b40918014a20b801d1b40918014a
-20b801d0b40918014a20b801cfb40918014a20b801ceb40918014a20b801cdb40918014a20b8
-01ccb40918014a20b801cbb40918014a20b801cab40918014a20b801c9b40918014a20b801c8
-b40918014a20b801c7b40918014a20b801c6b40918014a20b801c5b40918014a20b801c4b409
-18014a20b801c3b40918014a20b801c2b40918014a20b801c1b40918014a20b801c0b4091801
-4a20b801bfb40918014a20b801beb40918014a20b801bdb40918014a20b801bcb40918014a20
-b801bbb40918014a20b801bab40918014a20b801b9b40918014a20b801b8b40918014a20b801
-b7b40918014a20b801b6b40918014a20b801b5b40918014a20b801b4b40918014a20b801b3b4
-0918014a20b801b2b40918014a20b801b1b40918014a20b801b0b40918014a20b801afb40918
-014a20b801aeb40918014a20b801adb40918014a20b801acb40918014a20b801abb40918014a
-20b801aab40918014a20b801a9b40918014a20b801a8b40918014a20b801a7b40918014a20b8
-01a6b40918014a20b801a5b40918014a20b801a4b40918014a20b801a3b40918014a20b801a2
-b40918014a20b801a1b40918014a20b801a0b40918014a20b8019fb40918014a20b8019eb409
-18014a20b8019db40918014a20b8019cb40918014a20b8019bb40918014a20b8019ab4091801
-4a20b80199b40918014a20b80198b40918014a20b80197b40918014a20b80196b40918014a20
-b80195b40918014a20b80194b40918014a20b80193b40918014a20b80192b40918014a20b801
-91b40918014a20b80190b40918014a20b8018fb40918014a20b8018eb40918014a20b8018db4
-0918014a20b8018cb40918014a20b8018bb40918014a20b8018ab40918014a20b80189b40918
-014a20b80188b40918014a20b80187b40918014a20b80186b40918014a20b80185b40918014a
-20b80184b40918014a20b80183b40918014a20b80182b40918014a20b80181b40918014a20b8
-0180b40918014a20b8017fb40918014a20b8017eb40918014a20b8017db40918014a20b8017c
-b40918014a20b8017bb40918014a20b8017ab40918014a20b80179b40918014a20b80178b409
-18014a20b80177b40918014a20b80176b40918014a20b80175b40918014a20b80174b4091801
-4a20b80173b40918014a20b80172b40918014a20b80171b40918014a20b80170b40918014a20
-b8016fb40918014a20b8016eb40918014a20b8016db40918014a20b8016cb40918014a20b801
-6bb40918014a20b8016ab40918014a20b80169b40918014a20b80168b40918014a20b80167b4
-0918014a20b80166b40918014a20b80165b40918014a20b80164b40918014a20b80163b40918
-014a20b80162b40918014a20b80161b40918014a20b80160b40918014a20b8015fb40918014a
-20b8015eb40918014a20b8015db40918014a20b8015cb40918014a20b8015bb40918014a20b8
-015ab40918014a20b80159b40918014a20b80158b40918014a20b80157b40918014a20b80156
-b40918014a20b80155b40918014a20b80154b40918014a20b80153b40918014a20b80152b409
-18014a20b80150b40918014a20b8014fb40918014a20b8014eb40918014a20b8014cb4091801
-4a20b8014bb40918014a20b8014ab40918014a20b80149b40918014a20b80148b40918014a20
-b80147b40918014a20b80146b40918014a20b80145b40918014a20b80144b40918014a20b801
-43b30918014ab80284b21e3e1fb80283b21e151fb80282b21e3e1fb80281b21e3a1fb80280b2
-1e3e1fb8027fb21e3e1fb8027eb21e0c1fb8027db21e3e1fb8027cb21e3e1fb8027bb21e3e1f
-b8027ab21e3e1fb80279b21d411fb80278b21d431fb80277b21d431fb80276b21d431fb80275
-b21d411fb80274b21d431fb80273b21d431fb80272b21d411fb80271b21d421fb80270b21d42
-1fb8026fb21d421fb8026eb21d431fb8026db21d431fb8026cb21d431fb8026bb21c451fb802
-6ab21c451fb80269b21c451fb80268b21c451fb80267b21c451fb80266b21c441fb80265b21c
-451fb80264b21c451fb80263b21c451fb80262b21c451fb80261b21c451fb80260b21c451fb8
-025fb21c451fb8025eb21c441fb8025db21c451fb8025cb21c451fb8025bb21c451fb8025ab2
-1c451fb80259b21c451fb80258b21c451fb80257b21c451fb80256b21c451fb80255b21c451f
-b80254b21c451fb80253b21c451fb80252b21c451fb80251b21c451fb80250b21c451fb8024f
-b21c451fb8024eb21c451fb8024db21c451fb8024cb21c451fb8024bb21c451fb8024ab21b49
-1fb80249b21b491fb80248b21b4a1fb80247b21b4a1fb80246b21b4b1fb80245b21b4c1fb802
-44b21b4c1fb80243b21b4c1fb80242b21b4b1fb80241b21b491fb80240b21b491fb8023fb21b
-4a1fb8023eb21b4a1fb8023db21b4a1fb8023cb21b4b1fb8023bb21b4b1fb8023ab21b4c1fb8
-0239b21b4c1fb80238b21b4c1fb80237b21b4c1fb80236b21b4c1fb80235b21b491fb80234b2
-1b491fb80233b21b4a1fb80232b21b4a1fb80231b21b4a1fb80230b21b4b1fb8022fb21b4b1f
-b8022eb21b4c1fb8022db21b4c1fb8022cb21b4c1fb8022bb21b4c1fb8022ab21b4c1fb80229
-b21b4c1fb80228b21b4c1fb80227b21b491fb80226b21b491fb80225b21b4a1fb80224b21b4a
-1fb80223b21b4a1fb80222b21b4b1fb80221b21b4b1fb80220b21b4c1fb8021fb21b4c1fb802
-1eb21b4c1fb8021db21b4c1fb8021cb21b4c1fb8021bb21b4c1fb8021ab21a4e1fb80219b21a
-4e1fb80218b21a4f1fb80217b21a4f1fb80216b21a4e1fb80215b21a4e1fb80214b21a4f1fb8
-0213b21a4f1fb80212b21a4f1fb80211b21a4e1fb80210b21a4e1fb8020fb21a4f1fb8020eb2
-1a4f1fb8020db21a4f1fb8020cb21a4e1fb8020bb21a4e1fb8020ab21a4e1fb80209b21a4f1f
-b80208b21a4f1fb80207b21a4f1fb80206b219501fb80205b219511fb80204b219511fb80203
-b219501fb80202b219511fb80201b219511fb80200b219511fb801ffb219511fb801feb21950
-1fb801fdb219511fb801fcb219511fb801fbb219511fb801fab219501fb801f9b219511fb801
-f8b219511fb801f7b219511fb801f6b219511fb801f5b218541fb801f4b218531fb801f3b218
-541fb801f2b218541fb801f1b218541fb801f0b218531fb801efb218541fb801eeb218541fb8
-01edb218541fb801ecb218531fb801ebb218531fb801eab218541fb801e9b218541fb801e8b2
-18541fb801e7b218541fb801e6b218531fb801e5b218541fb801e4b218531fb801e3b218541f
-b801e2b218541fb801e1b218541fb801e0b218531fb801dfb218531fb801deb218541fb801dd
-b218541fb801dcb218541fb801dbb218541fb801dab218531fb801d9b218541fb801d8b21854
-1fb801d7b217571fb801d6b217561fb801d5b217561fb801d4b217571fb801d3b217571fb801
-d2b217571fb801d1b217571fb801d0b217561fb801cfb217561fb801ceb217571fb801cdb217
-571fb801ccb217571fb801cbb217571fb801cab217561fb801c9b217561fb801c8b217571fb8
-01c7b217571fb801c6b217571fb801c5b217571fb801c4b217571fb801c3b217561fb801c2b2
-17571fb801c1b217571fb801c0b217571fb801bfb217561fb801beb217561fb801bdb217571f
-b801bcb217571fb801bbb217571fb801bab217571fb801b9b217571fb801b8b217561fb801b7
-b217571fb801b6b217571fb801b5b217571fb801b4b217571fb801b3b2163f1fb801b2b2165b
-1fb801b1b2165b1fb801b0b2165b1fb801afb2165b1fb801aeb2165b1fb801adb2165b1fb801
-acb2165b1fb801abb2165b1fb801aab2163e1fb801a9b2163f1fb801a8b2163f1fb801a7b216
-5b1fb801a6b2165b1fb801a5b2165b1fb801a4b2165b1fb801a3b2165b1fb801a2b2165b1fb8
-01a1b2165b1fb801a0b2165b1fb8019fb2163e1fb8019eb2163f1fb8019db2163f1fb8019cb2
-165b1fb8019bb2165b1fb8019ab2165b1fb80199b2165b1fb80198b2163e1fb80197b2165b1f
-b80196b2165b1fb80195b2165b1fb80194b2163e1fb80193b2163f1fb80192b2163f1fb80191
-b2165b1fb80190b2165b1fb8018fb2165b1fb8018eb2165b1fb8018db2165b1fb8018cb2163f
-1fb8018bb2165b1fb8018ab2165b1fb80189b2165b1fb80188b2165b1fb80187b2165b1fb801
-86b215611fb80185b215621fb80184b215621fb80183b215661fb80182b215661fb80181b215
-551fb80180b215451fb8017fb215361fb8017eb215361fb8017db215611fb8017cb215621fb8
-017bb215621fb8017ab215641fb80179b215661fb80178b215661fb80177b215661fb80176b2
-15661fb80175b215661fb80174b215661fb80173b215451fb80172b215621fb80171b215621f
-b80170b215631fb8016fb215641fb8016eb215661fb8016db215661fb8016cb215661fb8016b
-b215661fb8016ab215661fb80169b215621fb80168b215621fb80167b215611fb80166b21564
-1fb80165b215641fb80164b215661fb80163b215661fb80162b215661fb80161b215661fb801
-60b215661fb8015fb215661fb8015eb215551fb8015db215451fb8015cb215451fb8015bb215
-361fb8015ab215611fb80159b215621fb80158b215621fb80157b215631fb80156b215641fb8
-0155b215661fb80154b215661fb80153b215661fb80152b215661fb80151b214401fb80150b2
-14551fb8014fb214561fb8014eb214831fb8014db2142d1fb8014cb214401fb8014bb214401f
-b8014ab214411fb80149b214401fb80148b214401fb80147b214411fb80146b2147e1fb80145
-b214871fb80144b2147f1fb80143b214801fb80142b212461fb80141b212461fb80140b21246
-1fb8013fb212461fb8013eb212441fb8013db212461fb8013cb211591fb8013bb211591fb801
-3ab2115b1fb80139b2115b1fb80138b211471fb80137b211581fb80136b2115a1fb80135b211
-5b1fb80134b2115b1fb80133b2112c1fb80132b211471fb80131b211551fb80130b211571fb8
-012fb211571fb8012eb211581fb8012db211591fb8012cb211591fb8012bb2115a1fb8012ab2
-115a1fb80129b2115b1fb80128b2115b1fb80127b2115b1fb80126b2115b1fb80125b211561f
-b80124b211561fb80123b211571fb80122b211581fb80121b211591fb80120b2115a1fb8011f
-b2115a1fb8011eb2115b1fb8011db2115b1fb8011cb2115b1fb8011bb2115b1fb8011ab2115b
-1fb80119b2105d1fb80118b2105e1fb80117b2105f1fb80116b2105f1fb80115b2105f1fb801
-14b2105f1fb80113b2105f1fb80112b2105d1fb80111b2105e1fb80110b2105f1fb8010fb210
-5f1fb8010eb2105f1fb8010db2105f1fb8010cb2105d1fb8010bb2105e1fb8010ab2105f1fb8
-0109b2105f1fb80108b2105f1fb80107b2105f1fb80106b2105d1fb80105b2105e1fb80104b2
-105f1fb80103b2105f1fb80102b2105f1fb80101b2105f1fb8010040ff0f621fff0f621ffe0f
-631ffd0f641ffc0f621ffb0f621ffa0f621ff90f631ff80f641ff70f641ff60f641ff50f641f
-f40f621ff30f621ff20f631ff10f641ff00f641fef0f641fee0f641fed0f621fec0f621feb0f
-631fea0f641fe90f641fe80f641fe70f641fe60e671fe50e681fe40e681fe30e681fe20e681f
-e10e671fe00e681fdf0e681fde0e681fdd0e671fdc0e681fdb0e681fda0e681fd90e681fd80d
-6b1fd70d311fd60d6b1fd50d6c1fd40d261fd30d261fd20d6c1fd10d2b1fd00d2b1fcf0d2b1f
-ce0d6b1fcd0d6c1fcc0d6d1fcb0d6b1fca0d6c1fc90d6d1fc80d6a1fc70d691fc60d681fc50d
-671fc40d261fc30d311fc20d311fc10d311f40ffc00d311fbf0d311fbe0d311fbd0c711fbc0c
-721fbb0c731fba0c741fb90c741fb80c741fb70c711fb60c711fb50c721fb40c731fb30c741f
-b20c741fb10c741fb00c741faf0b791fae0b7a1fad0b7c1fac0b7d1fab0b7e1faa0b7e1fa90b
-7e1fa80b7e1fa70b7e1fa60b7e1fa50b2d1fa40b7e1fa30b7e1fa20b791fa10b7e1fa00b6b1f
-9f0b791f9e0b7e1f9d0b7e1f9c0b791f9b0b7a1f9a0b7c1f990b7d1f980b7e1f970b7e1f960b
-7e1f950b7e1f940b7e1f930b7e1f920b6b1f910b2d1f900a4e1f8f0a4f1f8e0a671f8d0aa51f
-8c0aa71f8503251f8403381f8301381f8255805581ab80557f557d557eab7d550b7d010b7d1b
-7d4b7d7b7dab7ddb7d4012060a7c557a557bab7a557955775578ab7755ba028600660285403c
-5576ab755504751475747503f47501ab750144750130750102007510752075030c7455725573
-ab7255007250728072b072043bb072e072020072010ab8ffc0b3721b1e46b8ffc0407c720d10
-4671556f5570ab6f556e666d556a03251f6938675568ab67556638645565ab64556338625561
-3860555f385d555eab5d555c385a555bab5a55593858555703251f5638545555ab5455533851
-5552ab51554f384e554e03251f4d384b554cab4b554a38485549ab4855473846554503381f00
-1c101c201c0310b8ffc0404e1c1b1e46001b0142301b401be01bf01b04001bb01bc01b03120f
-1a1f1a02290f1901434f19016f197f198f19030f18cf18024018292c460f17cf17df17ef1704
-134017292e460016101620160315b8ffc0b3164d5446b8ffc0b3163f4446b8ffc0b316313546
-b8ffc0401f162326460f15010f151f150245ef1501860003012001010001100120010308b8ff
-c0b401151f4603bd0100010000050001019000542b4bb80800524bb008505bb00188b02553b0
-0188b040515ab00688b000555a5b58b101018e59b101024354b0144b515a58b101018e59858d
-8d001d424bb01d5358b203a0a01d42594bb0805358b20340401d42594bb0ff5358b20300001d
-42592b5e7375732b58403d0011e011f0110315bf10cf10020f0f010f0fff0f02400f3135460f
-0e1f0e020f0e1f0eff0e03400e3137460f0d1f0d020f0d1f0dff0d0316400d313746b8ffc040
-270c5054460f0b1f0b02553f0b4f0b02400b3f4346400b2d3046000301200101000110012001
-0308b8ffc0b301151f462b5e7375732b2b745e732b2b5e73742b73742b7374745e735901755e
-73742b2b2b2b5e732b5e732b7374755e735e735e73755e732b5e73002b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b5e73755e732b2b5e735f73737373742b2b2b
-2b2b2b5e73742b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b012b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2bb1000243545841ff0284006402
-830064028200640281006402800064027f0064027e0064027d0064027c0064027b0064027a00
-6402790064027800640277006402760064027500640274006402730064027100640270006402
-6f0064026e0064026d0064026c0064026b0064026a0064026900640268006402670064026600
-64026500640264006402630064026200640261006402600064025f0064025e0064025d006402
-5c0064025b0064025a0064025900640258006402570064025600640255006402540064025300
-64025200640251006402500064024f0064024e0064024d0064024c0064024b0064024a006402
-4900640248006402470064024600640245006402440064024300640242006402410064024000
-64023f0064023e0064023d0064023c0064023b0064023a006402390064023800640237006402
-360064023500640234006402330064023200640231006402300064022f0064022e0064022d00
-64022c0064022b0064022a006402290064022800640227006402260064022500640224006402
-230064022200640221006402200064021f0064021e0064021d0064021c0064021b0064021a00
-6402190064021800640217006402160064021500640214006402130064021200640211006402
-100064020f0064020e0064020d0064020c0064020b0064020a00640209006402080064020700
-640206006402050064020441ff00640203006402020064020100640200006401ff006401fe00
-6401fd006401fc006401fb006401fa006401f9006401f8006401f7006401f6006401f5006401
-f4006401f3006401f2006401f1006401f0006401ef006401ee006401ed006401ec006401eb00
-6401ea006401e9006401e8006401e7006401e6006401e5006401e4006401e3006401e2006401
-e1006401e0006401df006401de006401dd006401dc006401db006401da006401d9006401d800
-6401d7006401d6006401d5006401d4006401d3006401d2006401d1006401d0006401cf006401
-ce006401cd006401cc006401cb006401ca006401c9006401c8006401c7006401c6006401c500
-6401c4006401c3006401c2006401c1006401c0006401bf006401be006401bd006401bc006401
-bb006401ba006401b9006401b8006401b7006401b6006401b5006401b4006401b3006401b200
-6401b1006401b0006401af006401ae006401ad006401ac006401ab006401aa006401a9006401
-a8006401a7006401a6006401a5006401a4006401a3006401a2006401a1006401a00064019f00
-64019e0064019d0064019c0064019b0064019a00640199006401980064019700640196006401
-9500640194006401930064019200640191006401900064018f0064018e0064018d0064018c00
-64018b0064018a00640189006401880064018700640186006401850064418001840064018300
-64018200640181006401800064017f0064017e0064017d0064017c0064017b0064017a006401
-7900640178006401770064017600640175006401740064017300640172006401710064017000
-64016f0064016e0064016d0064016c0064016b0064016a006401690064016800640167006401
-660064016500640164006401630064016200640161006401600064015f0064015e0064015d00
-64015c0064015b0064015a006401590064015800640157006401560064015500640154006401
-5300640152006401500064014f0064014e0064014c0064014b0064014a006401490064014800
-6401470064014600640145006401440064014300642b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b592b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b00737373737373742b2b2b2b2b2b2b2b2b2b185f5e0000>
-] def
-/f-0-1 currentdict end definefont pop
-%%EndResource
-%%BeginResource: font CambriaMath
-11 dict begin
-/FontType 42 def
-/FontName /CambriaMath def
-/PaintType 0 def
-/FontMatrix [ 1 0 0 1 0 0 ] def
-/FontBBox [ 0 0 0 0 ] def
-/Encoding 256 array def
-0 1 255 { Encoding exch /.notdef put } for
-Encoding 120 /x put
-Encoding 121 /y put
-Encoding 122 /z put
-/CharStrings 4 dict dup begin
-/.notdef 0 def
-/x 1 def
-/y 2 def
-/z 3 def
-end readonly def
-/sfnts [
-<0001000000090080000300106376742003031598000005500000089e6670676db5b318120000
-0df0000010b3676c7966308291460000009c000004b468656164fa71ceca00001ea400000036
-6868656112c4133c00001edc00000024686d747810cd013a00001f00000000106c6f63610000
-0b3800001f10000000146d6178700a75036300001f240000002070726570664ecf8500001f44
-00001128000400be0000048605540028002c00300034004b4025152f3428292c002c1d0b312e
-342c0b2e2e0b2c3404353600292b30331213130e18182e3103003fcd322fcd322f3fddd6cd32
-11120117392f2f2f2f10cd10cd113310cd3210ddc631300135343e02373e0335342623220e02
-072335363633321e0215140e02070e031515171523350111211101112111023706162a241726
-1b0f413e2030241909603c894346633e1c0f243c2c20261507129001fcfd060361fc3801e716
-16252a3527192f3339234b521424321e821e2e1d334629263e3d462d212c27281c066ea1a1fe
-e4049afb6604f7faac05540000010017000003c703bc00370094b0852b58b9002afff8b30f01
-4d2bb8fff840300f014d1b2a000e04233012152503222322a7441423070a32032f302fa74408
-300f000e1b2a04123009300925121239252f12392f1239392f2f121739003f332b1100173318
-2f332b110017331112173931302b012b1b40161b2a000e04233012152503221423070a32032f
-08300f00183f331117332f331117331112173930315901373636353426273521150606070713
-161617152135363534262727070606151416171521353e023713032e02273521150615141617
-020882151a22240147264f39cfe4314e27fe6e530e13919a11132528feb22135372dd0d52c34
-2c1601884f15160241a51b331b171e0731310b4047fefecd42460f31310a34152619cac81625
-171b230431310c243937010201243c361c0631310c32172e1c00000000010014fe4a040a03bc
-002e00b1b0852b58403e0b18111648e50bf50b020740111648000710072007030903070b4004
-0b030bab40041c2000101615272a03181718a74428170f08a50707161000202029162f123911
-333311392fed003f332b11001733183f33333f1aed2b001a1810cc5f5e5d2b5d2b31301b402c
-0b18111648e50bf50b0207401116480007100720070309030740040bab6c041c200010161527
-2a031828170f00183f331117333f33333f2b1acc5f5e5d2b5d2b303159050e02232227353316
-1633323e0237012e02273521150e021514161713133636353426273521150e0207020837687d
-563745590c24221e2f33452bfee81b21262701972f26120d0eb2c811132f3a0176272a2a1d52
-7c9a4e0dc629201738745902f1493a1e0931310b15211a1b3a27fe0b01e028431d2b2c0d3131
-082147400000000100510000035303bc001400fbb0852b5840140f0a1f0a0200141014020903
-20090d48030e020db8ffe04029090d480d050b00141014020f140e000a100a0219030a05020e
-030e9540020b050305950b0f09a50a04b8fff0401f0f014d040d100f014d0d0a0d0a0314a500
-100f014d0000160e100f014d0e032f332b12392f2be11239392f2f2b332b10e1003fed2b0018
-2f1aed2b001810c45f5e5d10c65e5d1112392b1112392b5e5d5d31301b40140f0a1f0a020014
-101402090320090d48030e020db8ffe04022090d480d050b00141014020f140e000a100a0219
-030a05020e956c020b05956c0b0f00183f2b2f2b10c45f5e5d10c65e5d1112392b1112392b5e
-5d5d30315901112135012122060607231121150121323e02370353fcfe0224fef1323a341857
-02f6fddd010734342624190122fede31033a245447011032fcc710234c52058d000a00000555
-0010002b00000000000004170010000000000000000003bc001000000000fff0ff9d0000fff0
-0000000000000000fe52fff00000000000000000000005b1000d033d000d055500100215fff0
-02e00010ffa0fff00000000000000000000000000000000000000000000000000000000003e0
-00100000000000000800000008000000040000000042007d0000000000000063000000000000
-0063007000000000005600000000000000000000000000000000000000000000000000000000
-00c2000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000ce00c900bb00830000000000bc00b300ac000000000000
-00ac00b5008500c200bc0078000000000059004f008400a0004f00540078005a00490055005e
-00690000007100a400a500000000000000620060003100310000003e000a008a000000000000
-00ca00e800b601fc00a4009b0000000000000000000000000000000000930085007200b800c2
-009b004a0069003e00910063009400ab009f004b008600910000000000000000000000d60000
-000000e00261006a007300a700b000850064006800000000004d00810048005c007800460056
-0071006e008a005a00af00b4006500b10099007800bc0052009e06be00080274000d033dfff3
-023afff3008b0000009602740281028e03800074007c009e00de00f40090008ffec2fff00000
-0000000000000000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000900098004b0084008e0042005a033d
-03500360007d0000000000000000000000000000000000000000000000000000000000000000
-00000000000000b700a400c10072007800b300a600ac009e00900125009a0087007d010c009d
-00bc013200910000000000000000000000000000000000000000000000000000000000000000
-00000000000000000000000000000000000000000000000000000000000000b7008c00a60000
-00000000000000000000000000c300b900af00a50055008e00520073009b00a8004200500000
-00000000000000000000000000000128010a0083006a005a010e00fa005f0000000000000000
-0000000000000000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000000000000000
-00700063007800540082006a0072008700580066003100750058006800580075000000000000
-00000136013e0088007100a3012d00e400750042007e006e0121013000c600880118007a0068
-009d0042009400ba0130013e007300b4012800f90070005b008e000000000000000000000000
-000000000000058d0010000005550010000000000800011600ce0000040003fa0000000003ea
-001000000000fff000000000fff00000012400c80000fe52fff00000000000000123010d00bc
-00b700aa00c600a2009b011b010300f500e100fe012f011c00bc012900d1012900c600fa00ba
-00c1010e00ec011b011800d70101000000000000000000000000000000000000058d00100000
-0555001000000000080000ba008b0565040000000000000003ea001000000000fff000000000
-fff0000000b1008d0000fe52fff0000000000000008100a7009c00c2007d00ac00b400bb00c1
-009200b600bb008c00b400a00085009700ad00a600a60091008000a200000000000000000000
-055a0033000005670033000000000800010e00c30000040000000000000003c000330000ffd1
-ffcd00000000ffcd0000000000000000fe8effcd00000000000000d5006900db003e00500049
-0000000000000000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000000000000000
-0000000000000000000000000000000000000000000000000000000000000000000000000000
-000000000000000000000000000000000207fce305df0249050f0501ffeb04aa0704fe5b01f5
-000000a50070009300a5007b007b006700000000000000000000000000000000000000000000
-03fd03e805afffee05bafe4205110524fe71fe7c000a00d700d900cf00c500e300d300d500ca
-00e7033003c503e103f20460040605cd05a200b5042e00770096000000000000000000000000
-00000000046e0468045104a4045a042e05270000041c004d00520057005c00600062006b0072
-00000590073104920556056403f203fa05980000006c00780086008e0093007e000040718574
-737271706f6e6d6c6b6a69686766656463625f5e5d5c5b5a595855545351504f4e524d4c4b4a
-4948474644434241403f3e3d3c3b3a393837363534333231302f2e2d2c2b2a29282726252423
-2221201f1e1d1c1b1a191817161514131211100f0e0d0c0b0a090807060504030201002c0118
-b0184358456ab0194360b00c2344231020b00c4ef04d2fb000121b21231120332f592d2c0118
-b0184358b0052bb000134bb0145058b100403859b0062b1b21231120332f592d2c0118b01843
-584eb0032510f221b000124d1b2045b00425b00425234a6164b0285258212310d61bb0032510
-f221b0001259592d2cb01a435821211bb00225b0022549b00325b003254a612064b010505821
-21211bb00325b0032549b0005058b0005058b8ffe238211bb0003821591bb0005258b01e3821
-1bb0003821595959592d2c0118b0184358b0052bb000134bb0145058b90000ffc03859b0062b
-1b21231120332f592d2c4e018a10b10c194344b00014b1000ce2b00015b90000fff03800b000
-3cb0282bb0022510b0003c2d2c0118b0002fb00114f2b00113b001154db000122d2c0118b018
-4358b0052bb00013b90000ffe038b0062b1b21231120332f592d2c0118b018435845646a2345
-6469b01943646060b00c2344231020b00cf02fb000121b2121208a208a525811331b21215959
-2d2c014bb0c85158b10b0a432343650a592d2c004bb0c8515800b10a0b4323430b592d2c00b0
-0c2370b1010c3e01b00c2370b1020c453ab10200080d2d2cb0122bb0022545b00225456ab040
-8b60b0022523442121212d2cb0132bb0022545b00225456ab8ffc08c60b0022523442121212d
-2cb000b0122b2121212d2cb000b0132b2121212d2c014bb0c85158b00643b00743650a592d2c
-2069b04061b0008b20b12cc08a8cb8100062602b0c642364615c58b00361592d2cb100032545
-6854b01c4b505a58b0032545b0032545606820b004252344b0042523441bb00325204568208a
-2344b00325456860b003252344592d2cb00325204568208a2344b003254564686560b00425b0
-016023442d2cb00143588721c01bb01243588745b0112bb00d2344b00d7ae41b038a45186920
-b00d23448a8a8720b0a05158b0112bb00d2344b00d7ae41b21b00d7ae4595959182d2c208a45
-23456860442d2c456a422d2c01182f2d2c0118b0184358b00425b00425496423456469b0408b
-6120b080626ab00225b00225618cb0194360b00c2344218a10b00cf6211b21212121592d2c01
-b0184358b0022545b002254564606ab00325456a6120b00425456a208a8b65b0042523448cb0
-0325234421211b20456a4420456a44592d2c012045b00055b018435a584568234569b0408b61
-20b080626a208a236120b003258b65b0042523448cb00325234421211b2121b0192b592d2c01
-8a8a45642345646164422d2cb00425b00425b0192bb0184358b00425b00425b00325b01b2b01
-b0022543b04054b0022543b000545a58b003252045b040614459b0022543b00054b0022543b0
-40545a58b004252045b04060445959212121212d2cb0032520b0072587052e23208ab00425b0
-0725b0142b1021c4212d2cc02d2c4b525845441b2121592d2cb00243583ded181bed592d2c4b
-505845441b2121592d2c01184b52588a2fed1b212121592d2c4b53234b515a58b003254568b0
-03254568b003256054582121211bb00225456860b0032523442121591b212121592d2cb00243
-583dcd181bcd592d2cb002435c58462346608a8a462320468a608a61b8ff8062232010238ab1
-0c0c8a70456020b0005058b00161b8ffba8b1bb0468c59b0106068013a1b2121212121592d2c
-2045b0032546524bb013515b58b0022546206861b00325b003253f2321381b2111592d2c2045
-b00325465058b0022546206861b00325b003253f2321381b2111592d2c004bb0c8515800b007
-43b006430b592d2c8a10ec2d2cb00e4358211b2046b0005258b8fff0381bb0103859592d2c20
-b0005558b8100063b003254564b00325456461b0005358b0021bb04061b00359254569535845
-441b2121591b21b0022545b00225456164b028515845441b212159592d2c21210c6423648bb8
-4000622d2c21b08051580c6423648bb82000621bb200402f2b59b002602d2c21b0c051580c64
-23648bb81555621bb200802f2b59b002602d2c0c6423648bb84000626023212d2c184b5358b0
-0425b00425496423456469b0408b6120b080626ab00225b00225618cb00c2344218a10b00cf6
-211b218a11231220392f592d2cb00225b002254964b0c05458b8fff838b008381b2121592d2c
-b0134358031b02592d2cb0134358021b03592d2cb00a2b2310203cb0172b2d2cb00225b8fff0
-38b0282b8a102320d023b0102bb0044358c01b3c59201011b00012012d2cb0482b2d2c01b002
-2510d023c901b00113b0001410b0013cb001162d2c01b00013b001b0032549b0031738b00113
-2d2c4b53234b515a5820458a60441b2121592d2c184b5358b00425b004254964b00325b00325
-496468b0408b6120b080626ab00225b00225618cb00c234421b004251023b00cf61bb00425b0
-042511122320392f59cc21212d2c0118b0184358b0052546234564611b21b00425b004254a59
-b00e23442310b00eec2310b00eec2d2cb01b435820b0016045b000515820b0016020452068b0
-005558b0206044211b212121591b20b0016020452068b0005558b8ffe06044b01c4b50582045
-b02060441b21591b21212159591b21592d2cb0022546206861b00325b003253f2321382d2c46
-2346608a8a462320468a608a61b8ff8062232010238ab10c0c8a70456020b0005058b00161b8
-ff808b1bb0818c59683a2d2cb0402a212d2c2035b001602d2cb0024354584b53234b515a5838
-1b2121591b21212121592d2c49b00e23442d2cb0024354584b53234b515a5820458a60441b21
-21591b21212121592d2c8a10b002435821b0301ac9181bb0401a18ed592d2c4b53234b515a58
-20458a60441b2121592d2c4b545820458a60441b2121592d2c4b53234b515a58381b2121592d
-2c4b5458381b2121592d2cb002435458b0462b1b21212121592d2cb002435458b0472b1b2121
-21592d2cb002435458b0482b1b21212121592d2cb002435458b0492b1b212121592d2c4b5258
-7d1b7a592d2c2320b000508a8a64b10003255458b0401bb10103255458b005438b59b04f2b59
-23b0622b2321235865592d2cb108000c215460432d2c014623466023466123201020468a61b8
-ff80628ab140408a704560683a2d2c208a2349648a2353583c1b21592d2cb012004b014b5442
-2d2cb1020042b123018851b1400188535a58b910000020885458b202010243604259b1240188
-5158b920000040885458b2020202436042b12401885458b2022002436042004b014b5258b202
-0802436042591bb940000080885458b202040243604259b94000008063b80100885458b20208
-0243604259b94000010063b80200885458b202100243604259b12601885158b94000020063b8
-0400885458b202400243604259b94000040063b80800885458b202800243604259b128018851
-58b94000080063b81000885458ba00020100000243604259595959595959b10002435458400a
-0540084009400c020d021bb10102435458b2054008ba010000090100b30c010d011bb1800243
-5258b2054008b80180b109401bb901000002435258b2054008ba0180000901401bb901800002
-435258b2054008b80200b109401bb2054008ba010000090100595959b9400000808855b94000
-020063b8040088555a58b30c000d011bb30c000d0159595942424242422d2c451868234b5158
-2320452064b04050587c59688a6059442d2cb00016b00225b0022501b001233e00b002233eb1
-0102060cb00a236542b00b234201b001233f00b002233fb10102060cb006236542b0072342b0
-0116012d2c20b82000628a6023622d2cb0072558001b0159b0042510b00325b0022520b8ffff
-545821cd1bed5921b006255cb006255a58b0092b5920b005254ab0042547b004254760b00625
-47b0806361b00225b0005558b00325b00725496359b0082558001b0159b00425b0062549b009
-255cb009255a58b0092b59b0072546b0806361b0032520b0005558631b2159612320b0005558
-b080631b21b08059b0592bb006255c586959b00425202010b00048233ab0062658001b0159b0
-052658b003252f598a12233221212d2cb00625b00a2587b00625b009254ab0005358b00625b0
-0a251bb00925b0072559b00225b00225070cb005256323b00625636020b94000040063535821
-b00426b00426b00a1bb94000040063655158b0042665b0042665b00a1bb00426b00426b000b0
-0325b003250b0d0ab0092eb00725b007250b0d0ab00b2eb00525b0052507595920b0005558b0
-0525b0052587b00725b007250bb0092510b00b25b0092620b8ffff545821cd1bed59b00525b0
-052507b00825b00b254923b00625b0062587b00a2510b00b25c15920b00051b800522378b001
-61b00225b00725b0072507b00a25b00d254961b08062b00525b005250bb00a252338b00625b0
-062587b00825b008250bb00a2510b00b25c4b00625b0062507b00925b00c2549b0032554b8ff
-a723792121212121212121212121212d2c23b0005458b9400000001bb900004000598ab00054
-58b9400000001bb90000400059b05b2b2d2c08b0005458b9400000001bb900004000590db05b
-2b2d2c8a8a080d8ab0005458b9400000001bb90000400059b05b2b2d2cb00426b00426080db0
-0426b00426080db05b2b2d2cb0022563b0206066b00225b82000626023622d2c0020b2004003
-25b0062649618b3812342d2c204569442d2c234ab1024e2b2d2c234ab1014e2b2d2c238a4a23
-4564b0022564b002256164b00343525821206459b1024e2b23b000505865592d2c238a4a2345
-64b0022564b002256164b00343525821206459b1014e2b23b000505865592d2c20b003254ab1
-024e2b8a103b2d2c20b003254ab1014e2b8a103b2d2cb00325b003258ab0672b8a103b2d2cb0
-0325b003258ab0682b8a103b2d2cb0032546b003254660b004252eb00425b00425b0042620b0
-00505821b06a1bb06c592bb0032546b00325466061b08062208a2010233a232010233a2d2cb0
-032547b003254760b0052547b0806361b00225b00625496323b005254ab080632058621b2159
-b0042646608a468a4660b02063612d2cb00426b00425b00425b00426b06e2b208a2010233a23
-2010233a2d2c2320b001545821b00225b1024e2bb0805020605920606020b001515821211b20
-b005515821206661b0402361b100032550b00325b00325505a5820b00325618a535821b00059
-1b21591bb00754582066616523211b2121b000595959b1024e2b2d2cb00225b004254ab00053
-58b0001b8a8a238ab00159b004254620666120b00526b0062649b00526b00526b0702b236165
-b02060206661b02061652d2cb0022546208a20b000505821b1024e2b1b452321596165b00225
-103b2d2cb0042620b802006220b80200638a236120b05d602bb00525118a128a20398a58ba00
-5d10000004266356602b23212010204620b1024e2b23611b2321208a201049b1024e2b593b2d
-2cba005d10000009256356602bb00525b00525b00526b06d2bb15d0725602bb00525b00525b0
-0525b00525b06f2bba005d10000008266356602b20b0005258b0502bb00525b00525b00725b0
-0725b00525b0712bb0021738b00052b00225b001525a58b00425b0062549b00325b005254960
-20b0405258211bb000525820b0025458b00425b00425b00725b0072549b00217381bb00425b0
-0425b00425b0062549b0021738595959595921212121212d2cb12501885058b94000020063b8
-040088545cb0164b525b1bb001592d00000100000006fd710cd1df7a5f0f3cf5001b08000000
-0000b9e6983d00000000d630eee4f434ec4a16f118ef00000009000200010000000000010000
-063bfe390161175af434fda416f1000100000000000000000000000000000004054400be03de
-00170408001403a3005100000000000000ec0000022c0000036c000004b400010000000400da
-002d0097000600020010002f0086000009a401c000030001b9002001feb40918014a20b801fa
-b40918014a20b801f9b40918014a20b801f8b40918014a20b801f7b40918014a20b801f6b409
-18014a20b801f0b40918014a20b801efb40918014a20b801eeb40918014a20b801edb4091801
-4a20b801ecb40918014a20b801ebb40918014a20b801e6b40918014a20b801e5b40918014a20
-b801e4b40918014a20b801e3b40918014a20b801e2b40918014a20b801e1b40918014a20b801
-e0b40918014a20b801d3b40918014a20b801d2b40918014a20b801d1b40918014a20b801cfb4
-0918014a20b801ceb40918014a20b801cdb40918014a20b801ccb40918014a20b801a0b40918
-014a20b8018fb40918014a20b8018eb40918014a20b8018ab40918014a20b80188b40918014a
-20b80187b40918014a20b80186b40918014a20b8015bb40918014a20b8015ab40918014a20b8
-0159b40918014a20b80158b40918014a20b80154b40918014a20b80150b40918014a20b8014c
-b40918014a20b8014bb40918014a20b8014ab40918014a20b80136b40918014a20b80130b409
-18014a20b8012fb40918014a20b8012db40918014a20b8012cb40918014a20b80109b4091801
-4a20b80107b40918014a20b8010540ff0918014a20f40918014a20f20918014a20f10918014a
-20f00918014a20ef0918014a20ed0918014a20ec0918014a20ea0918014a20e50918014a20e4
-0918014a20e30918014a20e10918014a20de0918014a20da0918014a20d80918014a20d30918
-014a20cd0918014a20cc0918014a20ca0918014a20c90918014a20c80918014a20c60918014a
-20c40918014a20c20918014a20c00918014a20bf0918014a20bd0918014a20b30918014a20b1
-0918014a20af0918014a20a50918014a20a40918014a20a00918014a208e0918014a208d0918
-014a208c0918014a208b0918014a208a0918014a20890918014a20850918014a20840918014a
-2083091801403e4a20800918014a207f0918014a207e0918014a207d0918014a20620918014a
-20510918014a20500918014a20480918014a20420918014a200e0918014a0f41630441001f04
-41002f0441003f0441004f0441005f0441006f0441007f0441008f0441009f044100af044100
-bf044100cf0441000d005f03ea0001008003f4009003f400a003f400b003f400c003f400d003
-f400e003f400f003f40008002f0433003f0433004f0433005f0433006f0433007f0433008f04
-33009f043300af043300bf0433000a001f0434002f0434003f0434004f0434005f0434006f04
-34007f0434000700cf042300df042300ef04230003000f0423001f0423003f0423005f042300
-9f0423402305f0e201b0fdc0fd02c0fdd0fde0fdf0fd04d0fde0fdf0fd03c0ffd0ffe0fff0ff
-0470410a0425000100c0042500d0042500e0042500f00425400c04e0bef0be02e0bef0be020f
-41110421003f04210002001002580001000f025800e002580002000f040a0001000f0408b401
-0f26010f411b04070001000f04060001007f02170001000f029c001f029c002f029c003f029c
-004f029c005f029c000600df029c00ef029c00ff029c405303dfe016171cd4d516171c7b7c16
-1b7b7c19d1d216171c767716171c6d7016171c6c6f16171c6b6e161b6b6e7f721a747514151c
-676a14151c666914151c6568141b656885711a1973167a431921794319211941310292009902
-920002001c0292002c029200020299029a029b000c028d028e028f000c028a028b028c000c00
-1b0299008b02990002000f0299009f029900bb029900db0299000402a5028b02a7000d029f02
-9a02a1000d029c028e029e000dffe8028eb2142339b9ffe8029ab2142339411a0282027d0008
-002b0281027c0005002b027e027a0004002b027d027a0004002b027a02570005002b02770267
-0005002b02670257b2052b20b80270b21b2039bd027202570004002b026e0257b2042b20b802
-57b331333909414102710019027100aa025700b8025700040069027100da025700e802570003
-028402790006002b028002790004002b027f02790008002b027b02790008002b027902560006
-002b027802660000002b027602660008002b027502660008002b027302660008002b02660256
-0006002b027402560000002b027302560000002b026f0256b2072b2941500256000100860256
-0001025d025e025f000c025102520253000c024e024f0250000c000b024e000b0251000a025d
-003b024e00590251007602510075025d009b024e00b5025d00d9024e000a0269024f026b000d
-0263025e0265000d026002520262000d0269003c0263003c0260003c025d003c0251003c024e
-003c0244023c0005002b024302110002002b0240023c0005002b023e02110004002b023d0211
-b2042b464115023c00010046023c00c6023c0002023b02110007002b023902110006002b0237
-02110004002b02210211b2072b20b80233b21316394116022f02110004002b022e0211000400
-2b022d02110005002b022c02110004002b022b02110004002b022a0211b2052b474142021100
-010005021100a502110002003b0233004b023300640211007402110004024202100007002b02
-4102100005002b023f02100002002b023a02100007002b023802100007002b02360210000700
-2b023502100007002b022002100007002b023402100005002b023102100005002b0230021000
-07002b022902100007002b02280210b2072b8a416e02100001001a021000b902320002021702
-180219000c020b020c020d000c02080209020a000c000b0208000b020b000a0217003b020800
-59020b0076020b00750217009b020800b5021700d90208000a022302090225000d021d021802
-1f000d021a020c021c000d0223003c021d003c021a003c0217003c020b003c0208003c015301
-4d0002002b014e014d0002002b0156015c0004002b0155015c0004002b0157015c0002002b01
-da01d4000a002b01d801d4000a002b01e501e00005002b01e101e00005002b01e001eb000500
-2b01ef01eb0002002b01ec01ebb2052b40b801ebb2090a39b9ffc00104b2313139b9ffc00104
-b21b2039b8ffc0b4c71f203940b80103b22c2c39ba010301000100b21f2223b901030100b3c0
-1e1e23ba010301000100b21d1d23b901030100b3c01c1c23ba010301000100b21b1b23b90103
-0100b3c0141a23b901030100b3800b1323b901030100b340090a23b901020101b340508b23b9
-01010100b340508b23410a01020100004f001f01010100004f001fffc00100b2505539b9ffc0
-0100b323233940b80100b71d1e3940e81b1b39b8ffc0b4e724253956b80108401301ddd8052b
-3bd64bd60240b00b0d39c1c0052bb8ffc040379f131339409c2f30399c9a012b9b9a052b9a91
-042ba999042b9992032b40c52c31399291032b889198910209631863c7630320630d0f39b8ff
-f0b4471f2539cbb8010a401c019895012b379e019695022b1897262a3917970110953f4039d9
-9501bc0136012c0003002b0130b2cd042bb8012fb2cc042bb8012db2cd032bb8012cb2cd042b
-bc014c014a0003002b014ab27f052bb9015b0154b2042b0f41190154001f0154000201860188
-0002002b018701880004002b018901880004002b0188018f0003002b018e018f0004002b018f
-b385052b3f410c01a0000101ce01cc0003002b01d201cc0006002b01d101ccb2062b40b80107
-b2323239b80107b2af032bb8ffc0b3de1e2039b8ffc04011dc181a39c9ca032bcac8042b40c8
-212239b8ffc0b3c8151739b8ffc0b3c6242539b8ffc0b3c6161a39b8ffc04023bf2d31395051
-032b40511b1b39e5cc042be4e3032b40e32a2a39cdcc052b40cc424439b8ffc0b3cc272739b8
-ffc0b7cc171a39c2ea012bb80109b2da032bb8ffc04033ea252539dfea0140c41b1d39b3b105
-2bb1c0052b40c03d3d39c0af042bd3af052baf7d052b20da121639c5bd01208e01108e01b8ff
-c0b38b363839b8ffc0b38b272b39b8ffc040328b171a398c8d052b8d8a042b898a052b8a7f05
-2bf4ef032bf2ef052bf180022bf0a0042bef85052b40ec32343940ec1b1d39b8ffc0b3a05152
-39b8ffc0b3a0454739b8ffc0b3a0383c39b8ffc0400ba02c3139dfa001a080022bb8ffc0b394
-313139b8ffc040d480181a39817f012b7e7d052b7d7f052bed7f052bd87f017f85251f888501
-2b8785012b8485052b8385052b298539854985036685014685013685012685011b3715183615
-1535151234150f33150c3215093115063015032f15002e15f9fa0f20f930f90226270e28270f
-2a2b0e2c2b0f22230e24230f1e1f0e201f0f00051005023c3d0e0b3c743c993c030f10110c09
-0a0b0c0607080c0304050c0001020c0603641f702a010f2a010b0f4b0f020b003b0044037403
-ab00db0f060b000b030b0f3b003b0959035b0976039b009b09990fd9000cb9010b010c402a0f
-1b011d0d18071a0d1510170d1204140d2ff96ff99ff9a0f9cff9d0f9063ff940f9aff9b0f9e0
-f90500b8010bb22ff92fba010b003f010b403004fb3cf93cf73cf53c2c3c2a3c283c263c243c
-223c203c1e3c1b3c183c153c123c0f3c093c063c033c003c035050335401b0124b004b5442b0
-13014b004b5342b0332b4bb8032052b0322b4bb009505b58b101018e59b0332bb00288b80100
-54b00488b8020054b012435a5b58b80119b101018e851bb900010100b04b60858d592b2b1d42
-b0644b5358b20380801d4259b0324b5358b20390901d4259004bb03251b01b23422b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b7374752b2b2b2b2b73747573742b2b2b2b2b2b732b73
-2b2b2b2b2b2bb1282645b02a4561b02c4560442b2b732b2b2b2b2b2b2b2b2b2b2b0173737373
-742b2b2b2b2b742b2b2b2b2b2b2b742b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b7475732b2b
-2b2b2b2b2b2b732b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b732b2b2b2b
-2b2b732b2b2b012b2b2b2b2b00742b742b2b742b732b2b74742b2b2b2b2b2b2b2b2b2b2b732b
-742b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b002b2b2b2b2b2b2b2b2b2b2b2b2b002b
-2b2b2b2b2b2b2b2b732b2b2b0173742b2b2b2b2b2b2b2b2b2b2b2b2b007374752b2b2b2b2b2b
-2b2b2b2b2b73742b2b2b2b2b002b2b2b2b2b2b2b2b2b732b2b2b0173742b2b2b2b2b2b2b2b2b
-2b2b2b2b0073742b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b73742b2b2b0173742b2bb018b03f4b
-53422b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2bb101322b4bb0505242b002435c4bb064524bb01e
-505b60b01a23424bb0c8524bb036505bb00e2342007374737373737373737473737473757373
-74757373747373737373b100024354b102024354b1060243545b5b58416301fe006401fa0064
-01f9006401f8006401f7006401f6006401f0006401ef006401ee006401ed006401ec006401eb
-006401e6006401e5006401e4006401e3006401e2006401e1006401e0006401d3006401d20064
-01d1006401cf006401ce006401cd006401cc006401a00064018f0064018e0064018a00640188
-00640187006401860064015b0064015a006401590064015800640154006401500064014c0064
-014b0064014a00640136006401300064012f0064012d0064012c006401090064010700640105
-406964f464f264f164f064ef64ed64ec64ea64e564e464e364e164de64da64d864d364cd64cc
-64ca64c964c864c664c464c264c064bf64bd64b364b164af64a564a464a0648e648d648c648b
-648a64896485648464836480647f647e647d64626451645064486442640e642b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b592b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b2b
-2b2b2b2b2b2b2b2b00>
-] def
-/f-1-0 currentdict end definefont pop
-%%EndResource
-%%EndSetup
-%%Page: 1 1
-%%BeginPageSetup
-%%PageBoundingBox: 0 0 396 135
-%%EndPageSetup
-q 0 0 396 135 rectclip
-1 0 0 -1 0 135 cm q
-0.501961 0 0.501961 rg
-1.700787 w
-0 J
-1 j
-[] 0.0 d
-4 M q 1 0 0 1 0 0 cm
-294.461 70.109 m 293.527 67.93 299.516 65.832 310.039 64.66 c 320.563 63.488
- 333.91 63.426 344.762 64.504 c 355.613 65.578 362.211 67.617 361.918 69.805
- c S Q
-Q q
-263.461 4.418 129.848 129.848 re W n
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.156863 0.843137 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-282.176 123.504 m 285.641 120.918 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.192157 0.807843 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-285.641 120.918 m 288.996 118.191 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.231373 0.768627 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-288.996 118.191 m 292.227 115.32 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.270588 0.729412 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-292.227 115.32 m 295.324 112.305 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.309804 0.690196 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-295.324 112.305 m 298.281 109.152 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.352941 0.647059 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-298.281 109.152 m 301.078 105.859 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.4 0.6 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-301.078 105.859 m 303.703 102.426 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.443137 0.556863 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-303.703 102.426 m 306.137 98.855 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.490196 0.509804 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-306.137 98.855 m 308.352 95.148 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.541176 0.458824 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-308.352 95.148 m 310.332 91.309 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.588235 0.411765 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-310.332 91.309 m 312.035 87.34 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.631373 0.368627 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-312.035 87.34 m 313.434 83.258 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.67451 0.32549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-313.434 83.258 m 314.5 79.07 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.705882 0.294118 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-314.5 79.07 m 315.207 74.813 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.733333 0.266667 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-315.207 74.813 m 315.527 70.508 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.745098 0.254902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-315.527 70.508 m 315.438 66.188 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.741176 0.258824 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-315.438 66.188 m 314.938 61.898 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.721569 0.278431 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-314.938 61.898 m 314.051 57.668 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.694118 0.305882 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-314.051 57.668 m 312.813 53.531 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.654902 0.345098 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-312.813 53.531 m 311.254 49.5 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.611765 0.388235 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-311.254 49.5 m 309.41 45.598 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.564706 0.435294 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-309.41 45.598 m 307.313 41.82 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.517647 0.482353 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-307.313 41.82 m 304.988 38.18 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.470588 0.529412 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-304.988 38.18 m 302.461 34.68 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.423529 0.576471 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-302.461 34.68 m 299.75 31.313 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.376471 0.623529 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-299.75 31.313 m 296.871 28.09 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.333333 0.666667 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-296.871 28.09 m 293.84 25.008 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.290196 0.709804 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-293.84 25.008 m 290.672 22.07 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.25098 0.74902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-290.672 22.07 m 287.375 19.27 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.211765 0.788235 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-287.375 19.27 m 283.965 16.617 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.176471 0.823529 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-283.965 16.617 m 280.445 14.102 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.164706 0.835294 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-286.91 126.027 m 290.055 123.059 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.2 0.8 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-290.055 123.059 m 293.09 119.98 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.239216 0.760784 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-293.09 119.98 m 296.004 116.785 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.278431 0.721569 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-296.004 116.785 m 298.793 113.484 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.317647 0.682353 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-298.793 113.484 m 301.449 110.074 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.360784 0.639216 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-301.449 110.074 m 303.953 106.551 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.403922 0.596078 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-303.953 106.551 m 306.297 102.918 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.137255 0.862745 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-288.844 131.145 m 291.746 127.938 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.172549 0.827451 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-291.746 127.938 m 294.551 124.648 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.207843 0.792157 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-294.551 124.648 m 297.25 121.27 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.247059 0.752941 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-297.25 121.27 m 299.84 117.809 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.286275 0.713726 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-299.84 117.809 m 302.316 114.262 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.32549 0.67451 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-302.316 114.262 m 304.66 110.633 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.368627 0.631373 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-304.66 110.633 m 306.867 106.918 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.141176 0.858824 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-294.805 134.266 m 297.27 130.711 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.176471 0.823529 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-297.27 130.711 m 299.652 127.102 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.211765 0.788235 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-299.652 127.102 m 301.945 123.434 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.247059 0.752941 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-301.945 123.434 m 304.141 119.707 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.286275 0.713726 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-304.141 119.707 m 306.23 115.926 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.32549 0.67451 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-306.23 115.926 m 308.211 112.082 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.168627 0.831373 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-303.758 134.266 m 305.625 130.363 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.203922 0.796078 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-305.625 130.363 m 307.418 126.426 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.239216 0.760784 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-307.418 126.426 m 309.137 122.457 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.27451 0.72549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-309.137 122.457 m 310.773 118.457 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.313726 0.686275 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-310.773 118.457 m 312.332 114.422 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.356863 0.643137 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-312.332 114.422 m 313.797 110.352 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.396078 0.603922 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-313.797 110.352 m 315.16 106.25 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.439216 0.560784 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-315.16 106.25 m 316.422 102.117 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.482353 0.517647 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-316.422 102.117 m 317.57 97.949 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.52549 0.47451 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-317.57 97.949 m 318.598 93.746 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.568627 0.431373 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-318.598 93.746 m 319.492 89.52 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.611765 0.388235 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-319.492 89.52 m 320.242 85.262 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.65098 0.34902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-320.242 85.262 m 320.828 80.977 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.682353 0.317647 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-320.828 80.977 m 321.238 76.672 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.705882 0.294118 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-321.238 76.672 m 321.465 72.352 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.721569 0.278431 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-321.465 72.352 m 321.5 68.023 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.721569 0.278431 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-321.5 68.023 m 321.348 63.703 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.713726 0.286275 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-321.348 63.703 m 321.016 59.391 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.694118 0.305882 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-321.016 59.391 m 320.5 55.094 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.662745 0.337255 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-320.5 55.094 m 319.824 50.824 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.627451 0.372549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-319.824 50.824 m 318.996 46.582 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.588235 0.411765 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-318.996 46.582 m 318.027 42.371 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.545098 0.454902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-318.027 42.371 m 316.93 38.188 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.501961 0.498039 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-316.93 38.188 m 315.715 34.035 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.454902 0.545098 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-315.715 34.035 m 314.395 29.922 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.411765 0.588235 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-314.395 29.922 m 312.973 25.836 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.372549 0.627451 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-312.973 25.836 m 311.457 21.785 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.329412 0.670588 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-311.457 21.785 m 309.859 17.77 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.290196 0.709804 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-309.859 17.77 m 308.18 13.785 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.254902 0.745098 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-308.18 13.785 m 306.422 9.832 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.215686 0.784314 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-306.422 9.832 m 304.59 5.914 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.180392 0.819608 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-304.59 5.914 m 303.875 4.418 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.188235 0.811765 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-312.715 134.266 m 313.926 130.113 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.223529 0.776471 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-313.926 130.113 m 315.086 125.945 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.258824 0.741176 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-315.086 125.945 m 316.191 121.766 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.298039 0.701961 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-316.191 121.766 m 317.246 117.57 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.337255 0.662745 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-317.246 117.57 m 318.242 113.359 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.2 0.8 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-321.668 134.266 m 322.195 129.969 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.235294 0.764706 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-322.195 129.969 m 322.695 125.672 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.270588 0.729412 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-322.695 125.672 m 323.172 121.375 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.305882 0.694118 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-323.172 121.375 m 323.625 117.074 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.345098 0.654902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-323.625 117.074 m 324.055 112.773 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.388235 0.611765 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-324.055 112.773 m 324.453 108.469 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.427451 0.572549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-324.453 108.469 m 324.824 104.16 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.470588 0.529412 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-324.824 104.16 m 325.16 99.852 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.513726 0.486275 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-325.16 99.852 m 325.461 95.539 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.556863 0.443137 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-325.461 95.539 m 325.727 91.219 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.596078 0.403922 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-325.727 91.219 m 325.949 86.898 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.635294 0.364706 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-325.949 86.898 m 326.129 82.574 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.666667 0.333333 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-326.129 82.574 m 326.258 78.246 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.694118 0.305882 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-326.258 78.246 m 326.34 73.922 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.709804 0.290196 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-326.34 73.922 m 326.367 69.594 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.717647 0.282353 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-326.367 69.594 m 326.344 65.266 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.709804 0.290196 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-326.344 65.266 m 326.27 60.938 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.694118 0.305882 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-326.27 60.938 m 326.145 56.613 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.670588 0.329412 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-326.145 56.613 m 325.973 52.285 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.639216 0.360784 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-325.973 52.285 m 325.754 47.965 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.6 0.4 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-325.754 47.965 m 325.496 43.648 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.560784 0.439216 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-325.496 43.648 m 325.195 39.332 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.517647 0.482353 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-325.195 39.332 m 324.863 35.023 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.47451 0.52549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-324.863 35.023 m 324.496 30.715 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.431373 0.568627 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-324.496 30.715 m 324.102 26.41 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.392157 0.607843 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-324.102 26.41 m 323.676 22.105 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.352941 0.647059 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-323.676 22.105 m 323.227 17.809 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.313726 0.686275 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-323.227 17.809 m 322.75 13.508 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.27451 0.72549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-322.75 13.508 m 322.25 9.211 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.239216 0.760784 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-322.25 9.211 m 321.73 4.918 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.203922 0.796078 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-321.73 4.918 m 321.668 4.418 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.2 0.8 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-326.145 134.266 m 326.32 129.941 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.235294 0.764706 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-326.32 129.941 m 326.488 125.617 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.270588 0.729412 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-326.488 125.617 m 326.648 121.293 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.309804 0.690196 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-326.648 121.293 m 326.801 116.969 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.2 0.8 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-330.625 134.266 m 330.449 129.941 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.235294 0.764706 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-330.449 129.941 m 330.281 125.617 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.270588 0.729412 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-330.281 125.617 m 330.121 121.293 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.309804 0.690196 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-330.121 121.293 m 329.969 116.969 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.34902 0.65098 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-329.969 116.969 m 329.828 112.648 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.388235 0.611765 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-329.828 112.648 m 329.695 108.324 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.431373 0.568627 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-329.691 108.324 m 329.57 104 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.47451 0.52549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-329.57 104 m 329.457 99.68 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.513726 0.486275 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-329.457 99.68 m 329.359 95.355 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.556863 0.443137 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-329.359 95.355 m 329.27 91.035 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.6 0.4 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-329.27 91.035 m 329.195 86.711 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.635294 0.364706 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-329.195 86.711 m 329.137 82.383 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.666667 0.333333 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-329.137 82.383 m 329.094 78.059 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.694118 0.305882 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-329.094 78.059 m 329.07 73.73 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.709804 0.290196 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-329.07 73.73 m 329.059 69.402 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.717647 0.282353 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-329.059 69.402 m 329.066 65.074 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.709804 0.290196 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-329.066 65.074 m 329.094 60.746 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.694118 0.305882 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-329.094 60.746 m 329.137 56.422 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.670588 0.329412 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-329.137 56.422 m 329.195 52.098 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.635294 0.364706 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-329.195 52.098 m 329.266 47.773 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.6 0.4 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-329.266 47.773 m 329.355 43.449 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.556863 0.443137 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-329.355 43.449 m 329.453 39.129 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.517647 0.482353 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-329.453 39.129 m 329.566 34.805 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.47451 0.52549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-329.566 34.805 m 329.691 30.48 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.431373 0.568627 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-329.688 30.48 m 329.824 26.16 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.392157 0.607843 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-329.824 26.16 m 329.965 21.836 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.34902 0.65098 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-329.965 21.836 m 330.117 17.512 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.309804 0.690196 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-330.117 17.512 m 330.277 13.191 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.27451 0.72549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-330.277 13.191 m 330.445 8.867 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.235294 0.764706 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-330.445 8.867 m 330.617 4.543 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.203922 0.796078 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-330.617 4.543 m 330.625 4.418 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.2 0.8 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-335.102 134.266 m 334.578 129.969 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.235294 0.764706 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-334.578 129.969 m 334.074 125.672 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.270588 0.729412 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-334.074 125.672 m 333.598 121.375 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.305882 0.694118 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-333.598 121.375 m 333.145 117.074 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.188235 0.811765 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-344.055 134.266 m 342.848 130.113 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.223529 0.776471 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-342.848 130.113 m 341.688 125.945 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.258824 0.741176 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-341.688 125.945 m 340.578 121.766 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.298039 0.701961 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-340.578 121.766 m 339.523 117.57 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.337255 0.662745 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-339.523 117.57 m 338.527 113.359 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.376471 0.623529 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-338.527 113.359 m 337.594 109.141 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.415686 0.584314 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-337.594 109.141 m 336.73 104.902 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.458824 0.541176 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-336.73 104.902 m 335.938 100.652 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.501961 0.498039 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-335.938 100.652 m 335.223 96.387 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.545098 0.454902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-335.223 96.387 m 334.59 92.105 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.588235 0.411765 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-334.59 92.105 m 334.055 87.816 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.627451 0.372549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-334.055 87.816 m 333.617 83.512 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.662745 0.337255 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-333.617 83.512 m 333.285 79.199 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.690196 0.309804 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-333.285 79.199 m 333.066 74.879 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.709804 0.290196 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-333.066 74.879 m 332.973 70.555 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.717647 0.282353 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-332.973 70.555 m 332.996 66.227 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.717647 0.282353 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-332.996 66.227 m 333.148 61.902 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.701961 0.298039 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-333.148 61.902 m 333.418 57.586 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.678431 0.321569 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-333.418 57.586 m 333.801 53.277 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.647059 0.352941 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-333.801 53.277 m 334.285 48.98 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.611765 0.388235 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-334.285 48.98 m 334.871 44.695 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.568627 0.431373 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-334.871 44.695 m 335.543 40.422 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.52549 0.47451 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-335.543 40.422 m 336.297 36.16 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.482353 0.517647 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-336.297 36.16 m 337.125 31.918 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.439216 0.560784 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-337.125 31.918 m 338.023 27.691 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.4 0.6 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-338.023 27.691 m 338.988 23.477 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.356863 0.643137 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-338.988 23.477 m 340.012 19.273 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.317647 0.682353 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-340.012 19.273 m 341.098 15.086 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.278431 0.721569 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-341.098 15.086 m 342.23 10.914 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.243137 0.756863 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-342.23 10.914 m 343.418 6.754 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.207843 0.792157 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-343.418 6.754 m 344.102 4.418 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.180392 0.819608 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-348.535 134.266 m 346.992 130.223 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.215686 0.784314 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-346.992 130.223 m 345.512 126.16 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.25098 0.74902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-345.512 126.16 m 344.094 122.074 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.286275 0.713726 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-344.094 122.074 m 342.742 117.965 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.156863 0.843137 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-357.488 134.266 m 355.316 130.523 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.188235 0.811765 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-355.316 130.523 m 353.219 126.742 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.227451 0.772549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-353.219 126.742 m 351.207 122.914 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.262745 0.737255 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-351.207 122.914 m 349.285 119.039 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.301961 0.698039 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-349.285 119.039 m 347.457 115.121 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.341176 0.658824 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-347.457 115.121 m 345.734 111.156 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.380392 0.619608 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-345.734 111.156 m 344.117 107.145 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.423529 0.576471 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-344.117 107.145 m 342.617 103.09 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.470588 0.529412 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-342.617 103.09 m 341.246 98.992 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.513726 0.486275 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-341.246 98.992 m 340.012 94.848 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.556863 0.443137 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-340.012 94.848 m 338.93 90.66 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.6 0.4 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-338.93 90.66 m 338.016 86.438 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.156863 0.843137 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-363.703 130.918 m 361.051 127.504 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.192157 0.807843 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-361.051 127.504 m 358.496 124.016 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.227451 0.772549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-358.496 124.016 m 356.043 120.453 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.266667 0.733333 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-356.043 120.453 m 353.695 116.824 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.305882 0.694118 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-353.695 116.824 m 351.465 113.121 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.345098 0.654902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-351.465 113.121 m 349.355 109.348 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.388235 0.611765 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-349.355 109.348 m 347.379 105.504 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.152941 0.847059 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-369.043 128.402 m 366.008 125.32 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.188235 0.811765 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-366.008 125.32 m 363.078 122.141 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.223529 0.776471 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-363.078 122.141 m 360.258 118.863 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.262745 0.737255 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-360.258 118.863 m 357.555 115.488 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.141176 0.858824 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-373.781 126.754 m 370.445 124.004 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.176471 0.823529 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-370.445 124.004 m 367.215 121.133 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.211765 0.788235 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-367.215 121.133 m 364.102 118.133 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.25098 0.74902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-364.102 118.133 m 361.109 115.016 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.290196 0.709804 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-361.109 115.016 m 358.246 111.773 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.329412 0.670588 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-358.246 111.773 m 355.535 108.41 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.372549 0.627451 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-355.535 108.41 m 352.977 104.926 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.419608 0.580392 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-352.977 104.926 m 350.59 101.324 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.466667 0.533333 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-350.59 101.324 m 348.398 97.602 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.513726 0.486275 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-348.398 97.602 m 346.414 93.762 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.560784 0.439216 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-346.414 93.762 m 344.668 89.809 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.603922 0.396078 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-344.668 89.809 m 343.188 85.75 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.65098 0.34902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-343.188 85.75 m 342 81.598 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.686275 0.313726 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-342 81.598 m 341.141 77.367 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.717647 0.282353 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-341.141 77.367 m 340.637 73.078 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.733333 0.266667 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-340.637 73.078 m 340.5 68.758 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.741176 0.258824 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-340.5 68.758 m 340.734 64.445 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.729412 0.270588 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-340.734 64.445 m 341.332 60.168 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.592157 0.407843 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-345.074 47.785 m 346.875 43.863 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.545098 0.454902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-346.875 43.863 m 348.914 40.051 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.498039 0.501961 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-348.914 40.051 m 351.152 36.355 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.45098 0.54902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-351.152 36.355 m 353.578 32.781 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.407843 0.592157 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-353.578 32.781 m 356.176 29.324 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.364706 0.635294 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-356.176 29.324 m 358.922 25.988 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.321569 0.678431 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-358.922 25.988 m 361.813 22.773 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.278431 0.721569 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-361.813 22.773 m 364.832 19.68 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.239216 0.760784 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-364.832 19.68 m 367.973 16.711 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.203922 0.796078 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-367.973 16.711 m 371.223 13.859 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.145098 0.854902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-377.793 122.191 m 374.145 119.875 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.184314 0.815686 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-374.145 119.875 m 370.602 117.398 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.219608 0.780392 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-370.602 117.398 m 367.176 114.762 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.258824 0.741176 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-367.176 114.762 m 363.887 111.957 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.301961 0.698039 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-363.887 111.957 m 360.746 108.992 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.160784 0.839216 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-381.012 116.746 m 377.09 114.934 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.196078 0.803922 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-377.09 114.934 m 373.273 112.91 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.235294 0.764706 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-373.273 112.91 m 369.582 110.672 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.27451 0.72549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-369.582 110.672 m 366.02 108.223 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.129412 0.870588 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-389.012 111.379 m 384.766 110.586 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.164706 0.835294 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-384.766 110.586 m 380.582 109.5 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.203922 0.796078 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-380.582 109.5 m 376.492 108.117 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.243137 0.756863 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-376.492 108.117 m 372.516 106.438 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.286275 0.713726 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-372.516 106.438 m 368.668 104.48 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.333333 0.666667 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-368.668 104.48 m 364.98 102.238 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.376471 0.623529 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-364.98 102.238 m 361.473 99.73 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.427451 0.572549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-361.473 99.73 m 358.168 96.949 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.478431 0.521569 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-358.168 96.949 m 355.125 93.895 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.529412 0.470588 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-355.125 93.895 m 352.371 90.578 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.580392 0.419608 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-352.371 90.578 m 349.957 87.004 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.631373 0.368627 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-349.957 87.004 m 347.945 83.195 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.678431 0.321569 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-347.945 83.195 m 346.387 79.18 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.721569 0.278431 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-346.387 79.18 m 345.332 75.004 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.74902 0.25098 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-345.332 75.004 m 344.84 70.77 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.764706 0.235294 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-344.84 70.77 m 344.918 66.59 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.760784 0.239216 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-344.918 66.59 m 345.57 62.461 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.568627 0.431373 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-353.117 47.215 m 355.965 43.969 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.513726 0.486275 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-355.965 43.969 m 359.082 40.992 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.462745 0.537255 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-359.082 40.992 m 362.449 38.289 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.415686 0.584314 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-362.449 38.289 m 366.023 35.863 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.364706 0.635294 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-366.023 35.863 m 369.77 33.715 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.317647 0.682353 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-369.77 33.715 m 373.66 31.844 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.27451 0.72549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-373.66 31.844 m 377.672 30.258 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.235294 0.764706 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-377.672 30.258 m 381.793 28.961 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.192157 0.807843 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-381.793 28.961 m 385.992 27.957 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.129412 0.870588 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-393.309 102.922 m 389 103.254 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.164706 0.835294 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-389 103.254 m 384.68 103.18 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.203922 0.796078 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-384.68 103.18 m 380.387 102.703 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.247059 0.752941 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-380.387 102.703 m 376.156 101.84 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.290196 0.709804 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-376.156 101.84 m 372.023 100.602 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.337255 0.662745 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-372.023 100.602 m 368.027 98.98 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.384314 0.615686 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-368.027 98.98 m 364.211 96.98 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.435294 0.564706 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-364.211 96.98 m 360.609 94.625 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.486275 0.513726 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-360.609 94.625 m 357.258 91.91 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.145098 0.854902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-393.309 98.445 m 389.07 99.273 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.184314 0.815686 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-389.07 99.273 m 384.773 99.641 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.223529 0.776471 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-384.773 99.641 m 380.457 99.551 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.262745 0.737255 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-380.457 99.551 m 376.18 99.008 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.172549 0.827451 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-393.309 89.492 m 389.484 91.469 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.207843 0.792157 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-389.484 91.469 m 385.777 92.766 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.243137 0.756863 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-385.777 92.766 m 381.934 93.555 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.282353 0.717647 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-381.934 93.555 m 377.977 93.852 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.32549 0.67451 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-377.977 93.852 m 373.906 93.645 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.372549 0.627451 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-373.906 93.645 m 369.832 92.934 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.423529 0.576471 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-369.832 92.934 m 365.813 91.703 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.478431 0.521569 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-365.813 91.703 m 362.031 89.98 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.533333 0.466667 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-362.031 89.98 m 358.656 87.828 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.588235 0.411765 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-358.656 87.828 m 355.723 85.34 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.639216 0.360784 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-355.723 85.34 m 353.184 82.434 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.694118 0.305882 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-353.184 82.434 m 351.258 79.43 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.733333 0.266667 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-351.258 79.43 m 349.75 76.078 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.768627 0.231373 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-349.75 76.078 m 348.859 72.59 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.788235 0.211765 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-348.859 72.59 m 348.605 69.441 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.792157 0.207843 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-348.605 69.441 m 348.855 66.012 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.788235 0.211765 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-348.855 66.012 m 349.723 62.605 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.768627 0.231373 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-349.723 62.605 m 351.055 59.566 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.533333 0.466667 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-361.98 48.648 m 365.777 46.898 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.478431 0.521569 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-365.777 46.898 m 369.887 45.629 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.419608 0.580392 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-369.887 45.629 m 374.129 44.895 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.368627 0.631373 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-374.129 44.895 m 378.434 44.707 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.317647 0.682353 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-378.434 44.707 m 382.727 45.09 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.27451 0.72549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-382.727 45.09 m 386.918 46.063 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.231373 0.768627 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-386.918 46.063 m 390.891 47.613 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.188235 0.811765 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-393.309 80.535 m 391.148 83.109 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.207843 0.792157 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-391.148 83.109 m 388.613 85.328 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.235294 0.764706 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-388.613 85.328 m 385.652 87.211 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.266667 0.733333 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-385.652 87.211 m 382.418 88.637 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.301961 0.698039 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-382.418 88.637 m 379.012 89.586 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.337255 0.662745 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-379.012 89.586 m 375.355 90.086 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.380392 0.619608 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-375.355 90.086 m 371.438 90.066 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.215686 0.784314 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-391.438 61.18 m 392.637 64.059 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.2 0.8 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-392.637 64.059 m 393.309 67.102 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.513726 0.486275 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-360.375 46.223 m 364.031 43.953 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.458824 0.541176 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-364.031 43.953 m 367.914 42.102 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.407843 0.592157 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-367.914 42.102 m 371.984 40.676 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.356863 0.643137 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-371.984 40.676 m 376.18 39.676 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.309804 0.690196 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-376.18 39.676 m 380.457 39.133 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.262745 0.737255 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-380.457 39.133 m 384.773 39.043 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.223529 0.776471 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-384.773 39.043 m 389.07 39.41 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.184314 0.815686 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-389.07 39.41 m 393.309 40.238 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.290196 0.709804 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-376.156 36.844 m 380.387 35.98 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.247059 0.752941 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-380.387 35.98 m 384.68 35.504 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.203922 0.796078 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-384.68 35.504 m 389 35.43 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.164706 0.835294 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-389 35.43 m 393.309 35.762 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.411765 0.588235 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-359.383 35.984 m 362.609 33.113 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.364706 0.635294 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-362.609 33.113 m 366.02 30.461 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.317647 0.682353 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-366.02 30.461 m 369.582 28.012 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.27451 0.72549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-369.582 28.012 m 373.273 25.773 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.235294 0.764706 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-373.273 25.773 m 377.09 23.75 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.196078 0.803922 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-377.09 23.75 m 381.012 21.941 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.301961 0.698039 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-363.887 26.727 m 367.176 23.922 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.258824 0.741176 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-367.176 23.922 m 370.602 21.285 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.219608 0.780392 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-370.602 21.285 m 374.145 18.809 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.184314 0.815686 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-374.145 18.809 m 377.793 16.492 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.345098 0.654902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-354.98 26.668 m 357.555 23.195 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.301961 0.698039 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-357.555 23.195 m 360.258 19.82 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.262745 0.737255 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-360.258 19.82 m 363.078 16.543 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.223529 0.776471 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-363.078 16.543 m 366.008 13.363 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.188235 0.811765 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-366.008 13.363 m 369.043 10.281 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.247059 0.752941 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-359.52 17.414 m 362.219 14.035 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.207843 0.792157 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-362.219 14.035 m 365.027 10.746 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.627451 0.372549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-339.523 50.855 m 340.621 46.676 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.584314 0.415686 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-340.621 46.676 m 341.906 42.551 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.541176 0.458824 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-341.906 42.551 m 343.355 38.477 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.498039 0.501961 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-343.355 38.477 m 344.957 34.461 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.45098 0.54902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-344.957 34.461 m 346.691 30.504 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.407843 0.592157 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-346.691 30.504 m 348.559 26.602 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.364706 0.635294 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-348.559 26.602 m 350.539 22.758 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.32549 0.67451 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-350.539 22.758 m 352.633 18.977 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.286275 0.713726 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-352.633 18.977 m 354.824 15.25 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.247059 0.752941 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-354.824 15.25 m 357.117 11.582 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.211765 0.788235 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-357.117 11.582 m 359.5 7.973 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.176471 0.823529 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-359.5 7.973 m 361.309 5.402 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.52549 0.47451 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-339.199 40.734 m 340.348 36.566 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.482353 0.517647 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-340.348 36.566 m 341.609 32.434 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.439216 0.560784 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-341.609 32.434 m 342.977 28.332 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.396078 0.603922 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-342.977 28.332 m 344.441 24.262 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.356863 0.643137 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-344.441 24.262 m 345.996 20.227 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.313726 0.686275 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-345.996 20.227 m 347.633 16.227 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.27451 0.72549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-347.633 16.227 m 349.352 12.258 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.239216 0.760784 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-349.352 12.258 m 351.145 8.32 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.203922 0.796078 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-351.145 8.32 m 353.012 4.418 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.345098 0.654902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-333.145 21.609 m 333.598 17.309 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.305882 0.694118 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-333.598 17.309 m 334.074 13.012 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.270588 0.729412 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-334.074 13.012 m 334.578 8.715 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.235294 0.764706 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-334.578 8.715 m 335.102 4.418 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.34902 0.65098 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-326.801 21.715 m 326.648 17.391 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.309804 0.690196 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-326.648 17.391 m 326.488 13.066 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.270588 0.729412 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-326.488 13.066 m 326.32 8.742 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.235294 0.764706 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-326.32 8.742 m 326.148 4.418 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.588235 0.411765 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-322.18 46.578 m 321.551 42.297 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.545098 0.454902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-321.551 42.297 m 320.836 38.031 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.501961 0.498039 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-320.836 38.031 m 320.043 33.781 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.458824 0.541176 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-320.043 33.781 m 319.176 29.543 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.415686 0.584314 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-319.176 29.543 m 318.242 25.324 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.376471 0.623529 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-318.242 25.324 m 317.246 21.113 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.337255 0.662745 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-317.246 21.113 m 316.191 16.918 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.298039 0.701961 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-316.191 16.918 m 315.086 12.738 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.258824 0.741176 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-315.086 12.738 m 313.926 8.57 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.223529 0.776471 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-313.926 8.57 m 312.715 4.418 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.541176 0.458824 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-314.863 42.551 m 313.414 38.477 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.498039 0.501961 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-313.414 38.477 m 311.816 34.461 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.45098 0.54902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-311.816 34.461 m 310.078 30.504 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.407843 0.592157 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-310.078 30.504 m 308.211 26.602 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.364706 0.635294 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-308.211 26.602 m 306.23 22.758 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.32549 0.67451 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-306.23 22.758 m 304.141 18.977 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.286275 0.713726 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-304.141 18.977 m 301.945 15.25 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.247059 0.752941 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-301.945 15.25 m 299.652 11.582 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.211765 0.788235 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-299.652 11.582 m 297.27 7.973 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.176471 0.823529 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-297.27 7.973 m 294.805 4.418 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.368627 0.631373 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-304.66 28.051 m 302.316 24.422 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.32549 0.67451 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-302.316 24.422 m 299.84 20.875 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.286275 0.713726 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-299.84 20.875 m 297.25 17.414 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.247059 0.752941 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-297.25 17.414 m 294.551 14.035 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.207843 0.792157 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-294.551 14.035 m 291.746 10.746 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.172549 0.827451 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-291.746 10.746 m 288.844 7.539 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.262745 0.737255 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-296.512 19.82 m 293.691 16.543 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.223529 0.776471 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-293.691 16.543 m 290.762 13.363 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.188235 0.811765 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-290.762 13.363 m 287.727 10.281 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.423529 0.576471 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-299.73 35.996 m 296.719 32.898 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.376471 0.623529 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-296.719 32.898 m 293.531 29.984 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.333333 0.666667 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-293.531 29.984 m 290.18 27.258 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.290196 0.709804 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-290.18 27.258 m 286.684 24.715 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.247059 0.752941 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-286.684 24.715 m 283.066 22.348 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.207843 0.792157 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-283.066 22.348 m 279.336 20.168 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.172549 0.827451 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-279.336 20.168 m 275.5 18.18 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.690196 0.309804 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-310.277 56.484 m 308.512 52.547 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.647059 0.352941 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-308.512 52.547 m 306.352 48.813 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.596078 0.403922 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-306.352 48.813 m 303.852 45.293 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.545098 0.454902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-303.852 45.293 m 301.063 42.004 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.494118 0.505882 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-301.063 42.004 m 298.023 38.941 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.443137 0.556863 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-298.023 38.941 m 294.754 36.117 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.396078 0.603922 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-294.754 36.117 m 291.289 33.535 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.34902 0.65098 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-291.289 33.535 m 287.664 31.188 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.305882 0.694118 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-287.664 31.188 m 283.898 29.082 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.262745 0.737255 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-283.898 29.082 m 280 27.223 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.219608 0.780392 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-280 27.223 m 275.992 25.609 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.180392 0.819608 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-275.992 25.609 m 271.887 24.258 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.243137 0.756863 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-280.277 30.566 m 276.188 29.184 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.203922 0.796078 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-276.188 29.184 m 272.004 28.098 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.164706 0.835294 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-272.004 28.098 m 267.758 27.305 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.65098 0.34902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-305.191 53.23 m 302.547 49.836 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.596078 0.403922 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-302.547 49.836 m 299.512 46.773 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.541176 0.458824 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-299.512 46.773 m 296.164 44.059 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.486275 0.513726 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-296.164 44.059 m 292.559 41.703 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.435294 0.564706 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-292.559 41.703 m 288.742 39.703 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.384314 0.615686 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-288.742 39.703 m 284.746 38.082 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.337255 0.662745 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-284.746 38.082 m 280.617 36.844 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.290196 0.709804 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-280.617 36.844 m 276.387 35.98 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.247059 0.752941 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-276.387 35.98 m 272.09 35.504 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.203922 0.796078 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-272.09 35.504 m 267.77 35.43 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.164706 0.835294 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-267.77 35.43 m 263.461 35.762 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.309804 0.690196 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-280.59 39.676 m 276.313 39.133 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.262745 0.737255 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-276.313 39.133 m 272 39.043 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.223529 0.776471 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-272 39.043 m 267.699 39.41 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.184314 0.815686 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-267.699 39.41 m 263.461 40.238 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.168627 0.831373 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-263.461 89.91 m 265.879 91.07 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.192157 0.807843 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-265.879 91.07 m 269.852 92.621 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.231373 0.768627 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-269.852 92.621 m 274.043 93.594 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.27451 0.72549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-274.043 93.594 m 278.336 93.977 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.317647 0.682353 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-278.336 93.977 m 282.641 93.789 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.368627 0.631373 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-282.641 93.789 m 286.883 93.055 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.419608 0.580392 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-286.883 93.055 m 290.992 91.785 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.478431 0.521569 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-290.992 91.785 m 294.789 90.035 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.533333 0.466667 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-294.789 90.035 m 298.277 87.789 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.588235 0.411765 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-298.277 87.789 m 301.172 85.297 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.639216 0.360784 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-301.172 85.297 m 303.695 82.371 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.694118 0.305882 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-303.695 82.371 m 305.715 79.117 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.737255 0.262745 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-305.715 79.117 m 307.051 76.078 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.768627 0.231373 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-307.051 76.078 m 307.914 72.672 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.788235 0.211765 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-307.914 72.672 m 308.164 69.242 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.792157 0.207843 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-308.164 69.242 m 307.91 66.094 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.788235 0.211765 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-307.91 66.094 m 307.02 62.605 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.768627 0.231373 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-307.02 62.605 m 305.516 59.254 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.733333 0.266667 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-305.516 59.254 m 303.586 56.25 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.694118 0.305882 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-303.586 56.25 m 301.047 53.344 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.639216 0.360784 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-301.047 53.344 m 298.117 50.855 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.588235 0.411765 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-298.117 50.855 m 294.738 48.703 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.533333 0.466667 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-294.738 48.703 m 290.957 46.98 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.478431 0.521569 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-290.957 46.98 m 286.938 45.754 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.423529 0.576471 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-286.938 45.754 m 282.863 45.039 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.372549 0.627451 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-282.863 45.039 m 278.793 44.832 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.32549 0.67451 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-278.793 44.832 m 274.836 45.129 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.282353 0.717647 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-274.836 45.129 m 270.992 45.918 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.243137 0.756863 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-270.992 45.918 m 267.285 47.215 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.207843 0.792157 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-267.285 47.215 m 263.461 49.191 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.431373 0.568627 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-285.336 48.617 m 281.418 48.598 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.380392 0.619608 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-281.418 48.598 m 277.758 49.098 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.337255 0.662745 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-277.758 49.098 m 274.352 50.047 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.301961 0.698039 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-274.352 50.047 m 271.121 51.473 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.266667 0.733333 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-271.121 51.473 m 268.156 53.355 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.235294 0.764706 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-268.156 53.355 m 265.621 55.574 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.207843 0.792157 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-265.621 55.574 m 263.461 58.148 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.192157 0.807843 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-263.461 71.582 m 264.137 74.625 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.2 0.8 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-264.137 74.625 m 265.332 77.504 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.215686 0.784314 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-265.332 77.504 m 267.031 80.172 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.231373 0.768627 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-267.031 80.172 m 269.156 82.543 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.254902 0.745098 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-269.156 82.543 m 271.723 84.609 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.282353 0.717647 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-271.723 84.609 m 274.586 86.25 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.313726 0.686275 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-274.586 86.25 m 277.746 87.484 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.34902 0.65098 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-277.746 87.484 m 281.211 88.277 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.392157 0.607843 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-281.211 88.277 m 284.777 88.539 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.435294 0.564706 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-284.777 88.539 m 288.184 88.277 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.482353 0.517647 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-288.184 88.277 m 291.613 87.516 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.533333 0.466667 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-291.613 87.516 m 295 86.227 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.145098 0.854902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-263.461 98.445 m 267.699 99.273 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.184314 0.815686 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-267.699 99.273 m 272 99.641 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.223529 0.776471 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-272 99.641 m 276.313 99.551 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.262745 0.737255 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-276.313 99.551 m 280.59 99.008 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.309804 0.690196 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-280.59 99.008 m 284.789 98.008 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.356863 0.643137 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-284.789 98.008 m 288.855 96.582 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.407843 0.592157 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-288.855 96.582 m 292.742 94.73 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.458824 0.541176 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-292.742 94.73 m 296.395 92.461 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.129412 0.870588 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-263.461 102.922 m 267.77 103.254 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.164706 0.835294 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-267.77 103.254 m 272.09 103.18 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.203922 0.796078 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-272.09 103.18 m 276.387 102.703 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.247059 0.752941 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-276.387 102.703 m 280.617 101.84 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.129412 0.870588 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-267.758 111.379 m 272.004 110.586 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.164706 0.835294 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-272.004 110.586 m 276.188 109.5 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.203922 0.796078 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-276.188 109.5 m 280.277 108.117 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.243137 0.756863 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-280.277 108.117 m 284.258 106.438 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.286275 0.713726 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-284.258 106.438 m 288.102 104.48 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.333333 0.666667 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-288.102 104.48 m 291.789 102.238 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.376471 0.623529 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-291.789 102.238 m 295.301 99.73 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.427451 0.572549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-295.301 99.73 m 298.602 96.949 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.478431 0.521569 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-298.602 96.949 m 301.645 93.895 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.529412 0.470588 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-301.645 93.895 m 304.398 90.578 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.580392 0.419608 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-304.398 90.578 m 306.813 87.004 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.631373 0.368627 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-306.813 87.004 m 308.824 83.195 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.678431 0.321569 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-308.824 83.195 m 310.387 79.18 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.721569 0.278431 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-310.387 79.18 m 311.441 75.004 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.74902 0.25098 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-311.441 75.004 m 311.934 70.77 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.764706 0.235294 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-311.934 70.77 m 311.852 66.59 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.145098 0.854902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-271.887 114.426 m 275.992 113.074 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.180392 0.819608 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-275.992 113.074 m 280 111.461 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.137255 0.862745 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-275.5 120.504 m 279.336 118.516 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.172549 0.827451 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-279.336 118.516 m 283.066 116.336 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.207843 0.792157 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-283.066 116.336 m 286.684 113.973 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.247059 0.752941 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-286.684 113.973 m 290.18 111.426 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.290196 0.709804 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-290.18 111.426 m 293.531 108.699 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.333333 0.666667 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-293.531 108.699 m 296.719 105.785 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.376471 0.623529 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-296.719 105.785 m 299.73 102.688 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.423529 0.576471 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-299.73 102.688 m 302.547 99.414 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.254902 0.745098 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-388.223 61.398 m 389.434 64.152 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.243137 0.756863 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-389.434 64.152 m 390.129 67.07 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.235294 0.764706 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-390.129 67.07 m 390.273 70.125 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.231373 0.768627 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-390.273 70.125 m 389.836 73.145 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.239216 0.760784 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-389.836 73.145 m 388.832 76.059 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.247059 0.752941 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-388.832 76.059 m 387.34 78.695 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.266667 0.733333 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-387.34 78.695 m 385.406 81.043 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.380392 0.619608 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-302.371 30.563 m 299.754 27.125 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.337255 0.662745 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-299.754 27.125 m 296.992 23.797 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.298039 0.701961 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-296.992 23.797 m 294.098 20.59 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.258824 0.741176 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-294.098 20.59 m 291.078 17.492 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.219608 0.780392 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-291.078 17.492 m 287.949 14.512 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.180392 0.819608 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-287.949 14.512 m 284.711 11.645 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.286275 0.713726 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-271.363 57.641 m 269.43 59.988 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.266667 0.733333 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-269.43 59.988 m 267.938 62.625 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.247059 0.752941 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-267.938 62.625 m 266.934 65.539 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.239216 0.760784 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-266.934 65.539 m 266.496 68.559 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.231373 0.768627 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-266.496 68.559 m 266.641 71.613 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.235294 0.764706 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-266.641 71.613 m 267.336 74.531 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.243137 0.756863 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-267.336 74.531 m 268.547 77.285 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.254902 0.745098 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-268.547 77.285 m 270.266 79.816 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.27451 0.72549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-270.266 79.816 m 272.367 82.008 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.298039 0.701961 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-272.367 82.008 m 274.984 83.945 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.329412 0.670588 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-274.984 83.945 m 277.75 85.355 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.360784 0.639216 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-277.75 85.355 m 280.875 86.391 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.4 0.6 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-280.875 86.391 m 284.313 86.953 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.443137 0.556863 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-284.313 86.953 m 287.617 86.965 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.490196 0.509804 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-287.617 86.965 m 290.969 86.469 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.313726 0.686275 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-384.164 62.258 m 385.305 64.871 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.301961 0.698039 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-385.305 64.871 m 385.914 67.617 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.294118 0.705882 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-385.914 67.617 m 385.973 70.512 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.294118 0.705882 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-385.973 70.512 m 385.445 73.348 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.298039 0.701961 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-385.445 73.348 m 384.355 76.059 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.313726 0.686275 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-272.418 62.625 m 271.324 65.336 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.298039 0.701961 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-271.324 65.336 m 270.797 68.172 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.294118 0.705882 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-270.797 68.172 m 270.855 71.066 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.294118 0.705882 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-270.855 71.066 m 271.465 73.813 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.301961 0.698039 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-271.465 73.813 m 272.605 76.426 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.176471 0.823529 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-307.723 134.266 m 308.223 133.008 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.188235 0.811765 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-308.223 133.008 m 309.785 128.973 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.223529 0.776471 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-309.785 128.973 m 311.281 124.914 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.258824 0.741176 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-311.281 124.914 m 312.715 120.832 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.352941 0.647059 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-379.875 85.012 m 376.727 86.199 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.388235 0.611765 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-376.727 86.199 m 373.496 86.859 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.431373 0.568627 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-373.496 86.859 m 370.133 87.027 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.47451 0.52549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-370.133 87.027 m 366.645 86.684 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.52549 0.47451 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-366.645 86.684 m 363.277 85.773 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.576471 0.423529 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-363.277 85.773 m 360.355 84.441 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.623529 0.376471 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-360.355 84.441 m 357.535 82.578 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.776471 0.223529 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-355.438 77.574 m 353.973 75.48 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.807843 0.192157 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-353.973 75.48 m 352.91 72.832 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.835294 0.164706 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-352.91 72.832 m 352.473 70.293 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.843137 0.156863 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-352.473 70.293 m 352.609 67.359 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.847059 0.152941 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-352.609 67.359 m 353.184 65.086 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.827451 0.172549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-353.184 65.086 m 354.195 62.918 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.803922 0.196078 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-354.195 62.918 m 355.938 60.668 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.4 0.6 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-378.727 61.039 m 380.23 63.215 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.380392 0.619608 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-380.23 63.215 m 381.277 65.672 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.368627 0.631373 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-381.277 65.672 m 381.781 68.234 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.360784 0.639216 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-381.781 68.234 m 381.723 70.957 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.360784 0.639216 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-381.723 70.957 m 381.082 73.586 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.368627 0.631373 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-381.082 73.586 m 379.875 76.059 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.384314 0.615686 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-379.875 76.059 m 378.242 78.172 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.407843 0.592157 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-378.242 78.172 m 376.211 79.93 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.435294 0.564706 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-376.211 79.93 m 373.84 81.305 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.470588 0.529412 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-373.84 81.305 m 371.238 82.254 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.505882 0.494118 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-371.238 82.254 m 368.172 82.766 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.552941 0.447059 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-368.172 82.766 m 365.422 82.699 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.596078 0.403922 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-365.422 82.699 m 362.512 82.109 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.647059 0.352941 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-362.512 82.109 m 359.824 80.996 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.298039 0.701961 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-344.055 17.852 m 345.488 13.77 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.258824 0.741176 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-345.488 13.77 m 346.984 9.711 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.223529 0.776471 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-346.984 9.711 m 348.547 5.676 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.188235 0.811765 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-348.547 5.676 m 349.047 4.418 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.678431 0.321569 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-299.238 56.105 m 296.414 54.242 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.623529 0.376471 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-296.414 54.242 m 293.492 52.91 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.576471 0.423529 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-293.492 52.91 m 290.125 52 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.52549 0.47451 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-290.125 52 m 286.641 51.656 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.47451 0.52549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-286.641 51.656 m 283.277 51.824 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.431373 0.568627 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-283.277 51.824 m 280.043 52.484 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.388235 0.611765 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-280.043 52.484 m 276.895 53.672 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.690196 0.309804 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-296.949 57.688 m 294.258 56.574 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.647059 0.352941 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-294.258 56.574 m 291.348 55.984 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.596078 0.403922 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-291.348 55.984 m 288.602 55.918 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.552941 0.447059 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-288.602 55.918 m 285.531 56.43 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.505882 0.494118 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-285.531 56.43 m 282.93 57.379 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.470588 0.529412 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-282.93 57.379 m 280.559 58.754 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.435294 0.564706 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-280.559 58.754 m 278.531 60.512 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.407843 0.592157 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-278.531 60.512 m 276.895 62.625 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.384314 0.615686 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-276.895 62.625 m 275.691 65.098 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.368627 0.631373 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-275.691 65.098 m 275.047 67.727 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.360784 0.639216 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-275.047 67.727 m 274.988 70.449 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.360784 0.639216 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-274.988 70.449 m 275.492 73.012 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.368627 0.631373 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-275.492 73.012 m 276.539 75.469 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.380392 0.619608 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-276.539 75.469 m 278.043 77.645 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.4 0.6 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-278.043 77.645 m 279.992 79.516 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.427451 0.572549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-279.992 79.516 m 282.273 80.992 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.458824 0.541176 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-282.273 80.992 m 284.855 82.059 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.498039 0.501961 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-284.855 82.059 m 287.762 82.672 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.537255 0.462745 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-287.762 82.672 m 290.586 82.77 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.584314 0.415686 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-290.586 82.77 m 293.68 82.289 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.635294 0.364706 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-293.68 82.289 m 296.254 81.348 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.678431 0.321569 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-296.254 81.348 m 298.738 79.875 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.72549 0.27451 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-298.738 79.875 m 300.832 78.016 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.768627 0.231373 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-300.832 78.016 m 302.574 75.766 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.803922 0.196078 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-302.574 75.766 m 303.586 73.598 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.827451 0.172549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-303.586 73.598 m 304.16 71.324 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.847059 0.152941 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-304.16 71.324 m 304.297 68.391 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.843137 0.156863 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-304.297 68.391 m 303.863 65.852 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.835294 0.164706 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-303.863 65.852 m 302.797 63.203 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.807843 0.192157 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-302.797 63.203 m 301.336 61.109 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.545098 0.454902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-371.566 61.43 m 373.207 62.934 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.521569 0.478431 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-373.207 62.934 m 374.547 64.82 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.498039 0.501961 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-374.547 64.82 m 375.375 66.992 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.482353 0.517647 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-375.375 66.992 m 375.668 69.273 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.478431 0.521569 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-375.668 69.273 m 375.398 71.582 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.482353 0.517647 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-375.398 71.582 m 374.617 73.715 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.494118 0.505882 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-374.617 73.715 m 373.313 75.629 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.517647 0.482353 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-373.313 75.629 m 371.691 77.16 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.541176 0.458824 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-285.078 61.523 m 283.457 63.055 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.517647 0.482353 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-283.457 63.055 m 282.152 64.969 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.494118 0.505882 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-282.152 64.969 m 281.371 67.102 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.482353 0.517647 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-281.371 67.102 m 281.102 69.41 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.478431 0.521569 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-281.102 69.41 m 281.395 71.691 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.482353 0.517647 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-281.395 71.691 m 282.227 73.863 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.498039 0.501961 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-282.227 73.863 m 283.563 75.75 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.521569 0.478431 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-283.563 75.75 m 285.203 77.254 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.392157 0.607843 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-321.668 111.879 m 322.293 107.598 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.435294 0.564706 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-322.293 107.598 m 322.867 103.309 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.478431 0.521569 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-322.867 103.309 m 323.391 99.02 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.521569 0.478431 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-323.391 99.02 m 323.859 94.723 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.792157 0.207843 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-361.148 62.383 m 363.305 62.086 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.745098 0.254902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-363.305 62.086 m 365.215 62.246 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.705882 0.294118 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-365.215 62.246 m 367.039 62.906 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.67451 0.32549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-367.039 62.906 m 368.672 64.043 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.643137 0.356863 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-368.672 64.043 m 369.953 65.621 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.619608 0.380392 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-369.953 65.621 m 370.746 67.461 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.603922 0.396078 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-370.746 67.461 m 371 69.387 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.596078 0.403922 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-371 69.387 m 370.664 71.438 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.607843 0.392157 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-370.664 71.438 m 369.746 73.352 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.623529 0.376471 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-369.746 73.352 m 368.324 74.926 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.65098 0.34902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-368.324 74.926 m 366.445 76.059 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.686275 0.313726 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-366.445 76.059 m 364.445 76.578 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.721569 0.278431 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-364.445 76.578 m 362.578 76.586 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.764706 0.235294 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-362.578 76.582 m 360.277 76.043 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.803922 0.196078 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-296.492 62.641 m 294.191 62.102 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.764706 0.235294 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-294.191 62.102 m 292.324 62.105 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.721569 0.278431 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-292.324 62.105 m 290.328 62.625 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.686275 0.313726 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-290.328 62.625 m 288.449 63.758 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.65098 0.34902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-288.449 63.758 m 287.023 65.332 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.623529 0.376471 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-287.023 65.332 m 286.109 67.246 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.607843 0.392157 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-286.109 67.246 m 285.77 69.297 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.596078 0.403922 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-285.77 69.297 m 286.023 71.223 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.603922 0.396078 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-286.023 71.223 m 286.816 73.063 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.619608 0.380392 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-286.816 73.063 m 288.098 74.641 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.643137 0.356863 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-288.098 74.641 m 289.734 75.777 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.67451 0.32549 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-289.734 75.777 m 291.555 76.438 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.705882 0.294118 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-291.555 76.438 m 293.465 76.598 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.745098 0.254902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-293.465 76.598 m 295.621 76.301 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.972549 0.027451 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-358.719 71.172 m 358.117 70 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.968627 0.0313726 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-358.117 70 m 358.109 68.805 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.968627 0.0313726 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-358.109 68.805 m 358.523 67.836 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.972549 0.027451 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-358.523 67.836 m 359.422 67.109 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.980392 0.0196078 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-359.422 67.109 m 360.559 66.848 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.976471 0.0235294 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-360.559 66.848 m 361.871 67.043 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-1 0 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-361.871 67.043 m 363.258 67.664 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.929412 0.0705882 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-363.258 67.664 m 364.16 68.438 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.882353 0.117647 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-364.16 68.438 m 364.465 69.313 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.866667 0.133333 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-364.465 69.313 m 364.188 70.168 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.882353 0.117647 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-364.188 70.168 m 363.324 70.953 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.929412 0.0705882 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-363.324 70.953 m 361.965 71.582 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-1 0 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-361.965 71.582 m 360.668 71.809 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.85098 0.14902 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-292.063 68.949 m 292.117 69.859 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.854902 0.145098 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-292.117 69.859 m 292.727 70.703 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.890196 0.109804 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-292.727 70.703 m 294.16 71.531 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.968627 0.0313726 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-294.16 71.531 m 295.695 71.922 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.980392 0.0196078 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-295.695 71.922 m 297.066 71.789 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.972549 0.027451 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-297.066 71.789 m 298.102 71.082 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.972549 0.027451 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-298.102 71.082 m 298.652 69.902 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.968627 0.0313726 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-298.652 69.902 m 298.621 68.723 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.968627 0.0313726 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-298.621 68.723 m 298.172 67.777 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.972549 0.027451 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-298.172 67.777 m 297.25 67.094 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.980392 0.0196078 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-297.25 67.094 m 296.102 66.875 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.980392 0.0196078 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-296.102 66.875 m 294.805 67.102 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-1 0 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-294.805 67.102 m 293.445 67.73 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.929412 0.0705882 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-293.445 67.73 m 292.582 68.516 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.466667 0.533333 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-311.023 102.426 m 312.715 98.445 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.513726 0.486275 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-312.715 98.445 m 314.238 94.398 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.560784 0.439216 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-314.238 94.398 m 315.574 90.289 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.603922 0.396078 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-315.574 90.289 m 316.699 86.117 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-[ 1 0 0 1 0 0 ] concat
-  q
-0.643137 0.356863 1 rg
-0.383709 w
-0 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 1 0 0 cm
-316.699 86.117 m 317.598 81.891 l S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.745098 0.254902 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-315.512 -69.738 m 315.504 -69.531 315.504 -69.465 315.504 -69.543 c S Q
-314.77 71.094 m 315.504 69.543 l 316.305 71.063 l h
-314.77 71.094 m f
-q 1 0 0 -1 0 0 cm
-314.77 -71.094 m 315.504 -69.543 l 316.305 -71.063 l h
-314.77 -71.094 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.2 0.8 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-290.594 -122.512 m 290.738 -122.363 290.785 -122.316 290.734 -122.371 c
- S Q
-289.109 122.926 m 290.734 122.371 l 290.203 124.004 l h
-289.109 122.926 m f
-q 1 0 0 -1 0 0 cm
-289.109 -122.926 m 290.734 -122.371 l 290.203 -124.004 l h
-289.109 -122.926 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.207843 0.792157 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-295.031 -124.047 m 295.16 -123.883 295.203 -123.832 295.156 -123.891 c S Q
-293.598 124.613 m 295.156 123.891 l 294.797 125.57 l h
-293.598 124.613 m f
-q 1 0 0 -1 0 0 cm
-293.598 -124.613 m 295.156 -123.891 l 294.797 -125.57 l h
-293.598 -124.613 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.211765 0.788235 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-300.059 -126.449 m 300.172 -126.273 300.207 -126.219 300.164 -126.281 c
- S Q
-298.699 127.176 m 300.164 126.281 l 300.004 127.992 l h
-298.699 127.176 m f
-q 1 0 0 -1 0 0 cm
-298.699 -127.176 m 300.164 -126.281 l 300.004 -127.992 l h
-298.699 -127.176 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.721569 0.278431 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-321.469 -71.582 m 321.473 -71.375 321.473 -71.309 321.473 -71.383 c S Q
-320.691 72.914 m 321.473 71.383 l 322.227 72.926 l h
-320.691 72.914 m f
-q 1 0 0 -1 0 0 cm
-320.691 -72.914 m 321.473 -71.383 l 322.227 -72.926 l h
-320.691 -72.914 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.258824 0.741176 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-315.281 -125.203 m 315.336 -125 315.352 -124.938 315.332 -125.012 c S Q
-314.195 126.297 m 315.332 125.012 l 315.68 126.691 l h
-314.195 126.297 m f
-q 1 0 0 -1 0 0 cm
-314.195 -126.297 m 315.332 -125.012 l 315.68 -126.691 l h
-314.195 -126.297 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.717647 0.282353 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-326.363 -68.824 m 326.363 -68.617 326.363 -68.547 326.363 -68.625 c S Q
-325.602 70.164 m 326.363 68.625 l 327.137 70.156 l h
-325.602 70.164 m f
-q 1 0 0 -1 0 0 cm
-325.602 -70.164 m 326.363 -68.625 l 327.137 -70.156 l h
-325.602 -70.164 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.235294 0.764706 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-326.352 -129.172 m 326.359 -128.965 326.363 -128.898 326.359 -128.973 c
- S Q
-325.531 130.477 m 326.359 128.973 l 327.066 130.539 l h
-325.531 130.477 m f
-q 1 0 0 -1 0 0 cm
-325.531 -130.477 m 326.359 -128.973 l 327.066 -130.539 l h
-325.531 -130.477 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.717647 0.282353 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-329.063 -68.637 m 329.063 -68.426 329.063 -68.359 329.063 -68.438 c S Q
-328.289 69.969 m 329.063 68.438 l 329.824 69.973 l h
-328.289 69.969 m f
-q 1 0 0 -1 0 0 cm
-328.289 -69.969 m 329.063 -68.438 l 329.824 -69.973 l h
-328.289 -69.969 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.235294 0.764706 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-334.488 -129.207 m 334.465 -129 334.457 -128.934 334.465 -129.008 c S Q
-333.879 130.621 m 334.465 129.008 l 335.406 130.445 l h
-333.879 130.621 m f
-q 1 0 0 -1 0 0 cm
-333.879 -130.621 m 334.465 -129.008 l 335.406 -130.445 l h
-333.879 -130.621 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.717647 0.282353 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-332.977 -69.785 m 332.977 -69.578 332.977 -69.512 332.977 -69.586 c S Q
-332.199 71.117 m 332.977 69.586 l 333.734 71.125 l h
-332.199 71.117 m f
-q 1 0 0 -1 0 0 cm
-332.199 -71.117 m 332.977 -69.586 l 333.734 -71.125 l h
-332.199 -71.117 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.25098 0.74902 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-345.258 -125.434 m 345.191 -125.238 345.168 -125.176 345.191 -125.246 c
- S Q
-344.973 126.949 m 345.191 125.246 l 346.422 126.445 l h
-344.973 126.949 m f
-q 1 0 0 -1 0 0 cm
-344.973 -126.949 m 345.191 -125.246 l 346.422 -126.445 l h
-344.973 -126.949 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.341176 0.658824 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-347.152 -114.418 m 347.07 -114.227 347.043 -114.164 347.074 -114.234 c S Q
-346.98 115.949 m 347.074 114.234 l 348.391 115.336 l h
-346.98 115.949 m f
-q 1 0 0 -1 0 0 cm
-346.98 -115.949 m 347.074 -114.234 l 348.391 -115.336 l h
-346.98 -115.949 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.227451 0.772549 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-358.059 -123.383 m 357.941 -123.211 357.902 -123.156 357.945 -123.219 c
- S Q
-358.188 124.918 m 357.945 123.219 l 359.449 124.047 l h
-358.188 124.918 m f
-q 1 0 0 -1 0 0 cm
-358.188 -124.918 m 357.945 -123.219 l 359.449 -124.047 l h
-358.188 -124.918 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.733333 0.266667 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-340.609 -72.313 m 340.605 -72.102 340.602 -72.039 340.605 -72.113 c S Q
-339.887 73.672 m 340.605 72.113 l 341.422 73.625 l h
-339.887 73.672 m f
-q 1 0 0 -1 0 0 cm
-339.887 -73.672 m 340.605 -72.113 l 341.422 -73.625 l h
-339.887 -73.672 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.160784 0.839216 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-380.316 -116.422 m 380.129 -116.336 380.066 -116.309 380.137 -116.34 c S Q
-381.207 117.68 m 380.137 116.34 l 381.852 116.285 l h
-381.207 117.68 m f
-q 1 0 0 -1 0 0 cm
-381.207 -117.68 m 380.137 -116.34 l 381.852 -116.285 l h
-381.207 -117.68 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.764706 0.235294 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-344.852 -70.004 m 344.855 -69.816 344.859 -69.773 344.855 -69.875 c S Q
-344.059 71.395 m 344.855 69.875 l 345.594 71.426 l h
-344.059 71.395 m f
-q 1 0 0 -1 0 0 cm
-344.059 -71.395 m 344.855 -69.875 l 345.594 -71.426 l h
-344.059 -71.395 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.290196 0.709804 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-375.418 -101.621 m 375.219 -101.563 375.16 -101.543 375.234 -101.566 c S Q
-376.484 102.742 m 375.234 101.566 l 376.926 101.27 l h
-376.484 102.742 m f
-q 1 0 0 -1 0 0 cm
-376.484 -102.742 m 375.234 -101.566 l 376.926 -101.27 l h
-376.484 -102.742 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.184314 0.815686 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-388.305 -99.34 m 388.098 -99.355 388.035 -99.363 388.113 -99.355 c S Q
-389.707 99.988 m 388.113 99.355 l 389.574 98.461 l h
-389.707 99.988 m f
-q 1 0 0 -1 0 0 cm
-389.707 -99.988 m 388.113 -99.355 l 389.574 -98.461 l h
-389.707 -99.988 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.792157 0.207843 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-348.66 -68.676 m 348.664 -68.613 348.66 -68.695 348.645 -68.918 c S Q
-347.766 70.395 m 348.645 68.918 l 349.297 70.504 l h
-347.766 70.395 m f
-q 1 0 0 -1 0 0 cm
-347.766 -70.395 m 348.645 -68.918 l 349.297 -70.504 l h
-347.766 -70.395 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.266667 0.733333 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-384.949 -87.52 m 384.879 -87.551 384.938 -87.523 385.129 -87.441 c S Q
-386.844 87.523 m 385.129 87.441 l 386.223 86.117 l h
-386.844 87.523 m f
-q 1 0 0 -1 0 0 cm
-386.844 -87.523 m 385.129 -87.441 l 386.223 -86.117 l h
-386.844 -87.523 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.309804 0.690196 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-376.941 -39.582 m 377.148 -39.555 377.211 -39.547 377.133 -39.555 c S Q
-375.512 38.988 m 377.133 39.555 l 375.707 40.512 l h
-375.512 38.988 m f
-q 1 0 0 -1 0 0 cm
-375.512 -38.988 m 377.133 -39.555 l 375.707 -40.512 l h
-375.512 -38.988 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.203922 0.796078 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-385.445 -35.492 m 385.656 -35.488 385.723 -35.488 385.645 -35.488 c S Q
-384.098 34.746 m 385.645 35.488 l 384.125 36.281 l h
-384.098 34.746 m f
-q 1 0 0 -1 0 0 cm
-384.098 -34.746 m 385.645 -35.488 l 384.125 -36.281 l h
-384.098 -34.746 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.235294 0.764706 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-373.953 -25.414 m 374.137 -25.316 374.191 -25.285 374.125 -25.324 c S Q
-372.41 25.363 m 374.125 25.324 l 373.129 26.723 l h
-372.41 25.363 m f
-q 1 0 0 -1 0 0 cm
-372.41 -25.363 m 374.125 -25.324 l 373.129 -26.723 l h
-372.41 -25.363 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.223529 0.776471 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-363.598 -15.98 m 363.738 -15.824 363.785 -15.777 363.734 -15.832 c S Q
-362.129 16.441 m 363.734 15.832 l 363.258 17.48 l h
-362.129 16.441 m f
-q 1 0 0 -1 0 0 cm
-362.129 -16.441 m 363.734 -15.832 l 363.258 -17.48 l h
-362.129 -16.441 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.172549 0.827451 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-365.539 -10.176 m 365.68 -10.023 365.727 -9.973 365.672 -10.031 c S Q
-364.074 10.652 m 365.672 10.031 l 365.215 11.684 l h
-364.074 10.652 m f
-q 1 0 0 -1 0 0 cm
-364.074 -10.652 m 365.672 -10.031 l 365.215 -11.684 l h
-364.074 -10.652 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.407843 0.592157 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-347.023 -29.813 m 347.113 -29.625 347.141 -29.563 347.109 -29.633 c S Q
-345.754 30.688 m 347.109 29.633 l 347.141 31.348 l h
-345.754 30.688 m f
-q 1 0 0 -1 0 0 cm
-345.754 -30.688 m 347.109 -29.633 l 347.141 -31.348 l h
-345.754 -30.688 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.356863 0.643137 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-344.715 -23.547 m 344.793 -23.352 344.816 -23.289 344.789 -23.359 c S Q
-343.52 24.516 m 344.789 23.359 l 344.953 25.066 l h
-343.52 24.516 m f
-q 1 0 0 -1 0 0 cm
-343.52 -24.516 m 344.789 -23.359 l 344.953 -25.066 l h
-343.52 -24.516 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.270588 0.729412 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-334.164 -12.246 m 334.188 -12.039 334.195 -11.973 334.188 -12.051 c S Q
-333.246 13.484 m 334.188 12.051 l 334.77 13.664 l h
-333.246 13.484 m f
-q 1 0 0 -1 0 0 cm
-333.246 -13.484 m 334.188 -12.051 l 334.77 -13.664 l h
-333.246 -13.484 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.270588 0.729412 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-326.461 -12.301 m 326.453 -12.09 326.449 -12.023 326.453 -12.102 c S Q
-325.746 13.664 m 326.453 12.102 l 327.277 13.605 l h
-325.746 13.664 m f
-q 1 0 0 -1 0 0 cm
-325.746 -13.664 m 326.453 -12.102 l 327.277 -13.605 l h
-325.746 -13.664 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.376471 0.623529 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-318.066 -24.574 m 318.02 -24.371 318.004 -24.309 318.02 -24.383 c S Q
-317.629 26.051 m 318.02 24.383 l 319.121 25.699 l h
-317.629 26.051 m f
-q 1 0 0 -1 0 0 cm
-317.629 -26.051 m 318.02 -24.383 l 319.121 -25.699 l h
-317.629 -26.051 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.32549 0.67451 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-305.859 -22.086 m 305.758 -21.906 305.727 -21.848 305.762 -21.914 c S Q
-305.832 23.629 m 305.762 21.914 l 307.176 22.887 l h
-305.832 23.629 m f
-q 1 0 0 -1 0 0 cm
-305.832 -23.629 m 305.762 -21.914 l 307.176 -22.887 l h
-305.832 -23.629 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.247059 0.752941 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-296.773 -16.816 m 296.641 -16.652 296.602 -16.602 296.648 -16.66 c S Q
-297.008 18.336 m 296.648 16.66 l 298.207 17.379 l h
-297.008 18.336 m f
-q 1 0 0 -1 0 0 cm
-297.008 -18.336 m 296.648 -16.66 l 298.207 -17.379 l h
-297.008 -18.336 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.188235 0.811765 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-290.223 -12.816 m 290.078 -12.668 290.031 -12.621 290.082 -12.676 c S Q
-290.613 14.309 m 290.082 12.676 l 291.707 13.23 l h
-290.613 14.309 m f
-q 1 0 0 -1 0 0 cm
-290.613 -14.309 m 290.082 -12.676 l 291.707 -13.23 l h
-290.613 -14.309 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.207843 0.792157 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-282.402 -21.961 m 282.223 -21.855 282.168 -21.824 282.234 -21.863 c S Q
-283.172 23.301 m 282.234 21.863 l 283.945 21.973 l h
-283.172 23.301 m f
-q 1 0 0 -1 0 0 cm
-283.172 -23.301 m 282.234 -21.863 l 283.945 -21.973 l h
-283.172 -23.301 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.34902 0.65098 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-290.645 -33.117 m 290.469 -33.004 290.414 -32.969 290.48 -33.012 c S Q
-291.352 34.492 m 290.48 33.012 l 292.188 33.203 l h
-291.352 34.492 m f
-q 1 0 0 -1 0 0 cm
-291.352 -34.492 m 290.48 -33.012 l 292.188 -33.203 l h
-291.352 -34.492 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.164706 0.835294 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-271.25 -27.957 m 271.047 -27.918 270.98 -27.906 271.055 -27.918 c S Q
-272.426 28.957 m 271.055 27.918 l 272.707 27.445 l h
-272.426 28.957 m f
-q 1 0 0 -1 0 0 cm
-272.426 -28.957 m 271.055 -27.918 l 272.707 -27.445 l h
-272.426 -28.957 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.384314 0.615686 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-288.031 -39.414 m 287.84 -39.336 287.781 -39.313 287.855 -39.344 c S Q
-288.988 40.633 m 287.855 39.344 l 289.566 39.211 l h
-288.988 40.633 m f
-q 1 0 0 -1 0 0 cm
-288.988 -40.633 m 287.855 -39.344 l 289.566 -39.211 l h
-288.988 -40.633 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.223529 0.776471 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-271.234 -39.109 m 271.027 -39.125 270.961 -39.133 271.039 -39.125 c S Q
-272.637 39.758 m 271.039 39.125 l 272.504 38.23 l h
-272.637 39.758 m f
-q 1 0 0 -1 0 0 cm
-272.637 -39.758 m 271.039 -39.125 l 272.504 -38.23 l h
-272.637 -39.758 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.788235 0.211765 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-307.969 -71.906 m 307.973 -71.848 307.969 -71.93 307.953 -72.152 c S Q
-307.074 73.625 m 307.953 72.152 l 308.605 73.738 l h
-307.074 73.625 m f
-q 1 0 0 -1 0 0 cm
-307.074 -73.625 m 307.953 -72.152 l 308.605 -73.738 l h
-307.074 -73.625 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.301961 0.698039 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-273.652 -50.355 m 273.578 -50.387 273.641 -50.363 273.832 -50.277 c S Q
-275.547 50.359 m 273.832 50.277 l 274.926 48.957 l h
-275.547 50.359 m f
-q 1 0 0 -1 0 0 cm
-275.547 -50.359 m 273.832 -50.277 l 274.926 -48.957 l h
-275.547 -50.359 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.313726 0.686275 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-275.301 -86.531 m 275.352 -86.551 275.27 -86.516 275.051 -86.434 c S Q
-273.902 85.16 m 275.051 86.434 l 273.344 86.59 l h
-273.902 85.16 m f
-q 1 0 0 -1 0 0 cm
-273.902 -85.16 m 275.051 -86.434 l 273.344 -86.59 l h
-273.902 -85.16 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.262745 0.737255 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-277.074 -99.453 m 277.277 -99.43 277.344 -99.422 277.266 -99.43 c S Q
-275.645 98.863 m 277.266 99.43 l 275.84 100.387 l h
-275.645 98.863 m f
-q 1 0 0 -1 0 0 cm
-275.645 -98.863 m 277.266 -99.43 l 275.84 -100.387 l h
-275.645 -98.863 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.164706 0.835294 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-268.539 -103.238 m 268.746 -103.234 268.813 -103.234 268.734 -103.238 c
- S Q
-267.188 102.496 m 268.734 103.238 l 267.215 104.031 l h
-267.188 102.496 m f
-q 1 0 0 -1 0 0 cm
-267.188 -102.496 m 268.734 -103.238 l 267.215 -104.031 l h
-267.188 -102.496 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.427451 0.572549 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-295.887 -99.234 m 296.047 -99.102 296.094 -99.059 296.035 -99.109 c S Q
-294.367 99.512 m 296.035 99.109 l 295.355 100.688 l h
-294.367 99.512 m f
-q 1 0 0 -1 0 0 cm
-294.367 -99.512 m 296.035 -99.109 l 295.355 -100.688 l h
-294.367 -99.512 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.207843 0.792157 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-283.707 -115.914 m 283.883 -115.801 283.938 -115.766 283.875 -115.805 c
- S Q
-282.172 116.004 m 283.875 115.805 l 283.008 117.289 l h
-282.172 116.004 m f
-q 1 0 0 -1 0 0 cm
-282.172 -116.004 m 283.875 -115.805 l 283.008 -117.289 l h
-282.172 -116.004 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.219608 0.780392 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-290.523 -16.965 m 290.371 -16.82 290.324 -16.773 290.379 -16.828 c S Q
-290.961 18.441 m 290.379 16.828 l 292.02 17.328 l h
-290.961 18.441 m f
-q 1 0 0 -1 0 0 cm
-290.961 -18.441 m 290.379 -16.828 l 292.02 -17.328 l h
-290.961 -18.441 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.254902 0.745098 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-268.977 -77.918 m 269.121 -78.129 269.184 -78.223 269.168 -78.195 c S Q
-268.938 76.496 m 269.168 78.195 l 267.668 77.355 l h
-268.938 76.496 m f
-q 1 0 0 -1 0 0 cm
-268.938 -76.496 m 269.168 -78.195 l 267.668 -77.355 l h
-268.938 -76.496 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.294118 0.705882 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-385.93 -68.387 m 385.934 -68.613 385.938 -68.695 385.934 -68.637 c S Q
-386.672 67.086 m 385.934 68.637 l 385.137 67.117 l h
-386.672 67.086 m f
-q 1 0 0 -1 0 0 cm
-386.672 -67.086 m 385.934 -68.637 l 385.137 -67.117 l h
-386.672 -67.086 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.294118 0.705882 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-270.813 -68.938 m 270.816 -69.164 270.82 -69.25 270.816 -69.191 c S Q
-271.555 67.641 m 270.816 69.191 l 270.02 67.672 l h
-271.555 67.641 m f
-q 1 0 0 -1 0 0 cm
-271.555 -67.641 m 270.816 -69.191 l 270.02 -67.672 l h
-271.555 -67.641 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.223529 0.776471 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-310.051 -128.254 m 310.125 -128.055 310.148 -127.992 310.121 -128.066 c
- S Q
-308.871 129.242 m 310.121 128.066 l 310.309 129.77 l h
-308.871 129.242 m f
-q 1 0 0 -1 0 0 cm
-308.871 -129.242 m 310.121 -128.066 l 310.309 -129.77 l h
-308.871 -129.242 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.47451 0.52549 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-369.367 -86.953 m 369.297 -86.945 369.367 -86.953 369.578 -86.973 c S Q
-371.031 87.887 m 369.578 86.973 l 371.184 86.359 l h
-371.031 87.887 m f
-q 1 0 0 -1 0 0 cm
-371.031 -87.887 m 369.578 -86.973 l 371.184 -86.359 l h
-371.031 -87.887 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.258824 0.741176 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-345.754 -13.047 m 345.824 -12.852 345.848 -12.789 345.82 -12.863 c S Q
-344.57 14.035 m 345.82 12.863 l 346.012 14.566 l h
-344.57 14.035 m f
-q 1 0 0 -1 0 0 cm
-344.57 -14.035 m 345.82 -12.863 l 346.012 -14.566 l h
-344.57 -14.035 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.52549 0.47451 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-289.359 -51.926 m 289.289 -51.918 289.359 -51.926 289.574 -51.945 c S Q
-291.023 52.859 m 289.574 51.945 l 291.176 51.332 l h
-291.023 52.859 m f
-q 1 0 0 -1 0 0 cm
-291.023 -52.859 m 289.574 -51.945 l 291.176 -51.332 l h
-291.023 -52.859 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.4 0.6 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-278.598 -78.176 m 278.738 -78.313 278.773 -78.348 278.707 -78.281 c S Q
-278.133 76.664 m 278.707 78.281 l 277.07 77.773 l h
-278.133 76.664 m f
-q 1 0 0 -1 0 0 cm
-278.133 -76.664 m 278.707 -78.281 l 277.07 -77.773 l h
-278.133 -76.664 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.482353 0.517647 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-375.473 -67.754 m 375.488 -67.879 375.488 -67.863 375.469 -67.707 c S Q
-376.031 66.086 m 375.469 67.707 l 374.512 66.281 l h
-376.031 66.086 m f
-q 1 0 0 -1 0 0 cm
-376.031 -66.086 m 375.469 -67.707 l 374.512 -66.281 l h
-376.031 -66.086 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.478431 0.521569 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-281.199 -70.172 m 281.215 -70.297 281.215 -70.281 281.195 -70.125 c S Q
-281.762 68.504 m 281.195 70.125 l 280.238 68.699 l h
-281.762 68.504 m f
-q 1 0 0 -1 0 0 cm
-281.762 -68.504 m 281.195 -70.125 l 280.238 -68.699 l h
-281.762 -68.504 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.435294 0.564706 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-322.395 -106.836 m 322.422 -106.629 322.43 -106.563 322.422 -106.637 c S Q
-321.457 108.059 m 322.422 106.637 l 322.977 108.262 l h
-321.457 108.059 m f
-q 1 0 0 -1 0 0 cm
-321.457 -108.059 m 322.422 -106.637 l 322.977 -108.262 l h
-321.457 -108.059 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.596078 0.403922 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-370.875 -70.145 m 370.859 -70.23 370.871 -70.18 370.902 -69.988 c S Q
-371.906 68.598 m 370.902 69.988 l 370.395 68.348 l h
-371.906 68.598 m f
-q 1 0 0 -1 0 0 cm
-371.906 -68.598 m 370.902 -69.988 l 370.395 -68.348 l h
-371.906 -68.598 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.607843 0.392157 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-285.984 -68.008 m 285.969 -68.094 285.977 -68.043 286.008 -67.852 c S Q
-287.016 66.461 m 286.008 67.852 l 285.5 66.211 l h
-287.016 66.461 m f
-q 1 0 0 -1 0 0 cm
-287.016 -66.461 m 286.008 -67.852 l 285.5 -66.211 l h
-287.016 -66.461 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-1 0 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-361.871 -67.043 m 362.102 -67.148 362.203 -67.191 362.172 -67.18 c S Q
-361.086 65.852 m 362.172 67.18 l 360.457 67.254 l h
-361.086 65.852 m f
-q 1 0 0 -1 0 0 cm
-361.086 -65.852 m 362.172 -67.18 l 360.457 -67.254 l h
-361.086 -65.852 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.972549 0.027451 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-298.102 -71.082 m 298.191 -70.887 298.223 -70.82 298.195 -70.883 c S Q
-296.852 71.949 m 298.195 70.883 l 298.242 72.598 l h
-296.852 71.949 m f
-q 1 0 0 -1 0 0 cm
-296.852 -71.949 m 298.195 -70.883 l 298.242 -72.598 l h
-296.852 -71.949 m S Q
-  Q
-Q
-q
-263 4 131 131 re W n
-  q
-0.560784 0.439216 1 rg
-0.383709 w
-1 J
-1 j
-[] 0.0 d
-10 M q 1 0 0 -1 0 0 cm
-314.473 -93.668 m 314.539 -93.473 314.559 -93.41 314.535 -93.484 c S Q
-313.328 94.707 m 314.535 93.484 l 314.789 95.18 l h
-313.328 94.707 m f
-q 1 0 0 -1 0 0 cm
-313.328 -94.707 m 314.535 -93.484 l 314.789 -95.18 l h
-313.328 -94.707 m S Q
-  Q
-Q
-0 g
-307.426 101.785 m 316.32 96.176 l 320.277 102.453 l 311.387 108.063 l h
-307.426 101.785 m f
-1 g
-0.310473 w
-0 J
-1 j
-[] 0.0 d
-4 M q 1 0 0 1 0 0 cm
-307.426 101.785 m 316.32 96.176 l 320.277 102.453 l 311.387 108.063 l h
-307.426 101.785 m S Q
-0 g
-313.898 96.973 m 315.465 95.984 l 313.488 92.848 l 311.918 93.836 l h
-313.898 96.973 m f
-1 g
-q 1 0 0 1 0 0 cm
-313.898 96.973 m 315.465 95.984 l 313.488 92.848 l 311.918 93.836 l h
-313.898 96.973 m S Q
-0 g
-310.758 98.953 m 312.328 97.965 l 310.348 94.824 l 308.777 95.816 l h
-310.758 98.953 m f
-1 g
-q 1 0 0 1 0 0 cm
-310.758 98.953 m 312.328 97.965 l 310.348 94.824 l 308.777 95.816 l h
-310.758 98.953 m S Q
-0 g
-307.621 100.934 m 309.191 99.945 l 307.211 96.805 l 305.641 97.797 l h
-307.621 100.934 m f
-1 g
-q 1 0 0 1 0 0 cm
-307.621 100.934 m 309.191 99.945 l 307.211 96.805 l 305.641 97.797 l h
-307.621 100.934 m S Q
-0 g
-320.496 107.434 m 322.066 106.445 l 320.086 103.309 l 318.516 104.297 l
- h
-320.496 107.434 m f
-1 g
-q 1 0 0 1 0 0 cm
-320.496 107.434 m 322.066 106.445 l 320.086 103.309 l 318.516 104.297 l
- h
-320.496 107.434 m S Q
-0 g
-317.359 109.414 m 318.926 108.426 l 316.949 105.285 l 315.379 106.277 l
- h
-317.359 109.414 m f
-1 g
-q 1 0 0 1 0 0 cm
-317.359 109.414 m 318.926 108.426 l 316.949 105.285 l 315.379 106.277 l
- h
-317.359 109.414 m S Q
-0 g
-314.219 111.395 m 315.789 110.406 l 313.809 107.266 l 312.238 108.258 l
- h
-314.219 111.395 m f
-1 g
-q 1 0 0 1 0 0 cm
-314.219 111.395 m 315.789 110.406 l 313.809 107.266 l 312.238 108.258 l
- h
-314.219 111.395 m S Q
-0.164706 0.831373 1 rg
-316.406 100.473 m 317.293 101.875 316.871 103.727 315.473 104.609 c 314.07
- 105.492 312.219 105.074 311.332 103.672 c 310.449 102.273 310.867 100.418
- 312.27 99.535 c 313.672 98.652 315.523 99.07 316.406 100.473 c h
-316.406 100.473 m f
-0 g
-0.719231 w
-q 1 -0.630864 0.630864 1 0 0 cm
-180.99 214.653 m 180.991 216.056 179.854 217.19 178.455 217.19 c 177.054
- 217.189 175.918 216.054 175.916 214.651 c 175.916 213.252 177.052 212.114
- 178.454 212.115 c 179.855 212.117 180.991 213.251 180.99 214.653 c h
-180.99 214.653 m S Q
-0.964706 1 0.835294 rg
-296.781 117.398 m 316.07 117.398 l 318.355 117.398 320.195 119.238 320.195
- 121.523 c 320.195 123.617 l 320.195 125.902 318.355 127.742 316.07 127.742
- c 296.781 127.742 l 294.496 127.742 292.656 125.902 292.656 123.617 c 292.656
- 121.523 l 292.656 119.238 294.496 117.398 296.781 117.398 c h
-296.781 117.398 m f
-0.666667 0.831373 0 rg
-0.850394 w
-q 1 0 0 1 0 0 cm
-296.781 117.398 m 316.07 117.398 l 318.355 117.398 320.195 119.238 320.195
- 121.523 c 320.195 123.617 l 320.195 125.902 318.355 127.742 316.07 127.742
- c 296.781 127.742 l 294.496 127.742 292.656 125.902 292.656 123.617 c 292.656
- 121.523 l 292.656 119.238 294.496 117.398 296.781 117.398 c h
-296.781 117.398 m S Q
-0 g
-BT
-10.000006 0 0 -10.000006 294.678926 125.319575 Tm
-/f-0-0 1 Tf
-[(.)-11(g)9(e)5(tB)]TJ
-ET
-0.501961 g
-BT
-14.000003 0 0 -14.000003 335.554948 58.913623 Tm
-/f-0-0 1 Tf
-(CURRENT)Tj
-ET
-Q q
-0.501961 g
-BT
-14.000003 0 0 -14.000003 389.832307 58.913623 Tm
-/f-0-0 1 Tf
-(S)Tj
-ET
-1 0.8 0 rg
-1.417323 w
-0 J
-1 j
-[] 0.0 d
-4 M q 1 0 0 1 0 0 cm
-327.227 69.953 m 327.227 48 l S Q
-323.258 49.984 m 327.227 39.07 l 331.195 49.984 l 328.887 48 325.582 48
- 323.258 49.984 c h
-323.258 49.984 m f*
-q 1 0 0 1 0 0 cm
-327.227 69.953 m 350.105 69.953 l S Q
-348.121 65.984 m 359.035 69.953 l 348.121 73.918 l 350.105 71.609 350.105
- 68.305 348.121 65.984 c h
-348.121 65.984 m f*
-0.164706 0.831373 1 rg
-330.227 69.953 m 330.227 71.609 328.887 72.953 327.227 72.953 c 325.57 
-72.953 324.227 71.609 324.227 69.953 c 324.227 68.293 325.57 66.953 327.227
- 66.953 c 328.887 66.953 330.227 68.293 330.227 69.953 c h
-330.227 69.953 m f
-0 g
-0.850394 w
-q 1 0 0 1 0 0 cm
-330.227 69.953 m 330.227 71.609 328.887 72.953 327.227 72.953 c 325.57 
-72.953 324.227 71.609 324.227 69.953 c 324.227 68.293 325.57 66.953 327.227
- 66.953 c 328.887 66.953 330.227 68.293 330.227 69.953 c h
-330.227 69.953 m S Q
-0.501961 0 0.501961 rg
-1.700787 w
-q 1 0 0 1 0 0 cm
-361.684 68.953 m 363.199 71.156 357.605 73.32 347.176 74.566 c 336.75 75.816
- 323.227 75.938 312.117 74.887 c 301.008 73.836 294.164 71.785 294.371 69.57
- c S Q
-0.964706 1 0.835294 rg
-277.363 102.293 m 297.406 102.293 l 299.691 102.293 301.531 104.133 301.531
- 106.418 c 301.531 108.516 l 301.531 110.801 299.691 112.641 297.406 112.641
- c 277.363 112.641 l 275.078 112.641 273.238 110.801 273.238 108.516 c 273.238
- 106.418 l 273.238 104.133 275.078 102.293 277.363 102.293 c h
-277.363 102.293 m f
-0.666667 0.831373 0 rg
-0.850394 w
-q 1 0 0 1 0 0 cm
-277.363 102.293 m 297.406 102.293 l 299.691 102.293 301.531 104.133 301.531
- 106.418 c 301.531 108.516 l 301.531 110.801 299.691 112.641 297.406 112.641
- c 277.363 112.641 l 275.078 112.641 273.238 110.801 273.238 108.516 c 273.238
- 106.418 l 273.238 104.133 275.078 102.293 277.363 102.293 c h
-277.363 102.293 m S Q
-0 g
-BT
-10.000006 0 0 -10.000006 276.18115 110.216597 Tm
-/f-0-0 1 Tf
-[(.)-11(g)9(e)5(tH)]TJ
-ET
-0.964706 1 0.835294 rg
-24.402 28.836 m 49.879 28.836 l 52.164 28.836 54.004 30.676 54.004 32.961
- c 54.004 35.055 l 54.004 37.34 52.164 39.18 49.879 39.18 c 24.402 39.18
- l 22.117 39.18 20.277 37.34 20.277 35.055 c 20.277 32.961 l 20.277 30.676
- 22.117 28.836 24.402 28.836 c h
-24.402 28.836 m f
-0.666667 0.831373 0 rg
-q 1 0 0 1 0 0 cm
-24.402 28.836 m 49.879 28.836 l 52.164 28.836 54.004 30.676 54.004 32.961
- c 54.004 35.055 l 54.004 37.34 52.164 39.18 49.879 39.18 c 24.402 39.18
- l 22.117 39.18 20.277 37.34 20.277 35.055 c 20.277 32.961 l 20.277 30.676
- 22.117 28.836 24.402 28.836 c h
-24.402 28.836 m S Q
-0.0156863 0.705882 0.329412 rg
-153.594 119.629 45 11.25 re f
-0.898039 g
-153.594 97.129 45 22.5 re f
-0.937255 0.0980392 0.0980392 rg
-153.594 85.879 45 11.25 re f
-1 0.8 0 rg
-1.417323 w
-q 1 0 0 1 0 0 cm
-176.094 108.379 m 176.094 88.41 l S Q
-172.125 90.395 m 176.094 79.48 l 180.063 90.395 l 177.75 88.41 174.445 
-88.41 172.125 90.395 c h
-172.125 90.395 m f*
-q 1 0 0 1 0 0 cm
-176.094 108.379 m 196.813 108.379 l S Q
-194.828 104.41 m 205.742 108.379 l 194.828 112.348 l 196.813 110.035 196.813
- 106.73 194.828 104.41 c h
-194.828 104.41 m f*
-0.501961 g
-1.133858 w
-q 1 0 0 1 0 0 cm
-21.164 93.613 m 21.164 61.379 l S Q
-17.992 62.969 m 21.164 54.238 l 24.34 62.969 l 22.492 61.379 19.848 61.379
- 17.992 62.969 c h
-17.992 62.969 m f*
-0.898039 g
-24.914 82.363 m 10.539 96.34 l f
-0.501961 g
-q 1 0 0 1 0 0 cm
-24.914 82.363 m 10.539 96.34 l S Q
-13.891 97.512 m 5.418 101.32 l 9.465 92.957 l 9.617 95.391 11.457 97.285
- 13.891 97.512 c h
-13.891 97.512 m f*
-q 1 0 0 1 0 0 cm
-13.664 86.113 m 45.371 86.113 l S Q
-43.781 82.938 m 52.512 86.113 l 43.781 89.289 l 45.371 87.441 45.371 84.797
- 43.781 82.938 c h
-43.781 82.938 m f*
-0.164706 0.831373 1 rg
-179.094 108.379 m 179.094 110.035 177.75 111.379 176.094 111.379 c 174.438
- 111.379 173.094 110.035 173.094 108.379 c 173.094 106.723 174.438 105.379
- 176.094 105.379 c 177.75 105.379 179.094 106.723 179.094 108.379 c h
-179.094 108.379 m f
-0 g
-0.850394 w
-q 1 0 0 1 0 0 cm
-179.094 108.379 m 179.094 110.035 177.75 111.379 176.094 111.379 c 174.438
- 111.379 173.094 110.035 173.094 108.379 c 173.094 106.723 174.438 105.379
- 176.094 105.379 c 177.75 105.379 179.094 106.723 179.094 108.379 c h
-179.094 108.379 m S Q
-0.686275 0.913725 0.686275 rg
-207.277 38.609 45 11.25 re f
-0.94902 g
-207.277 16.109 45 22.5 re f
-1 0.835294 0.835294 rg
-207.277 4.859 45 11.25 re f
-0.164706 0.831373 1 rg
-21.406 86.324 m 164.301 106.965 l f
-1.700787 w
-q 1 0 0 1 0 0 cm
-21.406 86.324 m 164.301 106.965 l S Q
-162.625 101.91 m 174.906 108.496 l 161.266 111.336 l 164.016 108.934 164.586
- 105.008 162.625 101.91 c h
-162.625 101.91 m f*
-0.666667 0.831373 0 rg
-2.267717 w
-[ 1.133858 1.133858] 0 d
-q 1 0 0 1 0 0 cm
-175.344 108.004 m 224.172 35.957 l S Q
-218.43 35.195 m 230.715 26.305 l 227.012 41.012 l 225.965 37.172 222.395
- 34.75 218.43 35.195 c h
-218.43 35.195 m f*
-0 g
-77.063 32.539 m 93.16 22.387 l 100.328 33.75 l 84.23 43.902 l h
-77.063 32.539 m f
-1 g
-0.283465 w
-[] 0.0 d
-q 1 0 0 1 0 0 cm
-77.063 32.539 m 93.16 22.387 l 100.328 33.75 l 84.23 43.902 l h
-77.063 32.539 m S Q
-0 g
-88.773 23.828 m 91.617 22.035 l 88.031 16.355 l 85.191 18.145 l h
-88.773 23.828 m f
-1 g
-q 1 0 0 1 0 0 cm
-88.773 23.828 m 91.617 22.035 l 88.031 16.355 l 85.191 18.145 l h
-88.773 23.828 m S Q
-0 g
-83.094 27.414 m 85.934 25.621 l 82.352 19.938 l 79.508 21.73 l h
-83.094 27.414 m f
-1 g
-q 1 0 0 1 0 0 cm
-83.094 27.414 m 85.934 25.621 l 82.352 19.938 l 79.508 21.73 l h
-83.094 27.414 m S Q
-0 g
-77.41 30.996 m 80.254 29.203 l 76.668 23.523 l 73.828 25.316 l h
-77.41 30.996 m f
-1 g
-q 1 0 0 1 0 0 cm
-77.41 30.996 m 80.254 29.203 l 76.668 23.523 l 73.828 25.316 l h
-77.41 30.996 m S Q
-0 g
-100.723 42.766 m 103.563 40.973 l 99.98 35.293 l 97.137 37.086 l h
-100.723 42.766 m f
-1 g
-q 1 0 0 1 0 0 cm
-100.723 42.766 m 103.563 40.973 l 99.98 35.293 l 97.137 37.086 l h
-100.723 42.766 m S Q
-0 g
-95.043 46.352 m 97.883 44.559 l 94.297 38.879 l 91.457 40.668 l h
-95.043 46.352 m f
-1 g
-q 1 0 0 1 0 0 cm
-95.043 46.352 m 97.883 44.559 l 94.297 38.879 l 91.457 40.668 l h
-95.043 46.352 m S Q
-0 g
-89.359 49.934 m 92.199 48.145 l 88.617 42.461 l 85.773 44.254 l h
-89.359 49.934 m f
-1 g
-q 1 0 0 1 0 0 cm
-89.359 49.934 m 92.199 48.145 l 88.617 42.461 l 85.773 44.254 l h
-89.359 49.934 m S Q
-0.666667 0.831373 0 rg
-1.917948 w
-[ 0.958974 0.958974] 0 d
-q 1 -0.630864 0.630864 1 0 0 cm
-47.797 88.755 m 36.914 88.452 27.526 81.017 24.734 70.495 c 21.94 59.97
- 26.406 48.861 35.711 43.201 c 45.012 37.541 56.932 38.678 64.995 45.995
- c S Q
-98.816 55.398 m 114.031 52.531 l 104.211 64.5 l 104.918 60.5 102.672 56.711
- 98.816 55.398 c h
-98.816 55.398 m f*
-0.501961 g
-BT
-14.000003 0 0 -14.000003 203.22693 130.210503 Tm
-/f-0-0 1 Tf
-[(MA)7(GNET)5(S)]TJ
--6.773842 5.909029 Td
-[(SENSOR)13(S)]TJ
-ET
-0.964706 1 0.835294 rg
-217.16 58.445 m 242.637 58.445 l 244.922 58.445 246.762 60.285 246.762 
-62.57 c 246.762 64.664 l 246.762 66.949 244.922 68.789 242.637 68.789 c 
-217.16 68.789 l 214.875 68.789 213.035 66.949 213.035 64.664 c 213.035 62.57
- l 213.035 60.285 214.875 58.445 217.16 58.445 c h
-217.16 58.445 m f
-0.666667 0.831373 0 rg
-0.850394 w
-[] 0.0 d
-q 1 0 0 1 0 0 cm
-217.16 58.445 m 242.637 58.445 l 244.922 58.445 246.762 60.285 246.762 
-62.57 c 246.762 64.664 l 246.762 66.949 244.922 68.789 242.637 68.789 c 
-217.16 68.789 l 214.875 68.789 213.035 66.949 213.035 64.664 c 213.035 62.57
- l 213.035 60.285 214.875 58.445 217.16 58.445 c h
-217.16 58.445 m S Q
-0 g
-BT
-10.000006 0 0 -10.000006 216.909928 66.366095 Tm
-/f-0-0 1 Tf
-[(.mo)4(v)10(e)]TJ
--19.366675 2.904078 Td
-[(.r)16(ot)12(a)10(t)10(e)]TJ
-ET
-1 0.964706 0.835294 rg
-111.281 0.426 m 160.422 0.426 l 162.707 0.426 164.547 2.266 164.547 4.551
- c 164.547 6.645 l 164.547 8.93 162.707 10.77 160.422 10.77 c 111.281 10.77
- l 108.996 10.77 107.156 8.93 107.156 6.645 c 107.156 4.551 l 107.156 2.266
- 108.996 0.426 111.281 0.426 c h
-111.281 0.426 m f
-1 0.8 0 rg
-q 1 0 0 1 0 0 cm
-111.281 0.426 m 160.422 0.426 l 162.707 0.426 164.547 2.266 164.547 4.551
- c 164.547 6.645 l 164.547 8.93 162.707 10.77 160.422 10.77 c 111.281 10.77
- l 108.996 10.77 107.156 8.93 107.156 6.645 c 107.156 4.551 l 107.156 2.266
- 108.996 0.426 111.281 0.426 c h
-111.281 0.426 m S Q
-0 g
-BT
-10.000006 0 0 -10.000006 111.428596 8.443178 Tm
-/f-0-0 1 Tf
-[(.orien)9(t)12(a)]TJ
-/f-0-1 1 Tf
-[<>10<01>]TJ
-/f-0-0 1 Tf
-(on)Tj
-ET
-0.501961 g
-BT
-11.000012 0 0 -11.000012 -0.123535 107.023057 Tm
-/f-1-0 1 Tf
-(x)Tj
-4.871919 1.761444 Td
-(y)Tj
--3.145265 3.242239 Td
-(z)Tj
-ET
-0.835294 0.964706 1 rg
-68.145 108.191 m 102.438 108.191 l 104.723 108.191 106.563 110.031 106.563
- 112.316 c 106.563 114.41 l 106.563 116.695 104.723 118.535 102.438 118.535
- c 68.145 118.535 l 65.859 118.535 64.02 116.695 64.02 114.41 c 64.02 112.316
- l 64.02 110.031 65.859 108.191 68.145 108.191 c h
-68.145 108.191 m f
-0.164706 0.831373 1 rg
-q 1 0 0 1 0 0 cm
-68.145 108.191 m 102.438 108.191 l 104.723 108.191 106.563 110.031 106.563
- 112.316 c 106.563 114.41 l 106.563 116.695 104.723 118.535 102.438 118.535
- c 68.145 118.535 l 65.859 118.535 64.02 116.695 64.02 114.41 c 64.02 112.316
- l 64.02 110.031 65.859 108.191 68.145 108.191 c h
-68.145 108.191 m S Q
-0 g
-BT
-10.000006 0 0 -10.000006 66.702328 115.953947 Tm
-/f-0-0 1 Tf
-(.posi)Tj
-/f-0-1 1 Tf
-<01>Tj
-/f-0-0 1 Tf
-(on)Tj
-ET
-0.898039 g
-88.98 33.605 m 79.457 18.32 l f
-1 0.8 0 rg
-1.417323 w
-q 1 0 0 1 0 0 cm
-88.98 33.605 m 79.457 18.32 l S Q
-77.137 22.102 m 74.734 10.738 l 83.875 17.906 l 80.863 17.441 78.059 19.191
- 77.137 22.102 c h
-77.137 22.102 m f*
-0.898039 g
-88.98 33.605 m 104.398 23.156 l f
-1 0.8 0 rg
-q 1 0 0 1 0 0 cm
-88.98 33.605 m 104.398 23.156 l S Q
-100.527 20.984 m 111.789 18.145 l 104.98 27.555 l 105.328 24.527 103.473
- 21.793 100.527 20.984 c h
-100.527 20.984 m f*
-0.164706 0.831373 1 rg
-91.516 32.004 m 92.402 33.406 91.98 35.258 90.582 36.145 c 89.18 37.027
- 87.328 36.605 86.441 35.207 c 85.559 33.805 85.977 31.953 87.379 31.066
- c 88.781 30.184 90.633 30.602 91.516 32.004 c h
-91.516 32.004 m f
-0 g
-0.719231 w
-q 1 -0.630864 0.630864 1 0 0 cm
-51.02 64.191 m 51.022 65.594 49.884 66.728 48.484 66.731 c 47.082 66.73
- 45.948 65.593 45.945 64.192 c 45.946 62.791 47.081 61.655 48.484 61.653
- c 49.886 61.655 51.021 62.789 51.02 64.191 c h
-51.02 64.191 m S Q
-0.164706 0.831373 1 rg
-21.516 86.098 m 80.563 40.563 l f
-1.700787 w
-q 1 0 0 1 0 0 cm
-21.516 86.098 m 80.563 40.563 l S Q
-75.77 38.246 m 89.047 34.02 l 81.586 45.789 l 81.777 42.137 79.355 39 75.77
- 38.246 c h
-75.77 38.246 m f*
-Q Q
-showpage
-%%Trailer
-end
-%%EOF
diff --git a/docs/_static/images/index/source_fundamentals.pdf b/docs/_static/images/index/source_fundamentals.pdf
deleted file mode 100644
index 42ce71ab9..000000000
Binary files a/docs/_static/images/index/source_fundamentals.pdf and /dev/null differ
diff --git a/docs/_static/images/index/source_fundamentals.png b/docs/_static/images/index/source_fundamentals.png
deleted file mode 100644
index 60d89cdc6..000000000
Binary files a/docs/_static/images/index/source_fundamentals.png and /dev/null differ
diff --git a/docs/_static/images/index_flowchart.png b/docs/_static/images/index_flowchart.png
new file mode 100644
index 000000000..2d0d9e502
Binary files /dev/null and b/docs/_static/images/index_flowchart.png differ
diff --git a/docs/_static/images/index_head.png b/docs/_static/images/index_head.png
new file mode 100644
index 000000000..7d2d356df
Binary files /dev/null and b/docs/_static/images/index_head.png differ
diff --git a/docs/_static/images/index_icon_academic.png b/docs/_static/images/index_icon_academic.png
new file mode 100644
index 000000000..db8fd4fdf
Binary files /dev/null and b/docs/_static/images/index_icon_academic.png differ
diff --git a/docs/_static/images/index_icon_contributing.png b/docs/_static/images/index_icon_contributing.png
new file mode 100644
index 000000000..f6323f80e
Binary files /dev/null and b/docs/_static/images/index_icon_contributing.png differ
diff --git a/docs/_static/images/index_icon_docu.png b/docs/_static/images/index_icon_docu.png
new file mode 100644
index 000000000..f4a917285
Binary files /dev/null and b/docs/_static/images/index_icon_docu.png differ
diff --git a/docs/_static/images/index_icon_gallery.png b/docs/_static/images/index_icon_gallery.png
new file mode 100644
index 000000000..14bc9e159
Binary files /dev/null and b/docs/_static/images/index_icon_gallery.png differ
diff --git a/docs/_static/images/index_icon_getting_started.png b/docs/_static/images/index_icon_getting_started.png
new file mode 100644
index 000000000..227965167
Binary files /dev/null and b/docs/_static/images/index_icon_getting_started.png differ
diff --git a/docs/_static/images/index_icon_github.png b/docs/_static/images/index_icon_github.png
new file mode 100644
index 000000000..bff6303d4
Binary files /dev/null and b/docs/_static/images/index_icon_github.png differ
diff --git a/docs/_static/images/install_guide/anaconda0.png b/docs/_static/images/install_guide/anaconda0.png
deleted file mode 100644
index 4f4e060c2..000000000
Binary files a/docs/_static/images/install_guide/anaconda0.png and /dev/null differ
diff --git a/docs/_static/images/install_guide/anaconda1.png b/docs/_static/images/install_guide/anaconda1.png
deleted file mode 100644
index 4eb65566d..000000000
Binary files a/docs/_static/images/install_guide/anaconda1.png and /dev/null differ
diff --git a/docs/_static/images/install_guide/anaconda2.png b/docs/_static/images/install_guide/anaconda2.png
deleted file mode 100644
index b4e18bac8..000000000
Binary files a/docs/_static/images/install_guide/anaconda2.png and /dev/null differ
diff --git a/docs/_static/images/matlab_guide/install1.png b/docs/_static/images/matlab_guide/install1.png
deleted file mode 100644
index eccd80d69..000000000
Binary files a/docs/_static/images/matlab_guide/install1.png and /dev/null differ
diff --git a/docs/_static/images/matlab_guide/install2.png b/docs/_static/images/matlab_guide/install2.png
deleted file mode 100644
index 44d43323b..000000000
Binary files a/docs/_static/images/matlab_guide/install2.png and /dev/null differ
diff --git a/docs/_static/images/matlab_guide/install3.png b/docs/_static/images/matlab_guide/install3.png
deleted file mode 100644
index 3e51cd671..000000000
Binary files a/docs/_static/images/matlab_guide/install3.png and /dev/null differ
diff --git a/docs/_static/images/matlab_guide/install4.png b/docs/_static/images/matlab_guide/install4.png
deleted file mode 100644
index d62360f89..000000000
Binary files a/docs/_static/images/matlab_guide/install4.png and /dev/null differ
diff --git a/docs/conf.py b/docs/conf.py
index 26c78fc4a..4fbdb7d94 100644
--- a/docs/conf.py
+++ b/docs/conf.py
@@ -61,7 +61,7 @@ def setup(app):
 
 project = "Magpylib"
 copyright = "2022, SAL - Silicon Austria Labs"
-author = "Michael Ortner <magpylib@gmail.com>"
+author = "The Magpylib Project <magpylib@gmail.com>"
 
 # The short X.Y version
 version = ""
@@ -89,6 +89,7 @@ def setup(app):
     "myst_nb",
     "sphinx_thebe",
     "sphinx_favicon",
+    "sphinx_design",
 ]
 
 # Add any paths that contain templates here, relative to this directory.
@@ -97,7 +98,7 @@ def setup(app):
 # The suffix(es) of source filenames.
 # You can specify multiple suffix as a list of string:
 #
-# source_suffix = ['.rst', '.md']
+source_suffix = [".rst", ".md"]
 
 # The master toctree document.
 master_doc = "index"
@@ -170,6 +171,7 @@ def setup(app):
 # relative to this directory. They are copied after the builtin static files,
 # so a file named "default.css" will overwrite the builtin "default.css".
 html_static_path = ["_static"]
+html_css_files = ["custom.css"]
 
 # Custom sidebar templates, must be a dictionary that maps document names
 # to template names.
@@ -210,7 +212,7 @@ def setup(app):
 # (source start file, target name, title,
 #  author, documentclass [howto, manual, or own class]).
 latex_documents = [
-    (master_doc, "magpylib.tex", "magpylib Documentation", "Michael Ortner", "manual"),
+    (master_doc, "magpylib.tex", "magpylib Documentation", author, "manual"),
 ]
 
 
@@ -261,7 +263,10 @@ def setup(app):
 
 # -- Markdown enable
 
-source_suffix = [".rst", ".md"]
+# source_suffix = [".rst", ".md"]
+# source_parsers = {
+#     '.md': 'recommonmark.parser.CommonMarkParser',
+# }
 
 # html_js_files = [
 #    "https://cdnjs.cloudflare.com/ajax/libs/require.js/2.3.4/require.min.js"
@@ -289,10 +294,40 @@ def setup(app):
     # "https://unpkg.com/thebe@latest/lib/index.js",
 ]
 
-suppress_warnings = ["mystnb.unknown_mime_type"]
+suppress_warnings = [
+    "mystnb.unknown_mime_type",
+]
 
 favicons = [
     "images/favicons/favicon-16x16.png",
     "images/favicons/favicon-32x32.png",
     "images/favicons/icon.ico",
 ]
+
+
+# sphinx gallery settings
+# sphinx_gallery_conf = {
+#     # convert rst to md for ipynb
+#     # "pypandoc": True,
+#     # path to your example scripts
+#     "examples_dirs": "../examples",
+#     # path to where to save gallery generated output
+#     "gallery_dirs": "auto_examples",
+#     # Remove the "Download all examples" button from the top level gallery
+#     "download_all_examples": False,
+#     # # Remove sphinx configuration comments from code blocks
+#     # "remove_config_comments": True,
+#     # # Sort gallery example by file name instead of number of lines (default)
+#     # "within_subsection_order": FileNameSortKey,
+#     # Modules for which function level galleries are created.  In
+#     "doc_module": "pyvista",
+#     "image_scrapers": ("pyvista", "matplotlib"),
+# }
+
+# import pyvista
+# pyvista.BUILDING_GALLERY = True
+
+html_last_updated_fmt = ""
+html_show_copyright = False
+html_show_sphinx = False
+show_authors = False
diff --git a/docs/examples/examples_01_complex_forms.md b/docs/examples/examples_01_complex_forms.md
deleted file mode 100644
index 411fabef6..000000000
--- a/docs/examples/examples_01_complex_forms.md
+++ /dev/null
@@ -1,89 +0,0 @@
----
-jupytext:
-  text_representation:
-    extension: .md
-    format_name: myst
-    format_version: 0.13
-    jupytext_version: 1.13.7
-kernelspec:
-  display_name: Python 3 (ipykernel)
-  language: python
-  name: python3
----
-
-(examples-complex-forms)=
-
-# Complex shapes - Superposition
-
-The [**superposition principle**](https://en.wikipedia.org/wiki/Superposition_principle) states that the net response caused by two or more stimuli is the sum of the responses caused by each stimulus individually. This principle holds in Magneto statics when there is no material response, and simply means that the total field created by multiple magnets and currents is the sum of the individual fields.
-
-It is critical to understand that the superposition principle holds for the magnetization itself. When two magnets overlap geometrically, the magnetization in the overlap region is given by the vector sum of the two individual magnetizations.
-
-(examples-union-operation)=
-
-## Union operation
-
-Based on the superposition principle we can build complex forms by aligning simple base shapes (no overlap), similar to a geometric union. This is demonstrated in the following example, where a hollow cylinder magnet is constructed from cuboids. The field is then compare to the exact solution implemented through `CylinderSegment`.
-
-```{code-cell} ipython3
-import numpy as np
-import matplotlib.pyplot as plt
-import magpylib as magpy
-from magpylib.magnet import Cuboid, CylinderSegment
-
-fig = plt.figure(figsize=(14,5))
-ax1 = fig.add_subplot(131, projection='3d', elev=24)
-ax2 = fig.add_subplot(132, projection='3d', elev=24)
-ax3 = fig.add_subplot(133)
-
-sensor = magpy.Sensor(position=np.linspace((-4,0,3), (4,0,3), 50))
-
-# ring with cuboid shapes
-ts = np.linspace(-3, 3, 31)
-grid = [(x,y,0) for x in ts for y in ts]
-
-coll = magpy.Collection()
-for pos in grid:
-    r = np.sqrt(pos[0]**2 + pos[1]**2)
-    if 2<r<3:
-        coll.add(Cuboid(magnetization=(0,0,100), dimension=(.2,.2,1), position=pos))
-magpy.show(coll, sensor, canvas=ax1, style_magnetization_show=False)
-
-# ring with CylinderSegment
-ring = CylinderSegment(magnetization=(0,0,100), dimension=(2,3,1,0,360))
-magpy.show(ring, sensor, canvas=ax2, style_magnetization_show=False)
-
-# compare field at sensor
-ax3.plot(sensor.getB(coll).T[2], label='Bz from Cuboids')
-ax3.plot(sensor.getB(ring).T[2], ls='--', label='Bz from CylinderSegment')
-ax3.grid(color='.9')
-ax3.legend()
-
-plt.tight_layout()
-plt.show()
-```
-
-Construction of complex forms from base shapes is a powerful tool, however, there is always a geometry approximation error, visible in the above figure. The error can be reduced by increasing the discretization finesse, but this also requires additional computation effort.
-
-## Cut-out operation
-
-When two objects with opposing magnetization vectors of similar amplitude overlap, they will just cancel in the overlap region. This enables geometric cut-out operations. In the following example we construct an exact hollow cylinder solution from two concentric cylinder shapes with opposite magnetizations, and compare the result to the `CylinderSegment` class solution.
-
-```{code-cell} ipython3
-from magpylib.magnet import Cylinder, CylinderSegment
-
-# ring from CylinderSegment
-ring0 = CylinderSegment(magnetization=(0,0,100), dimension=(2,3,1,0,360))
-
-# ring with cut-out
-inner = Cylinder(magnetization=(0,0,-100), dimension=(4,1))
-outer = Cylinder(magnetization=(0,0, 100), dimension=(6,1))
-ring1 = inner + outer
-
-print('getB from Cylindersegment', ring0.getB((1,2,3)))
-print('getB from Cylinder cut-out', ring1.getB((1,2,3)))
-```
-
-Note that, it is faster to compute the `Cylinder` field two times than computing the complex `CylinderSegment` field one time. This is why Magpylib automatically falls back to the `Cylinder` solution whenever `CylinderSegment` is called with 360 deg section angles. Unfortunately, cut-out operations cannot be displayed graphically at the moment, but {ref}`examples-own-3d-models` offer a solution here.
-
-Finally, it is explained in {ref}`examples-triangle`, how complex shapes are achieved based on triangular meshes.
diff --git a/docs/examples/examples_03_collections.md b/docs/examples/examples_03_collections.md
deleted file mode 100644
index 54e01bbce..000000000
--- a/docs/examples/examples_03_collections.md
+++ /dev/null
@@ -1,201 +0,0 @@
----
-jupytext:
-  text_representation:
-    extension: .md
-    format_name: myst
-    format_version: 0.13
-    jupytext_version: 1.13.7
-kernelspec:
-  display_name: Python 3 (ipykernel)
-  language: python
-  name: python3
----
-
-(examples-collections-construction)=
-
-# Collections
-
-The `Collection` class is a versatile way of grouping and manipulating multiple Magpylib objects. A basic introduction is given in {ref}`intro-collections`. Here things are explained in more detail with examples.
-
-## Constructing collections
-
-Collections have the attributes `children`, `sources`, `sensors` and `collections`. These attributes are ordered lists that contain objects that are added to the collection by reference (not copied). `children` returns is list of all objects in the collection. `sources` returns a list of the sources, `sensors` a list of the sensors and `collections` a list of "sub-collections" within the collection.
-
-```{code-cell} ipython3
-import magpylib as magpy
-
-x1 = magpy.Sensor(style_label='x1')
-s1 = magpy.magnet.Cuboid(style_label='s1')
-c1 = magpy.Collection(style_label='c1')
-
-coll = magpy.Collection(x1, s1, c1, style_label='coll')
-
-print(f"children:    {coll.children}")
-print(f"sources:     {coll.sources}")
-print(f"sensors:     {coll.sensors}")
-print(f"collections: {coll.collections}")
-```
-
-New additions are always added at the end. Add objects to an existing collection using these parameters, or the **`add`** method.
-
-```{code-cell} ipython3
-
-# automatically adjusts object label
-x2 = x1.copy()
-s2 = s1.copy()
-c2 = c1.copy()
-
-# add objects with add method
-coll.add(x2, s2)
-
-# add objects with parameters
-coll.collections += [c2]
-
-print(f"children:    {coll.children}")
-print(f"sources:     {coll.sources}")
-print(f"sensors:     {coll.sensors}")
-print(f"collections: {coll.collections}")
-```
-
-The **`describe`** method is a very convenient way to view a Collection structure, especially when the collection is nested, i.e. when containing other collections:
-
-```{code-cell} ipython3
-# add more objects
-c1.add(x2.copy())
-c2.add(s2.copy())
-
-coll.describe(format='label')
-```
-
-For convenience, any two Magpylib object can be added up with `+` to form a collection:
-
-```{code-cell} ipython3
-import magpylib as magpy
-
-x1 = magpy.Sensor(style_label='x1')
-s1 = magpy.magnet.Cuboid(style_label='s1')
-
-coll = x1 + s1
-
-coll.describe(format='label')
-```
-
-## Child-parent relations
-
-Objects that are part of a collection become children of that collection, and the collection itself becomes their parent. Every Magpylib object has the `parent` attribute, which is `None` by default.
-
-```{code-cell} ipython3
-import magpylib as magpy
-
-x1 = magpy.Sensor()
-c1 = magpy.Collection(x1)
-
-print(f"x1.parent:   {x1.parent}")
-print(f"c1.parent:   {c1.parent}")
-print(f"c1.children: {c1.children}")
-```
-
-Rather than adding objects to a collection, as described above, one can also set the `parent` parameter. A Magpylib object can only have a single parent, i.e. it can only be part of a single collection. As a result, changing the parent will automatically remove the object from it's previous collection.
-
-```{code-cell} ipython3
-import magpylib as magpy
-
-x1 = magpy.Sensor(style_label='x1')
-c1 = magpy.Collection(style_label='c1')
-c2 = magpy.Collection(c1, style_label='c2')
-
-print("Two empty, nested collections")
-c2.describe(format='label')
-
-print("\nSet x1 parent to c1")
-x1.parent = c1
-c2.describe(format='label')
-
-print("\nChange x1 parent to c2")
-x1.parent = c2
-c2.describe(format='label')
-```
-
-
-## Working with collections
-
-Collections have `__getitem__` through the attribute `children` defined which enables using collections directly as iterators,
-
-```{code-cell} ipython3
-import magpylib as magpy
-
-x1 = magpy.Sensor()
-x2 = magpy.Sensor()
-
-coll = x1 + x2
-
-for child in coll:
-    print(child)
-```
-
-and makes it possible to directly reference to a child object by index:
-
-```{code-cell} ipython3
-print(coll[0])
-```
-
-Collection nesting is powerful to create a self-consistent hierarchical structure, however, it is often in the way of simple construction and children access in nested trees. For this, the `children_all`, `sources_all`, `sensors_all` and `collections_all` read-only parameters, give quick access to all objects in the tree:
-
-```{code-cell} ipython3
-import magpylib as magpy
-
-s1 = magpy.Sensor(style_label='s1')
-s2 = s1.copy()
-s3 = s2.copy()
-
-# this creates anested collection
-coll = s1 + s2 + s3
-coll.describe(format='label')
-
-# _all gives access to the whole tree
-print([s.style.label for s in coll.sensors_all])
-```
-
-How to work with collections in a practical way is demonstrated in the introduction section {ref}`intro-collections`.
-
-How to make complex compound objects is documented in {ref}`examples-compounds`.
-
-(examples-collections-efficient)=
-
-## Efficient 3D models
-
-The Matplotlib and Plotly libraries were not designed for complex 3D graphic outputs. As a result, it becomes often inconvenient and slow when attempting to display many 3D objects. One solution to this problem when dealing with large collections, is to represent the latter by a single encompassing body, and to deactivate the individual 3D models of all children. This is demonstrated in the following example.
-
-```{code-cell} ipython3
-import magpylib as magpy
-
-# create collection
-coll = magpy.Collection()
-for index in range(10):
-    cuboid = magpy.magnet.Cuboid(
-        magnetization=(0, 0, 1000 * (index%2-.5)),
-        dimension=(10,10,10),
-        position=(index*10,0,0),
-    )
-    coll.add(cuboid)
-
-# add 3D-trace
-extra_generic_trace = magpy.graphics.model3d.make_Cuboid(
-    dimension=(104, 12, 12),
-    position=(45, 0, 0),
-    opacity=0.5,
-)
-coll.style.model3d.add_trace(extra_generic_trace)
-
-coll.style.label='Collection with visible children'
-coll.show()
-
-# hide the children default 3D representation
-coll.set_children_styles(model3d_showdefault=False)
-coll.style.label = 'Collection with hidden children'
-coll.show()
-```
-
-```{note}
-The `Collection` position is set to (0,0,0) at creation time. Any added extra 3D-model will be bound to the local coordinate system of to the `Collection` and `rotated`/`moved` together with its parent object.
-```
diff --git a/docs/examples/examples_05_backend_canvas.md b/docs/examples/examples_05_backend_canvas.md
deleted file mode 100644
index b7bf6f191..000000000
--- a/docs/examples/examples_05_backend_canvas.md
+++ /dev/null
@@ -1,259 +0,0 @@
----
-jupytext:
-  text_representation:
-    extension: .md
-    format_name: myst
-    format_version: 0.13
-    jupytext_version: 1.14.5
-kernelspec:
-  display_name: Python 3
-  language: python
-  name: python3
----
-
-(examples-backends-canvas)=
-
-# Graphics - Backend, canvas, return_fig
-
-The graphic backend refers to the plotting library that is used for graphic output. `Canvas` refers to the frame/window/canvas/axes object the graphic output is forwarded to.
-
-## Graphic backend
-
-Magpylib supports several common graphic backends.
-
-```{code-cell} ipython3
-from magpylib import SUPPORTED_PLOTTING_BACKENDS
-
-SUPPORTED_PLOTTING_BACKENDS
-```
-
-+++ {"user_expressions": []}
-
-The installation default is set to `'auto'`. In this case the backend is dynamically inferred depending on the current running environment (terminal or notebook), the available installed backend libraries and the set canvas:
-
-| environment      | canvas                                            | inferred backend                        |
-|------------------|---------------------------------------------------|-----------------------------------------|
-| terminal         | `None`                                            | `matplotlib`                            |
-| IPython notebook | `None`                                            | `plotly` if installed else `matplotlib` |
-| all              | `matplotlib.axes.Axes`                            | `matplotlib`                            |
-| all              | `plotly.graph_objects.Figure` (or `FigureWidget`) | `plotly`                                |
-| all              | `pyvista.Plotter`                                 | `pyvista`                               |
-
-To explicitly select a graphic backend one can
-1. Change the library default with `magpy.defaults.display.backend = 'plotly'`.
-2. Set the `backend` kwarg in the `show` function, `show(..., backend='matplotlib')`.
-
-There is a high level of **feature parity**, however, not all graphic features are supported by all backends. In addition, some common Matplotlib syntax (e.g. color `'r'`, linestyle `':'`) is automatically translated to other backends. The following table shows a non-exhaustive comparison between supported backends for most of the features.
-
-
-|                  Feature                                        | Matplotlib | Plotly | Pyvista |
-|:---------------------------------------------------------------:|:----------:|:------:|:-------:|
-| triangular mesh 3d                                              | ✔️         | ✔️    | ✔️      |
-| line 3d                                                         | ✔️         | ✔️    | ✔️      |
-| line style                                                      | ✔️         | ✔️    | ❌      |
-| line color                                                      | ✔️         | ✔️    | ✔️      |
-| line width                                                      | ✔️         | ✔️    | ✔️      |
-| marker 3d                                                       | ✔️         | ✔️    | ✔️      |
-| marker color                                                    | ✔️         | ✔️    | ✔️      |
-| marker size                                                     | ✔️         | ✔️    | ✔️      |
-| marker symbol                                                   | ✔️         | ✔️    | ❌      |
-| marker numbering                                                | ✔️         | ✔️    | ❌      |
-| zoom level                                                      | ✔️         | ✔️    | ❌[^2]  |
-| magnetization color gradient                                    | ❌         | ✔️    | ✔️      |
-| custom magnetization color gradient                             | ❌         | ✔️    | ✔️[^3]  |
-| custom magnetization color gradient <br> for individual objects | ❌         | ✔️    | ✔️[^3]  |
-| animation                                                       | ✔️         | ✔️    | ✔️[^6]   |
-| animation time                                                  | ✔️         | ✔️    | ✔️[^6]   |
-| animation fps                                                   | ✔️         | ✔️    | ✔️[^6]   |
-| animation slider                                                | ✔️[^1]     | ✔️    | ❌      |
-| subplots 2D                                                     | ✔️         | ✔️    | ✔️[^7]  |
-| subplots 3D                                                     | ✔️         | ✔️    | ✔️      |
-| user canvas                                                     | ✔️         | ✔️    | ✔️      |
-| user extra 3d model  - generic [^4]                             | ✔️         | ✔️    | ✔️      |
-| user extra 3d model  - backend specific [^5]                    | ✔️         | ✔️    | ❌      |
-
-
-[^1]: when returning animation object and exporting it as jshtml.
-
-[^2]: possible but not implemented at the moment.
-
-[^3]: does not work with `ipygany` jupyter backend. As of `pyvista>=0.38` these are deprecated and replaced by the [trame](https://docs.pyvista.org/api/plotting/trame.html) backend.
-
-[^4]: only `"scatter3d"`, and `"mesh3d"`. Gets "translated" to every other backend.
-
-[^5]: custom user defined trace constructors  allowed, which are specific to the backend.
-
-[^6]: animation is only available through export as `gif` or `mp4`
-
-[^7]: 2D plots are not supported for all jupyter_backends. As of pyvista>=0.38 these are deprecated and replaced by the [trame](https://docs.pyvista.org/api/plotting/trame.html) backend.
-
-The following example demonstrates the currently supported backends:
-
-```{code-cell} ipython3
-import magpylib as magpy
-import numpy as np
-import pyvista as pv
-
-pv.set_jupyter_backend("panel")  # improve rendering in a jupyter notebook
-
-# define sources and paths
-loop = magpy.current.Loop(current=1, diameter=1)
-loop.position = np.linspace((0, 0, -3), (0, 0, 3), 40)
-
-cylinder = magpy.magnet.Cylinder(
-    magnetization=(0, -100, 0), dimension=(1, 2), position=(0, -3, 0)
-)
-cylinder.rotate_from_angax(np.linspace(0, 300, 40)[1:], "z", anchor=0)
-
-# show the system using different backends
-for backend in magpy.SUPPORTED_PLOTTING_BACKENDS:
-    print(f"Plotting backend: {backend!r}")
-    magpy.show(loop, cylinder, backend=backend)
-```
-
-## Output in custom figure
-
-When calling `show`, a figure is automatically generated and displayed. It is also possible to display the `show` output on a given user-defined canvas with the `canvas` kwarg.
-
-In the following example we show how to combine a 2D field plot with the 3D `show` output in **Matplotlib**:
-
-```{code-cell} ipython3
-import magpylib as magpy
-import matplotlib.pyplot as plt
-import numpy as np
-
-# setup matplotlib figure and subplots
-fig = plt.figure(figsize=(10, 4))
-ax1 = fig.add_subplot(
-    121,
-)  # 2D-axis
-ax2 = fig.add_subplot(122, projection="3d")  # 3D-axis
-
-# define sources and paths
-loop = magpy.current.Loop(current=1, diameter=1)
-loop.position = np.linspace((0, 0, -3), (0, 0, 3), 40)
-
-cylinder = magpy.magnet.Cylinder(
-    magnetization=(0, -100, 0), dimension=(1, 2), position=(0, -3, 0)
-)
-cylinder.rotate_from_angax(np.linspace(0, 300, 40)[1:], "z", anchor=0)
-
-# compute field and plot in 2D-axis
-B = magpy.getB([loop, cylinder], (0, 0, 0), sumup=True)
-ax1.plot(B)
-
-# display show() output in 3D-axis
-magpy.show(loop, cylinder, canvas=ax2)
-
-# generate figure
-plt.tight_layout()
-plt.show()
-```
-
-A similar example with **Plotly**:
-
-```{code-cell} ipython3
-import magpylib as magpy
-import numpy as np
-import plotly.graph_objects as go
-
-# setup plotly figure and subplots
-fig = go.Figure().set_subplots(
-    rows=1, cols=2, specs=[[{"type": "xy"}, {"type": "scene"}]]
-)
-
-# define sources and paths
-loop = magpy.current.Loop(current=1, diameter=1)
-loop.position = np.linspace((0, 0, -3), (0, 0, 3), 40)
-
-cylinder = magpy.magnet.Cylinder(
-    magnetization=(0, -100, 0), dimension=(1, 2), position=(0, -3, 0)
-)
-cylinder.rotate_from_angax(np.linspace(0, 300, 40)[1:], "z", anchor=0)
-
-# compute field and plot in 2D-axis
-B = magpy.getB([loop, cylinder], (0, 0, 0), sumup=True)
-for i, lab in enumerate(["Bx", "By", "Bz"]):
-    fig.add_trace(go.Scatter(x=np.linspace(0, 1, 40), y=B[:, i], name=lab))
-
-# display show() output in 3D-axis
-temp_fig = go.Figure()
-magpy.show(loop, cylinder, canvas=temp_fig, backend="plotly")
-fig.add_traces(temp_fig.data, rows=1, cols=2)
-fig.layout.scene.update(temp_fig.layout.scene)
-
-# generate figure
-fig.show()
-```
-
-An example with **Pyvista**:
-
-```{code-cell} ipython3
-import numpy as np
-import magpylib as magpy
-import numpy as np
-import pyvista as pv
-
-pv.set_jupyter_backend("panel")  # improve rending in a jupyter notebook
-
-# define sources and paths
-loop = magpy.current.Loop(current=1, diameter=5)
-loop.position = np.linspace((0, 0, -3), (0, 0, 3), 40)
-
-cylinder = magpy.magnet.Cylinder(
-    magnetization=(0, -100, 0), dimension=(1, 2), position=(0, -3, 0)
-)
-cylinder.rotate_from_angax(np.linspace(0, 300, 40)[1:], "z", anchor=0)
-
-# create a pyvista plotting scene with some graphs
-pl = pv.Plotter()
-line = np.array(
-    [(t * np.cos(15 * t), t * np.sin(15 * t), t - 8) for t in np.linspace(3, 5, 200)]
-)
-pl.add_lines(line, color="black")
-
-# add magpylib.show() output to existing scene
-magpy.show(loop, cylinder, backend="pyvista", canvas=pl)
-
-# display scene
-pl.camera.position = (50, 10, 10)
-pl.set_background("black", top="white")
-pl.show()
-```
-
-## Return figure
-
-Instead of forwarding a figure to an existing canvas, it is also possible to return the figure object for further manipulation using the `return_fig` command. In the following example this is demonstrated for the pyvista backend.
-
-```{code-cell} ipython3
-import numpy as np
-import magpylib as magpy
-import numpy as np
-import pyvista as pv
-
-pv.set_jupyter_backend("panel")  # improve rending in a jupyter notebook
-
-# define sources and paths
-loop = magpy.current.Loop(current=1, diameter=5)
-loop.position = np.linspace((0, 0, -3), (0, 0, 3), 40)
-
-cylinder = magpy.magnet.Cylinder(
-    magnetization=(0, -100, 0), dimension=(1, 2), position=(0, -3, 0)
-)
-cylinder.rotate_from_angax(np.linspace(0, 300, 40)[1:], "z", anchor=0)
-
-# return pyvista scene from magpylib.show()
-pl = magpy.show(loop, cylinder, backend="pyvista", return_fig=True)
-
-# add line to the pyvista scene
-line = np.array(
-    [(t * np.cos(15 * t), t * np.sin(15 * t), t - 8) for t in np.linspace(3, 5, 200)]
-)
-pl.add_lines(line, color="black")
-
-# display scene
-pl.camera.position = (50, 10, 10)
-pl.set_background("purple", top="lightgreen")
-pl.enable_anti_aliasing("ssaa")
-pl.show()
-```
diff --git a/docs/examples/examples_06_triangle.md b/docs/examples/examples_06_triangle.md
deleted file mode 100644
index 168b092dc..000000000
--- a/docs/examples/examples_06_triangle.md
+++ /dev/null
@@ -1,101 +0,0 @@
----
-jupytext:
-  text_representation:
-    extension: .md
-    format_name: myst
-    format_version: 0.13
-    jupytext_version: 1.14.5
-kernelspec:
-  display_name: Python 3
-  language: python
-  name: python3
----
-
-```{versionadded} 4.2
-The `Triangle` class
-```
-
-(examples-triangle)=
-
-# Complex shapes - Triangle
-
-The field of a homogeneously charged magnet is, on the outside, the same as the field of a similarly shaped body with a magnetic surface charge. The surface charge is proportional to the projection of the magnetization vector onto the surface normal.
-
-The `Triangle` class is set up so that it can easily be used for this purpose. Arbitrary surfaces are easily approximated by triangles, and given the magnetization vector, the surface charge density is automatically computed. One must be very careful to orient the triangles correctly, with surface normal vectors pointing outwards (right-hand-rule). The resulting H-field of such a collection is correct, but the B-field is only correct on the outside of the body. On the inside the magnetization must be added to the field.
-
-## Example: Triangular prism magnet
-
-Consider a prism with triangular base that is magnetized orthogonal to the base. All surface normals of the sides of the prism are orthogonal to the magnetization vector. As a result the sides do not contribute to the magnetic field because their charge density disappears. Only top and bottom surfaces contribute. One must be very careful when defining those surfaces in such a way that the surface normals point outwards. For this purpose the surface normal of `Triangle` objects is graphically displayed by default. The following examples shows how the `Triangle` class can be used to create a prism magnet object.
-
-```{code-cell} ipython3
-import magpylib as magpy
-
-top = magpy.misc.Triangle(
-    magnetization=(0,0,1000),
-    vertices= ((-1,-1,1), (1,-1,1), (0,2,1)),
-)
-bott = magpy.misc.Triangle(
-    magnetization=(0,0,1000),
-    vertices= ((-1,-1,-1), (0,2,-1), (1,-1,-1)),
-)
-
-prism = magpy.Collection(top, bott)
-
-prism.show(
-    style_opacity=0.5,
-    style_magnetization_size=0.2,
-)
-```
-
-## Example: Cuboctahedron magnet
-
-More complex bodies are easy constructed from `Triangle` objects. The following code shows how a magnet with cuboctahedral shape can be constructed. Be aware that the B-field requires addition of the magnetization vector on the inside.
-
-```{code-cell} ipython3
-import magpylib as magpy
-
-vertices = [
-    ([0, 1, -1], [-1, 1, 0], [1, 1, 0]),
-    ([0, 1, 1], [1, 1, 0], [-1, 1, 0]),
-    ([0, 1, 1], [-1, 0, 1], [0, -1, 1]),
-    ([0, 1, 1], [0, -1, 1], [1, 0, 1]),
-    ([0, 1, -1], [1, 0, -1], [0, -1, -1]),
-    ([0, 1, -1], [0, -1, -1], [-1, 0, -1]),
-    ([0, -1, 1], [-1, -1, 0], [1, -1, 0]),
-    ([0, -1, -1], [1, -1, 0], [-1, -1, 0]),
-    ([-1, 1, 0], [-1, 0, -1], [-1, 0, 1]),
-    ([-1, -1, 0], [-1, 0, 1], [-1, 0, -1]),
-    ([1, 1, 0], [1, 0, 1], [1, 0, -1]),
-    ([1, -1, 0], [1, 0, -1], [1, 0, 1]),
-    ([0, 1, 1], [-1, 1, 0], [-1, 0, 1]),
-    ([0, 1, 1], [1, 0, 1], [1, 1, 0]),
-    ([0, 1, -1], [-1, 0, -1], [-1, 1, 0]),
-    ([0, 1, -1], [1, 1, 0], [1, 0, -1]),
-    ([0, -1, -1], [-1, -1, 0], [-1, 0, -1]),
-    ([0, -1, -1], [1, 0, -1], [1, -1, 0]),
-    ([0, -1, 1], [-1, 0, 1], [-1, -1, 0]),
-    ([0, -1, 1], [1, -1, 0], [1, 0, 1]),
-]
-
-cuboc = magpy.Collection(style_label="Cuboctahedron")
-for ind, vert in enumerate(vertices):
-    cuboc.add(
-        magpy.misc.Triangle(
-            magnetization=(100, 200, 300),
-            vertices=vert,
-            style_label=f"Triangle_{ind+1:02d}",
-        )
-    )
-
-magpy.show(
-    *cuboc,
-    backend="pyvista",
-    style_orientation_size=2,
-    style_orientation_color='yellow',
-    style_orientation_symbol='cone',
-    style_magnetization_mode="arrow",
-    jupyter_backend="panel", # better pyvista rendering in a jupyter notebook
-)
-```
-
-However, despite the potential of the `Triangle` class to build complex shapes, its application is prone to error because there is no intrinsic check of face orientation, connectedness, and being inside or outside of the magnet. For convenience the `TriangularMesh` class provides all these features, and enables users to quickly import complex triangular meshes as single magnet objects, see {ref}`examples-triangularmesh`.
diff --git a/docs/examples/examples_07_triangularmesh.md b/docs/examples/examples_07_triangularmesh.md
deleted file mode 100644
index ecd68e630..000000000
--- a/docs/examples/examples_07_triangularmesh.md
+++ /dev/null
@@ -1,275 +0,0 @@
----
-jupytext:
-  text_representation:
-    extension: .md
-    format_name: myst
-    format_version: 0.13
-    jupytext_version: 1.14.5
-kernelspec:
-  display_name: Python 3
-  language: python
-  name: python3
----
-
-```{versionadded} 4.3
-The `TriangularMesh` class
-```
-
-(examples-triangularmesh)=
-
-# Complex shapes - TrianglularMesh
-
-The `TriangularMesh` class is used to create magnets from triangular surface meshes, instead of assembling them from individual `Triangle` objects as described in {ref}`examples-triangle`. This class is initialized with the `vertices` (an array_like of positions) and the `faces` (an array_like of index triplets) inputs. In addition, a set of useful classmethods enables initialization from various inputs:
-
-- `TriangularMesh.from_mesh()`: from an array_like of triplets of vertices
-- `TriangularMesh.from_triangles()`: from a list of `Triangle` objects
-- `TriangularMesh.from_ConvexHull()`: from the convex hull of a given point cloud
-- `TriangularMesh.from_pyvista()`: from a Pvista `PolyData` object
-
-In contrast to a `Collection` of `Triangle` objects the `TriangularMesh` class performs several important checks at initialization by default to ensure that the given triangular mesh can form a proper magnet:
-
-- `check_open`: checks if given mesh forms a closed surface
-- `check_disconnected`: checks if given mesh is connected
-- `check_selfintersecting`: checks if given mesh is self-intersecting
-- `reorient_faces`: checks if faces are oriented outwards, and flips the ones wrongly oriented. This works only if the mesh is closed.
-
-All four checks will throw warnings by default if the mesh is open, disconnected, self-intersecting, or cannot be reoriented. Four options enable error handling: `"skip"` (=`False`), `"ignore"`, `"warn"` (=default=`True`), `"raise"`. If skipped at initialization, the checks can be performed by hand via respective methods.
-
-The mesh status is set by the checks, and can be viewed via the properties `status_open`, `status_disconnected` and `status_reoriented` with possible values `None`, `True`, `False`. Problems of the mesh (e.g. open edges) are stored in `status_open_data` and `status_disconnected_data`. Such problems can be viewed with `show`.
-
-```{caution}
-* `getB` and `getH` compute the fields correctly only if the mesh is closed, not self-intersecting, and all faces are properly oriented outwards.
-
-* Input checks and face reorientation can be computationally expensive. The checks can be individually deactivated by setting `reorient_faces="skip"`, `check_open="skip"`, `check_disconnected="skip"`, and `check_selfintersecting="skip"` at initialization of `TriangularMesh` objects. The checks can also be performed by hand after initialization.
-
-* Meshing tools such as the [Pyvista](https://docs.pyvista.org/) library can be very convenient for building complex shapes, but often do not guarantee that the mesh is properly closed or connected.
-
-* Meshing tools often create meshes with a lot of faces, especially when working with curved surfaces. Keep in mind that the field computation takes of the order of a few microseconds per observer position per face, and that RAM is a limited ressource.
-```
-
-## Example - Tetrahedron magnet
-
-```{code-cell} ipython3
-import magpylib as magpy
-
-# create faceted tetrahedron from vertices and faces
-tmesh_tetra = magpy.magnet.TriangularMesh(
-    magnetization=(0, 0, 1000),
-    vertices=((0, 0, 0), (1, 0, 0), (0, 1, 0), (0, 0, 1)),
-    faces=((2, 1, 0), (3, 0, 1), (3, 2, 0), (3, 1, 2)),
-)
-
-# print mesh status
-print("mesh status open:", tmesh_tetra.status_open)
-print("mesh status disconnected:", tmesh_tetra.status_disconnected)
-print("mesh status selfintersecting:", tmesh_tetra.status_selfintersecting)
-print("mesh status reoriented:", tmesh_tetra.status_reoriented)
-
-tmesh_tetra.show()
-```
-
-## Example - Dodecahedron magnet from pyvista
-
-`TriangularMesh` magnets can be directly created from Pyvista `PolyData` objects via the classmethod `from_pyvista`.
-
-```{note}
-The Pyvista library used in the following examples is not automatically installed with Magpylib. A Pyvista installation guide is found [here](https://docs.pyvista.org/getting-started/installation.html).
-```
-
-```{code-cell} ipython3
-import pyvista as pv
-import magpylib as magpy
-
-# create a simple pyvista PolyData object
-dodec_mesh = pv.Dodecahedron()
-
-dodec = magpy.magnet.TriangularMesh.from_pyvista(
-    magnetization=(0, 0, 100),
-    polydata=dodec_mesh,
-)
-
-dodec.show()
-```
-
-We can now add a sensor and plot the B-field value along the sensor path.
-
-```{code-cell} ipython3
-import numpy as np
-import matplotlib.pyplot as plt
-import pyvista as pv
-import magpylib as magpy
-
-# create a simple pyvista PolyData object
-dodec_mesh = pv.Dodecahedron()
-
-# create TriangularMesh object
-tmesh_dodec = magpy.magnet.TriangularMesh.from_pyvista(
-    magnetization=(1000, 0, 0),
-    polydata=dodec_mesh,
-)
-
-# add sensor and rotate around source
-sens = magpy.Sensor(position=(2, 0, 0))
-sens.rotate_from_angax(angle=np.linspace(0, 320, 50), axis="z", start=0, anchor=0)
-
-# define matplotlib figure and axes
-fig = plt.figure(figsize=(12, 6))
-ax1 = fig.add_subplot(
-    121,
-    projection="3d",
-    azim=-80,
-    elev=15,
-)
-ax2 = fig.add_subplot(
-    122,
-)
-
-# plot 3D model and B-field
-magpy.show(tmesh_dodec, sens, canvas=ax1)
-B = tmesh_dodec.getB(sens)
-ax2.plot(B, label=["Bx", "By", "Bz"])
-
-# plot styling
-ax1.set(
-    title="3D model",
-    aspect="equal",
-)
-ax2.set(
-    title="Dodecahedron field",
-    xlabel="path index ()",
-    ylabel="B-field (mT)",
-)
-
-plt.gca().grid(color=".9")
-plt.gca().legend()
-plt.tight_layout()
-plt.show()
-```
-
-## Example - Pyramid magnet from ConvexHull
-
-`TriangularMesh` objects are easily constructed from the convex hull of a given point cloud using the classmethod `from_ConvexHull`. This classmethod  makes use of the [scipy.spatial.ConvexHull](https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.ConvexHull.html) class. Note that the Scipy method does not guarantee correct face orientations if `reorient_faces` is disabled.
-
-```{code-cell} ipython3
-import magpylib as magpy
-
-# create Pyramid
-points = [[-2,-2, 0], [-2,2,0], [2,-2,0], [2,2,0], [0,0,3]]
-tmesh_pyramid = magpy.magnet.TriangularMesh.from_ConvexHull(
-    magnetization=(0, 0, 1000),
-    points=points,
-)
-
-#display graphically
-tmesh_pyramid.show(
-    style_opacity=0.5,
-    style_orientation_show=True,
-    style_orientation_size=1.5,
-)
-```
-
-## Example - Prism magnet with open mesh
-
-In some cases it may be desirable to generate a `TriangularMesh` object from an open mesh, as described in {ref}`examples-triangle`. In this case one has to be extremely careful because one cannot rely on the checks. Not to generate warnings or error messages, these checks can be disabled with `"skip"` or their outcome can be ignored with `"ignore"`. The `show` function can be used to view open edges and disconnected parts. In the following example we generate such an open mesh directly from `Triangle` objects.
-
-```{code-cell} ipython3
-import magpylib as magpy
-import numpy as np
-
-top = magpy.misc.Triangle(
-    magnetization=(1000,0,0),
-    vertices= ((-1,-1,1), (1,-1,1), (0,2,1)),
-)
-bottom = magpy.misc.Triangle(
-    magnetization=(1000,0,0),
-    vertices= ((-1,-1,-1), (0,2,-1), (1,-1,-1)),
-)
-
-# create faceted prism with open edges
-prism = magpy.magnet.TriangularMesh.from_triangles(
-    magnetization=(0, 0, 1000),   # overrides triangles magnetization
-    triangles=[top, bottom],
-    check_open="ignore",        # check but ignore open mesh
-    check_disconnected="ignore",     # check but ignore disconnected mesh
-    reorient_faces="ignore",      # check but ignore non-orientable mesh
-    style_label="Open prism",
-)
-prism.style.magnetization.mode = "arrow"
-
-print("mesh status open:", prism.status_open)
-print("mesh status disconnected:", prism.status_disconnected)
-print("mesh status self-intersecting:", prism.status_selfintersecting)
-print("mesh status reoriented:", prism.status_reoriented)
-
-prism.show(
-    backend="plotly",
-    style_mesh_open_show=True,
-    style_mesh_disconnected_show=True,
-)
-```
-
-## Example - Boolean operations with Pyvista
-
-It is noteworthy that with [Pyvista](https://docs.pyvista.org/) it is possible to build complex shapes with boolean geometric operations. However, such operations often result in open and disconnected meshes that require some refinement to produce solid magnets. The following example demonstrates the problem, and how to view it with `show`.
-
-```{code-cell} ipython3
-import magpylib as magpy
-import pyvista as pv
-
-# create a complex pyvista PolyData object with a boolean operation
-sphere = pv.Sphere(radius=0.6)
-cube = pv.Cube().triangulate()
-obj = cube.boolean_difference(sphere)
-
-# use the `from_pyvista` classmethod to construct our magnet
-magnet = magpy.magnet.TriangularMesh.from_pyvista(
-    magnetization=(0, 0, 100),
-    polydata=obj,
-    check_disconnected="ignore",
-    check_open="ignore",
-    reorient_faces="ignore",
-    style_label="magnet",
-)
-
-print(f'mesh status open: {magnet.status_open}')
-print(f'mesh status disconnected: {magnet.status_disconnected}')
-print(f"mesh status self-intersecting: {magnet.status_selfintersecting}")
-print(f'mesh status reoriented: {magnet.status_reoriented}')
-
-magnet.show(
-    backend="plotly",
-    style_mesh_open_show=True,
-    style_mesh_disconnected_show=True,
-)
-```
-
-Such problems can typically be avoided by
-1. Subdivision of the initial triangulation (give Pyvista a finer mesh to work with from the start)
-2. Cleaning (merge duplicate points, remove unused points, remove degenerate faces)
-
-The following code solves these problems and produces a clean magnet.
-
-```{code-cell} ipython3
-import pyvista as pv
-import magpylib as magpy
-
-# create a complex pyvista PolyData object with a boolean operation
-sphere = pv.Sphere(radius=0.6)
-dodec = pv.Cube().triangulate().subdivide(2)
-obj = dodec.boolean_difference(sphere)
-obj = obj.clean()
-
-# use the `from_pyvista` classmethod to construct our magnet
-magnet = magpy.magnet.TriangularMesh.from_pyvista(
-    magnetization=(0, 0, 100),
-    polydata=obj,
-    style_label="magnet",
-)
-
-print(f'mesh status open: {magnet.status_open}')
-print(f'mesh status disconnected: {magnet.status_disconnected}')
-print(f"mesh status self-intersecting: {magnet.status_selfintersecting}")
-print(f'mesh status reoriented: {magnet.status_reoriented}')
-
-magnet.show(backend="plotly")
-```
\ No newline at end of file
diff --git a/docs/examples/examples_12_styles.md b/docs/examples/examples_12_styles.md
deleted file mode 100644
index 8730e2f1b..000000000
--- a/docs/examples/examples_12_styles.md
+++ /dev/null
@@ -1,195 +0,0 @@
----
-jupytext:
-  text_representation:
-    extension: .md
-    format_name: myst
-    format_version: 0.13
-    jupytext_version: 1.13.7
-kernelspec:
-  display_name: Python 3 (ipykernel)
-  language: python
-  name: python3
----
-
-(examples-graphic-styles)=
-# Graphics - Styles
-
-The graphic styles define how Magpylib objects are displayed visually when calling `show`. They can be fine-tuned and individualized in many ways.
-
-There are multiple hierarchy levels that decide about the final graphical representation of the objects:
-
-1. When no input is given, the **default style** will be applied.
-2. Collections will override the color property of all children with their own color.
-3. Object **individual styles** will take precedence over these values.
-4. Setting a **local style** in `show()` will take precedence over all other settings.
-
-## Setting the default style
-
-The default style is stored in `magpylib.defaults.display.style`. Default styles can be set as properties,
-
-```python
-magpy.defaults.display.style.magnet.magnetization.show = True
-magpy.defaults.display.style.magnet.magnetization.color.middle = 'grey'
-magpy.defaults.display.style.magnet.magnetization.color.mode = 'bicolor'
-```
-
-by assigning a style dictionary with equivalent keys,
-
-```python
-magpy.defaults.display.style.magnet = {
-    'magnetization': {'show': True, 'color': {'middle': 'grey', 'mode': 'tricolor'}}
-}
-```
-
-or by making use of the `update` method:
-
-```python
-magpy.defaults.display.style.magnet.magnetization.update(
-    'show': True,
-    'color': {'middle'='grey', mode='tricolor',}
-)
-```
-
-All three examples result in the same default style.
-
-Once modified, the library default can always be restored with the `magpylib.style.reset()` method. The following practical example demonstrates how to create and set a user defined magnetization style as default,
-
-```{code-cell} ipython3
-import magpylib as magpy
-from magpylib.magnet import Cuboid, Cylinder, Sphere
-
-cube = Cuboid(magnetization=(1, 0, 0), dimension=(1, 1, 1))
-cylinder = Cylinder(magnetization=(0, 1, 0), dimension=(1, 1), position=(2,0,0))
-sphere = Sphere(magnetization=(0, 1, 1), diameter=1, position=(4,0,0))
-
-print('Default magnetization style')
-magpy.show(cube, cylinder, sphere, backend="plotly")
-
-user_defined_style = {
-    'show': True,
-    "size": 0.5,
-    'color': {
-        'transition': 0,
-        'mode': 'tricolor',
-        'middle': 'white',
-        'north': 'magenta',
-        'south': 'turquoise',
-    },
-    "mode": "arrow+color",
-}
-magpy.defaults.display.style.magnet.magnetization = user_defined_style
-
-print('Custom magnetization style')
-magpy.show(cube, cylinder, sphere, backend="plotly")
-```
-
-## Magic underscore notation
-<!-- +++ {"tags": [], "jp-MarkdownHeadingCollapsed": true} -->
-
-To facilitate working with deeply nested properties, all style constructors and object style methods support the magic underscore notation. It enables referencing nested properties by joining together multiple property names with underscores. This feature mainly helps reduce the code verbosity and is heavily inspired by the `plotly` implementation (see [plotly underscore notation](https://plotly.com/python/creating-and-updating-figures/#magic-underscore-notation)).
-
-With magic underscore notation, the previous examples can be written as,
-
-```python
-import magpylib as magpy
-magpy.defaults.display.style.magnet = {
-    'magnetization_show': True,
-    'magnetization_color_middle': 'grey',
-    'magnetization_color_mode': 'tricolor',
-}
-```
-
-or directly as kwargs in the `update` method as,
-
-```python
-import magpylib as magpy
-magpy.defaults.display.style.magnet.update(
-    magnetization_show=True,
-    magnetization_color_middle='grey',
-    magnetization_color_mode='tricolor',
-)
-```
-
-## Setting individual styles
-
-Any Magpylib object can have its own individual style that will take precedence over the default values when `show` is called. When setting individual styles, the object family specifier such as `magnet` or `current` which is required for the defaults settings, but is implicitly defined by the object type, can be omitted.
-
-```{warning}
-Users should be aware that specifying individual style attributes massively increases object initializing time (from <50 to 100-500 $\mu$s).
-While this may not be noticeable for a small number of objects, it is best to avoid setting styles until it is plotting time.
-```
-
-In the following example the individual style of `cube` is set at initialization, the style of `cylinder` is the default one, and the individual style of `sphere` is set using the object style properties.
-
-```{code-cell} ipython3
-import magpylib as magpy
-from magpylib.magnet import Cuboid, Cylinder, Sphere
-
-magpy.defaults.reset() # reset defaults defined in previous example
-
-cube = Cuboid(
-    magnetization=(1, 0, 0),
-    dimension=(1, 1, 1),
-    style_magnetization_color_mode='tricycle',
-)
-cylinder = Cylinder(
-    magnetization=(0, 1, 0),
-    dimension=(1, 1), position=(2,0,0),
-)
-sphere = Sphere(
-    magnetization=(0, 1, 1),
-    diameter=1,
-    position=(4,0,0),
-)
-
-sphere.style.magnetization.color.mode='bicolor'
-
-magpy.show(cube, cylinder, sphere, backend="plotly")
-```
-
-## Setting style via collections
-
-When displaying collections, the collection object `color` property will be automatically assigned to all its children and override the default style. An example that demonstrates this is {ref}`examples-union-operation`. In addition, it is possible to modify the individual style properties of all children with the `set_children_styles` method. Non-matching properties are simply ignored.
-
-In the following example we show how the french magnetization style is applied to all children in a collection,
-
-```{code-cell} ipython3
-import magpylib as magpy
-from magpylib.magnet import Cuboid, Cylinder, Sphere
-
-magpy.defaults.reset() # reset defaults defined in previous example
-
-cube = Cuboid(magnetization=(1, 0, 0), dimension=(1, 1, 1))
-cylinder = Cylinder(magnetization=(0, 1, 0), dimension=(1, 1), position=(2,0,0))
-sphere = Sphere(magnetization=(0, 1, 1), diameter=1, position=(4,0,0))
-
-coll = cube + cylinder
-
-coll.set_children_styles(magnetization_color_south="blue")
-
-magpy.show(coll, sphere, backend="plotly")
-```
-
-## Local style override
-
-Finally it is possible to hand style input to the `show` function directly and locally override the given properties for this specific `show` output. Default or individual style attributes will not be modified. Such inputs must start with the `style` prefix and the object family specifier must be omitted. Naturally underscore magic is supported.
-
-```{code-cell} ipython3
-import magpylib as magpy
-from magpylib.magnet import Cuboid, Cylinder, Sphere
-
-cube = Cuboid(magnetization=(1, 0, 0), dimension=(1, 1, 1))
-cylinder = Cylinder(magnetization=(0, 1, 0), dimension=(1, 1), position=(2,0,0))
-sphere = Sphere(magnetization=(0, 1, 1), diameter=1, position=(4,0,0))
-
-# use local style override
-magpy.show(cube, cylinder, sphere, backend="plotly", style_magnetization_show=False)
-```
-
-(examples-list-of-styles)=
-
-## List of styles
-
-```{code-cell} ipython3
-magpy.defaults.display.style.as_dict(flatten=True, separator='.')
-```
diff --git a/docs/examples/examples_13_3d_models.md b/docs/examples/examples_13_3d_models.md
deleted file mode 100644
index 299290d3e..000000000
--- a/docs/examples/examples_13_3d_models.md
+++ /dev/null
@@ -1,319 +0,0 @@
----
-jupytext:
-  text_representation:
-    extension: .md
-    format_name: myst
-    format_version: 0.13
-    jupytext_version: 1.13.7
-kernelspec:
-  display_name: Python 3 (ipykernel)
-  language: python
-  name: python3
----
-
-(examples-3d-models)=
-
-# Graphics - 3D models and CAD
-
-(examples-own-3d-models)=
-## Custom 3D models
-
-Each Magpylib object has a default 3D representation that is displayed with `show`. Users can add a custom 3D model to any Magpylib object with help of the `style.model3d.add_trace` method. The new trace is stored in `style.model3d.data`. User-defined traces move with the object just like the default models do. The default trace can be hidden with the command `obj.model3d.showdefault=False`. When using the `'generic'` backend, custom traces are automatically translated into any other backend. If a specific backend is used, it will only show when called with the corresponding backend.
-
-The input `trace` is a dictionary which includes all necessary information for plotting or a `magpylib.graphics.Trace3d` object. A `trace` dictionary has the following keys:
-
-1. `'backend'`: `'generic'`, `'matplotlib'` or `'plotly'`
-2. `'constructor'`: name of the plotting constructor from the respective backend, e.g. plotly `'Mesh3d'` or matplotlib `'plot_surface'`
-3. `'args'`: default `None`, positional arguments handed to constructor
-4. `'kwargs'`: default `None`, keyword arguments handed to constructor
-5. `'coordsargs'`: tells magpylib which input corresponds to which coordinate direction, so that geometric representation becomes possible. By default `{'x': 'x', 'y': 'y', 'z': 'z'}` for the `'generic'` backend and Plotly backend,  and `{'x': 'args[0]', 'y': 'args[1]', 'z': 'args[2]'}` for the Matplotlib backend.
-6. `'show'`: default `True`, toggle if this trace should be displayed
-7. `'scale'`: default 1, object geometric scaling factor
-8. `'updatefunc'`: default `None`, updates the trace parameters when `show` is called. Used to generate  dynamic traces.
-
-The following example shows how a **generic** trace is constructed with  `Mesh3d` and `Scatter3d` and is displayed with three different backends:
-
-```{code-cell} ipython3
-import numpy as np
-import magpylib as magpy
-import pyvista as pv
-
-pv.set_jupyter_backend('panel') # improve rendering in a jupyter notebook
-
-# Mesh3d trace #########################
-
-trace_mesh3d = {
-    'backend': 'generic',
-    'constructor': 'Mesh3d',
-    'kwargs': {
-        'x': (1, 0, -1, 0),
-        'y': (-.5, 1.2, -.5, 0),
-        'z': (-.5, -.5, -.5, 1),
-        'i': (0, 0, 0, 1),
-        'j': (1, 1, 2, 2),
-        'k': (2, 3, 3, 3),
-        #'opacity': 0.5,
-    },
-}
-coll = magpy.Collection(position=(0,-3,0), style_label="'Mesh3d' trace")
-coll.style.model3d.add_trace(trace_mesh3d)
-
-# Scatter3d trace ######################
-
-ts = np.linspace(0, 2*np.pi, 30)
-trace_scatter3d = {
-    'backend': 'generic',
-    'constructor': 'Scatter3d',
-    'kwargs': {
-        'x': np.cos(ts),
-        'y': np.zeros(30),
-        'z': np.sin(ts),
-        'mode': 'lines',
-    }
-}
-dipole = magpy.misc.Dipole(moment=(0,0,1), style_label="'Scatter3d' trace", style_size=6)
-dipole.style.model3d.add_trace(trace_scatter3d)
-
-magpy.show(coll, dipole, backend='matplotlib')
-magpy.show(coll, dipole, backend='plotly')
-magpy.show(coll, dipole, backend='pyvista')
-```
-
-It is possible to have multiple user-defined traces that will be displayed at the same time. In addition, the following code shows how to quickly copy and manipulate trace dictionaries and `Trace3d` objects,
-
-```{code-cell} ipython3
-import copy
-dipole.style.size=3
-
-# generate new trace from dictionary
-trace2 = copy.deepcopy(trace_scatter3d)
-trace2['kwargs']['y'] = np.sin(ts)
-trace2['kwargs']['z'] = np.zeros(30)
-
-dipole.style.model3d.add_trace(trace2)
-
-# generate new trace from Trace3d object
-trace3 = dipole.style.model3d.data[1].copy()
-trace3.kwargs['x'] = np.zeros(30)
-trace3.kwargs['z'] = np.cos(ts)
-
-dipole.style.model3d.add_trace(trace3)
-
-dipole.show(dipole, backend='matplotlib')
-```
-
-**Matplotlib** plotting functions often use positional arguments for $(x,y,z)$ input, that are handed over from `args=(x,y,z)` in `trace`. The following examples show how to construct traces with `plot`, `plot_surface` and `plot_trisurf`:
-
-```{code-cell} ipython3
-import numpy as np
-import matplotlib.pyplot as plt
-import matplotlib.tri as mtri
-import magpylib as magpy
-
-# plot trace ###########################
-
-ts = np.linspace(-10,10,100)
-xs = np.cos(ts)
-ys = np.sin(ts)
-zs = ts/20
-
-trace_plot = {
-    'backend': 'matplotlib',
-    'constructor': 'plot',
-    'args': (xs,ys,zs),
-    'kwargs': {'ls': '--', 'lw': 2},
-}
-magnet = magpy.magnet.Cylinder(magnetization=(0,0,1), dimension=(.5,1))
-magnet.style.model3d.add_trace(trace_plot)
-
-# plot_surface trace ###################
-
-u, v = np.mgrid[0:2 * np.pi:30j, 0:np.pi:20j]
-xs = np.cos(u) * np.sin(v)
-ys = np.sin(u) * np.sin(v)
-zs = np.cos(v)
-
-trace_surf = {
-    'backend': 'matplotlib',
-    'constructor': 'plot_surface',
-    'args': (xs,ys,zs),
-    'kwargs': {'cmap': plt.cm.YlGnBu_r},
-}
-ball = magpy.Collection(position=(-3,0,0))
-ball.style.model3d.add_trace(trace_surf)
-
-# plot_trisurf trace ###################
-
-u, v = np.mgrid[0:2*np.pi:50j, -.5:.5:10j]
-u, v = u.flatten(), v.flatten()
-
-xs = (1 + 0.5 * v * np.cos(u / 2.0)) * np.cos(u)
-ys = (1 + 0.5 * v * np.cos(u / 2.0)) * np.sin(u)
-zs = 0.5 * v * np.sin(u / 2.0)
-
-tri = mtri.Triangulation(u, v)
-
-trace_trisurf = {
-    'backend': 'matplotlib',
-    'constructor': 'plot_trisurf',
-    'args': (xs,ys,zs),
-    'kwargs': {
-        'triangles': tri.triangles,
-        'cmap': plt.cm.coolwarm,
-    },
-}
-mobius = magpy.misc.CustomSource(style_model3d_showdefault=False, position=(3,0,0))
-mobius.style.model3d.add_trace(trace_trisurf)
-
-magpy.show(magnet, ball, mobius, zoom=5, backend="matplotlib")
-```
-
-## Pre-defined 3D models
-
-Automatic trace generators are provided for several basic 3D models in `magpylib.graphics.model3d`. If no backend is specified, it defaults back to `'generic'`. They can be used as follows,
-
-```{code-cell} ipython3
-import magpylib as magpy
-from magpylib.graphics import model3d
-
-# prism trace ###################################
-trace_prism = model3d.make_Prism(
-    base=6,
-    diameter=2,
-    height=1,
-    position=(-3,0,0),
-)
-obj0 = magpy.Sensor(style_model3d_showdefault=False, style_label='Prism')
-obj0.style.model3d.add_trace(trace_prism)
-
-# pyramid trace #################################
-trace_pyramid = model3d.make_Pyramid(
-    base=30,
-    diameter=2,
-    height=1,
-    position=(3,0,0),
-)
-obj1 = magpy.Sensor(style_model3d_showdefault=False, style_label='Pyramid')
-obj1.style.model3d.add_trace(trace_pyramid)
-
-# cuboid trace ##################################
-trace_cuboid = model3d.make_Cuboid(
-    dimension=(2,2,2),
-    position=(0,3,0),
-)
-obj2 = magpy.Sensor(style_model3d_showdefault=False, style_label='Cuboid')
-obj2.style.model3d.add_trace(trace_cuboid)
-
-# cylinder segment trace ########################
-trace_cylinder_segment = model3d.make_CylinderSegment(
-    dimension=(1, 2, 1, 140, 220),
-    position=(1,0,-3),
-)
-obj3 = magpy.Sensor(style_model3d_showdefault=False, style_label='Cylinder Segment')
-obj3.style.model3d.add_trace(trace_cylinder_segment)
-
-# ellipsoid trace ###############################
-trace_ellipsoid = model3d.make_Ellipsoid(
-    dimension=(2,2,2),
-    position=(0,0,3),
-)
-obj4 = magpy.Sensor(style_model3d_showdefault=False, style_label='Ellipsoid')
-obj4.style.model3d.add_trace(trace_ellipsoid)
-
-# arrow trace ###################################
-trace_arrow = model3d.make_Arrow(
-    base=30,
-    diameter=0.6,
-    height=2,
-    position=(0,-3,0),
-)
-obj5 = magpy.Sensor(style_model3d_showdefault=False, style_label='Arrow')
-obj5.style.model3d.add_trace(trace_arrow)
-
-magpy.show(obj0, obj1, obj2, obj3, obj4, obj5, backend='plotly')
-```
-
-(examples-adding-CAD-model)=
-
-## Adding a CAD model
-
-As shown in {ref}`examples-3d-models`, it is possible to attach custom 3D model representations to any Magpylib object. In the example below we show how a standard CAD model can be transformed into a generic Magpylib graphic trace, and displayed by both `matplotlib` and `plotly` backends.
-
-```{note}
-The code below requires installation of the `numpy-stl` package.
-```
-
-```{code-cell} ipython3
-import os
-import tempfile
-import requests
-import numpy as np
-from stl import mesh  # requires installation of numpy-stl
-import magpylib as magpy
-from matplotlib.colors import to_hex
-
-
-def bin_color_to_hex(x):
-    """ transform binary rgb into hex color"""
-    sb = f"{x:015b}"[::-1]
-    r = int(sb[:5], base=2)/31
-    g = int(sb[5:10], base=2)/31
-    b = int(sb[10:15], base=2)/31
-    return to_hex((r,g,b))
-
-
-
-def trace_from_stl(stl_file):
-    """
-    Generates a Magpylib 3D model trace dictionary from an *.stl file.
-    backend: 'matplotlib' or 'plotly'
-    """
-    # load stl file
-    stl_mesh = mesh.Mesh.from_file(stl_file)
-
-    # extract vertices and triangulation
-    p, q, r = stl_mesh.vectors.shape
-    vertices, ixr = np.unique(stl_mesh.vectors.reshape(p * q, r), return_inverse=True, axis=0)
-    i = np.take(ixr, [3 * k for k in range(p)])
-    j = np.take(ixr, [3 * k + 1 for k in range(p)])
-    k = np.take(ixr, [3 * k + 2 for k in range(p)])
-    x, y, z = vertices.T
-
-    # generate and return a generic trace which can be translated into any backend
-    colors = stl_mesh.attr.flatten()
-    facecolor = np.array([bin_color_to_hex(c) for c in colors]).T
-    trace = {
-        'backend': 'generic',
-        'constructor': 'mesh3d',
-        'kwargs': dict(x=x, y=y, z=z, i=i, j=j, k=k, facecolor=facecolor),
-    }
-    return trace
-
-
-# load stl file from online resource
-url = "https://raw.githubusercontent.com/magpylib/magpylib-files/main/PG-SSO-3-2.stl"
-file = url.split("/")[-1]
-with tempfile.TemporaryDirectory() as temp:
-    fn = os.path.join(temp, file)
-    with open(fn, "wb") as f:
-        response = requests.get(url)
-        f.write(response.content)
-
-    # create traces for both backends
-    trace = trace_from_stl(fn)
-
-# create sensor and add CAD model
-sensor = magpy.Sensor(style_label='PG-SSO-3 package')
-sensor.style.model3d.add_trace(trace)
-
-# create magnet and sensor path
-magnet = magpy.magnet.Cylinder(magnetization=(0,0,100), dimension=(15,20))
-sensor.position = np.linspace((-15,0,8), (-15,0,-4), 21)
-sensor.rotate_from_angax(np.linspace(0, 180, 21), 'z', anchor=0, start=0)
-
-# display with matplotlib and plotly backends
-args = (sensor, magnet)
-kwargs = dict(style_path_frames=5)
-magpy.show(args, **kwargs,  backend="matplotlib")
-magpy.show(args, **kwargs, backend="plotly")
-```
diff --git a/docs/examples/examples_15_animation.md b/docs/examples/examples_15_animation.md
deleted file mode 100644
index 167f32ec2..000000000
--- a/docs/examples/examples_15_animation.md
+++ /dev/null
@@ -1,63 +0,0 @@
----
-jupytext:
-  text_representation:
-    extension: .md
-    format_name: myst
-    format_version: 0.13
-    jupytext_version: 1.13.7
-kernelspec:
-  display_name: Python 3 (ipykernel)
-  language: python
-  name: python3
----
-
-(examples-animation)=
-
-# Graphics - Animate paths
-
-With some backends, paths can automatically be animated with `show(animation=True)`. Animations can be fine-tuned with the following properties:
-
-1. `animation_time` (default=3), must be a positive number that gives the animation time in seconds.
-2. `animation_slider` (default=`True`), is boolean and sets if a slider should be displayed in addition.
-3. `animation_fps` (default=30), sets the maximal frames per second.
-
-Ideally, the animation will show all path steps, but when e.g. `time` and `fps` are too low, specific equidistant frames will be selected to adjust to the limited display possibilities. For practicality, the input `animation=x` will automatically set `animation=True` and `animation_time=x`.
-
-The following example demonstrates the animation feature,
-
-```{code-cell} ipython3
-import numpy as np
-import magpylib as magpy
-from magpylib.magnet import Cuboid, Cylinder, Sphere
-
-# define objects with paths
-coll = magpy.Collection(
-    Cuboid(magnetization=(0,1,0), dimension=(2,2,2)),
-    Cylinder(magnetization=(0,1,0), dimension=(2,2)),
-    Sphere(magnetization=(0,1,0), diameter=2),
-)
-
-start_positions = np.array([(1.414, 0, 1), (-1, -1, 1), (-1, 1, 1)])
-for pos, src in zip(start_positions, coll):
-    src.position = np.linspace(pos, pos*5, 50)
-    src.rotate_from_angax(np.linspace(0, 360, 50), 'z', anchor=0, start=0)
-
-ts = np.linspace(-0.6, 0.6, 5)
-sensor = magpy.Sensor(pixel=[(x, y, 0) for x in ts for y in ts])
-sensor.position = np.linspace((0,0,-5), (0,0,5), 20)
-
-# show with animation
-magpy.show(coll, sensor,
-    animation=3,
-    animation_fps=20,
-    animation_slider=True,
-    backend='plotly',
-    showlegend=False,      # kwarg to plotly
-)
-```
-
-Notice that the sensor, with the shorter path stops before the magnets do. This is an example where {ref}`examples-edge-padding-end-slicing` is applied.
-
-```{warning}
-Even with some implemented failsafes, such as a maximum frame rate and frame count, there is no guarantee that the animation will be rendered properly. This is particularly relevant when the user tries to animate many objects and/or many path positions at the same time.
-```
diff --git a/docs/examples/examples_21_compound.md b/docs/examples/examples_21_compound.md
deleted file mode 100644
index 6b9369dcc..000000000
--- a/docs/examples/examples_21_compound.md
+++ /dev/null
@@ -1,211 +0,0 @@
----
-jupytext:
-  text_representation:
-    extension: .md
-    format_name: myst
-    format_version: 0.13
-    jupytext_version: 1.13.7
-kernelspec:
-  display_name: Python 3
-  language: python
-  name: python3
----
-
-(examples-compounds)=
-
-# Collections - Compounds
-
-The `Collection` class is a powerful tool for grouping and tracking object assemblies.
-However, in many cases it is convenient to have assembly variables themselves (e.g. geometric arrangement) as class properties of new custom classes, which is achieved by sub-classing `Collection`. We refer to such super-classes as **compounds** and show how to seamlessly integrate them into Magpylib.
-
-## Subclassing collections
-
-In the following example we design a compound class `MagnetRing` which represents a ring of cuboid magnets with the parameter `cubes` that should refer to the number of magnets on the ring. The ring will automatically adjust its size when `cubes` is modified. In the spirit of {ref}`examples-collections-efficient` we also add an encompassing 3D model.
-
-```{code-cell} ipython3
-import magpylib as magpy
-
-class MagnetRing(magpy.Collection):
-    """ A ring of cuboid magnets
-
-    Parameters
-    ----------
-    cubes: int, default=6
-        Number of cubes on ring.
-    """
-
-    def __init__(self, cubes=6, **style_kwargs):
-        super().__init__(**style_kwargs)             # hand over style args
-        self._update(cubes)
-
-    @property
-    def cubes(self):
-        """ Number of cubes"""
-        return self._cubes
-
-    @cubes.setter
-    def cubes(self, inp):
-        """ set cubes"""
-        self._update(inp)
-
-    def _update(self, cubes):
-        """updates the MagnetRing instance"""
-        self._cubes = cubes
-        ring_radius = cubes/3
-
-        # construct in temporary Collection for path transfer
-        temp_coll = magpy.Collection()
-        for i in range(cubes):
-            child = magpy.magnet.Cuboid(
-                magnetization=(1000,0,0),
-                dimension=(1,1,1),
-                position=(ring_radius,0,0)
-            )
-            child.rotate_from_angax(360/cubes*i, 'z', anchor=0)
-            temp_coll.add(child)
-
-        # transfer path and children
-        temp_coll.position = self.position
-        temp_coll.orientation = self.orientation
-        self.children = temp_coll.children
-
-        # add parameter-dependent 3d trace
-        self.style.model3d.data = []
-        self.style.model3d.add_trace(self._custom_trace3d())
-
-        return self
-
-    def _custom_trace3d(self):
-        """ creates a parameter-dependent 3d model"""
-        r1 = self.cubes/3 - .6
-        r2 = self.cubes/3 + 0.6
-        trace = magpy.graphics.model3d.make_CylinderSegment(
-            dimension=(r1, r2, 1.1, 0, 360),
-            vert=150,
-            opacity=0.5,
-        )
-        return trace
-```
-
-The new `MagnetRing` objects will seamlessly integrate into Magpylib and make use of the position and orientation interface, field computation and graphic display.
-
-```{code-cell} ipython3
-# add a sensor
-sensor = magpy.Sensor(position=(0, 0, 0))
-
-# create a MagnetRing object
-ring = MagnetRing()
-
-# move ring around
-ring.position = (0,0,10)
-ring.rotate_from_angax(angle=45, axis=(1,-1,0))
-
-# compute field
-print(f"B-field at sensor → {ring.getB(sensor).round(2)}")
-
-# display graphically
-magpy.show(ring, sensor, backend='plotly')
-```
-
-The ring parameter `cubes` can be modified dynamically:
-
-```{code-cell} ipython3
-ring.cubes=15
-
-print(f"B-field at sensor for modified ring → {ring.getB(sensor).round(2)}")
-magpy.show(ring, sensor, backend='plotly')
-```
-
-## Postponed trace construction
-
-Custom traces can be computationally costly to construct. In the above example, the trace is constructed in `_update`, every time the parameter `cubes` is modified. This can lead to an unwanted computational overhead, especially as the construction is only necessary for graphical representation.
-
-To make our compounds ready for heavy computation, it is possible to provide a callable as a trace, which will only be constructed when `show` is called. The following modification of the above example demonstrates this:
-
-```{code-cell} ipython3
-import magpylib as magpy
-import numpy as np
-
-class MagnetRingAdv(magpy.Collection):
-    """ A ring of cuboid magnets
-
-    Parameters
-    ----------
-    cubes: int, default=6
-        Number of cubes on ring.
-    """
-
-    def __init__(self, cubes=6, **style_kwargs):
-        super().__init__(**style_kwargs)             # hand over style args
-        self._update(cubes)
-
-        # hand trace over as callable
-        self.style.model3d.add_trace(self._custom_trace3d)
-
-    @property
-    def cubes(self):
-        """ Number of cubes"""
-        return self._cubes
-
-    @cubes.setter
-    def cubes(self, inp):
-        """ set cubes"""
-        self._update(inp)
-
-    def _update(self, cubes):
-        """updates the MagnetRing instance"""
-        self._cubes = cubes
-        ring_radius = cubes/3
-
-        # construct in temporary Collection for path transfer
-        temp_coll = magpy.Collection()
-        for i in range(cubes):
-            child = magpy.magnet.Cuboid(
-                magnetization=(1000,0,0),
-                dimension=(1,1,1),
-                position=(ring_radius,0,0)
-            )
-            child.rotate_from_angax(360/cubes*i, 'z', anchor=0)
-            temp_coll.add(child)
-
-        # transfer path and children
-        temp_coll.position = self.position
-        temp_coll.orientation = self.orientation
-        self.children = temp_coll.children
-
-        return self
-
-    def _custom_trace3d(self):
-        """ creates a parameter-dependent 3d model"""
-        r1 = self.cubes/3 - .6
-        r2 = self.cubes/3 + 0.6
-        trace = magpy.graphics.model3d.make_CylinderSegment(
-            dimension=(r1, r2, 1.1, 0, 360),
-            vert=150,
-            opacity=0.5,
-        )
-        return trace
-```
-
-All we have done is, to remove the trace construction from the `_update` method, and instead provide `_custom_trace3d` as callable in `__init__` with the help of `partial`.
-
-```{code-cell} ipython3
-ring0 = MagnetRing()
-%time for _ in range(100): ring0.cubes=10
-
-ring1 = MagnetRingAdv()
-%time for _ in range(100): ring1.cubes=10
-```
-
-This example is not very impressive because the provided trace is not very heavy. Finally, we play around with our new compound:
-
-```{code-cell} ipython3
-rings = []
-for i,cub in zip([2,7,12,17,22], [20,16,12,8,4]):
-    ring = MagnetRingAdv(cubes=cub, style_label=f'MagnetRingAdv (x{cub})')
-    ring.rotate_from_angax(angle=np.linspace(0,45,10), axis=(1,-1,0))
-    ring.move(np.linspace((0,0,0), (-i,-i,i), i))
-    rings.append(ring)
-
-magpy.show(rings, animation=2, backend='plotly', style_path_show=False)
-```
diff --git a/docs/examples/examples_22_field_interpolation.md b/docs/examples/examples_22_field_interpolation.md
deleted file mode 100644
index d6a3f790e..000000000
--- a/docs/examples/examples_22_field_interpolation.md
+++ /dev/null
@@ -1,140 +0,0 @@
----
-jupytext:
-  text_representation:
-    extension: .md
-    format_name: myst
-    format_version: 0.13
-    jupytext_version: 1.13.6
-kernelspec:
-  display_name: Python 3
-  language: python
-  name: python3
----
-
-# Field interpolation
-
-Working with complex magnet shapes can be cumbersome when a lot of base shapes are required, see {ref}`examples-complex-forms`. One way around this problem is to compute the field only a single time on a 3D grid, define an interpolation function, and use the interpolation function as `field_func` input of a custom source.
-
-This makes it possible to use the full Magpylib geometry interface, to move/rotate the complex source around, without having to recompute the total field at new observer positions. Of course this method would also allow it to integrate the field from a **finite element** computation or some **experimental data** into Magpylib.
-
-In the following example we show how this can be done. To improve readability, this example is constructed in the form of a Jupyter notebook.
-
-## Interpolation function
-
-We start by defining a 3D vector-field interpolation function relying on the scipy `RegularGridInterpolator` functionality.
-
-```{code-cell} ipython3
-import numpy as np
-from scipy.interpolate import RegularGridInterpolator
-import magpylib as magpy
-
-def interpolate_field(data, method="linear", bounds_error=False, fill_value=np.nan):
-    """ Creates a 3D-vector field interpolation from regular grid data
-
-    Parameters
-    ----------
-    data: array_like, shape (n,6)
-        The first dimension is a flattened regular grid, the second
-        dimension corresponds to positions x, y, z, then field Bx, By, Bz
-        in this order.
-
-    method : str, optional
-        The method of interpolation to perform. Supported are "linear" and
-        "nearest". Default is "linear".
-
-    bounds_error : bool, optional
-        If True, when interpolated values are requested outside of the
-        domain of the input data, a ValueError is raised. If False,
-        then `fill_value` is returned.
-
-    fill_value : number, optional
-        Value returned when points outside the interpolation domain are
-        sampled.
-
-    Returns
-    -------
-        callable: interpolating function for field values
-    """
-    # condition input data
-    data = np.array(data)
-    idx = np.lexsort((data[:, 2], data[:, 1], data[:, 0]))  # sort data by x,y,z
-    x, y, z, *field_vec = data[idx].T
-    X, Y, Z = np.unique(x), np.unique(y), np.unique(z)
-    nx, ny, nz = len(X), len(Y), len(Z)
-
-    # construct interpolation with RegularGridInterpolator
-    field_interp = []
-    kwargs = dict(bounds_error=bounds_error, fill_value=fill_value, method=method)
-    for f in field_vec:
-        rgi = RegularGridInterpolator((X, Y, Z), f.reshape(nx, ny, nz), **kwargs)
-        field_interp.append(rgi)
-
-    def field_func(field, observers):
-        return np.array([f(observers) for f in field_interp]).T
-    return field_func
-```
-
-## Custom source with interpolation field
-
-In the second step we create a custom source with an interpolated field as `get_B_lambda` input. In this example, the data for the interpolation is generated from a known cuboid field, which makes it easy to verify this approach afterwards.
-
-```{code-cell} ipython3
-# create data for interpolation
-cube = magpy.magnet.Cuboid(magnetization=(0,0,1000), dimension=(2,2,2))
-ts = np.linspace(-7, 7, 21)
-grid = np.array(np.meshgrid(ts,ts,ts)).T.reshape(-1,3)
-data = np.hstack((grid, cube.getB(grid)))
-
-# create custom source with nice 3D model
-custom = magpy.misc.CustomSource(field_func=interpolate_field(data))
-
-xs = 1.1*np.array([-1, -1,  1,  1, -1, -1, -1, -1, -1,  1,  1,  1,  1, 1,  1, -1])
-ys = 1.1*np.array([-1,  1,  1, -1, -1, -1,  1,  1,  1,  1,  1,  1, -1, -1, -1, -1])
-zs = 1.1*np.array([-1, -1, -1, -1, -1,  1,  1, -1,  1,  1, -1,  1,  1, -1,  1,  1])
-
-trace = dict(
-    backend='matplotlib',
-    constructor='plot',
-    args=(xs, ys, zs),
-    kwargs={'ls':'--', 'marker':'', 'lw':1, 'color':'k'},
-)
-custom.style.model3d.add_trace(trace)
-custom.style.model3d.showdefault=False
-
-# apply some geometric manipulation
-for src in [cube, custom]:
-    src.rotate_from_angax(angle=45, axis=(1,1,1))
-
-# add a sensor for testing
-sensor = magpy.Sensor(position=(-5,0,0))
-angs = np.linspace(3,150,49)
-sensor.rotate_from_angax(angle=angs, axis='y', anchor=0)
-
-magpy.show(cube, custom, sensor)
-```
-
-## Testing the accuracy of the interpolation
-
-Finally, we compare the "exact" field of the cuboid source with the interpolated field of the custom source. Naturally there is some error that can be reduced by increasing the interpolation grid finesse.
-
-```{code-cell} ipython3
-import matplotlib.pyplot as plt
-
-# compute and plot fields
-B_cube = cube.getB(sensor)
-B_custom = custom.getB(sensor)
-for i,lab in enumerate(['Bx', 'By', 'Bz']):
-    plt.plot(B_cube[:,i], label=lab)
-    plt.plot(B_custom[:,i], ls='--', color='k')
-
-# Matplotlib figure styling
-plt.legend()
-plt.grid(color='.9')
-plt.gca().set(
-    title='Field at sensor - real (color), interpolated (dashed)',
-    xlabel='sensor rotation angle [deg]',
-    ylabel='[mT]',
-)
-
-plt.show()
-```
diff --git a/docs/index.md b/docs/index.md
index 5ba71cbae..8df9f2bce 100644
--- a/docs/index.md
+++ b/docs/index.md
@@ -1,94 +1,115 @@
-% magpylib documentation master file, created by
-% sphinx-quickstart on Tue Feb 26 11:58:33 2019.
-% You can adapt this file completely to your liking, but it should at least
-% contain the root `toctree` directive.
-
-# What is Magpylib ?
-
-Magpylib is a Python package for calculating **3D static magnetic fields** of permanent magnets, currents and other sources. The computation is based on analytical expressions and therefore **extremely fast**. A **user friendly API** combined with **graphic output** enables convenient positioning of sources and observers relative to each other.
-
-```{image} _static/images/index/source_fundamentals.png
-:alt: sketch of magpylib basic functionality
-:align: center
-```
-
---------
-
-# Quickstart
-
-Magpylib is on PyPI and conda-forge. **Install using pip** (`pip install magpylib`) or **conda** (`conda install -c conda-forge magpylib`) package managers.
-
-The following **Example code** outlines the core functionality:
-
-```python
-import magpylib as magpy
-source = magpy.magnet.Cylinder(magnetization=(0,0,350), dimension=(4,5), position=(1,2,3))
-observer = (4,4,4)
-B = source.getB(observer)
-print(B)
-
-# out: [ 10.30092924   6.86728616 -20.96623472]
-```
-
-Here, a cylinder shaped permanent magnet with (diameter, height) of (4, 5) millimeters is created in a global coordinate system at position (1,2,3). The magnetization is homogeneous and points in z-direction with an amplitude of 350 millitesla (=$\mu_0\times M$). The B-field is computed at the observer position (4,4,4) and returned in units of millitesla.
-
---------
+# The Magpylib Documentation
+
+::::{grid}
+:class-container: sd-px-1
+:gutter: 1
+
+:::{grid-item}
+:columns: 12
+Magpylib is an **open-source Python package** for calculating static **magnetic fields** of magnets, currents and other sources. It uses **explicit expressions**, solutions to the macroscopic magnetostatic problems, implemented in **vectorized** form which makes the computation **extremely fast**. Make use of the open-source Python ecosystem for spectactular visualization.
+:::
+
+:::{grid-item}
+:columns: 12
+<div class="sectiontext">
+<h2>How it works</h2>
+</div>
+:::
+
+:::{grid-item}
+:columns: 12
+![](_static/images/index_flowchart.png)
+:::
+
+:::{grid-item}
+:columns: 12
+In Magpylib, **sources** (magnets, currents, ...) and **observers** (sensors, position grids, ...) are created as Python objects with position and orientation attributes. These objects can be **grouped** and **moved** around. The system can be **viewed** graphically through various backends. The **magnetic field** is computed in the observer reference frame. Magpylib collects all inputs, and vectorizes the computation for maximal performance.
+:::
+
+:::{grid-item}
+:columns: 12
+<div class="sectiontext">
+<h2>Ressources</h2>
+</div>
+:::
+
+:::{grid-item-card}
+:columns: 2
+:padding: 1
+:link: get-started
+:link-type: ref
+:link-alt: link to Getting Started
+:img-top: _static/images/index_icon_getting_started.png
+:text-align: center
+**Get Started**
+:::
+
+:::{grid-item-card}
+:columns: 2
+:padding: 1
+:link: docu-index
+:link-type: ref
+:link-alt: link to Documentation
+:img-top: _static/images/index_icon_docu.png
+:text-align: center
+**Docs**
+:::
+
+:::{grid-item-card}
+:columns: 2
+:padding: 1
+:link: gallery
+:link-type: ref
+:link-alt: link to Examples
+:img-top: _static/images/index_icon_gallery.png
+:text-align: center
+**Examples**
+:::
+
+:::{grid-item-card}
+:columns: 2
+:padding: 1
+:link: contributing
+:link-type: ref
+:link-alt: link to Contribution Guide
+:img-top: _static/images/index_icon_contributing.png
+:text-align: center
+**Contribute**
+:::
+
+:::{grid-item-card}
+:columns: 2
+:padding: 1
+:link: https://github.com/magpylib/magpylib
+:link-alt: link to Github
+:img-top: _static/images/index_icon_github.png
+:text-align: center
+**Project**
+:::
+
+:::{grid-item-card}
+:columns: 2
+:padding: 1
+:link: https://www.sciencedirect.com/science/article/pii/S2352711020300170
+:link-alt: link to Journal
+:img-top: _static/images/index_icon_academic.png
+:text-align: center
+**Paper**
+:::
+
+::::
 
 ```{toctree}
-:caption: CONTENT
-:glob: true
-:maxdepth: 1
-
-_pages/*
-```
-
-```{toctree}
-:caption: FUNCTIONALITY
-:glob: true
 :maxdepth: 2
-
-examples/examples_02_paths.md
-examples/examples_05_backend_canvas.md
-examples/examples_12_styles.md
-examples/examples_15_animation.md
-examples/examples_13_3d_models.md
-examples/examples_03_collections.md
-examples/examples_21_compound.md
-examples/examples_01_complex_forms.md
-examples/examples_06_triangle.md
-examples/examples_07_triangularmesh.md
-examples/examples_04_custom_source.md
+:hidden:
+
+_pages/reso_news.md
+_pages/reso_get_started.md
+_pages/docu/docu_index.md
+_pages/gallery/gallery_index.md
+_pages/reso_contributing.md
+_pages/reso_code_of_conduct.md
+_pages/reso_license.md
+_pages/reso_changelog.md
+_pages/reso_site_notice.md
 ```
-
-```{toctree}
-:caption: EXAMPLE GALLERIES
-:glob: true
-:maxdepth: 2
-
-examples/examples_30_coil_field_lines.md
-examples/examples_22_field_interpolation.md
-examples/examples_31_end_of_shaft.md
-```
-
-```{toctree}
-:caption: LIBRARY DOCSTRINGS
-:glob: true
-:maxdepth: 1
-
-_autogen/magpylib
-```
-
-```{toctree}
-:caption: CHANGELOG
-:glob: true
-:maxdepth: 2
-
-_changelog.md
-```
-
---------------------------
-
-# Index
-
-- {ref}`genindex`
-- {ref}`modindex`
diff --git a/docs/requirements.txt b/docs/requirements.txt
index 00dca3fc4..f3f9f72b2 100644
--- a/docs/requirements.txt
+++ b/docs/requirements.txt
@@ -12,3 +12,4 @@ pyvista==0.37
 panel
 jupyterlab-myst
 sphinx-favicon
+sphinx-gallery
\ No newline at end of file
diff --git a/magpylib/__init__.py b/magpylib/__init__.py
index 5ad9e3fa8..c49b70697 100644
--- a/magpylib/__init__.py
+++ b/magpylib/__init__.py
@@ -9,7 +9,7 @@
 geometry interface enables convenient relative positioning between sources
 and observers.
 
-Help us develop the packge further - we appreciate any feedback !
+Help us develop the package further - we appreciate any feedback !
 
 Resources
 ---------
@@ -28,7 +28,7 @@
 
 """
 # module level dunders
-__version__ = "4.3.0"
+__version__ = "4.4.0dev"
 __author__ = "Michael Ortner & Alexandre Boisselet"
 __credits__ = "The Magpylib community"
 __all__ = [
diff --git a/magpylib/_src/display/backend_matplotlib.py b/magpylib/_src/display/backend_matplotlib.py
index 1f5f76373..1a7990168 100644
--- a/magpylib/_src/display/backend_matplotlib.py
+++ b/magpylib/_src/display/backend_matplotlib.py
@@ -312,7 +312,7 @@ def draw_frame(frame_ind):
             count = count_with_labels.get(row_col_num, 0)
             if ax.name == "3d":
                 ax.set(
-                    **{f"{k}label": f"{k} [mm]" for k in "xyz"},
+                    **{f"{k}label": f"{k} (mm)" for k in "xyz"},
                     **{f"{k}lim": r for k, r in zip("xyz", ranges)},
                 )
                 ax.set_box_aspect(aspect=(1, 1, 1))
diff --git a/magpylib/_src/display/backend_plotly.py b/magpylib/_src/display/backend_plotly.py
index d3d1c6faa..d873abbea 100644
--- a/magpylib/_src/display/backend_plotly.py
+++ b/magpylib/_src/display/backend_plotly.py
@@ -96,7 +96,7 @@ def apply_fig_ranges(fig, ranges, apply2d=True):
     """
     fig.update_scenes(
         **{
-            f"{k}axis": {"range": ranges[i], "autorange": False, "title": f"{k} [mm]"}
+            f"{k}axis": {"range": ranges[i], "autorange": False, "title": f"{k} (mm)"}
             for i, k in enumerate("xyz")
         },
         aspectratio={k: 1 for k in "xyz"},
diff --git a/magpylib/_src/display/traces_base.py b/magpylib/_src/display/traces_base.py
index 10c16c8a8..61444bd27 100644
--- a/magpylib/_src/display/traces_base.py
+++ b/magpylib/_src/display/traces_base.py
@@ -307,9 +307,9 @@ def make_CylinderSegment(
 
     dimension: array_like, shape (5,), default=`None`
         Dimension/Size of the cylinder segment of the form (r1, r2, h, phi1, phi2)
-        where r1<r2 denote inner and outer radii in units of [mm], phi1<phi2 denote
-        the cylinder section angles in units of [deg] and h is the cylinder height
-        in units of [mm].
+        where r1<r2 denote inner and outer radii in units of mm, phi1<phi2 denote
+        the cylinder section angles in units of deg and h is the cylinder height
+        in units of mm.
 
     vert : int, default=50
         Number of vertices along a the complete 360 degrees arc. The number along the phi1-phi2-arc
diff --git a/magpylib/_src/display/traces_generic.py b/magpylib/_src/display/traces_generic.py
index 8509a73cc..36ce801aa 100644
--- a/magpylib/_src/display/traces_generic.py
+++ b/magpylib/_src/display/traces_generic.py
@@ -611,7 +611,7 @@ def extract_animation_properties(
     animation_slider,
     animation_output,
 ):
-    """Exctract animation properties"""
+    """Extract animation properties"""
     # pylint: disable=import-outside-toplevel
     from magpylib._src.obj_classes.class_Collection import Collection
 
diff --git a/magpylib/_src/fields/field_BH_cuboid.py b/magpylib/_src/fields/field_BH_cuboid.py
index 25ecec1d0..38ee8a18d 100644
--- a/magpylib/_src/fields/field_BH_cuboid.py
+++ b/magpylib/_src/fields/field_BH_cuboid.py
@@ -18,22 +18,22 @@ def magnet_cuboid_field(
     Parameters
     ----------
     field: str, default=`'B'`
-        If `field='B'` return B-field in units of [mT], if `field='H'` return H-field
-        in units of [kA/m].
+        If `field='B'` return B-field in units of mT, if `field='H'` return H-field
+        in units of kA/m.
 
     observers: ndarray, shape (n,3)
-        Observer positions (x,y,z) in Cartesian coordinates in units of [mm].
+        Observer positions (x,y,z) in Cartesian coordinates in units of mm.
 
     magnetization: ndarray, shape (n,3)
-        Homogeneous magnetization vector in units of [mT].
+        Homogeneous magnetization vector in units of mT.
 
     dimension: ndarray, shape (n,3)
-        Cuboid side lengths in units of [mm].
+        Cuboid side lengths in units of mm.
 
     Returns
     -------
     B-field or H-field: ndarray, shape (n,3)
-        B/H-field of magnet in Cartesian coordinates (Bx, By, Bz) in units of [mT]/[kA/m].
+        B/H-field of magnet in Cartesian coordinates (Bx, By, Bz) in units of mT/(kA/m).
 
     Examples
     --------
@@ -97,7 +97,7 @@ def magnet_cuboid_field(
     mask2 = (a * b * c).astype(bool)
 
     # SPECIAL CASE 3: observer lies on-edge/corner
-    # -> 1e-15 to account for numerical inprecision when e.g. rotating
+    # -> 1e-15 to account for numerical imprecision when e.g. rotating
     # -> /a /b /c to account for the "missing" scaling (1e-15 is large when
     #    a is e.g. 1e-15 itself)
 
diff --git a/magpylib/_src/fields/field_BH_cylinder.py b/magpylib/_src/fields/field_BH_cylinder.py
index d695c47e8..ec0f49e18 100644
--- a/magpylib/_src/fields/field_BH_cylinder.py
+++ b/magpylib/_src/fields/field_BH_cylinder.py
@@ -24,14 +24,14 @@ def fieldB_cylinder_axial(z0: np.ndarray, r: np.ndarray, z: np.ndarray) -> list:
     Parameters
     ----------
     dim: ndarray, shape (n,2)
-        dimension of cylinder (d, h), diameter and height, in units of [mm]
+        dimension of cylinder (d, h), diameter and height, in units of mm
     pos_obs: ndarray, shape (n,2)
-        position of observer (r,z) in cylindrical coordinates in units of [mm]
+        position of observer (r,z) in cylindrical coordinates in units of mm
 
     Returns
     -------
     B-field: ndarray
-        B-field array of shape (n,2) in cylindrical coordinates (Br,Bz) in units of [mT].
+        B-field array of shape (n,2) in cylindrical coordinates (Br,Bz) in units of mT.
     """
     n = len(z0)
 
@@ -85,16 +85,16 @@ def fieldH_cylinder_diametral(
     Parameters
     ----------
     dim: ndarray, shape (n,2)
-        dimension of cylinder (d, h), diameter and height, in units of [mm]
+        dimension of cylinder (d, h), diameter and height, in units of mm
     tetta: ndarray, shape (n,)
         angle between magnetization vector and x-axis in [rad]. M = (cos(tetta), sin(tetta), 0)
     obs_pos: ndarray, shape (n,3)
-        position of observer (r,phi,z) in cylindrical coordinates in units of [mm] and [rad]
+        position of observer (r,phi,z) in cylindrical coordinates in units of mm and rad
 
     Returns
     -------
     H-field: ndarray
-        H-field array of shape (n,3) in cylindrical coordinates (Hr, Hphi, Hz) in units of [kA/m].
+        H-field array of shape (n,3) in cylindrical coordinates (Hr, Hphi, Hz) in units of kA/m.
     """
     # pylint: disable=too-many-statements
 
@@ -262,29 +262,29 @@ def magnet_cylinder_field(
     Parameters
     ----------
     field: str, default=`'B'`
-        If `field='B'` return B-field in units of [mT], if `field='H'` return H-field
-        in units of [kA/m].
+        If `field='B'` return B-field in units of mT, if `field='H'` return H-field
+        in units of kA/m.
 
     observers: ndarray, shape (n,3)
-        Observer positions (x,y,z) in Cartesian coordinates in units of [mm].
+        Observer positions (x,y,z) in Cartesian coordinates in units of mm.
 
     magnetization: ndarray, shape (n,3)
-        Homogeneous magnetization vector in units of [mT].
+        Homogeneous magnetization vector in units of mT.
 
     dimension: ndarray, shape (n,2)
-        Cylinder dimension (d,h) with diameter d and height h in units of [mm].
+        Cylinder dimension (d,h) with diameter d and height h in units of mm.
 
     observer: ndarray, shape (n,3)
-        Observer positions (x,y,z) in Cartesian coordinates in units of [mm].
+        Observer positions (x,y,z) in Cartesian coordinates in units of mm.
 
     field: str, default=`'B'`
-        If `field='B'` return B-field in units of [mT], if `field='H'` return H-field
-        in units of [kA/m].
+        If `field='B'` return B-field in units of mT, if `field='H'` return H-field
+        in units of kA/m.
 
     Returns
     -------
     B-field or H-field: ndarray, shape (n,3)
-        B/H-field of magnet in Cartesian coordinates (Bx, By, Bz) in units of [mT]/[kA/m].
+        B/H-field of magnet in Cartesian coordinates (Bx, By, Bz) in units of mT/(kA/m).
 
     Examples
     --------
@@ -408,18 +408,18 @@ def magnet_cylinder_field(
 #     Parameters
 #     ----------
 #     dim: ndarray, shape (n,2)
-#         dimension of cylinder (d, h), diameter and height, in units of [mm]
+#         dimension of cylinder (d, h), diameter and height, in units of mm
 #     tetta: ndarray, shape (n,)
 #         angle between magnetization vector and x-axis in [rad]. M = (cos(tetta), sin(tetta), 0)
 #     obs_pos: ndarray, shape (n,3)
-#         position of observer (r,phi,z) in cylindrical coordinates in units of [mm] and [rad]
+#         position of observer (r,phi,z) in cylindrical coordinates in units of mm and rad
 #     niter: int
 #         Iterations for Simpsons approximation of the final integral
 
 #     Returns
 #     -------
 #     H-field: ndarray
-#         H-field array of shape (n,3) in cylindrical coordinates (Hr, Hphi Hz) in units of [kA/m].
+#         H-field array of shape (n,3) in cylindrical coordinates (Hr, Hphi Hz) in units of kA/m.
 
 #     Examples
 #     --------
diff --git a/magpylib/_src/fields/field_BH_cylinder_segment.py b/magpylib/_src/fields/field_BH_cylinder_segment.py
index b611cccc8..eb22fdc98 100644
--- a/magpylib/_src/fields/field_BH_cylinder_segment.py
+++ b/magpylib/_src/fields/field_BH_cylinder_segment.py
@@ -2140,16 +2140,16 @@ def magnet_cylinder_segment_core(
     Parameters
     ----------
     mag: ndarray, shape (n,3)
-        magnetization vector (M, phi, th) in spherical CS, units: [mT] [rad]
+        magnetization vector (M, phi, th) in spherical CS, units: mT, rad
     obs_pos : ndarray, shape (n,3)
-        observer positions (r,phi,z) in cy CS, units: [mm] [rad]
+        observer positions (r,phi,z) in cy CS, units: mm rad
     dim: ndarray, shape (n,6)
-        segment dimensions (r1,r2,phi1,phi2,z1,z2) in cy CS , units: [mm] [rad]
+        segment dimensions (r1,r2,phi1,phi2,z1,z2) in cy CS , units: mm, rad
 
     Returns
     -------
     H-field: ndarray
-        H-field in cylindrical coordinates (Hr, Hphi, Hz), shape (n,3) in units of [kA/m].
+        H-field in cylindrical coordinates (Hr, Hphi, Hz), shape (n,3) in units of kA/m.
 
     Notes
     -----
@@ -2360,23 +2360,23 @@ def magnet_cylinder_segment_field(
     Parameters
     ----------
     field: str, default=`'B'`
-        If `field='B'` return B-field in units of [mT], if `field='H'` return H-field
-        in units of [kA/m].
+        If `field='B'` return B-field in units of mT, if `field='H'` return H-field
+        in units of kA/m.
 
     observers: ndarray, shape (n,3)
-        Observer positions (x,y,z) in Cartesian coordinates in units of [mm].
+        Observer positions (x,y,z) in Cartesian coordinates in units of mm.
 
     magnetization: ndarray, shape (n,3)
-        Homogeneous magnetization vector in units of [mT].
+        Homogeneous magnetization vector in units of mT.
 
     dimension: ndarray, shape (n,5)
         Cylinder segment dimensions (r1,r2,h,phi1,phi2) with inner radius r1, outer radius r2,
-        height h in units of [mm] and the two segment angles phi1 and phi2 in units of [deg].
+        height h in units of mm and the two segment angles phi1 and phi2 in units of deg.
 
     Returns
     -------
     B-field or H-field: ndarray, shape (n,3)
-        B/H-field of magnet in Cartesian coordinates (Bx, By, Bz) in units of [mT]/[kA/m].
+        B/H-field of magnet in Cartesian coordinates (Bx, By, Bz) in units of mT/(kA/m).
 
     Examples
     --------
diff --git a/magpylib/_src/fields/field_BH_dipole.py b/magpylib/_src/fields/field_BH_dipole.py
index db259359b..49592d863 100644
--- a/magpylib/_src/fields/field_BH_dipole.py
+++ b/magpylib/_src/fields/field_BH_dipole.py
@@ -19,19 +19,19 @@ def dipole_field(
     Parameters
     ----------
     field: str, default=`'B'`
-        If `field='B'` return B-field in units of [mT], if `field='H'` return H-field
-        in units of [kA/m].
+        If `field='B'` return B-field in units of mT, if `field='H'` return H-field
+        in units of kA/m.
 
     observers: ndarray, shape (n,3)
-        Observer positions (x,y,z) in Cartesian coordinates in units of [mm].
+        Observer positions (x,y,z) in Cartesian coordinates in units of mm.
 
     moment: ndarray, shape (n,3)
-        Dipole moment vector in units of [mT*mm^3].
+        Dipole moment vector in units of mT*mm^3.
 
     Returns
     -------
     B-field or H-field: ndarray, shape (n,3)
-        B/H-field of dipole in Cartesian coordinates (Bx, By, Bz) in units of [mT]/[kA/m].
+        B/H-field of dipole in Cartesian coordinates (Bx, By, Bz) in units of mT/(kA/m).
 
     Examples
     --------
@@ -48,7 +48,7 @@ def dipole_field(
 
     Notes
     -----
-    The field is similar to the outside-field of a spherical magnet with Volume = 1 [mm^3].
+    The field is similar to the outside-field of a spherical magnet with Volume = 1 mm^3.
     """
     bh = check_field_input(field, "dipole_field()")
 
diff --git a/magpylib/_src/fields/field_BH_line.py b/magpylib/_src/fields/field_BH_line.py
index b7bb126ce..217ee93aa 100644
--- a/magpylib/_src/fields/field_BH_line.py
+++ b/magpylib/_src/fields/field_BH_line.py
@@ -22,9 +22,9 @@ def current_vertices_field(
 
     ### Args:
     - bh (boolean): True=B, False=H
-    - current (ndarray n): current on line in units of [A]
+    - current (ndarray n): current on line in units of A
     - vertex_sets (list of len n): n vertex sets (each of shape (mi,3))
-    - pos_obs (ndarray nx3): n observer positions in units of [mm]
+    - pos_obs (ndarray nx3): n observer positions in units of mm
 
     ### Returns:
     - B-field (ndarray nx3): B-field vectors at pos_obs in units of mT
@@ -74,25 +74,25 @@ def current_line_field(
     Parameters
     ----------
     field: str, default=`'B'`
-        If `field='B'` return B-field in units of [mT], if `field='H'` return H-field
-        in units of [kA/m].
+        If `field='B'` return B-field in units of mT, if `field='H'` return H-field
+        in units of kA/m.
 
     observers: ndarray, shape (n,3)
-        Observer positions (x,y,z) in Cartesian coordinates in units of [mm].
+        Observer positions (x,y,z) in Cartesian coordinates in units of mm.
 
     current: ndarray, shape (n,)
-        Electrical current in units of [A].
+        Electrical current in units of A.
 
     start: ndarray, shape (n,3)
-        Line start positions (x,y,z) in Cartesian coordinates in units of [mm].
+        Line start positions (x,y,z) in Cartesian coordinates in units of mm.
 
     end: ndarray, shape (n,3)
-        Line end positions (x,y,z) in Cartesian coordinates in units of [mm].
+        Line end positions (x,y,z) in Cartesian coordinates in units of mm.
 
     Returns
     -------
     B-field or H-field: ndarray, shape (n,3)
-        B/H-field of current in Cartesian coordinates (Bx, By, Bz) in units of [mT]/[kA/m].
+        B/H-field of current in Cartesian coordinates (Bx, By, Bz) in units of mT/(kA/m).
 
     Examples
     --------
@@ -112,7 +112,7 @@ def current_line_field(
 
     Notes
     -----
-    Field computation via law of Biot Savart. See also countless online ressources.
+    Field computation via law of Biot Savart. See also countless online resources.
     eg. http://www.phys.uri.edu/gerhard/PHY204/tsl216.pdf
     """
     # pylint: disable=too-many-statements
diff --git a/magpylib/_src/fields/field_BH_loop.py b/magpylib/_src/fields/field_BH_loop.py
index cc76e5fc2..ca84d5137 100644
--- a/magpylib/_src/fields/field_BH_loop.py
+++ b/magpylib/_src/fields/field_BH_loop.py
@@ -24,22 +24,22 @@ def current_loop_field(
     Parameters
     ----------
     field: str, default=`'B'`
-        If `field='B'` return B-field in units of [mT], if `field='H'` return H-field
-        in units of [kA/m].
+        If `field='B'` return B-field in units of mT, if `field='H'` return H-field
+        in units of kA/m.
 
     observers: ndarray, shape (n,3)
-        Observer positions (x,y,z) in Cartesian coordinates in units of [mm].
+        Observer positions (x,y,z) in Cartesian coordinates in units of mm.
 
     current: ndarray, shape (n,)
-        Electrical current in units of [A].
+        Electrical current in units of A.
 
     diameter: ndarray, shape (n,)
-        Diameter of loop in units of [mm].
+        Diameter of loop in units of mm.
 
     Returns
     -------
     B-field or H-field: ndarray, shape (n,3)
-        B/H-field of current in Cartesian coordinates (Bx, By, Bz) in units of [mT]/[kA/m].
+        B/H-field of current in Cartesian coordinates (Bx, By, Bz) in units of mT/(kA/m).
 
     Examples
     --------
@@ -58,7 +58,7 @@ def current_loop_field(
 
     Notes
     -----
-    Implementation based on "Numerically stable and computationally efficinet expression for
+    Implementation based on "Numerically stable and computationally efficient expression for
     the magnetic field of a current loop.", M.Ortner et al, Submitted to MDPI Magnetism, 2022
     """
 
diff --git a/magpylib/_src/fields/field_BH_sphere.py b/magpylib/_src/fields/field_BH_sphere.py
index 6a30352ed..900b5ec24 100644
--- a/magpylib/_src/fields/field_BH_sphere.py
+++ b/magpylib/_src/fields/field_BH_sphere.py
@@ -21,22 +21,22 @@ def magnet_sphere_field(
     Parameters
     ----------
     field: str, default=`'B'`
-        If `field='B'` return B-field in units of [mT], if `field='H'` return H-field
-        in units of [kA/m].
+        If `field='B'` return B-field in units of mT, if `field='H'` return H-field
+        in units of kA/m.
 
     observers: ndarray, shape (n,3)
-        Observer positions (x,y,z) in Cartesian coordinates in units of [mm].
+        Observer positions (x,y,z) in Cartesian coordinates in units of mm.
 
     magnetization: ndarray, shape (n,3)
-        Homogeneous magnetization vector in units of [mT].
+        Homogeneous magnetization vector in units of mT.
 
     diameter: ndarray, shape (n,3)
-        Sphere diameter in units of [mm].
+        Sphere diameter in units of mm.
 
     Returns
     -------
     B-field or H-field: ndarray, shape (n,3)
-        B/H-field of magnet in Cartesian coordinates (Bx, By, Bz) in units of [mT]/[kA/m].
+        B/H-field of magnet in Cartesian coordinates (Bx, By, Bz) in units of mT/(kA/m).
 
     Examples
     --------
diff --git a/magpylib/_src/fields/field_BH_tetrahedron.py b/magpylib/_src/fields/field_BH_tetrahedron.py
index ec2a991c3..f2f70ba45 100644
--- a/magpylib/_src/fields/field_BH_tetrahedron.py
+++ b/magpylib/_src/fields/field_BH_tetrahedron.py
@@ -10,7 +10,7 @@
 
 def check_chirality(points: np.ndarray) -> np.ndarray:
     """
-    Checks if quartupel of points (p0,p1,p2,p3) that forms tetrahedron is arranged in a way
+    Checks if quadruple of points (p0,p1,p2,p3) that forms tetrahedron is arranged in a way
     that the vectors p0p1, p0p2, p0p3 form a right-handed system
 
     Parameters
@@ -69,14 +69,14 @@ def magnet_tetrahedron_field(
     Parameters
     ----------
     field: str, default=`'B'`
-        If `field='B'` return B-field in units of [mT], if `field='H'` return H-field
-        in units of [kA/m].
+        If `field='B'` return B-field in units of mT, if `field='H'` return H-field
+        in units of kA/m.
 
     observers: ndarray, shape (n,3)
-        Observer positions (x,y,z) in Cartesian coordinates in units of [mm].
+        Observer positions (x,y,z) in Cartesian coordinates in units of mm.
 
     magnetization: ndarray, shape (n,3)
-        Homogeneous magnetization vector in units of [mT].
+        Homogeneous magnetization vector in units of mT.
 
     vertices: ndarray, shape (n,4,3)
         Vertices of the individual tetrahedrons [(pos1a, pos1b, pos1c, pos1d),
@@ -85,7 +85,7 @@ def magnet_tetrahedron_field(
     Returns
     -------
     B-field or H-field: ndarray, shape (n,3)
-        B/H-field of magnet in Cartesian coordinates (Bx, By, Bz) in units of [mT]/[kA/m].
+        B/H-field of magnet in Cartesian coordinates (Bx, By, Bz) in units of mT/(kA/m).
 
     Examples
     --------
diff --git a/magpylib/_src/fields/field_BH_triangle.py b/magpylib/_src/fields/field_BH_triangle.py
index 213415144..e1bb45363 100644
--- a/magpylib/_src/fields/field_BH_triangle.py
+++ b/magpylib/_src/fields/field_BH_triangle.py
@@ -86,14 +86,14 @@ def triangle_field(
     Parameters
     ----------
     field: str, default=`'B'`
-        If `field='B'` return B-field in units of [mT], if `field='H'` return H-field
-        in units of [kA/m].
+        If `field='B'` return B-field in units of mT, if `field='H'` return H-field
+        in units of kA/m.
 
     observers: ndarray, shape (n,3)
-        Observer positions (x,y,z) in Cartesian coordinates in units of [mm].
+        Observer positions (x,y,z) in Cartesian coordinates in units of mm.
 
     magnetization: ndarray, shape (n,3)
-        Homogeneous magnetization vector in units of [mT]. The triangle surface charge is the
+        Homogeneous magnetization vector in units of mT. The triangle surface charge is the
         projection of the magnetization vector onto the surface normal vector. The order
         of the vertices defines the sign of the normal vector (right-hand-rule).
 
@@ -105,7 +105,7 @@ def triangle_field(
     Returns
     -------
     B-field or H-field: ndarray, shape (n,3)
-        B/H-field of magnet in Cartesian coordinates (Bx, By, Bz) in units of [mT]/[kA/m].
+        B/H-field of magnet in Cartesian coordinates (Bx, By, Bz) in units of mT/(kA/m).
 
     Examples
     --------
diff --git a/magpylib/_src/fields/field_BH_triangularmesh.py b/magpylib/_src/fields/field_BH_triangularmesh.py
index 16b289e75..070a81505 100644
--- a/magpylib/_src/fields/field_BH_triangularmesh.py
+++ b/magpylib/_src/fields/field_BH_triangularmesh.py
@@ -350,7 +350,7 @@ def segments_intersect_facets(segments, facets, eps=1e-6):
         otherwise some triangles may be detected as intersecting themselves.
     """
     if eps <= 0:  # pragma: no cover
-        raise ValueError("eps must be stricly positive")
+        raise ValueError("eps must be strictly positive")
 
     s, t = segments.swapaxes(0, 1), facets.swapaxes(0, 1)
 
@@ -507,14 +507,14 @@ def magnet_trimesh_field(
     Parameters
     ----------
     field: str, default=`'B'`
-        If `field='B'` return B-field in units of [mT], if `field='H'` return H-field
-        in units of [kA/m].
+        If `field='B'` return B-field in units of mT, if `field='H'` return H-field
+        in units of kA/m.
 
     observers: ndarray, shape (n,3)
-        Observer positions (x,y,z) in Cartesian coordinates in units of [mm].
+        Observer positions (x,y,z) in Cartesian coordinates in units of mm.
 
     magnetization: ndarray, shape (n,3)
-        Homogeneous magnetization vector in units of [mT].
+        Homogeneous magnetization vector in units of mT.
 
     mesh: ndarray, shape (n,n1,3,3) or ragged sequence
         Triangular mesh of shape [(x1,y1,z1), (x2,y2,z2), (x3,y3,z3)].
@@ -523,7 +523,7 @@ def magnet_trimesh_field(
     in_out: {'auto', 'inside', 'outside'}
         Tells if the points are inside or outside the enclosing mesh for the correct B/H-field
         calculation. By default `in_out='auto'` and the inside/outside mask is automatically
-        generated using a ray tracing algorigthm to determine which observers are inside and which
+        generated using a ray tracing algorithm to determine which observers are inside and which
         are outside the closed body. For performance reasons, one can define `in_out='outside'`
         or `in_out='inside'` if it is known in advance that all observers satisfy the same
         condition.
@@ -531,7 +531,7 @@ def magnet_trimesh_field(
     Returns
     -------
     B-field or H-field: ndarray, shape (n,3)
-        B/H-field of magnet in Cartesian coordinates (Bx, By, Bz) in units of [mT]/[kA/m].
+        B/H-field of magnet in Cartesian coordinates (Bx, By, Bz) in units of mT/(kA/m).
 
     Notes
     -----
@@ -569,7 +569,7 @@ def magnet_trimesh_field(
     if field == "B":
         if in_out == "auto":
             prev_ind = 0
-            # group similar meshs for inside-outise evaluation and adding B
+            # group similar meshs for inside-outside evaluation and adding B
             for new_ind, _ in enumerate(B):
                 if (
                     new_ind == len(B) - 1
diff --git a/magpylib/_src/fields/field_wrap_BH.py b/magpylib/_src/fields/field_wrap_BH.py
index 0324db604..d53acf194 100644
--- a/magpylib/_src/fields/field_wrap_BH.py
+++ b/magpylib/_src/fields/field_wrap_BH.py
@@ -250,10 +250,10 @@ def getBH_level2(
     pix_nums = [
         int(np.prod(ps[:-1])) for ps in pix_shapes
     ]  # number of pixel for each sensor
-    pix_inds = np.cumsum([0] + pix_nums)  # cummulative indices of pixel for each sensor
+    pix_inds = np.cumsum([0] + pix_nums)  # cumulative indices of pixel for each sensor
     pix_all_same = len(set(pix_shapes)) == 1
 
-    # check which sensors have unit roation
+    # check which sensors have unit rotation
     #   so that they dont have to be rotated back later (performance issue)
     #   this check is made now when sensor paths are not yet tiled.
     unitQ = np.array([0, 0, 0, 1.0])
@@ -274,7 +274,7 @@ def getBH_level2(
 
     # tile up paths -------------------------------------------------------------
     #   all obj paths that are shorter than max-length are filled up with the last
-    #   postion/orientation of the object (static paths)
+    #   position/orientation of the object (static paths)
     path_lengths = [len(obj._position) for obj in obj_list]
     max_path_len = max(path_lengths)
 
@@ -453,7 +453,7 @@ def getBH_dict_level2(
 
     Returns
     -------
-    field: ndarray, shape (N,3), field at obs_pos in [mT] or [kA/m]
+    field: ndarray, shape (N,3), field at obs_pos in mT or kA/m
 
     Info
     ----
@@ -555,7 +555,7 @@ def getB(
     output="ndarray",
     **kwargs,
 ):
-    """Compute B-field in [mT] for given sources and observers.
+    """Compute B-field in units of mT for given sources and observers.
 
     Field implementations can be directly accessed (avoiding the object oriented
     Magpylib interface) by providing a string input `sources=source_type`, array_like
@@ -575,10 +575,10 @@ def getB(
         Can be array_like positions of shape (n1, n2, ..., 3) where the field
         should be evaluated, a `Sensor` object with pixel shape (n1, n2, ..., 3) or a list
         of such sensor objects (must all have similar pixel shapes). All positions
-        are given in units of [mm].
+        are given in units of mm.
 
         Direct interface: Input must be array_like with shape (3,) or (n,3) corresponding
-        positions to observer positions in units of [mm].
+        positions to observer positions in units of mm.
 
     sumup: bool, default=`False`
         If `True`, the fields of all sources are summed up.
@@ -602,7 +602,7 @@ def getB(
     *Direct-interface
 
     position: array_like, shape (3,) or (n,3), default=`(0,0,0)`
-        Source position(s) in the global coordinates in units of [mm].
+        Source position(s) in the global coordinates in units of mm.
 
     orientation: scipy `Rotation` object with length 1 or n, default=`None`
         Object orientation(s) in the global coordinates. `None` corresponds to
@@ -610,46 +610,46 @@ def getB(
 
     magnetization: array_like, shape (3,) or (n,3)
         Only source_type in (`'Cuboid'`, `'Cylinder'`, `'CylinderSegment'`, `'Sphere'`)!
-        Magnetization vector(s) (mu0*M, remanence field) in units of [kA/m] given in
+        Magnetization vector(s) (mu0*M, remanence field) in units of kA/m given in
         the local object coordinates (rotates with object).
 
-    moment: array_like, shape (3) or (n,3), unit [mT*mm^3]
+    moment: array_like, shape (3) or (n,3), unit mT*mm^3
         Only source_type == `'Dipole'`!
-        Magnetic dipole moment(s) in units of [mT*mm^3] given in the local object coordinates
+        Magnetic dipole moment(s) in units of mT*mm^3 given in the local object coordinates
         (rotates with object). For homogeneous magnets the relation moment=magnetization*volume
         holds.
 
     current: array_like, shape (n,)
         Only source_type == `'Loop'` or `'Line'`!
-        Electrical current in units of [A].
+        Electrical current in units of A.
 
     dimension: array_like, shape (x,) or (n,x)
         Only source_type in (`'Cuboid'`, `'Cylinder'`, `'CylinderSegment'`)!
-        Magnet dimension input in units of [mm] and [deg]. Dimension format x of sources is similar
+        Magnet dimension input in units of mm and deg. Dimension format x of sources is similar
         as in object oriented interface.
 
     diameter: array_like, shape (n,)
         Only source_type == `'Sphere'` or `'Loop'`!
-        Diameter of source in units of [mm].
+        Diameter of source in units of mm.
 
     segment_start: array_like, shape (n,3)
         Only source_type == `'Line'`!
-        Start positions of line current segments in units of [mm].
+        Start positions of line current segments in units of mm.
 
     segment_end: array_like, shape (n,3)
         Only source_type == `'Line'`!
-        End positions of line current segments in units of [mm].
+        End positions of line current segments in units of mm.
 
     Returns
     -------
     B-field: ndarray, shape squeeze(m, k, n1, n2, ..., 3) or DataFrame
         B-field at each path position (m) for each sensor (k) and each sensor pixel
-        position (n1, n2, ...) in units of [mT]. Sensor pixel positions are equivalent
+        position (n1, n2, ...) in units of mT. Sensor pixel positions are equivalent
         to simple observer positions. Paths of objects that are shorter than m will be
         considered as static beyond their end.
 
     Direct interface: ndarray, shape (n,3)
-        B-field for every parameter set in units of [mT].
+        B-field for every parameter set in units of mT.
 
     Notes
     -----
@@ -659,8 +659,8 @@ def getB(
 
     Examples
     --------
-    In this example we compute the B-field [mT] of a spherical magnet and a current loop
-    at the observer position (1,1,1) given in units of [mm]:
+    In this example we compute the B-field in units of mT of a spherical magnet and a current loop
+    at the observer position (1,1,1) given in units of mm:
 
     >>> import magpylib as magpy
     >>> src1 = magpy.current.Loop(current=100, diameter=2)
@@ -726,7 +726,7 @@ def getH(
     output="ndarray",
     **kwargs,
 ):
-    """Compute H-field in [kA/m] for given sources and observers.
+    """Compute H-field in kA/m for given sources and observers.
 
     Field implementations can be directly accessed (avoiding the object oriented
     Magpylib interface) by providing a string input `sources=source_type`, array_like
@@ -746,10 +746,10 @@ def getH(
         Can be array_like positions of shape (n1, n2, ..., 3) where the field
         should be evaluated, a `Sensor` object with pixel shape (n1, n2, ..., 3) or a list
         of such sensor objects (must all have similar pixel shapes). All positions
-        are given in units of [mm].
+        are given in units of mm.
 
         Direct interface: Input must be array_like with shape (3,) or (n,3) corresponding
-        positions to observer positions in units of [mm].
+        positions to observer positions in units of mm.
 
     sumup: bool, default=`False`
         If `True`, the fields of all sources are summed up.
@@ -773,7 +773,7 @@ def getH(
     *Direct-interface
 
     position: array_like, shape (3,) or (n,3), default=`(0,0,0)`
-        Source position(s) in the global coordinates in units of [mm].
+        Source position(s) in the global coordinates in units of mm.
 
     orientation: scipy `Rotation` object with length 1 or n, default=`None`
         Object orientation(s) in the global coordinates. `None` corresponds to
@@ -781,46 +781,46 @@ def getH(
 
     magnetization: array_like, shape (3,) or (n,3)
         Only source_type in (`'Cuboid'`, `'Cylinder'`, `'CylinderSegment'`, `'Sphere'`)!
-        Magnetization vector(s) (mu0*M, remanence field) in units of [kA/m] given in
+        Magnetization vector(s) (mu0*M, remanence field) in units of kA/m given in
         the local object coordinates (rotates with object).
 
-    moment: array_like, shape (3) or (n,3), unit [mT*mm^3]
+    moment: array_like, shape (3) or (n,3), unit mT*mm^3
         Only source_type == `'Dipole'`!
-        Magnetic dipole moment(s) in units of [mT*mm^3] given in the local object coordinates
+        Magnetic dipole moment(s) in units of mT*mm^3 given in the local object coordinates
         (rotates with object). For homogeneous magnets the relation moment=magnetization*volume
         holds.
 
     current: array_like, shape (n,)
         Only source_type == `'Loop'` or `'Line'`!
-        Electrical current in units of [A].
+        Electrical current in units of A.
 
     dimension: array_like, shape (x,) or (n,x)
         Only source_type in (`'Cuboid'`, `'Cylinder'`, `'CylinderSegment'`)!
-        Magnet dimension input in units of [mm] and [deg]. Dimension format x of sources is similar
+        Magnet dimension input in units of mm and deg. Dimension format x of sources is similar
         as in object oriented interface.
 
     diameter: array_like, shape (n,)
         Only source_type == `'Sphere'` or `'Loop'`!
-        Diameter of source in units of [mm].
+        Diameter of source in units of mm.
 
     segment_start: array_like, shape (n,3)
         Only source_type == `'Line'`!
-        Start positions of line current segments in units of [mm].
+        Start positions of line current segments in units of mm.
 
     segment_end: array_like, shape (n,3)
         Only source_type == `'Line'`!
-        End positions of line current segments in units of [mm].
+        End positions of line current segments in units of mm.
 
     Returns
     -------
     H-field: ndarray, shape squeeze(m, k, n1, n2, ..., 3) or DataFrame
         H-field at each path position (m) for each sensor (k) and each sensor pixel
-        position (n1, n2, ...) in units of [kA/m]. Sensor pixel positions are equivalent
+        position (n1, n2, ...) in units of kA/m. Sensor pixel positions are equivalent
         to simple observer positions. Paths of objects that are shorter than m will be
         considered as static beyond their end.
 
     Direct interface: ndarray, shape (n,3)
-        H-field for every parameter set in units of [kA/m].
+        H-field for every parameter set in units of kA/m.
 
     Notes
     -----
@@ -830,8 +830,8 @@ def getH(
 
     Examples
     --------
-    In this example we compute the H-field [kA/m] of a spherical magnet and a current loop
-    at the observer position (1,1,1) given in units of [mm]:
+    In this example we compute the H-field kA/m of a spherical magnet and a current loop
+    at the observer position (1,1,1) given in units of mm:
 
     >>> import magpylib as magpy
     >>> src1 = magpy.current.Loop(current=100, diameter=2)
diff --git a/magpylib/_src/input_checks.py b/magpylib/_src/input_checks.py
index 95b897772..2d68369e0 100644
--- a/magpylib/_src/input_checks.py
+++ b/magpylib/_src/input_checks.py
@@ -281,10 +281,10 @@ def check_format_input_angle(inp):
 def check_format_input_scalar(
     inp, sig_name, sig_type, allow_None=False, forbid_negative=False
 ):
-    """check sclar input and return in formatted form
+    """check scalar input and return in formatted form
     - must be scalar or None (if allowed)
     - must be float compatible
-    - tranform into float
+    - transform into float
     """
     if allow_None:
         if inp is None:
@@ -591,7 +591,7 @@ def check_dimensions(sources):
 
 
 def check_excitations(sources):
-    """check if all sources have exitation initialized"""
+    """check if all sources have excitation initialized"""
     for src in sources:
         for arg in ("magnetization", "current", "moment"):
             if hasattr(src, arg):
diff --git a/magpylib/_src/obj_classes/class_BaseExcitations.py b/magpylib/_src/obj_classes/class_BaseExcitations.py
index 4b0f674c0..8d94b74ba 100644
--- a/magpylib/_src/obj_classes/class_BaseExcitations.py
+++ b/magpylib/_src/obj_classes/class_BaseExcitations.py
@@ -30,7 +30,7 @@ def field_func(self):
         """
         The function for B- and H-field computation must have the two positional arguments
         `field` and `observers`. With `field='B'` or `field='H'` the B- or H-field in units
-        of [mT] or [kA/m] must be returned respectively. The `observers` argument must
+        of mT or kA/m must be returned respectively. The `observers` argument must
         accept numpy ndarray inputs of shape (n,3), in which case the returned fields must
         be numpy ndarrays of shape (n,3) themselves.
         """
@@ -47,7 +47,7 @@ def field_func(self, val):
         self._field_func = val
 
     def getB(self, *observers, squeeze=True, pixel_agg=None, output="ndarray"):
-        """Compute the B-field in units of [mT] generated by the source.
+        """Compute the B-field in units of mT generated by the source.
 
         Parameters
         ----------
@@ -55,7 +55,7 @@ def getB(self, *observers, squeeze=True, pixel_agg=None, output="ndarray"):
             Can be array_like positions of shape (n1, n2, ..., 3) where the field
             should be evaluated, a `Sensor` object with pixel shape (n1, n2, ..., 3) or a list
             of such sensor objects (must all have similar pixel shapes). All positions
-            are given in units of [mm].
+            are given in units of mm.
 
         squeeze: bool, default=`True`
             If `True`, the output is squeezed, i.e. all axes of length 1 in the output (e.g.
@@ -76,7 +76,7 @@ def getB(self, *observers, squeeze=True, pixel_agg=None, output="ndarray"):
         -------
         B-field: ndarray, shape squeeze(m, k, n1, n2, ..., 3) or DataFrame
             B-field at each path position (m) for each sensor (k) and each sensor pixel
-            position (n1,n2,...) in units of [mT]. Sensor pixel positions are equivalent
+            position (n1,n2,...) in units of mT. Sensor pixel positions are equivalent
             to simple observer positions. Paths of objects that are shorter than m will be
             considered as static beyond their end.
 
@@ -116,7 +116,7 @@ def getB(self, *observers, squeeze=True, pixel_agg=None, output="ndarray"):
         )
 
     def getH(self, *observers, squeeze=True, pixel_agg=None, output="ndarray"):
-        """Compute the H-field in units of [kA/m] generated by the source.
+        """Compute the H-field in units of kA/m generated by the source.
 
         Parameters
         ----------
@@ -124,7 +124,7 @@ def getH(self, *observers, squeeze=True, pixel_agg=None, output="ndarray"):
             Can be array_like positions of shape (n1, n2, ..., 3) where the field
             should be evaluated, a `Sensor` object with pixel shape (n1, n2, ..., 3) or a list
             of such sensor objects (must all have similar pixel shapes). All positions
-            are given in units of [mm].
+            are given in units of mm.
 
         squeeze: bool, default=`True`
             If `True`, the output is squeezed, i.e. all axes of length 1 in the output (e.g.
@@ -145,7 +145,7 @@ def getH(self, *observers, squeeze=True, pixel_agg=None, output="ndarray"):
         -------
         H-field: ndarray, shape squeeze(m, k, n1, n2, ..., 3) or DataFrame
             H-field at each path position (m) for each sensor (k) and each sensor pixel
-            position (n1,n2,...) in units of [kA/m]. Sensor pixel positions are equivalent
+            position (n1,n2,...) in units of kA/m. Sensor pixel positions are equivalent
             to simple observer positions. Paths of objects that are shorter than m will be
             considered as static beyond their end.
 
@@ -202,7 +202,7 @@ def magnetization(self):
 
     @magnetization.setter
     def magnetization(self, mag):
-        """Set magnetization vector, array_like, shape (3,), unit [mT]."""
+        """Set magnetization vector, array_like, shape (3,), unit mT."""
         self._magnetization = check_format_input_vector(
             mag,
             dims=(1,),
@@ -229,7 +229,7 @@ def current(self):
 
     @current.setter
     def current(self, current):
-        """Set current value, scalar, unit [A]."""
+        """Set current value, scalar, unit A."""
         # input type and init check
         self._current = check_format_input_scalar(
             current,
diff --git a/magpylib/_src/obj_classes/class_BaseGeo.py b/magpylib/_src/obj_classes/class_BaseGeo.py
index e3a486228..f6b3a57c1 100644
--- a/magpylib/_src/obj_classes/class_BaseGeo.py
+++ b/magpylib/_src/obj_classes/class_BaseGeo.py
@@ -154,7 +154,7 @@ def parent(self, inp):
     @property
     def position(self):
         """
-        Object position(s) in the global coordinates in units of [mm]. For m>1, the
+        Object position(s) in the global coordinates in units of mm. For m>1, the
         `position` and `orientation` attributes together represent an object path.
         """
         return np.squeeze(self._position)
@@ -320,7 +320,7 @@ def reset_path(self):
 
     def copy(self, **kwargs):
         """Returns a copy of the current object instance. The `copy` method returns a deep copy of
-        the object, that is independant of the original object.
+        the object, that is independent of the original object.
 
         Parameters
         ----------
diff --git a/magpylib/_src/obj_classes/class_BaseTransform.py b/magpylib/_src/obj_classes/class_BaseTransform.py
index 9e0586f4f..f4aad125a 100644
--- a/magpylib/_src/obj_classes/class_BaseTransform.py
+++ b/magpylib/_src/obj_classes/class_BaseTransform.py
@@ -137,7 +137,7 @@ def apply_move(target_object, displacement, start="auto"):
         appended/merged with the existing path.
     start: int, str, default=`'auto'`
         start=i applies an operation starting at the i'th path index.
-        With start='auto' and scalar input the wole path is moved. With
+        With start='auto' and scalar input the whole path is moved. With
         start='auto' and vector input the input is appended.
 
     Returns
@@ -271,7 +271,7 @@ def move(self, displacement, start="auto"):
         Parameters
         ----------
         displacement: array_like, shape (3,) or (n,3)
-            Displacement vector in units of [mm].
+            Displacement vector in units of mm.
 
         start: int or str, default=`'auto'`
             Starting index when applying operations. See 'General move/rotate behavior' above
@@ -381,7 +381,7 @@ def rotate(self, rotation: R, anchor=None, start="auto"):
             as unit rotation.
 
         anchor: `None`, `0` or array_like with shape (3,) or (n,3), default=`None`
-            The axis of rotation passes through the anchor point given in units of [mm].
+            The axis of rotation passes through the anchor point given in units of mm.
             By default (`anchor=None`) the object will rotate about its own center.
             `anchor=0` rotates the object about the origin `(0,0,0)`.
 
@@ -459,14 +459,14 @@ def rotate_from_angax(self, angle, axis, anchor=None, start="auto", degrees=True
         Parameters
         ----------
         angle: int, float or array_like with shape (n,)
-            Angle(s) of rotation in units of [deg] (by default).
+            Angle(s) of rotation in units of deg (by default).
 
         axis: str or array_like, shape (3,)
             The direction of the axis of rotation. Input can be a vector of shape (3,)
             or a string 'x', 'y' or 'z' to denote respective directions.
 
         anchor: `None`, `0` or array_like with shape (3,) or (n,3), default=`None`
-            The axis of rotation passes through the anchor point given in units of [mm].
+            The axis of rotation passes through the anchor point given in units of mm.
             By default (`anchor=None`) the object will rotate about its own center.
             `anchor=0` rotates the object about the origin `(0,0,0)`.
 
@@ -475,7 +475,7 @@ def rotate_from_angax(self, angle, axis, anchor=None, start="auto", degrees=True
             for details.
 
         degrees: bool, default=`True`
-            Interpret input in units of [deg] or [rad].
+            Interpret input in units of deg or rad.
 
         Returns
         -------
@@ -564,10 +564,10 @@ def rotate_from_rotvec(self, rotvec, anchor=None, start="auto", degrees=True):
         ----------
         rotvec : array_like, shape (n,3) or (3,)
             Rotation input. Rotation vector direction is the rotation axis, vector length is
-            the rotation angle in units of [rad].
+            the rotation angle in units of rad.
 
         anchor: `None`, `0` or array_like with shape (3,) or (n,3), default=`None`
-            The axis of rotation passes through the anchor point given in units of [mm].
+            The axis of rotation passes through the anchor point given in units of mm.
             By default (`anchor=None`) the object will rotate about its own center.
             `anchor=0` rotates the object about the origin `(0,0,0)`.
 
@@ -576,7 +576,7 @@ def rotate_from_rotvec(self, rotvec, anchor=None, start="auto", degrees=True):
             for details.
 
         degrees: bool, default=`True`
-            Interpret input in units of [deg] or [rad].
+            Interpret input in units of deg or rad.
 
         Returns
         -------
@@ -646,7 +646,7 @@ def rotate_from_euler(self, angle, seq, anchor=None, start="auto", degrees=True)
         Parameters
         ----------
         angle: int, float or array_like with shape (n,)
-            Angle(s) of rotation in units of [deg] (by default).
+            Angle(s) of rotation in units of deg (by default).
 
         seq : string
             Specifies sequence of axes for rotations. Up to 3 characters
@@ -655,7 +655,7 @@ def rotate_from_euler(self, angle, seq, anchor=None, start="auto", degrees=True)
             rotations cannot be mixed in one function call.
 
         anchor: `None`, `0` or array_like with shape (3,) or (n,3), default=`None`
-            The axis of rotation passes through the anchor point given in units of [mm].
+            The axis of rotation passes through the anchor point given in units of mm.
             By default (`anchor=None`) the object will rotate about its own center.
             `anchor=0` rotates the object about the origin `(0,0,0)`.
 
@@ -664,7 +664,7 @@ def rotate_from_euler(self, angle, seq, anchor=None, start="auto", degrees=True)
             for details.
 
         degrees: bool, default=`True`
-            Interpret input in units of [deg] or [rad].
+            Interpret input in units of deg or rad.
 
         Returns
         -------
@@ -738,7 +738,7 @@ def rotate_from_matrix(self, matrix, anchor=None, start="auto"):
             Rotation input. See scipy.spatial.transform.Rotation for details.
 
         anchor: `None`, `0` or array_like with shape (3,) or (n,3), default=`None`
-            The axis of rotation passes through the anchor point given in units of [mm].
+            The axis of rotation passes through the anchor point given in units of mm.
             By default (`anchor=None`) the object will rotate about its own center.
             `anchor=0` rotates the object about the origin `(0,0,0)`.
 
@@ -803,7 +803,7 @@ def rotate_from_mrp(self, mrp, anchor=None, start="auto"):
             Parameters (MRPs).
 
         anchor: `None`, `0` or array_like with shape (3,) or (n,3), default=`None`
-            The axis of rotation passes through the anchor point given in units of [mm].
+            The axis of rotation passes through the anchor point given in units of mm.
             By default (`anchor=None`) the object will rotate about its own center.
             `anchor=0` rotates the object about the origin `(0,0,0)`.
 
@@ -867,7 +867,7 @@ def rotate_from_quat(self, quat, anchor=None, start="auto"):
             Rotation input in quaternion form.
 
         anchor: `None`, `0` or array_like with shape (3,) or (n,3), default=`None`
-            The axis of rotation passes through the anchor point given in units of [mm].
+            The axis of rotation passes through the anchor point given in units of mm.
             By default (`anchor=None`) the object will rotate about its own center.
             `anchor=0` rotates the object about the origin `(0,0,0)`.
 
diff --git a/magpylib/_src/obj_classes/class_Collection.py b/magpylib/_src/obj_classes/class_Collection.py
index b3954164b..ef573cce3 100644
--- a/magpylib/_src/obj_classes/class_Collection.py
+++ b/magpylib/_src/obj_classes/class_Collection.py
@@ -516,7 +516,7 @@ def _validate_getBH_inputs(self, *inputs):
         return sources, sensors
 
     def getB(self, *inputs, squeeze=True, pixel_agg=None, output="ndarray"):
-        """Compute B-field in [mT] for given sources and observers.
+        """Compute B-field in mT for given sources and observers.
 
         Parameters
         ----------
@@ -544,7 +544,7 @@ def getB(self, *inputs, squeeze=True, pixel_agg=None, output="ndarray"):
         -------
         B-field: ndarray, shape squeeze(m, k, n1, n2, ..., 3) or DataFrame
             B-field at each path position (m) for each sensor (k) and each sensor pixel
-            position (n1,n2,...) in units of [mT]. Sensor pixel positions are equivalent
+            position (n1,n2,...) in units of mT. Sensor pixel positions are equivalent
             to simple observer positions. Paths of objects that are shorter than m will be
             considered as static beyond their end.
 
@@ -587,7 +587,7 @@ def getB(self, *inputs, squeeze=True, pixel_agg=None, output="ndarray"):
         )
 
     def getH(self, *inputs, squeeze=True, pixel_agg=None, output="ndarray"):
-        """Compute H-field in [kA/m] for given sources and observers.
+        """Compute H-field in kA/m for given sources and observers.
 
         Parameters
         ----------
@@ -615,7 +615,7 @@ def getH(self, *inputs, squeeze=True, pixel_agg=None, output="ndarray"):
         -------
         H-field: ndarray, shape squeeze(m, k, n1, n2, ..., 3) or DataFrame
             H-field at each path position (m) for each sensor (k) and each sensor pixel
-            position (n1,n2,...) in units of [kA/m]. Sensor pixel positions are equivalent
+            position (n1,n2,...) in units of kA/m. Sensor pixel positions are equivalent
             to simple observer positions. Paths of objects that are shorter than m will be
             considered as static beyond their end.
 
@@ -686,7 +686,7 @@ class Collection(BaseGeo, BaseCollection):
         An ordered list of all collection objects in the collection.
 
     position: array_like, shape (3,) or (m,3), default=`(0,0,0)`
-        Object position(s) in the global coordinates in units of [mm]. For m>1, the
+        Object position(s) in the global coordinates in units of mm. For m>1, the
         `position` and `orientation` attributes together represent an object path.
 
     orientation: scipy `Rotation` object with length 1 or m, default=`None`
diff --git a/magpylib/_src/obj_classes/class_Sensor.py b/magpylib/_src/obj_classes/class_Sensor.py
index 06c778881..768d78de3 100644
--- a/magpylib/_src/obj_classes/class_Sensor.py
+++ b/magpylib/_src/obj_classes/class_Sensor.py
@@ -21,12 +21,12 @@ class Sensor(BaseGeo, BaseDisplayRepr):
     Parameters
     ----------
     position: array_like, shape (3,) or (m,3), default=`(0,0,0)`
-        Object position(s) in the global coordinates in units of [mm]. For m>1, the
+        Object position(s) in the global coordinates in units of mm. For m>1, the
         `position` and `orientation` attributes together represent an object path.
 
     pixel: array_like, shape (3,) or (n1,n2,...,3), default=`(0,0,0)`
         Sensor pixel (=sensing elements) positions in the local object coordinates
-        (rotate with object), in units of [mm].
+        (rotate with object), in units of mm.
 
     orientation: scipy `Rotation` object with length 1 or m, default=`None`
         Object orientation(s) in the global coordinates. `None` corresponds to
@@ -47,7 +47,7 @@ class Sensor(BaseGeo, BaseDisplayRepr):
     Examples
     --------
     `Sensor` objects are observers for magnetic field computation. In this example we compute the
-    B-field in units of [mT] as seen by the sensor in the center of a circular current loop:
+    B-field in units of mT as seen by the sensor in the center of a circular current loop:
 
     >>> import magpylib as magpy
     >>> sens = magpy.Sensor()
@@ -97,7 +97,7 @@ def __init__(
     @property
     def pixel(self):
         """Sensor pixel (=sensing elements) positions in the local object coordinates
-        (rotate with object), in units of [mm].
+        (rotate with object), in units of mm.
         """
         return self._pixel
 
@@ -117,7 +117,7 @@ def pixel(self, pix):
     def getB(
         self, *sources, sumup=False, squeeze=True, pixel_agg=None, output="ndarray"
     ):
-        """Compute the B-field in units of [mT] as seen by the sensor.
+        """Compute the B-field in units of mT as seen by the sensor.
 
         Parameters
         ----------
@@ -146,13 +146,13 @@ def getB(
         -------
         B-field: ndarray, shape squeeze(l, m, n1, n2, ..., 3) or DataFrame
             B-field of each source (l) at each path position (m) and each sensor pixel
-            position (n1,n2,...) in units of [mT]. Paths of objects that are shorter than
+            position (n1,n2,...) in units of mT. Paths of objects that are shorter than
             m will be considered as static beyond their end.
 
         Examples
         --------
         Sensors are observers for magnetic field computation. In this example we compute the
-        B-field [mT] as seen by the sensor in the center of a circular current loop:
+        B-field in units of mT as seen by the sensor in the center of a circular current loop:
 
         >>> import magpylib as magpy
         >>> sens = magpy.Sensor()
@@ -192,7 +192,7 @@ def getB(
     def getH(
         self, *sources, sumup=False, squeeze=True, pixel_agg=None, output="ndarray"
     ):
-        """Compute the H-field in units of [kA/m] as seen by the sensor.
+        """Compute the H-field in units of kA/m as seen by the sensor.
 
         Parameters
         ----------
@@ -221,13 +221,13 @@ def getH(
         -------
         H-field: ndarray, shape squeeze(l, m, n1, n2, ..., 3) or DataFrame
             H-field of each source (l) at each path position (m) and each sensor pixel
-            position (n1,n2,...) in units of [kA/m]. Paths of objects that are shorter than
+            position (n1,n2,...) in units of kA/m. Paths of objects that are shorter than
             m will be considered as static beyond their end.
 
         Examples
         --------
         Sensors are observers for magnetic field computation. In this example we compute the
-        H-field [kA/m] as seen by the sensor in the center of a circular current loop:
+        H-field in kA/m as seen by the sensor in the center of a circular current loop:
 
         >>> import magpylib as magpy
         >>> sens = magpy.Sensor()
diff --git a/magpylib/_src/obj_classes/class_current_Line.py b/magpylib/_src/obj_classes/class_current_Line.py
index 94e08efaf..75988d7ce 100644
--- a/magpylib/_src/obj_classes/class_current_Line.py
+++ b/magpylib/_src/obj_classes/class_current_Line.py
@@ -11,20 +11,20 @@ class Line(BaseCurrent):
     Can be used as `sources` input for magnetic field computation.
 
     The vertex positions are defined in the local object coordinates (rotate with object).
-    When `position=(0,0,0)` and `orientation=None` global and local coordinates conincide.
+    When `position=(0,0,0)` and `orientation=None` global and local coordinates coincide.
 
     Parameters
     ----------
     current: float, default=`None`
-        Electrical current in units of [A].
+        Electrical current in units of A.
 
     vertices: array_like, shape (n,3), default=`None`
-        The current flows along the vertices which are given in units of [mm] in the
+        The current flows along the vertices which are given in units of mm in the
         local object coordinates (move/rotate with object). At least two vertices
         must be given.
 
     position: array_like, shape (3,) or (m,3), default=`(0,0,0)`
-        Object position(s) in the global coordinates in units of [mm]. For m>1, the
+        Object position(s) in the global coordinates in units of mm. For m>1, the
         `position` and `orientation` attributes together represent an object path.
 
     orientation: scipy `Rotation` object with length 1 or m, default=`None`
@@ -45,9 +45,9 @@ class Line(BaseCurrent):
 
     Examples
     --------
-    `Line` objects are magnetic field sources. In this example we compute the H-field [kA/m]
-    of a square-shaped line-current with 1 [A] current at the observer position (1,1,1) given in
-    units of [mm]:
+    `Line` objects are magnetic field sources. In this example we compute the H-field kA/m
+    of a square-shaped line-current with 1 A current at the observer position (1,1,1) given in
+    units of mm:
 
     >>> import magpylib as magpy
     >>> src = magpy.current.Line(
@@ -110,7 +110,7 @@ def __init__(
     @property
     def vertices(self):
         """
-        The current flows along the vertices which are given in units of [mm] in the
+        The current flows along the vertices which are given in units of mm in the
         local object coordinates (move/rotate with object). At least two vertices
         must be given.
         """
@@ -118,5 +118,5 @@ def vertices(self):
 
     @vertices.setter
     def vertices(self, vert):
-        """Set Line vertices, array_like, [mm]."""
+        """Set Line vertices, array_like, mm."""
         self._vertices = check_format_input_vertices(vert)
diff --git a/magpylib/_src/obj_classes/class_current_Loop.py b/magpylib/_src/obj_classes/class_current_Loop.py
index 9e4a38b86..4170f5f9c 100644
--- a/magpylib/_src/obj_classes/class_current_Loop.py
+++ b/magpylib/_src/obj_classes/class_current_Loop.py
@@ -17,13 +17,13 @@ class Loop(BaseCurrent):
     Parameters
     ----------
     current: float, default=`None`
-        Electrical current in units of [A].
+        Electrical current in units of A.
 
     diameter: float, default=`None`
-        Diameter of the loop in units of [mm].
+        Diameter of the loop in units of mm.
 
     position: array_like, shape (3,) or (m,3), default=`(0,0,0)`
-        Object position(s) in the global coordinates in units of [mm]. For m>1, the
+        Object position(s) in the global coordinates in units of mm. For m>1, the
         `position` and `orientation` attributes together represent an object path.
 
     orientation: scipy `Rotation` object with length 1 or m, default=`None`
@@ -44,9 +44,9 @@ class Loop(BaseCurrent):
 
     Examples
     --------
-    `Loop` objects are magnetic field sources. In this example we compute the H-field [kA/m]
-    of such a current loop with 100 [A] current and a diameter of 2 [mm] at the observer position
-    (1,1,1) given in units of [mm]:
+    `Loop` objects are magnetic field sources. In this example we compute the H-field kA/m
+    of such a current loop with 100 A current and a diameter of 2 mm at the observer position
+    (1,1,1) given in units of mm:
 
     >>> import magpylib as magpy
     >>> src = magpy.current.Loop(current=100, diameter=2)
@@ -99,12 +99,12 @@ def __init__(
     # property getters and setters
     @property
     def diameter(self):
-        """Diameter of the loop in units of [mm]."""
+        """Diameter of the loop in units of mm."""
         return self._diameter
 
     @diameter.setter
     def diameter(self, dia):
-        """Set Loop loop diameter, float, [mm]."""
+        """Set Loop loop diameter, float, mm."""
         self._diameter = check_format_input_scalar(
             dia,
             sig_name="diameter",
diff --git a/magpylib/_src/obj_classes/class_magnet_Cuboid.py b/magpylib/_src/obj_classes/class_magnet_Cuboid.py
index 09a832a32..0b056564c 100644
--- a/magpylib/_src/obj_classes/class_magnet_Cuboid.py
+++ b/magpylib/_src/obj_classes/class_magnet_Cuboid.py
@@ -14,17 +14,21 @@ class Cuboid(BaseMagnet):
     to the global coordinate basis vectors and the geometric center of the Cuboid
     is located in the origin.
 
+    Units can be chosen freely. B-field output unit is the same as magnetization
+    input unit. Computation is independend of Length-unit. See online documentation
+    for fore information
+
     Parameters
     ----------
     magnetization: array_like, shape (3,), default=`None`
-        Magnetization vector (mu0*M, remanence field) in units of [mT] given in
-        the local object coordinates (rotates with object).
+        Magnetization (polarization) vector (mu0*M, remanence field) in arbitrary
+        units given in the local object coordinates (rotates with object).
 
     dimension: array_like, shape (3,), default=`None`
-        Length of the cuboid sides [a,b,c] in units of [mm].
+        Length of the cuboid sides [a,b,c] in arbitrary units.
 
     position: array_like, shape (3,) or (m,3), default=`(0,0,0)`
-        Object position(s) in the global coordinates in units of [mm]. For m>1, the
+        Object position(s) in the global coordinates in arbitrary units. For m>1, the
         `position` and `orientation` attributes together represent an object path.
 
     orientation: scipy `Rotation` object with length 1 or m, default=`None`
@@ -45,9 +49,9 @@ class Cuboid(BaseMagnet):
 
     Examples
     --------
-    `Cuboid` magnets are magnetic field sources. Below we compute the H-field [kA/m] of a
-    cubical magnet with magnetization (100,200,300) in units of [mT] and 1 [mm] sides
-    at the observer position (1,1,1) given in units of [mm]:
+    `Cuboid` magnets are magnetic field sources. Below we compute the H-field in kA/m of a
+    cubical magnet with magnetization (100,200,300) in units of mT and 1 mm sides
+    at the observer position (1,1,1) given in units of mm:
 
     >>> import magpylib as magpy
     >>> src = magpy.magnet.Cuboid(magnetization=(100,200,300), dimension=(1,1,1))
@@ -100,12 +104,12 @@ def __init__(
     # property getters and setters
     @property
     def dimension(self):
-        """Length of the cuboid sides [a,b,c] in units of [mm]."""
+        """Length of the cuboid sides [a,b,c] in units of mm."""
         return self._dimension
 
     @dimension.setter
     def dimension(self, dim):
-        """Set Cuboid dimension (a,b,c), shape (3,), [mm]."""
+        """Set Cuboid dimension (a,b,c), shape (3,), mm."""
         self._dimension = check_format_input_vector(
             dim,
             dims=(1,),
diff --git a/magpylib/_src/obj_classes/class_magnet_Cylinder.py b/magpylib/_src/obj_classes/class_magnet_Cylinder.py
index d5947ece8..6a6beef50 100644
--- a/magpylib/_src/obj_classes/class_magnet_Cylinder.py
+++ b/magpylib/_src/obj_classes/class_magnet_Cylinder.py
@@ -12,19 +12,19 @@ class Cylinder(BaseMagnet):
 
     When `position=(0,0,0)` and `orientation=None` the geometric center of the
     cylinder lies in the origin of the global coordinate system and
-    the cylinder axis conincides with the global z-axis.
+    the cylinder axis coincides with the global z-axis.
 
     Parameters
     ----------
     magnetization: array_like, shape (3,), default=`None`
-        Magnetization vector (mu0*M, remanence field) in units of [mT] given in
+        Magnetization vector (mu0*M, remanence field) in units of mT given in
         the local object coordinates (rotates with object).
 
     dimension: array_like, shape (2,), default=`None`
-        Dimension (d,h) denote diameter and height of the cylinder in units of [mm].
+        Dimension (d,h) denote diameter and height of the cylinder in units of mm.
 
     position: array_like, shape (3,) or (m,3), default=`(0,0,0)`
-        Object position(s) in the global coordinates in units of [mm]. For m>1, the
+        Object position(s) in the global coordinates in units of mm. For m>1, the
         `position` and `orientation` attributes together represent an object path.
 
     orientation: scipy `Rotation` object with length 1 or m, default=`None`
@@ -45,9 +45,9 @@ class Cylinder(BaseMagnet):
 
     Examples
     --------
-    `Cylinder` magnets are magnetic field sources. Below we compute the H-field [kA/m] of a
-    cylinder magnet with magnetization (100,200,300) in units of [mT] and 1 [mm] diameter and height
-    at the observer position (1,1,1) given in units of [mm]:
+    `Cylinder` magnets are magnetic field sources. Below we compute the H-field in kA/m of a
+    cylinder magnet with magnetization (100,200,300) in units of mT and 1 mm diameter and height
+    at the observer position (1,1,1) given in units of mm:
 
     >>> import magpylib as magpy
     >>> src = magpy.magnet.Cylinder(magnetization=(100,200,300), dimension=(1,1))
@@ -100,12 +100,12 @@ def __init__(
     # property getters and setters
     @property
     def dimension(self):
-        """Dimension (d,h) denote diameter and height of the cylinder in units of [mm]."""
+        """Dimension (d,h) denote diameter and height of the cylinder in units of mm."""
         return self._dimension
 
     @dimension.setter
     def dimension(self, dim):
-        """Set Cylinder dimension (d,h) in units of [mm]."""
+        """Set Cylinder dimension (d,h) in units of mm."""
         self._dimension = check_format_input_vector(
             dim,
             dims=(1,),
diff --git a/magpylib/_src/obj_classes/class_magnet_CylinderSegment.py b/magpylib/_src/obj_classes/class_magnet_CylinderSegment.py
index 076da5bb6..eb70806ad 100644
--- a/magpylib/_src/obj_classes/class_magnet_CylinderSegment.py
+++ b/magpylib/_src/obj_classes/class_magnet_CylinderSegment.py
@@ -16,23 +16,23 @@ class CylinderSegment(BaseMagnet):
 
     When `position=(0,0,0)` and `orientation=None` the geometric center of the
     cylinder lies in the origin of the global coordinate system and
-    the cylinder axis conincides with the global z-axis. Section angle 0
+    the cylinder axis coincides with the global z-axis. Section angle 0
     corresponds to an x-z plane section of the cylinder.
 
     Parameters
     ----------
     magnetization: array_like, shape (3,), default=`None`
-        Magnetization vector (mu0*M, remanence field) in units of [mT] given in
+        Magnetization vector (mu0*M, remanence field) in units of mT given in
         the local object coordinates (rotates with object).
 
     dimension: array_like, shape (5,), default=`None`
         Dimension/Size of the cylinder segment of the form (r1, r2, h, phi1, phi2)
-        where r1<r2 denote inner and outer radii in units of [mm], phi1<phi2 denote
-        the cylinder section angles in units of [deg] and h is the cylinder height
-        in units of [mm].
+        where r1<r2 denote inner and outer radii in units of mm, phi1<phi2 denote
+        the cylinder section angles in units of deg and h is the cylinder height
+        in units of mm.
 
     position: array_like, shape (3,) or (m,3), default=`(0,0,0)`
-        Object position(s) in the global coordinates in units of [mm]. For m>1, the
+        Object position(s) in the global coordinates in units of mm. For m>1, the
         `position` and `orientation` attributes together represent an object path.
 
     barycenter: array_like, shape (3,)
@@ -58,9 +58,9 @@ class CylinderSegment(BaseMagnet):
     Examples
     --------
     `CylinderSegment` magnets are magnetic field sources. In this example we compute the
-    H-field [kA/m] of such a cylinder segment magnet with magnetization (100,200,300)
-    in units of [mT], inner radius 1 [mm], outer radius 2 [mm], height 1 [mm], and
-    section angles 0 and 45 [deg] at the observer position (2,2,2) in units of [mm]:
+    H-field kA/m of such a cylinder segment magnet with magnetization (100,200,300)
+    in units of mT, inner radius 1 mm, outer radius 2 mm, height 1 mm, and
+    section angles 0 and 45 deg at the observer position (2,2,2) in units of mm:
 
     >>> import magpylib as magpy
     >>> src = magpy.magnet.CylinderSegment(magnetization=(100,200,300), dimension=(1,2,1,0,45))
@@ -115,15 +115,15 @@ def __init__(
     def dimension(self):
         """
         Dimension/Size of the cylinder segment of the form (r1, r2, h, phi1, phi2)
-        where r1<r2 denote inner and outer radii in units of [mm], phi1<phi2 denote
-        the cylinder section angles in units of [deg] and h is the cylinder height
-        in units of [mm].
+        where r1<r2 denote inner and outer radii in units of mm, phi1<phi2 denote
+        the cylinder section angles in units of deg and h is the cylinder height
+        in units of mm.
         """
         return self._dimension
 
     @dimension.setter
     def dimension(self, dim):
-        """Set Cylinder dimension (r1,r2,h,phi1,phi2), shape (5,), [mm, deg]."""
+        """Set Cylinder dimension (r1,r2,h,phi1,phi2), shape (5,), (mm, deg)."""
         self._dimension = check_format_input_cylinder_segment(dim)
 
     @property
diff --git a/magpylib/_src/obj_classes/class_magnet_Sphere.py b/magpylib/_src/obj_classes/class_magnet_Sphere.py
index 217be43c7..1c2171aeb 100644
--- a/magpylib/_src/obj_classes/class_magnet_Sphere.py
+++ b/magpylib/_src/obj_classes/class_magnet_Sphere.py
@@ -16,14 +16,14 @@ class Sphere(BaseMagnet):
     Parameters
     ----------
     magnetization: array_like, shape (3,), default=`None`
-        Magnetization vector (mu0*M, remanence field) in units of [mT] given in
+        Magnetization vector (mu0*M, remanence field) in units of mT given in
         the local object coordinates (rotates with object).
 
     diameter: float, default=`None`
-        Diameter of the sphere in units of [mm].
+        Diameter of the sphere in units of mm.
 
     position: array_like, shape (3,) or (m,3), default=`(0,0,0)`
-        Object position(s) in the global coordinates in units of [mm]. For m>1, the
+        Object position(s) in the global coordinates in units of mm. For m>1, the
         `position` and `orientation` attributes together represent an object path.
 
     orientation: scipy `Rotation` object with length 1 or m, default=`None`
@@ -45,9 +45,9 @@ class Sphere(BaseMagnet):
 
     Examples
     --------
-    `Sphere` objects are magnetic field sources. In this example we compute the H-field [kA/m]
-    of a spherical magnet with magnetization (100,200,300) in units of [mT] and diameter
-    of 1 [mm] at the observer position (1,1,1) given in units of [mm]:
+    `Sphere` objects are magnetic field sources. In this example we compute the H-field kA/m
+    of a spherical magnet with magnetization (100,200,300) in units of mT and diameter
+    of 1 mm at the observer position (1,1,1) given in units of mm:
 
     >>> import magpylib as magpy
     >>> src = magpy.magnet.Sphere(magnetization=(100,200,300), diameter=1)
@@ -100,12 +100,12 @@ def __init__(
     # property getters and setters
     @property
     def diameter(self):
-        """Diameter of the sphere in units of [mm]."""
+        """Diameter of the sphere in units of mm."""
         return self._diameter
 
     @diameter.setter
     def diameter(self, dia):
-        """Set Sphere diameter, float, [mm]."""
+        """Set Sphere diameter, float, mm."""
         self._diameter = check_format_input_scalar(
             dia,
             sig_name="diameter",
diff --git a/magpylib/_src/obj_classes/class_magnet_Tetrahedron.py b/magpylib/_src/obj_classes/class_magnet_Tetrahedron.py
index 8606e29d8..5f531e700 100644
--- a/magpylib/_src/obj_classes/class_magnet_Tetrahedron.py
+++ b/magpylib/_src/obj_classes/class_magnet_Tetrahedron.py
@@ -20,7 +20,7 @@ class Tetrahedron(BaseMagnet):
     Parameters
     ----------
     magnetization: array_like, shape (3,), default=`None`
-        Magnetization vector (mu0*M, remanence field) in units of [mT] given in
+        Magnetization vector (mu0*M, remanence field) in units of mT given in
         the local object coordinates (rotates with object).
 
     vertices: ndarray, shape (4,3)
@@ -28,7 +28,7 @@ class Tetrahedron(BaseMagnet):
         coordinate system of the tetrahedron.
 
     position: array_like, shape (3,) or (m,3)
-        Object position(s) in the global coordinates in units of [mm]. For m>1, the
+        Object position(s) in the global coordinates in units of mm. For m>1, the
         `position` and `orientation` attributes together represent an object path.
         When setting vertices, the initial position is set to the barycenter.
 
@@ -54,10 +54,10 @@ class Tetrahedron(BaseMagnet):
 
     Examples
     --------
-    `Tetrahedron` magnets are magnetic field sources. Below we compute the H-field [kA/m] of a
-    tetrahedron magnet with magnetization (100,200,300) in units of [mT] dimensions defined
-    through the vertices (0,0,0), (1,0,0), (0,1,0) and (0,0,1) in units of [mm] at the
-    observer position (1,1,1) given in units of [mm]:
+    `Tetrahedron` magnets are magnetic field sources. Below we compute the H-field in kA/m of a
+    tetrahedron magnet with magnetization (100,200,300) in units of mT dimensions defined
+    through the vertices (0,0,0), (1,0,0), (0,1,0) and (0,0,1) in units of mm at the
+    observer position (1,1,1) given in units of mm:
 
     >>> import magpylib as magpy
     >>> verts = [(0,0,0), (1,0,0), (0,1,0), (0,0,1)]
@@ -112,12 +112,12 @@ def __init__(
     # property getters and setters
     @property
     def vertices(self):
-        """Length of the Tetrahedron sides [a,b,c] in units of [mm]."""
+        """Length of the Tetrahedron sides [a,b,c] in units of mm."""
         return self._vertices
 
     @vertices.setter
     def vertices(self, dim):
-        """Set Tetrahedron vertices (a,b,c), shape (3,), [mm]."""
+        """Set Tetrahedron vertices (a,b,c), shape (3,), (mm)."""
         self._vertices = check_format_input_vector(
             dim,
             dims=(2,),
diff --git a/magpylib/_src/obj_classes/class_magnet_TriangularMesh.py b/magpylib/_src/obj_classes/class_magnet_TriangularMesh.py
index 32e754501..1c939cbc1 100644
--- a/magpylib/_src/obj_classes/class_magnet_TriangularMesh.py
+++ b/magpylib/_src/obj_classes/class_magnet_TriangularMesh.py
@@ -34,18 +34,18 @@ class TriangularMesh(BaseMagnet):
     Parameters
     ----------
     magnetization: array_like, shape (3,), default=`None`
-        Magnetization vector (mu0*M, remanence field) in units of [mT] given in
+        Magnetization vector (mu0*M, remanence field) in units of mT given in
         the local object coordinates (rotates with object).
 
     vertices: ndarray, shape (n,3)
-        A set of points in units of [mm] in the local object coordinates from which the
+        A set of points in units of mm in the local object coordinates from which the
         triangular faces of the mesh are constructed by the additional `faces`input.
 
     faces: ndarray, shape (n,3)
         Indices of vertices. Each triplet represents one triangle of the mesh.
 
     position: array_like, shape (3,) or (m,3), default=`(0,0,0)`
-        Object position(s) in the global coordinates in units of [mm]. For m>1, the
+        Object position(s) in the global coordinates in units of mm. For m>1, the
         `position` and `orientation` attributes together represent an object path.
 
     orientation: scipy `Rotation` object with length 1 or m, default=`None`
@@ -75,7 +75,7 @@ class TriangularMesh(BaseMagnet):
 
     check_selfintersecting: bool, optional
         If `True`, the provided set of facets is validated by checking if the body is not
-        self-intersecting. Can be deactivated for perfomance reasons by setting it to `False`.
+        self-intersecting. Can be deactivated for performance reasons by setting it to `False`.
 
     parent: `Collection` object or `None`
         The object is a child of it's parent collection.
@@ -95,9 +95,9 @@ class TriangularMesh(BaseMagnet):
 
     Examples
     --------
-    We compute the B-field in units of [mT] of a triangular mesh (4 vertices, 4 faces)
-    with magnetization (100,200,300) in units of [mT] at the observer position
-    (1,1,1) given in units of [mm]:
+    We compute the B-field in units of mT of a triangular mesh (4 vertices, 4 faces)
+    with magnetization (100,200,300) in units of mT at the observer position
+    (1,1,1) given in units of mm:
 
     >>> import magpylib as magpy
     >>> vv = ((0,0,0), (1,0,0), (0,1,0), (0,0,1))
@@ -534,14 +534,14 @@ def from_ConvexHull(
         Parameters
         ----------
         magnetization: array_like, shape (3,), default=`None`
-            Magnetization vector (mu0*M, remanence field) in units of [mT] given in
+            Magnetization vector (mu0*M, remanence field) in units of mT given in
             the local object coordinates (rotates with object).
 
         points: ndarray, shape (n,3)
             Point cloud from which the convex hull is computed.
 
         position: array_like, shape (3,) or (m,3)
-            Object position(s) in the global coordinates in units of [mm]. For m>1, the
+            Object position(s) in the global coordinates in units of mm. For m>1, the
             `position` and `orientation` attributes together represent an object path.
 
         orientation: scipy `Rotation` object with length 1 or m, default=`None`
@@ -557,17 +557,17 @@ def from_ConvexHull(
             Only a closed mesh guarantees a physical magnet.
             If the mesh is open and "warn", a warning is issued.
             If the mesh is open and "raise", a ValueError is raised.
-            If "ignore", no mesh check is perfomed.
+            If "ignore", no mesh check is performed.
 
         check_disconnected: {'warn', 'raise', 'ignore'}, default='warn'
             If the mesh is disconnected and "warn", a warning is issued.
             If the mesh is disconnected and "raise", a ValueError is raised.
-            If "ignore", no mesh check is perfomed.
+            If "ignore", no mesh check is performed.
 
         check_selfintersecting: {'warn', 'raise', 'ignore'}, default='warn'
             If the mesh is self-intersecting and "warn", a warning is issued.
             If the mesh is self-intersecting and "raise", a ValueError is raised.
-            If "ignore", no mesh check is perfomed.
+            If "ignore", no mesh check is performed.
 
         parent: `Collection` object or `None`
             The object is a child of it's parent collection.
@@ -619,14 +619,14 @@ def from_pyvista(
         Parameters
         ----------
         magnetization: array_like, shape (3,), default=`None`
-            Magnetization vector (mu0*M, remanence field) in units of [mT] given in
+            Magnetization vector (mu0*M, remanence field) in units of mT given in
             the local object coordinates (rotates with object).
 
         polydata: pyvista.core.pointset.PolyData object
             A valid pyvista Polydata mesh object. (e.g. `pyvista.Sphere()`)
 
         position: array_like, shape (3,) or (m,3)
-            Object position(s) in the global coordinates in units of [mm]. For m>1, the
+            Object position(s) in the global coordinates in units of mm. For m>1, the
             `position` and `orientation` attributes together represent an object path.
 
         orientation: scipy `Rotation` object with length 1 or m, default=`None`
@@ -642,17 +642,17 @@ def from_pyvista(
             Only a closed mesh guarantees a physical magnet.
             If the mesh is open and "warn", a warning is issued.
             If the mesh is open and "raise", a ValueError is raised.
-            If "ignore", no mesh check is perfomed.
+            If "ignore", no mesh check is performed.
 
         check_disconnected: {'warn', 'raise', 'ignore'}, default='warn'
             If the mesh is disconnected and "warn", a warning is issued.
             If the mesh is disconnected and "raise", a ValueError is raised.
-            If "ignore", no mesh check is perfomed.
+            If "ignore", no mesh check is performed.
 
         check_selfintersecting: {'warn', 'raise', 'ignore'}, default='warn'
             If the mesh is self-intersecting and "warn", a warning is issued.
             If the mesh is self-intersecting and "raise", a ValueError is raised.
-            If "ignore", no mesh check is perfomed.
+            If "ignore", no mesh check is performed.
 
         parent: `Collection` object or `None`
             The object is a child of it's parent collection.
@@ -721,14 +721,14 @@ def from_triangles(
         Parameters
         ----------
         magnetization: array_like, shape (3,), default=`None`
-            Magnetization vector (mu0*M, remanence field) in units of [mT] given in
+            Magnetization vector (mu0*M, remanence field) in units of mT given in
             the local object coordinates (rotates with object).
 
         triangles: list or Collection of Triangle objects
             Only vertices of Triangle objects are taken, magnetization is ignored.
 
         position: array_like, shape (3,) or (m,3)
-            Object position(s) in the global coordinates in units of [mm]. For m>1, the
+            Object position(s) in the global coordinates in units of mm. For m>1, the
             `position` and `orientation` attributes together represent an object path.
 
         orientation: scipy `Rotation` object with length 1 or m, default=`None`
@@ -744,17 +744,17 @@ def from_triangles(
             Only a closed mesh guarantees a physical magnet.
             If the mesh is open and "warn", a warning is issued.
             If the mesh is open and "raise", a ValueError is raised.
-            If "ignore", no mesh check is perfomed.
+            If "ignore", no mesh check is performed.
 
         check_disconnected: {'warn', 'raise', 'ignore'}, default='warn'
             If the mesh is disconnected and "warn", a warning is issued.
             If the mesh is disconnected and "raise", a ValueError is raised.
-            If "ignore", no mesh check is perfomed.
+            If "ignore", no mesh check is performed.
 
         check_selfintersecting: {'warn', 'raise', 'ignore'}, default='warn'
             If the mesh is self-intersecting and "warn", a warning is issued.
             If the mesh is self-intersecting and "raise", a ValueError is raised.
-            If "ignore", no mesh check is perfomed.
+            If "ignore", no mesh check is performed.
 
         parent: `Collection` object or `None`
             The object is a child of it's parent collection.
@@ -821,14 +821,14 @@ def from_mesh(
         Parameters
         ----------
         magnetization: array_like, shape (3,), default=`None`
-            Magnetization vector (mu0*M, remanence field) in units of [mT] given in
+            Magnetization vector (mu0*M, remanence field) in units of mT given in
             the local object coordinates (rotates with object).
 
         mesh: array_like, shape (n,3,3)
             An array_like of triangular faces that make up a triangular mesh.
 
         position: array_like, shape (3,) or (m,3)
-            Object position(s) in the global coordinates in units of [mm]. For m>1, the
+            Object position(s) in the global coordinates in units of mm. For m>1, the
             `position` and `orientation` attributes together represent an object path.
 
         orientation: scipy `Rotation` object with length 1 or m, default=`None`
@@ -844,17 +844,17 @@ def from_mesh(
             Only a closed mesh guarantees a physical magnet.
             If the mesh is open and "warn", a warning is issued.
             If the mesh is open and "raise", a ValueError is raised.
-            If "ignore", no mesh check is perfomed.
+            If "ignore", no mesh check is performed.
 
         check_disconnected: {'warn', 'raise', 'ignore'}, default='warn'
             If the mesh is disconnected and "warn", a warning is issued.
             If the mesh is disconnected and "raise", a ValueError is raised.
-            If "ignore", no mesh check is perfomed.
+            If "ignore", no mesh check is performed.
 
         check_selfintersecting: {'warn', 'raise', 'ignore'}, default='warn'
             If the mesh is self-intersecting and "warn", a warning is issued.
             If the mesh is self-intersecting and "raise", a ValueError is raised.
-            If "ignore", no mesh check is perfomed.
+            If "ignore", no mesh check is performed.
 
         parent: `Collection` object or `None`
             The object is a child of it's parent collection.
diff --git a/magpylib/_src/obj_classes/class_misc_CustomSource.py b/magpylib/_src/obj_classes/class_misc_CustomSource.py
index ea7b2f134..a8896a074 100644
--- a/magpylib/_src/obj_classes/class_misc_CustomSource.py
+++ b/magpylib/_src/obj_classes/class_misc_CustomSource.py
@@ -15,12 +15,12 @@ class CustomSource(BaseSource):
     field_func: callable, default=`None`
         The function for B- and H-field computation must have the two positional arguments
         `field` and `observers`. With `field='B'` or `field='H'` the B- or H-field in units
-        of [mT] or [kA/m] must be returned respectively. The `observers` argument must
+        of mT or kA/m must be returned respectively. The `observers` argument must
         accept numpy ndarray inputs of shape (n,3), in which case the returned fields must
         be numpy ndarrays of shape (n,3) themselves.
 
     position: array_like, shape (3,) or (m,3), default=`(0,0,0)`
-        Object position(s) in the global coordinates in units of [mm]. For m>1, the
+        Object position(s) in the global coordinates in units of mm. For m>1, the
         `position` and `orientation` attributes together represent an object path.
 
     orientation: scipy `Rotation` object with length 1 or m, default=`None`
@@ -44,7 +44,7 @@ class CustomSource(BaseSource):
     With version 4 `CustomSource` objects enable users to define their own source
     objects, and to embedded them in the Magpylib object oriented interface. In this example
     we create a source that generates a constant field and evaluate the field at observer
-    position (1,1,1) given in [mm]:
+    position (1,1,1) given in mm:
 
     >>> import numpy as np
     >>> import magpylib as magpy
diff --git a/magpylib/_src/obj_classes/class_misc_Dipole.py b/magpylib/_src/obj_classes/class_misc_Dipole.py
index 091cad55e..1edccbd16 100644
--- a/magpylib/_src/obj_classes/class_misc_Dipole.py
+++ b/magpylib/_src/obj_classes/class_misc_Dipole.py
@@ -16,13 +16,13 @@ class Dipole(BaseSource):
 
     Parameters
     ----------
-    moment: array_like, shape (3,), unit [mT*mm^3], default=`None`
-        Magnetic dipole moment in units of [mT*mm^3] given in the local object coordinates.
+    moment: array_like, shape (3,), unit mT*mm^3, default=`None`
+        Magnetic dipole moment in units of mT*mm^3 given in the local object coordinates.
         For homogeneous magnets the relation moment=magnetization*volume holds. The dipole
         moment of a Loop object is pi**2/10*diameter**2*current.
 
     position: array_like, shape (3,) or (m,3), default=`(0,0,0)`
-        Object position(s) in the global coordinates in units of [mm]. For m>1, the
+        Object position(s) in the global coordinates in units of mm. For m>1, the
         `position` and `orientation` attributes together represent an object path.
 
     orientation: scipy `Rotation` object with length 1 or m, default=`None`
@@ -43,9 +43,9 @@ class Dipole(BaseSource):
 
     Examples
     --------
-    `Dipole` objects are magnetic field sources. In this example we compute the H-field [kA/m]
-    of such a magnetic dipole with a moment of (100,100,100) [mT*mm^2] at an observer position
-    (1,1,1) given in units of [mm]:
+    `Dipole` objects are magnetic field sources. In this example we compute the H-field kA/m
+    of such a magnetic dipole with a moment of (100,100,100) in units of mT*mm^2 at an
+    observer position (1,1,1) given in units of mm:
 
     >>> import magpylib as magpy
     >>> src = magpy.misc.Dipole(moment=(100,100,100))
@@ -99,12 +99,12 @@ def __init__(
     # property getters and setters
     @property
     def moment(self):
-        """Magnetic dipole moment in units of [mT*mm^3] given in the local object coordinates."""
+        """Magnetic dipole moment in units of mT*mm^3 given in the local object coordinates."""
         return self._moment
 
     @moment.setter
     def moment(self, mom):
-        """Set dipole moment vector, shape (3,), unit [mT*mm^3]."""
+        """Set dipole moment vector, shape (3,), unit mT*mm^3."""
         self._moment = check_format_input_vector(
             mom,
             dims=(1,),
diff --git a/magpylib/_src/obj_classes/class_misc_Triangle.py b/magpylib/_src/obj_classes/class_misc_Triangle.py
index f5d049747..168e33657 100644
--- a/magpylib/_src/obj_classes/class_misc_Triangle.py
+++ b/magpylib/_src/obj_classes/class_misc_Triangle.py
@@ -21,7 +21,7 @@ class Triangle(BaseMagnet):
     Parameters
     ----------
     magnetization: array_like, shape (3,), default=`None`
-        Magnetization vector (mu0*M, remanence field) in units of [mT] given in
+        Magnetization vector (mu0*M, remanence field) in units of mT given in
         the local object coordinates (rotates with object). The homogeneous surface
         charge of the Triangle is given by the projection of the magnetization on the
         Triangle normal vector (right-hand-rule).
@@ -30,7 +30,7 @@ class Triangle(BaseMagnet):
         Triple of vertices in the local object coordinates.
 
     position: array_like, shape (3,) or (m,3)
-        Object position(s) in the global coordinates in units of [mm]. For m>1, the
+        Object position(s) in the global coordinates in units of mm. For m>1, the
         `position` and `orientation` attributes together represent an object path.
 
     barycenter: array_like, shape (3,)
@@ -55,10 +55,10 @@ class Triangle(BaseMagnet):
 
     Examples
     --------
-    `Triangle` objects are magnetic field sources. Below we compute the H-field [kA/m] of a
-    Triangle object with magnetization (100,200,300) in units of [mT] dimensions defined
-    through the vertices (0,0,0), (1,0,0) and (0,1,0) in units of [mm] at the
-    observer position (1,1,1) given in units of [mm]:
+    `Triangle` objects are magnetic field sources. Below we compute the H-field in kA/m of a
+    Triangle object with magnetization (100,200,300) in units of mT, dimensions defined
+    through the vertices (0,0,0), (1,0,0) and (0,1,0) in units of mm at the
+    observer position (1,1,1) given in units of mm:
 
     >>> import magpylib as magpy
     >>> verts = [(0,0,0), (1,0,0), (0,1,0)]
@@ -118,7 +118,7 @@ def vertices(self):
 
     @vertices.setter
     def vertices(self, val):
-        """Set face vertices (a,b,c), shape (3,3), [mm]."""
+        """Set face vertices (a,b,c), shape (3,3), mm."""
         self._vertices = check_format_input_vector(
             val,
             dims=(2,),
diff --git a/magpylib/_src/style.py b/magpylib/_src/style.py
index 14a7e7a0c..7b343e1b4 100644
--- a/magpylib/_src/style.py
+++ b/magpylib/_src/style.py
@@ -783,7 +783,7 @@ def transition(self):
     def transition(self, val):
         assert (
             val is None or isinstance(val, (float, int)) and 0 <= val <= 1
-        ), "color transition must be a value betwen 0 and 1"
+        ), "color transition must be a value between 0 and 1"
         self._transition = val
 
     @property
diff --git a/setup.py b/setup.py
index e3965bd55..62ce78c6c 100644
--- a/setup.py
+++ b/setup.py
@@ -21,8 +21,8 @@
 import setuptools
 from setuptools.command.install import install
 
-_magPyVersion = "4.3.0"
-_SphinxVersion = "4.4.0"
+_magPyVersion = "4.4.0dev"
+_SphinxVersion = "5.3.0"
 _name = "magpylib"
 _description = "Free Python3 package to compute magnetic fields."
 _author_email = "magpylib@gmail.com"
@@ -76,7 +76,7 @@ def run(self):
             "pylint",
             "jupyterlab>=3.2",
             "jupyterlab_myst",
-            "sphinx==4.4.0",
+            "sphinx==5.3.0",
             "pandas",
             "pyvista",
             "ipygany",


Test patch:
diff --git a/tests/test_physics_consistency.py b/tests/test_physics_consistency.py
index 221162288..93cf6545d 100644
--- a/tests/test_physics_consistency.py
+++ b/tests/test_physics_consistency.py
@@ -42,8 +42,8 @@ def test_dipole_approximation():
 
 def test_Loop_vs_Cylinder_field():
     """
-    The H-field of a loop with radius r0[mm] and current i0[A] is the same
-    as the H-field of a cylinder with radius r0[mm], height h0[mm] and
+    The H-field of a loop with radius r0 (mm) and current i0 (A) is the same
+    as the H-field of a cylinder with radius r0 (mm), height h0 (mm) and
     magnetization (0, 0, 4pi/10*i0/h0) !!!
     """