From c42bf8bb5bfe6ab968bcc7dc8f043d69ce6c82cf Mon Sep 17 00:00:00 2001
From: Repo Updater <noreply@mpcdf.mpg.de>
Date: Thu, 17 Nov 2022 08:39:18 +0100
Subject: [PATCH] 82f97415 some polishing of the first part of parallel

---
 ...--Parallel_Programming_Shared_Memory.ipynb |  14 +-
 notebooks/4b--Parallel_Frameworks.ipynb       |  27 +-
 notebooks/fig/dask-array.svg                  | 349 ++++++++++++++++++
 3 files changed, 375 insertions(+), 15 deletions(-)
 create mode 100644 notebooks/fig/dask-array.svg

diff --git a/notebooks/4a--Parallel_Programming_Shared_Memory.ipynb b/notebooks/4a--Parallel_Programming_Shared_Memory.ipynb
index d8d2fdc..ab82f36 100644
--- a/notebooks/4a--Parallel_Programming_Shared_Memory.ipynb
+++ b/notebooks/4a--Parallel_Programming_Shared_Memory.ipynb
@@ -258,11 +258,10 @@
     "* Processes (shared memory)\n",
     "    * `multiprocessing`, comparably easy to use\n",
     "    * restricted to one node\n",
-    "* MPI (distributed memory)\n",
+    "* MPI or parallel frameworks (distributed memory)\n",
     "    * `mpi4py`\n",
     "    * more complex\n",
-    "    * can be used over a cluster\n",
-    "    * separate lecture"
+    "    * can be used over a cluster"
    ]
   },
   {
@@ -318,7 +317,9 @@
     "* Idea: Start several processes on one node to distribute the workload over CPUs\n",
     "* Use processes instead of threads $\\to$ sidestep the global interpreter lock\n",
     "* `multiprocessing` module, part of the Python standard library\n",
-    "* Most important use case: Data parallelism with the `Pool` class"
+    "* Most important use case: Data parallelism with the `Pool` class\n",
+    "* Explicit interprocess communication possible via Queues\n",
+    "* https://docs.python.org/3/library/multiprocessing.html"
    ]
   },
   {
@@ -461,9 +462,10 @@
     "### Asynchronous parallel computing via `concurrent.futures`\n",
     "\n",
     "* `concurrent.futures` enables the *asynchronous* execution of tasks\n",
-    "* useful with `ProcessPoolExecutor` which actually builds upon `multiprocessing`\n",
+    "* useful with `ProcessPoolExecutor()` which actually builds upon `multiprocessing`\n",
     "* `map` offloads tasks to the worker Pool and returns an iterator that is order-preserving\n",
-    "* 'futures' are tasks that are offloaded via `submit()`, `as_completed` provides an iterator in completion-order"
+    "* 'futures' are tasks that are offloaded via `submit()`, `as_completed` provides an iterator in completion-order\n",
+    "* https://docs.python.org/3/library/concurrent.futures.html"
    ]
   },
   {
diff --git a/notebooks/4b--Parallel_Frameworks.ipynb b/notebooks/4b--Parallel_Frameworks.ipynb
index fc37ee6..84b37c0 100644
--- a/notebooks/4b--Parallel_Frameworks.ipynb
+++ b/notebooks/4b--Parallel_Frameworks.ipynb
@@ -27,7 +27,7 @@
     "* Motivation\n",
     "* Overview on Parallel Frameworks\n",
     "* Example: Dask\n",
-    "    * Concepts\n",
+    "    * Basic concepts\n",
     "    * Dask-MPI on a Slurm cluster"
    ]
   },
@@ -82,7 +82,7 @@
     "    * not designed to run web services (e.g. dashboards, scheduler services)\n",
     "    * workloads are submitted via batch jobs\n",
     "    * non-interactive use highly preferred\n",
-    "    * limited support by Python frameworks for parallel computing (exception: Dask), often workarounds needed"
+    "    * sometimes workarounds are needed to get Python frameworks for parallel computing to run (exception: Dask-MPI)"
    ]
   },
   {
@@ -98,13 +98,14 @@
     "* Dask is a library for parallel distributed computing in Python\n",
     "* Components\n",
     "    * resource abstraction called Cluster (a potentially distributed scalable pool of workers), e.g.\n",
-    "        * LocalCluster()\n",
-    "        * SSHCluster()\n",
-    "        * MPI-based cluster\n",
+    "        * LocalCluster() : default, workers on local machine\n",
+    "        * SSHCluster() : workers on remote machines accessible via SSH\n",
+    "        * KubeCluster() : workers on pods running in a Kubernetes cluster\n",
+    "        * MPI-based cluster : workers running as MPI tasks on an HPC system\n",
     "    * dynamic task scheduler\n",
     "    * parallel collections such as arrays and dataframes\n",
     "\n",
-    "![Dask](fig/dask-overview.svg)\n",
+    "![Dask Concepts](fig/dask-overview.svg)\n",
     "(image credit: dask documentation)"
    ]
   },
@@ -120,7 +121,11 @@
     "\n",
     "* *Dask Array* implements a subset of the NumPy ndarray interface using blocked algorithms\n",
     "* it cuts up the large array into many small arrays for parallel distributed processing\n",
-    "* Dask blocked algorithms are coordinated using Dask graphs"
+    "* Dask blocked algorithms are mapped to tasks and coordinated using Dask graphs\n",
+    "* not limited to native NumPy, supports generic ndarray-like implementations (CuPy, H5PY)\n",
+    "\n",
+    "![Dask Array](fig/dask-array.svg)\n",
+    "(image credit: dask documentation)"
    ]
   },
   {
@@ -626,7 +631,7 @@
     "\n",
     "* eager evaluation of custom functions via the Dask workers\n",
     "* Dask futures implements most of `concurrent.futures` for distributed processing\n",
-    "    * `Client.map()` $\\to$ returns an iterator containing the return values of the map'ped function\n",
+    "    * `Client.map()` $\\to$ returns an iterator on the return values of the map'ped function\n",
     "    * `Client.submit()` $\\to$ return value must be fetched using the (blocking) `result()` call of the futures object\n",
     "* futures (i.e. function and its arguments) are sent as tasks to remote workers for processing, the Dask scheduler takes care of building and updating the dependency graph"
    ]
@@ -634,7 +639,11 @@
   {
    "cell_type": "code",
    "execution_count": 25,
-   "metadata": {},
+   "metadata": {
+    "slideshow": {
+     "slide_type": "subslide"
+    }
+   },
    "outputs": [
     {
      "name": "stdout",
diff --git a/notebooks/fig/dask-array.svg b/notebooks/fig/dask-array.svg
new file mode 100644
index 0000000..bdf33c0
--- /dev/null
+++ b/notebooks/fig/dask-array.svg
@@ -0,0 +1,349 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   width="1470.853"
+   height="699.61102"
+   viewBox="0 0 1470.853 699.61102"
+   fill="none"
+   version="1.1"
+   id="svg4936"
+   sodipodi:docname="dask-array.svg"
+   inkscape:version="1.1.1 (c3084ef, 2021-09-22)"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:svg="http://www.w3.org/2000/svg">
+  <defs
+     id="defs4940" />
+  <sodipodi:namedview
+     id="namedview4938"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageshadow="2"
+     inkscape:pageopacity="0.0"
+     inkscape:pagecheckerboard="0"
+     showgrid="false"
+     fit-margin-top="0"
+     fit-margin-left="0"
+     fit-margin-right="0"
+     fit-margin-bottom="0"
+     inkscape:zoom="0.5787037"
+     inkscape:cx="775.872"
+     inkscape:cy="360.288"
+     inkscape:window-width="2179"
+     inkscape:window-height="969"
+     inkscape:window-x="103"
+     inkscape:window-y="248"
+     inkscape:window-maximized="0"
+     inkscape:current-layer="svg4936" />
+  <g
+     id="g4999"
+     transform="translate(-247.547,-190.194)">
+    <rect
+       x="249.547"
+       y="192.194"
+       width="314.95001"
+       height="136.308"
+       rx="8"
+       fill="#fff7e7"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="rect4866" />
+    <rect
+       x="588.44501"
+       y="192.194"
+       width="100.601"
+       height="136.308"
+       rx="8"
+       fill="#fff7e7"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="rect4868" />
+    <rect
+       x="712.995"
+       y="192.194"
+       width="124.878"
+       height="136.308"
+       rx="8"
+       fill="#fff7e7"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="rect4870" />
+    <rect
+       x="861.823"
+       y="192.194"
+       width="178.935"
+       height="136.308"
+       rx="8"
+       fill="#fff7e7"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="rect4872" />
+    <rect
+       x="1064.71"
+       y="192.194"
+       width="157.18401"
+       height="136.308"
+       rx="8"
+       fill="#fff7e7"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="rect4874" />
+    <rect
+       x="249.547"
+       y="565.37903"
+       width="314.95001"
+       height="136.308"
+       rx="8"
+       fill="#fff7e7"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="rect4876" />
+    <rect
+       x="588.44501"
+       y="565.37903"
+       width="100.601"
+       height="136.308"
+       rx="8"
+       fill="#fff7e7"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="rect4878" />
+    <rect
+       x="712.995"
+       y="565.37903"
+       width="124.878"
+       height="136.308"
+       rx="8"
+       fill="#fff7e7"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="rect4880" />
+    <rect
+       x="861.823"
+       y="565.37903"
+       width="178.935"
+       height="136.308"
+       rx="8"
+       fill="#fff7e7"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="rect4882" />
+    <rect
+       x="1064.71"
+       y="565.37903"
+       width="157.18401"
+       height="136.308"
+       rx="8"
+       fill="#fff7e7"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="rect4884" />
+    <rect
+       x="249.547"
+       y="351.121"
+       width="314.95001"
+       height="191.63901"
+       rx="8"
+       fill="#fff7e7"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="rect4886" />
+    <rect
+       x="588.44501"
+       y="351.121"
+       width="100.601"
+       height="191.63901"
+       rx="8"
+       fill="#fff7e7"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="rect4888" />
+    <rect
+       x="712.995"
+       y="351.121"
+       width="124.878"
+       height="191.63901"
+       rx="8"
+       fill="#fff7e7"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="rect4890" />
+    <rect
+       x="861.823"
+       y="351.121"
+       width="178.935"
+       height="191.63901"
+       rx="8"
+       fill="#fff7e7"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="rect4892" />
+    <rect
+       x="1064.71"
+       y="351.121"
+       width="157.18401"
+       height="191.63901"
+       rx="8"
+       fill="#fdd3a6"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="rect4894" />
+    <rect
+       x="249.547"
+       y="724.30603"
+       width="314.95001"
+       height="163.49899"
+       rx="8"
+       fill="#fff7e7"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="rect4896" />
+    <rect
+       x="588.44501"
+       y="724.30603"
+       width="100.601"
+       height="163.49899"
+       rx="8"
+       fill="#fff7e7"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="rect4898" />
+    <rect
+       x="712.995"
+       y="724.30603"
+       width="124.878"
+       height="163.49899"
+       rx="8"
+       fill="#fff7e7"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="rect4900" />
+    <rect
+       x="861.823"
+       y="724.30603"
+       width="178.935"
+       height="163.49899"
+       rx="8"
+       fill="#fff7e7"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="rect4902" />
+    <rect
+       x="1064.71"
+       y="724.30603"
+       width="157.18401"
+       height="163.49899"
+       rx="8"
+       fill="#fff7e7"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="rect4904" />
+    <line
+       x1="1089.63"
+       y1="351.866"
+       x2="1089.63"
+       y2="544.76001"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="line4906" />
+    <line
+       x1="1116.36"
+       y1="351.866"
+       x2="1116.36"
+       y2="544.76001"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="line4908" />
+    <line
+       x1="1143.08"
+       y1="351.866"
+       x2="1143.08"
+       y2="544.76001"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="line4910" />
+    <line
+       x1="1169.8101"
+       y1="351.866"
+       x2="1169.8101"
+       y2="544.76001"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="line4912" />
+    <line
+       x1="1196.54"
+       y1="351.866"
+       x2="1196.54"
+       y2="544.76001"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="line4914" />
+    <line
+       x1="1223.89"
+       y1="389.10101"
+       x2="1062.71"
+       y2="389.10101"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="line4916" />
+    <line
+       x1="1223.89"
+       y1="427.54501"
+       x2="1062.71"
+       y2="427.54501"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="line4918" />
+    <line
+       x1="1223.89"
+       y1="465.98801"
+       x2="1062.71"
+       y2="465.98801"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="line4920" />
+    <line
+       x1="1223.89"
+       y1="504.431"
+       x2="1062.71"
+       y2="504.431"
+       stroke="#fe6939"
+       stroke-width="4"
+       id="line4922" />
+    <path
+       d="m 1353.74,433.431 h -6.18 l -15.84,-25.219 v 25.219 h -6.18 v -35.547 h 6.18 l 15.89,25.318 v -25.318 h 6.13 z m 22.73,-2.588 c -1.74,2.051 -4.21,3.077 -7.42,3.077 -2.87,0 -5.04,-0.839 -6.52,-2.515 -1.46,-1.677 -2.2,-4.102 -2.2,-7.275 v -17.115 h 5.94 v 17.041 c 0,3.353 1.39,5.03 4.17,5.03 2.88,0 4.83,-1.034 5.84,-3.101 v -18.97 h 5.93 v 26.416 h -5.59 z m 17.36,-23.828 0.17,2.759 c 1.86,-2.165 4.39,-3.247 7.62,-3.247 3.53,0 5.95,1.351 7.25,4.053 1.92,-2.702 4.62,-4.053 8.1,-4.053 2.92,0 5.08,0.806 6.5,2.417 1.43,1.611 2.16,3.988 2.2,7.129 v 17.358 h -5.94 v -17.187 c 0,-1.677 -0.36,-2.905 -1.1,-3.687 -0.73,-0.781 -1.94,-1.172 -3.63,-1.172 -1.35,0 -2.46,0.367 -3.32,1.099 -0.85,0.716 -1.44,1.66 -1.79,2.832 l 0.03,18.115 h -5.93 v -17.383 c -0.09,-3.108 -1.67,-4.663 -4.77,-4.663 -2.37,0 -4.06,0.969 -5.05,2.906 v 19.14 h -5.93 v -26.416 z m 44.68,13.208 v 13.208 h -6.18 v -35.547 h 13.6 c 3.97,0 7.12,1.034 9.45,3.101 2.34,2.067 3.51,4.801 3.51,8.203 0,3.483 -1.14,6.193 -3.44,8.13 -2.28,1.937 -5.48,2.905 -9.59,2.905 z m 0,-4.956 h 7.42 c 2.2,0 3.87,-0.512 5.03,-1.538 1.15,-1.042 1.73,-2.539 1.73,-4.492 0,-1.921 -0.58,-3.451 -1.76,-4.59 -1.17,-1.156 -2.78,-1.75 -4.83,-1.782 h -7.59 z m 34.86,9.668 5.37,-17.92 h 6.32 l -10.49,30.42 c -1.61,4.444 -4.35,6.665 -8.21,6.665 -0.86,0 -1.81,-0.146 -2.85,-0.439 v -4.59 l 1.12,0.073 c 1.5,0 2.62,-0.277 3.37,-0.83 0.76,-0.537 1.37,-1.448 1.81,-2.734 l 0.85,-2.271 -9.28,-26.294 h 6.4 z m -105.54,59.22 h -13.77 l -2.88,8.276 h -6.42 l 13.42,-35.547 h 5.55 l 13.45,35.547 h -6.45 z m -12.04,-4.981 h 10.3 l -5.15,-14.746 z m 38.7,-7.739 c -0.78,-0.13 -1.59,-0.195 -2.42,-0.195 -2.72,0 -4.55,1.042 -5.49,3.125 v 18.066 h -5.93 v -26.416 h 5.66 l 0.15,2.954 c 1.43,-2.295 3.41,-3.442 5.95,-3.442 0.85,0 1.55,0.114 2.1,0.342 z m 17.58,0 c -0.78,-0.13 -1.59,-0.195 -2.42,-0.195 -2.72,0 -4.55,1.042 -5.49,3.125 v 18.066 h -5.94 v -26.416 h 5.67 l 0.14,2.954 c 1.44,-2.295 3.42,-3.442 5.96,-3.442 0.85,0 1.55,0.114 2.1,0.342 z m 18.8,20.996 c -0.27,-0.504 -0.49,-1.326 -0.69,-2.466 -1.89,1.97 -4.2,2.955 -6.93,2.955 -2.65,0 -4.82,-0.757 -6.5,-2.271 -1.67,-1.514 -2.51,-3.385 -2.51,-5.615 0,-2.816 1.04,-4.973 3.12,-6.47 2.1,-1.514 5.1,-2.27 8.99,-2.27 h 3.64 v -1.734 c 0,-1.367 -0.39,-2.458 -1.15,-3.271 -0.77,-0.83 -1.93,-1.245 -3.49,-1.245 -1.35,0 -2.46,0.341 -3.32,1.025 -0.87,0.667 -1.3,1.522 -1.3,2.563 h -5.93 c 0,-1.448 0.48,-2.799 1.44,-4.052 0.96,-1.27 2.26,-2.263 3.91,-2.979 1.66,-0.716 3.51,-1.074 5.54,-1.074 3.09,0 5.56,0.781 7.4,2.344 1.84,1.546 2.78,3.727 2.83,6.543 v 11.914 c 0,2.376 0.33,4.272 1,5.688 v 0.415 z m -6.52,-4.272 c 1.17,0 2.27,-0.285 3.29,-0.855 1.04,-0.569 1.83,-1.334 2.35,-2.295 v -4.98 h -3.2 c -2.2,0 -3.85,0.382 -4.96,1.147 -1.1,0.765 -1.66,1.848 -1.66,3.247 0,1.14 0.38,2.051 1.13,2.735 0.76,0.667 1.78,1.001 3.05,1.001 z m 26.63,-4.224 5.37,-17.92 h 6.33 l -10.5,30.42 c -1.61,4.444 -4.35,6.665 -8.2,6.665 -0.87,0 -1.82,-0.146 -2.86,-0.439 v -4.59 l 1.12,0.073 c 1.5,0 2.62,-0.277 3.37,-0.83 0.77,-0.537 1.37,-1.448 1.81,-2.734 l 0.85,-2.271 -9.27,-26.294 h 6.39 z"
+       fill="#1d1d1d"
+       id="path4924" />
+    <path
+       d="m 1607.19,568.26 v -35.547 h 10.5 c 3.14,0 5.92,0.7 8.35,2.1 2.44,1.399 4.33,3.385 5.66,5.957 1.34,2.571 2,5.517 2,8.838 v 1.782 c 0,3.369 -0.67,6.331 -2.02,8.887 -1.34,2.555 -3.25,4.524 -5.74,5.908 -2.47,1.383 -5.31,2.075 -8.52,2.075 z m 6.18,-30.566 v 25.634 h 4.03 c 3.24,0 5.72,-1.009 7.44,-3.027 1.74,-2.034 2.63,-4.948 2.66,-8.74 v -1.978 c 0,-3.857 -0.83,-6.803 -2.51,-8.838 -1.68,-2.034 -4.11,-3.051 -7.3,-3.051 z m 41.7,30.566 c -0.26,-0.505 -0.49,-1.326 -0.69,-2.466 -1.88,1.97 -4.2,2.954 -6.93,2.954 -2.65,0 -4.82,-0.757 -6.49,-2.27 -1.68,-1.514 -2.52,-3.386 -2.52,-5.615 0,-2.816 1.04,-4.973 3.13,-6.47 2.1,-1.514 5.09,-2.271 8.98,-2.271 h 3.64 v -1.733 c 0,-1.367 -0.38,-2.458 -1.15,-3.272 -0.76,-0.83 -1.93,-1.245 -3.49,-1.245 -1.35,0 -2.46,0.342 -3.32,1.026 -0.86,0.667 -1.29,1.522 -1.29,2.563 H 1639 c 0,-1.448 0.48,-2.799 1.44,-4.053 0.96,-1.269 2.27,-2.262 3.91,-2.978 1.66,-0.716 3.51,-1.074 5.54,-1.074 3.09,0 5.56,0.781 7.4,2.343 1.84,1.547 2.78,3.728 2.83,6.543 v 11.914 c 0,2.377 0.33,4.273 1,5.689 v 0.415 z m -6.52,-4.272 c 1.17,0 2.27,-0.285 3.29,-0.855 1.05,-0.57 1.83,-1.335 2.35,-2.295 v -4.98 h -3.2 c -2.2,0 -3.85,0.382 -4.96,1.147 -1.1,0.765 -1.66,1.847 -1.66,3.247 0,1.14 0.38,2.051 1.13,2.735 0.76,0.667 1.78,1.001 3.05,1.001 z m 32.59,-2.906 c 0,-1.058 -0.44,-1.863 -1.32,-2.417 -0.86,-0.553 -2.3,-1.041 -4.32,-1.465 -2.02,-0.423 -3.7,-0.96 -5.05,-1.611 -2.96,-1.432 -4.45,-3.507 -4.45,-6.225 0,-2.279 0.96,-4.183 2.89,-5.713 1.92,-1.53 4.36,-2.295 7.32,-2.295 3.16,0 5.7,0.781 7.64,2.343 1.95,1.563 2.93,3.589 2.93,6.08 h -5.93 c 0,-1.14 -0.42,-2.084 -1.27,-2.832 -0.85,-0.765 -1.97,-1.148 -3.37,-1.148 -1.3,0 -2.37,0.301 -3.2,0.903 -0.81,0.603 -1.22,1.408 -1.22,2.417 0,0.912 0.38,1.62 1.15,2.124 0.76,0.505 2.31,1.018 4.64,1.538 2.32,0.505 4.15,1.115 5.47,1.832 1.33,0.699 2.31,1.546 2.95,2.539 0.65,0.992 0.98,2.197 0.98,3.613 0,2.376 -0.99,4.305 -2.96,5.786 -1.97,1.465 -4.55,2.197 -7.74,2.197 -2.16,0 -4.09,-0.39 -5.78,-1.172 -1.7,-0.781 -3.01,-1.855 -3.96,-3.222 -0.94,-1.367 -1.41,-2.84 -1.41,-4.419 h 5.76 c 0.08,1.4 0.61,2.482 1.58,3.247 0.98,0.749 2.27,1.123 3.89,1.123 1.56,0 2.75,-0.293 3.56,-0.879 0.81,-0.602 1.22,-1.383 1.22,-2.344 z m 19.61,-4.15 -2.64,2.71 v 8.618 h -5.93 v -37.5 h 5.93 v 21.631 l 1.85,-2.319 7.3,-8.228 h 7.13 l -9.81,11.011 10.86,15.405 h -6.86 z m -77.2,62.052 h -13.77 l -2.88,8.276 h -6.42 l 13.42,-35.547 h 5.55 l 13.45,35.547 h -6.45 z m -12.04,-4.981 h 10.31 l -5.16,-14.746 z m 38.7,-7.739 c -0.78,-0.13 -1.59,-0.195 -2.42,-0.195 -2.72,0 -4.55,1.041 -5.49,3.125 v 18.066 h -5.93 v -26.416 h 5.66 l 0.15,2.954 c 1.43,-2.295 3.41,-3.442 5.95,-3.442 0.85,0 1.55,0.114 2.1,0.342 z m 17.58,0 c -0.78,-0.13 -1.59,-0.195 -2.42,-0.195 -2.72,0 -4.55,1.041 -5.49,3.125 v 18.066 h -5.94 v -26.416 h 5.67 l 0.14,2.954 c 1.44,-2.295 3.42,-3.442 5.96,-3.442 0.85,0 1.55,0.114 2.1,0.342 z m 18.8,20.996 c -0.26,-0.505 -0.49,-1.326 -0.69,-2.466 -1.89,1.97 -4.2,2.954 -6.93,2.954 -2.65,0 -4.82,-0.757 -6.5,-2.27 -1.67,-1.514 -2.51,-3.386 -2.51,-5.615 0,-2.816 1.04,-4.973 3.12,-6.47 2.1,-1.514 5.1,-2.271 8.99,-2.271 h 3.64 v -1.733 c 0,-1.367 -0.39,-2.458 -1.15,-3.272 -0.77,-0.83 -1.93,-1.245 -3.49,-1.245 -1.35,0 -2.46,0.342 -3.32,1.026 -0.86,0.667 -1.3,1.522 -1.3,2.563 h -5.93 c 0,-1.448 0.48,-2.799 1.44,-4.053 0.96,-1.269 2.26,-2.262 3.91,-2.978 1.66,-0.716 3.51,-1.074 5.54,-1.074 3.09,0 5.56,0.781 7.4,2.343 1.84,1.547 2.78,3.728 2.83,6.543 v 11.914 c 0,2.377 0.33,4.273 1,5.689 v 0.415 z m -6.52,-4.272 c 1.17,0 2.27,-0.285 3.29,-0.855 1.04,-0.57 1.83,-1.335 2.35,-2.295 v -4.98 h -3.2 c -2.2,0 -3.85,0.382 -4.96,1.147 -1.1,0.765 -1.66,1.847 -1.66,3.247 0,1.14 0.38,2.051 1.13,2.735 0.76,0.667 1.78,1.001 3.05,1.001 z m 26.63,-4.224 5.37,-17.92 h 6.33 l -10.5,30.42 c -1.61,4.443 -4.35,6.665 -8.2,6.665 -0.87,0 -1.82,-0.147 -2.86,-0.439 v -4.59 l 1.12,0.073 c 1.5,0 2.62,-0.277 3.37,-0.83 0.77,-0.537 1.37,-1.449 1.81,-2.735 l 0.85,-2.27 -9.27,-26.294 h 6.39 z"
+       fill="#1d1d1d"
+       id="path4926" />
+    <path
+       d="m 1530.34,201.473 h 17.11 c 3.86,0 7,3.134 7,7 v 662.666 c 0,3.866 -3.14,7 -7,7 h -17.11"
+       stroke="#62636c"
+       stroke-width="4"
+       id="path4928" />
+    <line
+       x1="1554.45"
+       y1="537.80603"
+       x2="1575.34"
+       y2="537.80603"
+       stroke="#62636c"
+       stroke-width="4"
+       id="line4930" />
+    <path
+       d="m 1258,355.132 h 17.1 c 3.87,0 7,3.134 7,7 v 175.467 c 0,3.866 -3.13,7 -7,7 H 1258"
+       stroke="#62636c"
+       stroke-width="4"
+       id="path4932" />
+    <line
+       x1="1282.1"
+       y1="447.866"
+       x2="1303"
+       y2="447.866"
+       stroke="#62636c"
+       stroke-width="4"
+       id="line4934" />
+  </g>
+</svg>
-- 
GitLab