Initial commit

This commit is contained in:
Julian Ospald 2024-09-14 21:27:25 +08:00
commit 4aab758b5c
No known key found for this signature in database
GPG Key ID: 4275CDA6A29BED43
26 changed files with 1602 additions and 0 deletions

BIN
512px-Tux.svg.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 86 KiB

BIN
blender.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.0 KiB

BIN
chain-saw.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 43 KiB

BIN
debian.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 26 KiB

BIN
downloads.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 40 KiB

BIN
feedback.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 17 KiB

BIN
firefox.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
ghaction.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

BIN
ghcup.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

BIN
haskell_logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 93 KiB

BIN
install.dia Normal file

Binary file not shown.

393
install.svg Normal file
View File

@ -0,0 +1,393 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="753" height="333" viewBox="0 0 753 333">
<defs>
<g>
<g id="glyph-0-0">
<path d="M 6.265625 -9.09375 L 7.453125 -9.09375 L 7.453125 -2.9375 C 7.453125 -1.914062 7.125 -1.148438 6.46875 -0.640625 C 5.8125 -0.128906 5.039062 0.125 4.15625 0.125 C 3.226562 0.125 2.445312 -0.128906 1.8125 -0.640625 C 1.1875 -1.148438 0.875 -1.914062 0.875 -2.9375 L 0.875 -9.09375 L 2.0625 -9.09375 L 2.0625 -2.9375 C 2.0625 -2.226562 2.253906 -1.703125 2.640625 -1.359375 C 3.023438 -1.023438 3.53125 -0.859375 4.15625 -0.859375 C 4.789062 -0.859375 5.300781 -1.023438 5.6875 -1.359375 C 6.070312 -1.703125 6.265625 -2.226562 6.265625 -2.9375 Z M 6.265625 -9.09375 "/>
</g>
<g id="glyph-0-1">
<path d="M 4.8125 -1.796875 C 4.8125 -2.035156 4.722656 -2.253906 4.546875 -2.453125 C 4.367188 -2.648438 3.953125 -2.816406 3.296875 -2.953125 C 2.535156 -3.109375 1.929688 -3.332031 1.484375 -3.625 C 1.046875 -3.914062 0.828125 -4.34375 0.828125 -4.90625 C 0.828125 -5.445312 1.050781 -5.910156 1.5 -6.296875 C 1.957031 -6.691406 2.566406 -6.890625 3.328125 -6.890625 C 4.140625 -6.890625 4.769531 -6.679688 5.21875 -6.265625 C 5.675781 -5.859375 5.90625 -5.363281 5.90625 -4.78125 L 4.75 -4.78125 C 4.75 -5.050781 4.625 -5.3125 4.375 -5.5625 C 4.132812 -5.8125 3.785156 -5.9375 3.328125 -5.9375 C 2.847656 -5.9375 2.503906 -5.832031 2.296875 -5.625 C 2.085938 -5.414062 1.984375 -5.1875 1.984375 -4.9375 C 1.984375 -4.695312 2.078125 -4.5 2.265625 -4.34375 C 2.460938 -4.195312 2.878906 -4.050781 3.515625 -3.90625 C 4.335938 -3.71875 4.953125 -3.472656 5.359375 -3.171875 C 5.765625 -2.867188 5.96875 -2.4375 5.96875 -1.875 C 5.96875 -1.28125 5.726562 -0.796875 5.25 -0.421875 C 4.78125 -0.0546875 4.148438 0.125 3.359375 0.125 C 2.460938 0.125 1.773438 -0.101562 1.296875 -0.5625 C 0.828125 -1.019531 0.59375 -1.53125 0.59375 -2.09375 L 1.75 -2.09375 C 1.78125 -1.613281 1.96875 -1.28125 2.3125 -1.09375 C 2.65625 -0.914062 3.003906 -0.828125 3.359375 -0.828125 C 3.828125 -0.828125 4.1875 -0.914062 4.4375 -1.09375 C 4.6875 -1.28125 4.8125 -1.515625 4.8125 -1.796875 Z M 4.8125 -1.796875 "/>
</g>
<g id="glyph-0-2">
<path d="M 6.234375 -1.1875 C 6.015625 -0.851562 5.703125 -0.550781 5.296875 -0.28125 C 4.890625 -0.0078125 4.351562 0.125 3.6875 0.125 C 2.75 0.125 1.992188 -0.179688 1.421875 -0.796875 C 0.859375 -1.410156 0.578125 -2.191406 0.578125 -3.140625 L 0.578125 -3.40625 C 0.578125 -4.144531 0.71875 -4.769531 1 -5.28125 C 1.28125 -5.800781 1.644531 -6.195312 2.09375 -6.46875 C 2.550781 -6.75 3.03125 -6.890625 3.53125 -6.890625 C 4.5 -6.890625 5.203125 -6.570312 5.640625 -5.9375 C 6.085938 -5.3125 6.3125 -4.523438 6.3125 -3.578125 L 6.3125 -3.0625 L 1.75 -3.0625 C 1.757812 -2.4375 1.941406 -1.90625 2.296875 -1.46875 C 2.648438 -1.03125 3.132812 -0.8125 3.75 -0.8125 C 4.15625 -0.8125 4.5 -0.894531 4.78125 -1.0625 C 5.070312 -1.226562 5.320312 -1.453125 5.53125 -1.734375 Z M 3.53125 -5.9375 C 3.070312 -5.9375 2.6875 -5.769531 2.375 -5.4375 C 2.0625 -5.101562 1.863281 -4.625 1.78125 -4 L 5.15625 -4 L 5.15625 -4.09375 C 5.132812 -4.539062 5.003906 -4.957031 4.765625 -5.34375 C 4.535156 -5.738281 4.125 -5.9375 3.53125 -5.9375 Z M 3.53125 -5.9375 "/>
</g>
<g id="glyph-0-3">
<path d="M 3.578125 -5.78125 C 2.828125 -5.78125 2.3125 -5.453125 2.03125 -4.796875 L 2.03125 0 L 0.875 0 L 0.875 -6.765625 L 2 -6.765625 L 2.03125 -5.984375 C 2.40625 -6.585938 2.941406 -6.890625 3.640625 -6.890625 C 3.859375 -6.890625 4.03125 -6.859375 4.15625 -6.796875 L 4.140625 -5.71875 C 3.972656 -5.757812 3.785156 -5.78125 3.578125 -5.78125 Z M 3.578125 -5.78125 "/>
</g>
<g id="glyph-0-4">
<path d="M 0.890625 -8.546875 C 0.890625 -8.734375 0.945312 -8.890625 1.0625 -9.015625 C 1.175781 -9.148438 1.34375 -9.21875 1.5625 -9.21875 C 1.789062 -9.21875 1.960938 -9.148438 2.078125 -9.015625 C 2.191406 -8.890625 2.25 -8.734375 2.25 -8.546875 C 2.25 -8.367188 2.191406 -8.21875 2.078125 -8.09375 C 1.960938 -7.96875 1.789062 -7.90625 1.5625 -7.90625 C 1.34375 -7.90625 1.175781 -7.96875 1.0625 -8.09375 C 0.945312 -8.21875 0.890625 -8.367188 0.890625 -8.546875 Z M 2.140625 -6.765625 L 2.140625 0 L 0.96875 0 L 0.96875 -6.765625 Z M 2.140625 -6.765625 "/>
</g>
<g id="glyph-0-5">
<path d="M 3.6875 -5.90625 C 3.3125 -5.90625 2.984375 -5.804688 2.703125 -5.609375 C 2.421875 -5.410156 2.195312 -5.148438 2.03125 -4.828125 L 2.03125 0 L 0.875 0 L 0.875 -6.765625 L 1.96875 -6.765625 L 2.015625 -5.921875 C 2.523438 -6.566406 3.195312 -6.890625 4.03125 -6.890625 C 4.695312 -6.890625 5.222656 -6.703125 5.609375 -6.328125 C 5.992188 -5.960938 6.191406 -5.34375 6.203125 -4.46875 L 6.203125 0 L 5.03125 0 L 5.03125 -4.4375 C 5.03125 -4.96875 4.914062 -5.34375 4.6875 -5.5625 C 4.457031 -5.789062 4.125 -5.90625 3.6875 -5.90625 Z M 3.6875 -5.90625 "/>
</g>
<g id="glyph-0-6">
<path d="M 3.75 0 C 3.476562 0.0820312 3.175781 0.125 2.84375 0.125 C 2.414062 0.125 2.050781 -0.00390625 1.75 -0.265625 C 1.445312 -0.523438 1.296875 -1 1.296875 -1.6875 L 1.296875 -5.875 L 0.0625 -5.875 L 0.0625 -6.765625 L 1.296875 -6.765625 L 1.296875 -8.40625 L 2.453125 -8.40625 L 2.453125 -6.765625 L 3.71875 -6.765625 L 3.71875 -5.875 L 2.453125 -5.875 L 2.453125 -1.671875 C 2.453125 -1.328125 2.523438 -1.109375 2.671875 -1.015625 C 2.828125 -0.921875 3 -0.875 3.1875 -0.875 C 3.332031 -0.875 3.515625 -0.894531 3.734375 -0.9375 Z M 3.75 0 "/>
</g>
<g id="glyph-0-7">
<path d="M 5.0625 0 C 4.976562 -0.164062 4.921875 -0.40625 4.890625 -0.71875 C 4.671875 -0.488281 4.398438 -0.289062 4.078125 -0.125 C 3.753906 0.0390625 3.382812 0.125 2.96875 0.125 C 2.28125 0.125 1.726562 -0.0664062 1.3125 -0.453125 C 0.894531 -0.835938 0.6875 -1.3125 0.6875 -1.875 C 0.6875 -2.601562 0.957031 -3.15625 1.5 -3.53125 C 2.050781 -3.90625 2.789062 -4.09375 3.71875 -4.09375 L 4.875 -4.09375 L 4.875 -4.640625 C 4.875 -5.035156 4.753906 -5.351562 4.515625 -5.59375 C 4.273438 -5.832031 3.914062 -5.953125 3.4375 -5.953125 C 3 -5.953125 2.644531 -5.84375 2.375 -5.625 C 2.113281 -5.414062 1.984375 -5.171875 1.984375 -4.890625 L 0.828125 -4.890625 C 0.828125 -5.367188 1.066406 -5.820312 1.546875 -6.25 C 2.035156 -6.675781 2.691406 -6.890625 3.515625 -6.890625 C 4.242188 -6.890625 4.84375 -6.703125 5.3125 -6.328125 C 5.789062 -5.953125 6.03125 -5.382812 6.03125 -4.625 L 6.03125 -1.59375 C 6.03125 -0.96875 6.109375 -0.46875 6.265625 -0.09375 L 6.265625 0 Z M 3.140625 -0.890625 C 3.554688 -0.890625 3.914062 -0.992188 4.21875 -1.203125 C 4.53125 -1.410156 4.75 -1.640625 4.875 -1.890625 L 4.875 -3.28125 L 3.796875 -3.28125 C 2.492188 -3.257812 1.84375 -2.84375 1.84375 -2.03125 C 1.84375 -1.71875 1.953125 -1.445312 2.171875 -1.21875 C 2.390625 -1 2.710938 -0.890625 3.140625 -0.890625 Z M 3.140625 -0.890625 "/>
</g>
<g id="glyph-0-8">
<path d="M 2.140625 -9.59375 L 2.140625 0 L 0.96875 0 L 0.96875 -9.59375 Z M 2.140625 -9.59375 "/>
</g>
<g id="glyph-0-9">
</g>
<g id="glyph-0-10">
<path d="M 3.96875 0.125 C 3.15625 0.125 2.507812 -0.132812 2.03125 -0.65625 L 2.03125 2.59375 L 0.875 2.59375 L 0.875 -6.765625 L 1.9375 -6.765625 L 2 -6.015625 C 2.46875 -6.597656 3.117188 -6.890625 3.953125 -6.890625 C 4.804688 -6.890625 5.457031 -6.570312 5.90625 -5.9375 C 6.363281 -5.300781 6.59375 -4.46875 6.59375 -3.4375 L 6.59375 -3.3125 C 6.59375 -2.320312 6.363281 -1.5 5.90625 -0.84375 C 5.445312 -0.195312 4.800781 0.125 3.96875 0.125 Z M 3.609375 -5.90625 C 2.910156 -5.90625 2.382812 -5.597656 2.03125 -4.984375 L 2.03125 -1.75 C 2.382812 -1.132812 2.914062 -0.828125 3.625 -0.828125 C 4.25 -0.828125 4.707031 -1.070312 5 -1.5625 C 5.289062 -2.050781 5.4375 -2.632812 5.4375 -3.3125 L 5.4375 -3.4375 C 5.4375 -4.101562 5.289062 -4.679688 5 -5.171875 C 4.707031 -5.660156 4.242188 -5.90625 3.609375 -5.90625 Z M 3.609375 -5.90625 "/>
</g>
<g id="glyph-0-11">
<path d="M 3.59375 -0.828125 C 4 -0.828125 4.359375 -0.945312 4.671875 -1.1875 C 4.984375 -1.4375 5.15625 -1.753906 5.1875 -2.140625 L 6.28125 -2.140625 C 6.25 -1.535156 5.96875 -1.003906 5.4375 -0.546875 C 4.914062 -0.0976562 4.300781 0.125 3.59375 0.125 C 2.570312 0.125 1.8125 -0.207031 1.3125 -0.875 C 0.820312 -1.550781 0.578125 -2.34375 0.578125 -3.25 L 0.578125 -3.515625 C 0.578125 -4.421875 0.820312 -5.207031 1.3125 -5.875 C 1.8125 -6.550781 2.570312 -6.890625 3.59375 -6.890625 C 4.382812 -6.890625 5.019531 -6.65625 5.5 -6.1875 C 5.988281 -5.71875 6.25 -5.132812 6.28125 -4.4375 L 5.1875 -4.4375 C 5.15625 -4.851562 4.992188 -5.207031 4.703125 -5.5 C 4.421875 -5.789062 4.050781 -5.9375 3.59375 -5.9375 C 3.113281 -5.9375 2.738281 -5.816406 2.46875 -5.578125 C 2.195312 -5.335938 2.003906 -5.03125 1.890625 -4.65625 C 1.785156 -4.28125 1.734375 -3.898438 1.734375 -3.515625 L 1.734375 -3.25 C 1.734375 -2.851562 1.785156 -2.46875 1.890625 -2.09375 C 2.003906 -1.726562 2.195312 -1.425781 2.46875 -1.1875 C 2.738281 -0.945312 3.113281 -0.828125 3.59375 -0.828125 Z M 3.59375 -0.828125 "/>
</g>
<g id="glyph-0-12">
<path d="M 5.125 0 L 2.78125 -3.140625 L 2.046875 -2.375 L 2.046875 0 L 0.875 0 L 0.875 -9.59375 L 2.046875 -9.59375 L 2.046875 -3.796875 L 2.65625 -4.53125 L 4.765625 -6.765625 L 6.171875 -6.765625 L 3.53125 -3.9375 L 6.484375 0 Z M 5.125 0 "/>
</g>
<g id="glyph-0-13">
<path d="M 3.453125 2.671875 C 3.097656 2.671875 2.664062 2.582031 2.15625 2.40625 C 1.65625 2.238281 1.25 1.9375 0.9375 1.5 L 1.546875 0.8125 C 2.046875 1.414062 2.648438 1.71875 3.359375 1.71875 C 3.910156 1.71875 4.347656 1.5625 4.671875 1.25 C 4.992188 0.945312 5.15625 0.5 5.15625 -0.09375 L 5.15625 -0.6875 C 4.695312 -0.144531 4.066406 0.125 3.265625 0.125 C 2.453125 0.125 1.804688 -0.195312 1.328125 -0.84375 C 0.847656 -1.5 0.609375 -2.320312 0.609375 -3.3125 L 0.609375 -3.4375 C 0.609375 -4.46875 0.84375 -5.300781 1.3125 -5.9375 C 1.789062 -6.570312 2.445312 -6.890625 3.28125 -6.890625 C 4.101562 -6.890625 4.742188 -6.597656 5.203125 -6.015625 L 5.265625 -6.765625 L 6.3125 -6.765625 L 6.3125 -0.140625 C 6.3125 0.753906 6.046875 1.445312 5.515625 1.9375 C 4.984375 2.425781 4.296875 2.671875 3.453125 2.671875 Z M 1.765625 -3.3125 C 1.765625 -2.632812 1.90625 -2.054688 2.1875 -1.578125 C 2.46875 -1.097656 2.921875 -0.859375 3.546875 -0.859375 C 4.273438 -0.859375 4.8125 -1.191406 5.15625 -1.859375 L 5.15625 -4.9375 C 5.007812 -5.21875 4.804688 -5.445312 4.546875 -5.625 C 4.285156 -5.8125 3.957031 -5.90625 3.5625 -5.90625 C 2.925781 -5.90625 2.46875 -5.660156 2.1875 -5.171875 C 1.90625 -4.679688 1.765625 -4.101562 1.765625 -3.4375 Z M 1.765625 -3.3125 "/>
</g>
<g id="glyph-0-14">
<path d="M 4.046875 -5.875 L 2.609375 -5.875 L 2.609375 0 L 1.453125 0 L 1.453125 -5.875 L 0.375 -5.875 L 0.375 -6.765625 L 1.453125 -6.765625 L 1.453125 -7.515625 C 1.460938 -8.234375 1.660156 -8.78125 2.046875 -9.15625 C 2.441406 -9.539062 2.984375 -9.734375 3.671875 -9.734375 C 3.921875 -9.734375 4.1875 -9.695312 4.46875 -9.625 L 4.40625 -8.6875 C 4.226562 -8.71875 4.019531 -8.734375 3.78125 -8.734375 C 3.007812 -8.734375 2.617188 -8.328125 2.609375 -7.515625 L 2.609375 -6.765625 L 4.046875 -6.765625 Z M 4.046875 -5.875 "/>
</g>
<g id="glyph-0-15">
<path d="M 0.578125 -3.453125 C 0.578125 -4.429688 0.847656 -5.25 1.390625 -5.90625 C 1.941406 -6.5625 2.691406 -6.890625 3.640625 -6.890625 C 4.585938 -6.890625 5.332031 -6.566406 5.875 -5.921875 C 6.425781 -5.273438 6.710938 -4.472656 6.734375 -3.515625 L 6.734375 -3.3125 C 6.734375 -2.332031 6.457031 -1.515625 5.90625 -0.859375 C 5.351562 -0.203125 4.601562 0.125 3.65625 0.125 C 2.707031 0.125 1.957031 -0.203125 1.40625 -0.859375 C 0.851562 -1.515625 0.578125 -2.332031 0.578125 -3.3125 Z M 1.734375 -3.3125 C 1.734375 -2.632812 1.890625 -2.050781 2.203125 -1.5625 C 2.523438 -1.070312 3.007812 -0.828125 3.65625 -0.828125 C 4.28125 -0.828125 4.753906 -1.066406 5.078125 -1.546875 C 5.398438 -2.035156 5.5625 -2.613281 5.5625 -3.28125 L 5.5625 -3.453125 C 5.5625 -4.109375 5.398438 -4.6875 5.078125 -5.1875 C 4.765625 -5.6875 4.285156 -5.9375 3.640625 -5.9375 C 3.003906 -5.9375 2.523438 -5.6875 2.203125 -5.1875 C 1.890625 -4.6875 1.734375 -4.109375 1.734375 -3.453125 Z M 1.734375 -3.3125 "/>
</g>
<g id="glyph-0-16">
<path d="M 2.265625 -3.5625 L 2.265625 0 L 1.0625 0 L 1.0625 -9.09375 L 4.40625 -9.09375 C 5.445312 -9.09375 6.238281 -8.832031 6.78125 -8.3125 C 7.332031 -7.789062 7.609375 -7.128906 7.609375 -6.328125 C 7.609375 -5.441406 7.332031 -4.757812 6.78125 -4.28125 C 6.238281 -3.800781 5.445312 -3.5625 4.40625 -3.5625 Z M 2.265625 -8.109375 L 2.265625 -4.546875 L 4.40625 -4.546875 C 5.113281 -4.546875 5.625 -4.707031 5.9375 -5.03125 C 6.25 -5.363281 6.40625 -5.789062 6.40625 -6.3125 C 6.40625 -6.78125 6.25 -7.195312 5.9375 -7.5625 C 5.625 -7.925781 5.113281 -8.109375 4.40625 -8.109375 Z M 2.265625 -8.109375 "/>
</g>
<g id="glyph-0-17">
<path d="M 3.59375 -5.90625 C 2.832031 -5.90625 2.3125 -5.585938 2.03125 -4.953125 L 2.03125 0 L 0.875 0 L 0.875 -6.765625 L 1.96875 -6.765625 L 2 -6.03125 C 2.488281 -6.601562 3.15625 -6.890625 4 -6.890625 C 4.4375 -6.890625 4.820312 -6.800781 5.15625 -6.625 C 5.5 -6.457031 5.757812 -6.179688 5.9375 -5.796875 C 6.164062 -6.117188 6.457031 -6.378906 6.8125 -6.578125 C 7.175781 -6.785156 7.597656 -6.890625 8.078125 -6.890625 C 8.804688 -6.890625 9.367188 -6.691406 9.765625 -6.296875 C 10.160156 -5.910156 10.359375 -5.289062 10.359375 -4.4375 L 10.359375 0 L 9.1875 0 L 9.1875 -4.453125 C 9.1875 -5.023438 9.054688 -5.410156 8.796875 -5.609375 C 8.535156 -5.804688 8.1875 -5.90625 7.75 -5.90625 C 7.28125 -5.90625 6.910156 -5.765625 6.640625 -5.484375 C 6.378906 -5.210938 6.226562 -4.878906 6.1875 -4.484375 L 6.1875 0 L 5.03125 0 L 5.03125 -4.453125 C 5.03125 -4.984375 4.898438 -5.359375 4.640625 -5.578125 C 4.378906 -5.796875 4.03125 -5.90625 3.59375 -5.90625 Z M 3.59375 -5.90625 "/>
</g>
<g id="glyph-0-18">
<path d="M 5.59375 -1.6875 L 8.5625 -9.09375 L 10.109375 -9.09375 L 10.109375 0 L 8.90625 0 L 8.90625 -3.546875 L 9.03125 -7.359375 L 6.03125 0 L 5.125 0 L 2.140625 -7.359375 L 2.25 -3.546875 L 2.25 0 L 1.0625 0 L 1.0625 -9.09375 L 2.609375 -9.09375 Z M 5.59375 -1.6875 "/>
</g>
<g id="glyph-0-19">
<path d="M 5.25 0 L 5.1875 -0.71875 C 4.726562 -0.15625 4.082031 0.125 3.25 0.125 C 2.457031 0.125 1.816406 -0.191406 1.328125 -0.828125 C 0.847656 -1.472656 0.601562 -2.28125 0.59375 -3.25 L 0.59375 -3.4375 C 0.59375 -4.46875 0.835938 -5.300781 1.328125 -5.9375 C 1.816406 -6.570312 2.460938 -6.890625 3.265625 -6.890625 C 4.066406 -6.890625 4.691406 -6.625 5.140625 -6.09375 L 5.140625 -9.59375 L 6.3125 -9.59375 L 6.3125 0 Z M 1.75 -3.3125 C 1.75 -2.632812 1.890625 -2.054688 2.171875 -1.578125 C 2.460938 -1.097656 2.921875 -0.859375 3.546875 -0.859375 C 4.265625 -0.859375 4.796875 -1.1875 5.140625 -1.84375 L 5.140625 -4.953125 C 4.796875 -5.585938 4.269531 -5.90625 3.5625 -5.90625 C 2.925781 -5.90625 2.460938 -5.660156 2.171875 -5.171875 C 1.890625 -4.679688 1.75 -4.101562 1.75 -3.4375 Z M 1.75 -3.3125 "/>
</g>
<g id="glyph-0-20">
<path d="M 0.84375 -3.703125 C 0.84375 -4.910156 1.015625 -5.960938 1.359375 -6.859375 C 1.703125 -7.765625 2.109375 -8.503906 2.578125 -9.078125 C 3.054688 -9.648438 3.492188 -10.046875 3.890625 -10.265625 L 4.140625 -9.5 C 3.648438 -9.132812 3.171875 -8.472656 2.703125 -7.515625 C 2.234375 -6.566406 2 -5.269531 2 -3.625 C 2 -2.039062 2.234375 -0.769531 2.703125 0.1875 C 3.171875 1.15625 3.648438 1.835938 4.140625 2.234375 L 3.890625 2.9375 C 3.492188 2.71875 3.054688 2.320312 2.578125 1.75 C 2.109375 1.1875 1.703125 0.453125 1.359375 -0.453125 C 1.015625 -1.359375 0.84375 -2.441406 0.84375 -3.703125 Z M 0.84375 -3.703125 "/>
</g>
<g id="glyph-0-21">
<path d="M 3.546875 -3.640625 C 3.546875 -2.421875 3.367188 -1.359375 3.015625 -0.453125 C 2.671875 0.453125 2.257812 1.1875 1.78125 1.75 C 1.3125 2.320312 0.878906 2.71875 0.484375 2.9375 L 0.25 2.234375 C 0.726562 1.867188 1.203125 1.195312 1.671875 0.21875 C 2.148438 -0.757812 2.390625 -2.070312 2.390625 -3.71875 C 2.390625 -4.769531 2.269531 -5.6875 2.03125 -6.46875 C 1.800781 -7.25 1.519531 -7.898438 1.1875 -8.421875 C 0.851562 -8.941406 0.539062 -9.320312 0.25 -9.5625 L 0.484375 -10.265625 C 0.878906 -10.046875 1.3125 -9.648438 1.78125 -9.078125 C 2.257812 -8.503906 2.671875 -7.765625 3.015625 -6.859375 C 3.367188 -5.960938 3.546875 -4.890625 3.546875 -3.640625 Z M 3.546875 -3.640625 "/>
</g>
<g id="glyph-0-22">
<path d="M 3.6875 -5.90625 C 3.3125 -5.90625 2.984375 -5.804688 2.703125 -5.609375 C 2.421875 -5.410156 2.195312 -5.148438 2.03125 -4.828125 L 2.03125 0 L 0.875 0 L 0.875 -9.59375 L 2.03125 -9.59375 L 2.03125 -5.953125 C 2.550781 -6.578125 3.21875 -6.890625 4.03125 -6.890625 C 4.695312 -6.890625 5.222656 -6.703125 5.609375 -6.328125 C 5.992188 -5.960938 6.191406 -5.34375 6.203125 -4.46875 L 6.203125 0 L 5.03125 0 L 5.03125 -4.4375 C 5.03125 -4.96875 4.914062 -5.34375 4.6875 -5.5625 C 4.457031 -5.789062 4.125 -5.90625 3.6875 -5.90625 Z M 3.6875 -5.90625 "/>
</g>
<g id="glyph-0-23">
<path d="M 5.90625 -2.296875 C 5.90625 -2.710938 5.765625 -3.046875 5.484375 -3.296875 C 5.203125 -3.546875 4.609375 -3.800781 3.703125 -4.0625 C 2.804688 -4.332031 2.097656 -4.671875 1.578125 -5.078125 C 1.054688 -5.492188 0.796875 -6.050781 0.796875 -6.75 C 0.796875 -7.457031 1.078125 -8.046875 1.640625 -8.515625 C 2.203125 -8.984375 2.953125 -9.21875 3.890625 -9.21875 C 4.910156 -9.21875 5.695312 -8.9375 6.25 -8.375 C 6.8125 -7.8125 7.09375 -7.175781 7.09375 -6.46875 L 5.890625 -6.46875 C 5.890625 -6.976562 5.722656 -7.398438 5.390625 -7.734375 C 5.066406 -8.066406 4.566406 -8.234375 3.890625 -8.234375 C 3.242188 -8.234375 2.765625 -8.09375 2.453125 -7.8125 C 2.148438 -7.53125 2 -7.179688 2 -6.765625 C 2 -6.378906 2.160156 -6.0625 2.484375 -5.8125 C 2.816406 -5.5625 3.351562 -5.332031 4.09375 -5.125 C 5.144531 -4.832031 5.910156 -4.46875 6.390625 -4.03125 C 6.867188 -3.59375 7.109375 -3.019531 7.109375 -2.3125 C 7.109375 -1.570312 6.816406 -0.976562 6.234375 -0.53125 C 5.660156 -0.09375 4.894531 0.125 3.9375 0.125 C 3.382812 0.125 2.84375 0.0195312 2.3125 -0.1875 C 1.789062 -0.394531 1.359375 -0.703125 1.015625 -1.109375 C 0.671875 -1.523438 0.5 -2.035156 0.5 -2.640625 L 1.703125 -2.640625 C 1.703125 -2.015625 1.925781 -1.5625 2.375 -1.28125 C 2.832031 -1 3.351562 -0.859375 3.9375 -0.859375 C 4.570312 -0.859375 5.054688 -0.988281 5.390625 -1.25 C 5.734375 -1.507812 5.90625 -1.859375 5.90625 -2.296875 Z M 5.90625 -2.296875 "/>
</g>
<g id="glyph-0-24">
<path d="M 3.1875 1.046875 C 2.789062 2.097656 2.1875 2.65625 1.375 2.71875 L 1.1875 2.734375 C 0.9375 2.734375 0.71875 2.695312 0.53125 2.625 L 0.53125 1.6875 L 0.84375 1.71875 C 1.226562 1.71875 1.53125 1.632812 1.75 1.46875 C 1.976562 1.3125 2.160156 1.023438 2.296875 0.609375 L 2.546875 -0.078125 L 0.140625 -6.765625 L 1.40625 -6.765625 L 3.09375 -1.703125 L 4.65625 -6.765625 L 5.90625 -6.765625 Z M 3.1875 1.046875 "/>
</g>
<g id="glyph-0-25">
<path d="M 1.65625 -6.765625 L 3.140625 -4.296875 L 4.640625 -6.765625 L 6 -6.765625 L 3.78125 -3.421875 L 6.0625 0 L 4.734375 0 L 3.171875 -2.53125 L 1.609375 0 L 0.265625 0 L 2.53125 -3.421875 L 0.328125 -6.765625 Z M 1.65625 -6.765625 "/>
</g>
<g id="glyph-0-26">
<path d="M 5.078125 0 L 5.046875 -0.671875 C 4.609375 -0.140625 3.953125 0.125 3.078125 0.125 C 2.410156 0.125 1.875 -0.0664062 1.46875 -0.453125 C 1.0625 -0.847656 0.859375 -1.5 0.859375 -2.40625 L 0.859375 -6.765625 L 2.015625 -6.765625 L 2.015625 -2.390625 C 2.015625 -1.773438 2.140625 -1.363281 2.390625 -1.15625 C 2.648438 -0.957031 2.9375 -0.859375 3.25 -0.859375 C 4.125 -0.859375 4.710938 -1.1875 5.015625 -1.84375 L 5.015625 -6.765625 L 6.1875 -6.765625 L 6.1875 0 Z M 5.078125 0 "/>
</g>
<g id="glyph-0-27">
<path d="M 6.609375 -3.3125 C 6.609375 -2.320312 6.378906 -1.5 5.921875 -0.84375 C 5.460938 -0.195312 4.8125 0.125 3.96875 0.125 C 3.113281 0.125 2.457031 -0.175781 2 -0.78125 L 1.9375 0 L 0.875 0 L 0.875 -9.59375 L 2.03125 -9.59375 L 2.03125 -6.03125 C 2.488281 -6.601562 3.132812 -6.890625 3.96875 -6.890625 C 4.8125 -6.890625 5.460938 -6.570312 5.921875 -5.9375 C 6.378906 -5.300781 6.609375 -4.46875 6.609375 -3.4375 Z M 3.671875 -5.90625 C 3.253906 -5.90625 2.910156 -5.804688 2.640625 -5.609375 C 2.378906 -5.410156 2.175781 -5.160156 2.03125 -4.859375 L 2.03125 -1.921875 C 2.1875 -1.617188 2.394531 -1.363281 2.65625 -1.15625 C 2.925781 -0.957031 3.269531 -0.859375 3.6875 -0.859375 C 4.3125 -0.859375 4.757812 -1.097656 5.03125 -1.578125 C 5.300781 -2.054688 5.4375 -2.632812 5.4375 -3.3125 L 5.4375 -3.4375 C 5.4375 -4.101562 5.304688 -4.679688 5.046875 -5.171875 C 4.785156 -5.660156 4.328125 -5.90625 3.671875 -5.90625 Z M 3.671875 -5.90625 "/>
</g>
<g id="glyph-0-28">
<path d="M 0.609375 -5.8125 L 0.609375 -6.765625 L 5.734375 -6.765625 L 5.734375 -5.9375 L 1.96875 -0.953125 L 5.921875 -0.953125 L 5.921875 0 L 0.5625 0 L 0.5625 -0.84375 L 4.28125 -5.8125 Z M 0.609375 -5.8125 "/>
</g>
<g id="glyph-1-0">
<path d="M 3.984375 -6.296875 L 3.984375 0 L 1.859375 0 L 1.859375 -16.046875 L 7.78125 -16.046875 C 9.601562 -16.046875 11 -15.585938 11.96875 -14.671875 C 12.9375 -13.753906 13.421875 -12.582031 13.421875 -11.15625 C 13.421875 -9.601562 12.9375 -8.40625 11.96875 -7.5625 C 11 -6.71875 9.601562 -6.296875 7.78125 -6.296875 Z M 3.984375 -14.3125 L 3.984375 -8.03125 L 7.78125 -8.03125 C 9.03125 -8.03125 9.925781 -8.316406 10.46875 -8.890625 C 11.019531 -9.472656 11.296875 -10.222656 11.296875 -11.140625 C 11.296875 -11.960938 11.019531 -12.695312 10.46875 -13.34375 C 9.925781 -13.988281 9.03125 -14.3125 7.78125 -14.3125 Z M 3.984375 -14.3125 "/>
</g>
<g id="glyph-1-1">
<path d="M 8.921875 0 C 8.785156 -0.289062 8.6875 -0.707031 8.625 -1.25 C 8.25 -0.851562 7.773438 -0.507812 7.203125 -0.21875 C 6.628906 0.0703125 5.972656 0.21875 5.234375 0.21875 C 4.015625 0.21875 3.035156 -0.117188 2.296875 -0.796875 C 1.566406 -1.484375 1.203125 -2.320312 1.203125 -3.3125 C 1.203125 -4.59375 1.6875 -5.566406 2.65625 -6.234375 C 3.625 -6.898438 4.929688 -7.234375 6.578125 -7.234375 L 8.59375 -7.234375 L 8.59375 -8.1875 C 8.59375 -8.882812 8.378906 -9.441406 7.953125 -9.859375 C 7.523438 -10.285156 6.898438 -10.5 6.078125 -10.5 C 5.304688 -10.5 4.679688 -10.3125 4.203125 -9.9375 C 3.734375 -9.5625 3.5 -9.125 3.5 -8.625 L 1.453125 -8.625 C 1.453125 -9.476562 1.878906 -10.28125 2.734375 -11.03125 C 3.597656 -11.78125 4.753906 -12.15625 6.203125 -12.15625 C 7.492188 -12.15625 8.550781 -11.820312 9.375 -11.15625 C 10.207031 -10.5 10.625 -9.5 10.625 -8.15625 L 10.625 -2.796875 C 10.625 -1.691406 10.765625 -0.816406 11.046875 -0.171875 L 11.046875 0 Z M 5.53125 -1.5625 C 6.269531 -1.5625 6.90625 -1.742188 7.4375 -2.109375 C 7.976562 -2.484375 8.363281 -2.894531 8.59375 -3.34375 L 8.59375 -5.796875 L 6.6875 -5.796875 C 4.394531 -5.753906 3.25 -5.019531 3.25 -3.59375 C 3.25 -3.03125 3.441406 -2.550781 3.828125 -2.15625 C 4.210938 -1.757812 4.78125 -1.5625 5.53125 -1.5625 Z M 5.53125 -1.5625 "/>
</g>
<g id="glyph-1-2">
<path d="M 6.328125 -1.453125 C 7.054688 -1.453125 7.691406 -1.664062 8.234375 -2.09375 C 8.785156 -2.53125 9.085938 -3.085938 9.140625 -3.765625 L 11.078125 -3.765625 C 11.023438 -2.703125 10.535156 -1.769531 9.609375 -0.96875 C 8.679688 -0.175781 7.585938 0.21875 6.328125 0.21875 C 4.535156 0.21875 3.203125 -0.367188 2.328125 -1.546875 C 1.460938 -2.734375 1.03125 -4.128906 1.03125 -5.734375 L 1.03125 -6.203125 C 1.03125 -7.796875 1.460938 -9.1875 2.328125 -10.375 C 3.203125 -11.5625 4.535156 -12.15625 6.328125 -12.15625 C 7.722656 -12.15625 8.847656 -11.738281 9.703125 -10.90625 C 10.566406 -10.082031 11.023438 -9.054688 11.078125 -7.828125 L 9.140625 -7.828125 C 9.085938 -8.566406 8.804688 -9.191406 8.296875 -9.703125 C 7.796875 -10.210938 7.140625 -10.46875 6.328125 -10.46875 C 5.492188 -10.46875 4.835938 -10.253906 4.359375 -9.828125 C 3.890625 -9.398438 3.554688 -8.859375 3.359375 -8.203125 C 3.160156 -7.554688 3.0625 -6.890625 3.0625 -6.203125 L 3.0625 -5.734375 C 3.0625 -5.035156 3.15625 -4.359375 3.34375 -3.703125 C 3.539062 -3.046875 3.875 -2.503906 4.34375 -2.078125 C 4.820312 -1.660156 5.484375 -1.453125 6.328125 -1.453125 Z M 6.328125 -1.453125 "/>
</g>
<g id="glyph-1-3">
<path d="M 9.03125 0 L 4.890625 -5.53125 L 3.609375 -4.203125 L 3.609375 0 L 1.546875 0 L 1.546875 -16.9375 L 3.609375 -16.9375 L 3.609375 -6.703125 L 4.703125 -8 L 8.40625 -11.921875 L 10.890625 -11.921875 L 6.234375 -6.953125 L 11.4375 0 Z M 9.03125 0 "/>
</g>
<g id="glyph-1-4">
<path d="M 6.078125 4.703125 C 5.460938 4.703125 4.707031 4.550781 3.8125 4.25 C 2.914062 3.945312 2.203125 3.410156 1.671875 2.640625 L 2.734375 1.421875 C 3.617188 2.492188 4.6875 3.03125 5.9375 3.03125 C 6.894531 3.03125 7.660156 2.757812 8.234375 2.21875 C 8.804688 1.675781 9.09375 0.882812 9.09375 -0.15625 L 9.09375 -1.203125 C 8.28125 -0.253906 7.164062 0.21875 5.75 0.21875 C 4.320312 0.21875 3.179688 -0.351562 2.328125 -1.5 C 1.484375 -2.644531 1.0625 -4.085938 1.0625 -5.828125 L 1.0625 -6.0625 C 1.0625 -7.882812 1.484375 -9.351562 2.328125 -10.46875 C 3.171875 -11.59375 4.320312 -12.15625 5.78125 -12.15625 C 7.238281 -12.15625 8.375 -11.640625 9.1875 -10.609375 L 9.28125 -11.921875 L 11.140625 -11.921875 L 11.140625 -0.25 C 11.140625 1.320312 10.664062 2.539062 9.71875 3.40625 C 8.78125 4.269531 7.566406 4.703125 6.078125 4.703125 Z M 3.109375 -5.828125 C 3.109375 -4.648438 3.351562 -3.632812 3.84375 -2.78125 C 4.34375 -1.9375 5.144531 -1.515625 6.25 -1.515625 C 7.539062 -1.515625 8.488281 -2.101562 9.09375 -3.28125 L 9.09375 -8.703125 C 8.832031 -9.203125 8.472656 -9.613281 8.015625 -9.9375 C 7.566406 -10.257812 6.984375 -10.421875 6.265625 -10.421875 C 5.160156 -10.421875 4.359375 -9.988281 3.859375 -9.125 C 3.359375 -8.269531 3.109375 -7.25 3.109375 -6.0625 Z M 3.109375 -5.828125 "/>
</g>
<g id="glyph-1-5">
<path d="M 10.984375 -2.078125 C 10.597656 -1.492188 10.046875 -0.960938 9.328125 -0.484375 C 8.617188 -0.015625 7.675781 0.21875 6.5 0.21875 C 4.84375 0.21875 3.515625 -0.316406 2.515625 -1.390625 C 1.523438 -2.472656 1.03125 -3.859375 1.03125 -5.546875 L 1.03125 -6.015625 C 1.03125 -7.304688 1.273438 -8.410156 1.765625 -9.328125 C 2.265625 -10.242188 2.910156 -10.941406 3.703125 -11.421875 C 4.492188 -11.910156 5.335938 -12.15625 6.234375 -12.15625 C 7.941406 -12.15625 9.1875 -11.597656 9.96875 -10.484375 C 10.75 -9.367188 11.140625 -7.976562 11.140625 -6.3125 L 11.140625 -5.390625 L 3.078125 -5.390625 C 3.109375 -4.296875 3.429688 -3.363281 4.046875 -2.59375 C 4.671875 -1.820312 5.523438 -1.4375 6.609375 -1.4375 C 7.328125 -1.4375 7.9375 -1.582031 8.4375 -1.875 C 8.9375 -2.175781 9.375 -2.570312 9.75 -3.0625 Z M 6.234375 -10.46875 C 5.429688 -10.46875 4.75 -10.171875 4.1875 -9.578125 C 3.625 -8.992188 3.273438 -8.15625 3.140625 -7.0625 L 9.109375 -7.0625 L 9.109375 -7.203125 C 9.054688 -8.003906 8.828125 -8.75 8.421875 -9.4375 C 8.015625 -10.125 7.285156 -10.46875 6.234375 -10.46875 Z M 6.234375 -10.46875 "/>
</g>
<g id="glyph-1-6">
</g>
<g id="glyph-1-7">
<path d="M 9.859375 -2.96875 L 15.109375 -16.046875 L 17.84375 -16.046875 L 17.84375 0 L 15.71875 0 L 15.71875 -6.265625 L 15.9375 -12.96875 L 10.65625 0 L 9.046875 0 L 3.765625 -13 L 3.984375 -6.265625 L 3.984375 0 L 1.859375 0 L 1.859375 -16.046875 L 4.59375 -16.046875 Z M 9.859375 -2.96875 "/>
</g>
<g id="glyph-1-8">
<path d="M 6.5 -10.421875 C 5.84375 -10.421875 5.265625 -10.242188 4.765625 -9.890625 C 4.273438 -9.546875 3.882812 -9.085938 3.59375 -8.515625 L 3.59375 0 L 1.546875 0 L 1.546875 -11.921875 L 3.484375 -11.921875 L 3.546875 -10.4375 C 4.453125 -11.582031 5.640625 -12.15625 7.109375 -12.15625 C 8.273438 -12.15625 9.203125 -11.828125 9.890625 -11.171875 C 10.578125 -10.515625 10.925781 -9.414062 10.9375 -7.875 L 10.9375 0 L 8.890625 0 L 8.890625 -7.84375 C 8.890625 -8.769531 8.679688 -9.429688 8.265625 -9.828125 C 7.859375 -10.222656 7.269531 -10.421875 6.5 -10.421875 Z M 6.5 -10.421875 "/>
</g>
<g id="glyph-1-9">
<path d="M 6.328125 -10.421875 C 4.992188 -10.421875 4.078125 -9.863281 3.578125 -8.75 L 3.578125 0 L 1.53125 0 L 1.53125 -11.921875 L 3.46875 -11.921875 L 3.53125 -10.625 C 4.382812 -11.644531 5.5625 -12.15625 7.0625 -12.15625 C 7.820312 -12.15625 8.5 -12 9.09375 -11.6875 C 9.695312 -11.382812 10.15625 -10.898438 10.46875 -10.234375 C 10.863281 -10.804688 11.378906 -11.269531 12.015625 -11.625 C 12.648438 -11.976562 13.398438 -12.15625 14.265625 -12.15625 C 15.546875 -12.15625 16.53125 -11.8125 17.21875 -11.125 C 17.914062 -10.4375 18.265625 -9.34375 18.265625 -7.84375 L 18.265625 0 L 16.21875 0 L 16.21875 -7.859375 C 16.21875 -8.859375 15.988281 -9.535156 15.53125 -9.890625 C 15.070312 -10.242188 14.453125 -10.421875 13.671875 -10.421875 C 12.847656 -10.421875 12.203125 -10.175781 11.734375 -9.6875 C 11.265625 -9.207031 10.992188 -8.617188 10.921875 -7.921875 L 10.921875 0 L 8.875 0 L 8.875 -7.84375 C 8.875 -8.78125 8.640625 -9.441406 8.171875 -9.828125 C 7.710938 -10.222656 7.097656 -10.421875 6.328125 -10.421875 Z M 6.328125 -10.421875 "/>
</g>
<g id="glyph-1-10">
<path d="M 6.609375 0 C 6.140625 0.144531 5.613281 0.21875 5.03125 0.21875 C 4.269531 0.21875 3.617188 -0.0078125 3.078125 -0.46875 C 2.546875 -0.9375 2.28125 -1.769531 2.28125 -2.96875 L 2.28125 -10.359375 L 0.09375 -10.359375 L 0.09375 -11.921875 L 2.28125 -11.921875 L 2.28125 -14.828125 L 4.328125 -14.828125 L 4.328125 -11.921875 L 6.546875 -11.921875 L 6.546875 -10.359375 L 4.328125 -10.359375 L 4.328125 -2.953125 C 4.328125 -2.347656 4.457031 -1.957031 4.71875 -1.78125 C 4.976562 -1.613281 5.285156 -1.53125 5.640625 -1.53125 C 5.890625 -1.53125 6.207031 -1.578125 6.59375 -1.671875 Z M 6.609375 0 "/>
</g>
<g id="glyph-1-11">
<path d="M 11.65625 -5.828125 C 11.65625 -4.085938 11.25 -2.644531 10.4375 -1.5 C 9.632812 -0.351562 8.492188 0.21875 7.015625 0.21875 C 5.503906 0.21875 4.34375 -0.3125 3.53125 -1.375 L 3.421875 0 L 1.546875 0 L 1.546875 -16.9375 L 3.59375 -16.9375 L 3.59375 -10.640625 C 4.40625 -11.648438 5.535156 -12.15625 6.984375 -12.15625 C 8.484375 -12.15625 9.632812 -11.59375 10.4375 -10.46875 C 11.25 -9.351562 11.65625 -7.882812 11.65625 -6.0625 Z M 6.484375 -10.421875 C 5.742188 -10.421875 5.140625 -10.242188 4.671875 -9.890625 C 4.210938 -9.535156 3.851562 -9.097656 3.59375 -8.578125 L 3.59375 -3.390625 C 3.851562 -2.859375 4.21875 -2.410156 4.6875 -2.046875 C 5.164062 -1.691406 5.769531 -1.515625 6.5 -1.515625 C 7.601562 -1.515625 8.394531 -1.9375 8.875 -2.78125 C 9.363281 -3.632812 9.609375 -4.648438 9.609375 -5.828125 L 9.609375 -6.0625 C 9.609375 -7.25 9.375 -8.269531 8.90625 -9.125 C 8.445312 -9.988281 7.640625 -10.421875 6.484375 -10.421875 Z M 6.484375 -10.421875 "/>
</g>
<g id="glyph-1-12">
<path d="M 1.015625 -6.078125 C 1.015625 -7.804688 1.5 -9.25 2.46875 -10.40625 C 3.4375 -11.570312 4.753906 -12.15625 6.421875 -12.15625 C 8.097656 -12.15625 9.421875 -11.585938 10.390625 -10.453125 C 11.359375 -9.316406 11.851562 -7.898438 11.875 -6.203125 L 11.875 -5.828125 C 11.875 -4.097656 11.382812 -2.65625 10.40625 -1.5 C 9.4375 -0.351562 8.117188 0.21875 6.453125 0.21875 C 4.773438 0.21875 3.445312 -0.351562 2.46875 -1.5 C 1.5 -2.65625 1.015625 -4.097656 1.015625 -5.828125 Z M 3.046875 -5.828125 C 3.046875 -4.648438 3.328125 -3.625 3.890625 -2.75 C 4.453125 -1.882812 5.304688 -1.453125 6.453125 -1.453125 C 7.554688 -1.453125 8.390625 -1.878906 8.953125 -2.734375 C 9.523438 -3.597656 9.816406 -4.617188 9.828125 -5.796875 L 9.828125 -6.078125 C 9.828125 -7.253906 9.539062 -8.28125 8.96875 -9.15625 C 8.40625 -10.03125 7.554688 -10.46875 6.421875 -10.46875 C 5.296875 -10.46875 4.453125 -10.03125 3.890625 -9.15625 C 3.328125 -8.28125 3.046875 -7.253906 3.046875 -6.078125 Z M 3.046875 -5.828125 "/>
</g>
<g id="glyph-1-13">
<path d="M 8.953125 0 L 8.90625 -1.171875 C 8.125 -0.242188 6.960938 0.21875 5.421875 0.21875 C 4.253906 0.21875 3.3125 -0.125 2.59375 -0.8125 C 1.875 -1.507812 1.515625 -2.648438 1.515625 -4.234375 L 1.515625 -11.921875 L 3.546875 -11.921875 L 3.546875 -4.21875 C 3.546875 -3.144531 3.769531 -2.425781 4.21875 -2.0625 C 4.675781 -1.695312 5.1875 -1.515625 5.75 -1.515625 C 7.28125 -1.515625 8.316406 -2.085938 8.859375 -3.234375 L 8.859375 -11.921875 L 10.90625 -11.921875 L 10.90625 0 Z M 8.953125 0 "/>
</g>
<g id="glyph-1-14">
<path d="M 9.25 0 L 9.15625 -1.28125 C 8.332031 -0.28125 7.195312 0.21875 5.75 0.21875 C 4.351562 0.21875 3.222656 -0.34375 2.359375 -1.46875 C 1.492188 -2.601562 1.054688 -4.03125 1.046875 -5.75 L 1.046875 -6.0625 C 1.046875 -7.882812 1.476562 -9.351562 2.34375 -10.46875 C 3.207031 -11.59375 4.347656 -12.15625 5.765625 -12.15625 C 7.171875 -12.15625 8.273438 -11.679688 9.078125 -10.734375 L 9.078125 -16.9375 L 11.125 -16.9375 L 11.125 0 Z M 3.09375 -5.828125 C 3.09375 -4.648438 3.34375 -3.632812 3.84375 -2.78125 C 4.34375 -1.9375 5.144531 -1.515625 6.25 -1.515625 C 7.507812 -1.515625 8.453125 -2.085938 9.078125 -3.234375 L 9.078125 -8.734375 C 8.460938 -9.859375 7.523438 -10.421875 6.265625 -10.421875 C 5.160156 -10.421875 4.351562 -9.988281 3.84375 -9.125 C 3.34375 -8.269531 3.09375 -7.25 3.09375 -6.0625 Z M 3.09375 -5.828125 "/>
</g>
<g id="glyph-1-15">
<path d="M 6.3125 -10.1875 C 4.988281 -10.1875 4.082031 -9.613281 3.59375 -8.46875 L 3.59375 0 L 1.546875 0 L 1.546875 -11.921875 L 3.53125 -11.921875 L 3.578125 -10.5625 C 4.234375 -11.625 5.179688 -12.15625 6.421875 -12.15625 C 6.796875 -12.15625 7.09375 -12.101562 7.3125 -12 L 7.3125 -10.09375 C 7.007812 -10.15625 6.675781 -10.1875 6.3125 -10.1875 Z M 6.3125 -10.1875 "/>
</g>
<g id="glyph-1-16">
<path d="M 1.5625 -15.09375 C 1.5625 -15.425781 1.660156 -15.703125 1.859375 -15.921875 C 2.066406 -16.148438 2.367188 -16.265625 2.765625 -16.265625 C 3.148438 -16.265625 3.445312 -16.148438 3.65625 -15.921875 C 3.875 -15.703125 3.984375 -15.425781 3.984375 -15.09375 C 3.984375 -14.78125 3.875 -14.507812 3.65625 -14.28125 C 3.445312 -14.0625 3.148438 -13.953125 2.765625 -13.953125 C 2.367188 -13.953125 2.066406 -14.0625 1.859375 -14.28125 C 1.660156 -14.507812 1.5625 -14.78125 1.5625 -15.09375 Z M 3.765625 -11.921875 L 3.765625 0 L 1.71875 0 L 1.71875 -11.921875 Z M 3.765625 -11.921875 "/>
</g>
<g id="glyph-1-17">
<path d="M 8.5 -3.15625 C 8.5 -3.59375 8.335938 -3.984375 8.015625 -4.328125 C 7.703125 -4.679688 6.96875 -4.976562 5.8125 -5.21875 C 4.476562 -5.488281 3.414062 -5.878906 2.625 -6.390625 C 1.84375 -6.910156 1.453125 -7.671875 1.453125 -8.671875 C 1.453125 -9.609375 1.851562 -10.421875 2.65625 -11.109375 C 3.46875 -11.804688 4.539062 -12.15625 5.875 -12.15625 C 7.300781 -12.15625 8.414062 -11.789062 9.21875 -11.0625 C 10.019531 -10.332031 10.421875 -9.453125 10.421875 -8.421875 L 8.375 -8.421875 C 8.375 -8.910156 8.15625 -9.375 7.71875 -9.8125 C 7.289062 -10.25 6.675781 -10.46875 5.875 -10.46875 C 5.03125 -10.46875 4.421875 -10.285156 4.046875 -9.921875 C 3.679688 -9.554688 3.5 -9.15625 3.5 -8.71875 C 3.5 -8.28125 3.671875 -7.925781 4.015625 -7.65625 C 4.359375 -7.394531 5.085938 -7.140625 6.203125 -6.890625 C 7.660156 -6.554688 8.75 -6.117188 9.46875 -5.578125 C 10.1875 -5.046875 10.546875 -4.289062 10.546875 -3.3125 C 10.546875 -2.257812 10.125 -1.40625 9.28125 -0.75 C 8.4375 -0.101562 7.320312 0.21875 5.9375 0.21875 C 4.351562 0.21875 3.140625 -0.179688 2.296875 -0.984375 C 1.460938 -1.796875 1.046875 -2.695312 1.046875 -3.6875 L 3.09375 -3.6875 C 3.132812 -2.84375 3.457031 -2.257812 4.0625 -1.9375 C 4.675781 -1.613281 5.300781 -1.453125 5.9375 -1.453125 C 6.757812 -1.453125 7.390625 -1.613281 7.828125 -1.9375 C 8.273438 -2.257812 8.5 -2.664062 8.5 -3.15625 Z M 8.5 -3.15625 "/>
</g>
</g>
</defs>
<rect x="-75.3" y="-33.3" width="903.6" height="399.6" fill="rgb(100%, 100%, 100%)" fill-opacity="1"/>
<path fill-rule="evenodd" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 27.798828 13.85 L 29.401172 13.85 C 29.601562 14.25 29.665625 14.45 29.665625 14.85 C 29.665625 15.25 29.601562 15.45 29.401172 15.85 L 27.798828 15.85 C 27.598437 15.45 27.534375 15.25 27.534375 14.85 C 27.534375 14.45 27.598437 14.25 27.798828 13.85 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<g fill="rgb(0%, 0%, 60.000002%)" fill-opacity="1">
<use xlink:href="#glyph-0-0" x="60.296875" y="219.89426"/>
<use xlink:href="#glyph-0-1" x="68.630208" y="219.89426"/>
<use xlink:href="#glyph-0-2" x="75.296875" y="219.89426"/>
<use xlink:href="#glyph-0-3" x="81.963542" y="219.89426"/>
</g>
<path fill-rule="evenodd" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 24.982812 9.85 L 31.403711 9.85 L 32.117187 10.85 L 31.403711 11.85 L 24.982812 11.85 Z M 24.982812 9.85 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-4" x="18.886719" y="139.89426"/>
<use xlink:href="#glyph-0-5" x="21.942274" y="139.89426"/>
<use xlink:href="#glyph-0-1" x="28.886719" y="139.89426"/>
<use xlink:href="#glyph-0-6" x="35.553385" y="139.89426"/>
<use xlink:href="#glyph-0-7" x="39.720052" y="139.89426"/>
<use xlink:href="#glyph-0-8" x="46.664497" y="139.89426"/>
<use xlink:href="#glyph-0-8" x="49.720052" y="139.89426"/>
<use xlink:href="#glyph-0-9" x="52.775608" y="139.89426"/>
<use xlink:href="#glyph-0-10" x="55.831163" y="139.89426"/>
<use xlink:href="#glyph-0-7" x="63.053385" y="139.89426"/>
<use xlink:href="#glyph-0-11" x="69.99783" y="139.89426"/>
<use xlink:href="#glyph-0-12" x="76.664497" y="139.89426"/>
<use xlink:href="#glyph-0-7" x="83.053385" y="139.89426"/>
<use xlink:href="#glyph-0-13" x="89.99783" y="139.89426"/>
<use xlink:href="#glyph-0-2" x="97.220052" y="139.89426"/>
<use xlink:href="#glyph-0-9" x="103.886719" y="139.89426"/>
<use xlink:href="#glyph-0-14" x="106.942274" y="139.89426"/>
<use xlink:href="#glyph-0-15" x="111.386719" y="139.89426"/>
<use xlink:href="#glyph-0-15" x="118.608941" y="139.89426"/>
</g>
<path fill="none" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 28.586914 13.801172 L 28.569141 12.385547 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<path fill-rule="evenodd" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 28.564453 12.010547 L 28.820703 12.507422 L 28.569141 12.385547 L 28.320703 12.513672 Z M 28.564453 12.010547 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<path fill-rule="evenodd" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 32.351562 9.8 L 39.148437 9.8 L 39.148437 11.8 L 32.351562 11.8 Z M 32.351562 9.8 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<g fill="rgb(100%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-16" x="165.25" y="138.89426"/>
<use xlink:href="#glyph-0-7" x="173.305556" y="138.89426"/>
<use xlink:href="#glyph-0-11" x="180.25" y="138.89426"/>
<use xlink:href="#glyph-0-12" x="186.916667" y="138.89426"/>
<use xlink:href="#glyph-0-7" x="193.305556" y="138.89426"/>
<use xlink:href="#glyph-0-13" x="200.25" y="138.89426"/>
<use xlink:href="#glyph-0-2" x="207.472222" y="138.89426"/>
<use xlink:href="#glyph-0-9" x="214.138889" y="138.89426"/>
<use xlink:href="#glyph-0-17" x="217.194444" y="138.89426"/>
<use xlink:href="#glyph-0-7" x="228.305556" y="138.89426"/>
<use xlink:href="#glyph-0-5" x="235.25" y="138.89426"/>
<use xlink:href="#glyph-0-7" x="242.194444" y="138.89426"/>
<use xlink:href="#glyph-0-13" x="249.138889" y="138.89426"/>
<use xlink:href="#glyph-0-2" x="256.361111" y="138.89426"/>
<use xlink:href="#glyph-0-3" x="263.027778" y="138.89426"/>
</g>
<path fill-rule="evenodd" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 45.055078 9.9 L 50.744922 9.9 C 51.45625 10.3 51.683789 10.5 51.683789 10.9 C 51.683789 11.3 51.45625 11.5 50.744922 11.9 L 45.055078 11.9 C 44.34375 11.5 44.116211 11.3 44.116211 10.9 C 44.116211 10.5 44.34375 10.3 45.055078 9.9 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<g fill="rgb(50.196081%, 0%, 50.196081%)" fill-opacity="1">
<use xlink:href="#glyph-0-18" x="405.75" y="140.89426"/>
<use xlink:href="#glyph-0-2" x="416.861111" y="140.89426"/>
<use xlink:href="#glyph-0-6" x="423.527778" y="140.89426"/>
<use xlink:href="#glyph-0-7" x="427.694444" y="140.89426"/>
<use xlink:href="#glyph-0-19" x="434.638889" y="140.89426"/>
<use xlink:href="#glyph-0-7" x="441.861111" y="140.89426"/>
<use xlink:href="#glyph-0-6" x="448.805556" y="140.89426"/>
<use xlink:href="#glyph-0-7" x="452.972222" y="140.89426"/>
<use xlink:href="#glyph-0-9" x="459.916667" y="140.89426"/>
<use xlink:href="#glyph-0-20" x="462.972222" y="140.89426"/>
<use xlink:href="#glyph-0-3" x="467.416667" y="140.89426"/>
<use xlink:href="#glyph-0-2" x="471.583333" y="140.89426"/>
<use xlink:href="#glyph-0-11" x="478.25" y="140.89426"/>
<use xlink:href="#glyph-0-4" x="484.916667" y="140.89426"/>
<use xlink:href="#glyph-0-10" x="487.972222" y="140.89426"/>
<use xlink:href="#glyph-0-2" x="495.194444" y="140.89426"/>
<use xlink:href="#glyph-0-1" x="501.861111" y="140.89426"/>
<use xlink:href="#glyph-0-21" x="508.527778" y="140.89426"/>
</g>
<path fill="none" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 39.198633 10.82832 L 43.586719 10.864453 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<path fill-rule="evenodd" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 43.961719 10.867578 L 43.45957 11.113477 L 43.586719 10.864453 L 43.463672 10.613477 Z M 43.961719 10.867578 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<path fill-rule="evenodd" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 46.03125 4.7 L 50.06875 4.7 C 50.573437 5.1 50.734961 5.3 50.734961 5.7 C 50.734961 6.1 50.573437 6.3 50.06875 6.7 L 46.03125 6.7 C 45.526562 6.3 45.365039 6.1 45.365039 5.7 C 45.365039 5.3 45.526562 5.1 46.03125 4.7 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-16" x="435.683594" y="36.89426"/>
<use xlink:href="#glyph-0-7" x="443.739149" y="36.89426"/>
<use xlink:href="#glyph-0-11" x="450.683594" y="36.89426"/>
<use xlink:href="#glyph-0-12" x="457.35026" y="36.89426"/>
<use xlink:href="#glyph-0-7" x="463.739149" y="36.89426"/>
<use xlink:href="#glyph-0-13" x="470.683594" y="36.89426"/>
<use xlink:href="#glyph-0-2" x="477.905816" y="36.89426"/>
<use xlink:href="#glyph-0-3" x="484.572483" y="36.89426"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-14" x="311.34375" y="121.01926"/>
<use xlink:href="#glyph-0-2" x="315.510417" y="121.01926"/>
<use xlink:href="#glyph-0-6" x="322.177083" y="121.01926"/>
<use xlink:href="#glyph-0-11" x="326.34375" y="121.01926"/>
<use xlink:href="#glyph-0-22" x="333.010417" y="121.01926"/>
<use xlink:href="#glyph-0-2" x="339.954861" y="121.01926"/>
<use xlink:href="#glyph-0-1" x="346.621528" y="121.01926"/>
</g>
<path fill="none" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 48.019727 6.750195 L 47.944336 9.363086 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<path fill-rule="evenodd" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 47.933594 9.738086 L 47.698047 9.231055 L 47.944336 9.363086 L 48.197852 9.245508 Z M 47.933594 9.738086 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-17" x="471.34375" y="83.01926"/>
<use xlink:href="#glyph-0-7" x="482.454861" y="83.01926"/>
<use xlink:href="#glyph-0-4" x="489.399306" y="83.01926"/>
<use xlink:href="#glyph-0-5" x="492.454861" y="83.01926"/>
<use xlink:href="#glyph-0-6" x="499.399306" y="83.01926"/>
<use xlink:href="#glyph-0-7" x="503.565972" y="83.01926"/>
<use xlink:href="#glyph-0-4" x="510.510417" y="83.01926"/>
<use xlink:href="#glyph-0-5" x="513.565972" y="83.01926"/>
<use xlink:href="#glyph-0-1" x="520.510417" y="83.01926"/>
</g>
<path fill-rule="evenodd" fill="rgb(70.19608%, 70.19608%, 70.19608%)" fill-opacity="1" stroke-width="0.08" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 28.228906 17.4 L 29.018359 17.4 L 29.018359 19.242187 L 28.228906 19.242187 Z M 28.228906 17.4 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<path fill="none" stroke-width="0.05" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 28.307812 17.510547 L 28.939453 17.510547 L 28.939453 17.721094 L 28.307812 17.721094 Z M 28.307812 17.510547 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<path fill="none" stroke-width="0.05" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 28.307812 17.721094 L 28.939453 17.721094 L 28.939453 17.931641 L 28.307812 17.931641 Z M 28.307812 17.721094 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<path fill="none" stroke-width="0.05" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 28.307812 17.931641 L 28.939453 17.931641 L 28.939453 18.142187 L 28.307812 18.142187 Z M 28.307812 17.931641 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<path fill="none" stroke-width="0.05" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 28.307812 18.142187 L 28.939453 18.142187 L 28.939453 18.352734 L 28.307812 18.352734 Z M 28.307812 18.142187 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<path fill="none" stroke-width="0.05" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 28.307812 18.394727 L 28.702539 18.394727 L 28.702539 18.521094 L 28.307812 18.521094 Z M 28.307812 18.394727 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<path fill-rule="evenodd" fill="rgb(0%, 100%, 0%)" fill-opacity="1" stroke-width="0.05" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 28.927539 18.41582 C 28.927539 18.452539 28.872461 18.452539 28.872461 18.41582 C 28.872461 18.378906 28.927539 18.378906 28.927539 18.41582 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<path fill-rule="evenodd" fill="rgb(100%, 100%, 0%)" fill-opacity="1" stroke-width="0.05" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 28.927539 18.5 C 28.927539 18.536914 28.872461 18.536914 28.872461 18.5 C 28.872461 18.463086 28.927539 18.463086 28.927539 18.5 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<path fill-rule="evenodd" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.05" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 28.742187 18.436914 L 28.836914 18.436914 L 28.836914 18.521094 L 28.742187 18.521094 Z M 28.742187 18.436914 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<path fill="none" stroke-width="0.05" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 28.360547 18.689453 L 28.360547 19.15 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<path fill="none" stroke-width="0.05" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 28.492187 18.689453 L 28.492187 19.15 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<path fill="none" stroke-width="0.05" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 28.623633 18.689453 L 28.623633 19.15 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<path fill="none" stroke-width="0.05" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 28.755273 18.689453 L 28.755273 19.15 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<path fill="none" stroke-width="0.05" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 28.886914 18.689453 L 28.886914 19.15 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<path fill="none" stroke-width="0.05" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 29.018359 18.689453 L 29.018359 19.15 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<path fill-rule="evenodd" fill="rgb(60.000002%, 60.000002%, 60.000002%)" fill-opacity="1" stroke-width="0.05" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 28.071094 19.4 L 28.228906 19.08418 L 28.228906 19.242187 L 29.018359 19.242187 L 29.018359 19.08418 L 29.228906 19.4 Z M 28.071094 19.4 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<path fill="none" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 28.614844 15.898633 L 28.635547 17.366992 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-23" x="55.34375" y="323.01926"/>
<use xlink:href="#glyph-0-24" x="62.84375" y="323.01926"/>
<use xlink:href="#glyph-0-1" x="68.954861" y="323.01926"/>
<use xlink:href="#glyph-0-6" x="75.621528" y="323.01926"/>
<use xlink:href="#glyph-0-2" x="79.788194" y="323.01926"/>
<use xlink:href="#glyph-0-17" x="86.454861" y="323.01926"/>
</g>
<path fill="none" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 34.770703 11.848437 L 29.387891 17.610156 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<path fill-rule="evenodd" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 29.132031 17.88418 L 29.290625 17.348047 L 29.387891 17.610156 L 29.655859 17.689453 Z M 29.132031 17.88418 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-2" x="162.34375" y="209.01926"/>
<use xlink:href="#glyph-0-25" x="169.010417" y="209.01926"/>
<use xlink:href="#glyph-0-2" x="175.121528" y="209.01926"/>
<use xlink:href="#glyph-0-11" x="181.788194" y="209.01926"/>
<use xlink:href="#glyph-0-26" x="188.454861" y="209.01926"/>
<use xlink:href="#glyph-0-6" x="195.399306" y="209.01926"/>
<use xlink:href="#glyph-0-2" x="199.565972" y="209.01926"/>
<use xlink:href="#glyph-0-1" x="206.232639" y="209.01926"/>
<use xlink:href="#glyph-0-9" x="212.899306" y="209.01926"/>
<use xlink:href="#glyph-0-7" x="215.954861" y="209.01926"/>
<use xlink:href="#glyph-0-5" x="222.899306" y="209.01926"/>
<use xlink:href="#glyph-0-19" x="229.84375" y="209.01926"/>
<use xlink:href="#glyph-0-9" x="237.065972" y="209.01926"/>
<use xlink:href="#glyph-0-4" x="240.121528" y="209.01926"/>
<use xlink:href="#glyph-0-5" x="243.177083" y="209.01926"/>
<use xlink:href="#glyph-0-1" x="250.121528" y="209.01926"/>
<use xlink:href="#glyph-0-6" x="256.788194" y="209.01926"/>
<use xlink:href="#glyph-0-7" x="260.954861" y="209.01926"/>
<use xlink:href="#glyph-0-8" x="267.899306" y="209.01926"/>
<use xlink:href="#glyph-0-8" x="270.954861" y="209.01926"/>
<use xlink:href="#glyph-0-1" x="274.010417" y="209.01926"/>
</g>
<path fill="none" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 51.705273 11.118164 L 57.313867 11.439648 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<path fill-rule="evenodd" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 57.688281 11.461133 L 57.174805 11.682031 L 57.313867 11.439648 L 57.203516 11.182812 Z M 57.688281 11.461133 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<path fill-rule="evenodd" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 58.35 10.7 L 61.875 10.7 C 62.151172 10.7 62.375 10.923828 62.375 11.2 L 62.375 12 C 62.375 12.276172 62.151172 12.5 61.875 12.5 L 58.35 12.5 C 58.073828 12.5 57.85 12.276172 57.85 12 L 57.85 11.2 C 57.85 10.923828 58.073828 10.7 58.35 10.7 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-10" x="668.59375" y="154.89426"/>
<use xlink:href="#glyph-0-7" x="675.815972" y="154.89426"/>
<use xlink:href="#glyph-0-11" x="682.760417" y="154.89426"/>
<use xlink:href="#glyph-0-12" x="689.427083" y="154.89426"/>
<use xlink:href="#glyph-0-7" x="695.815972" y="154.89426"/>
<use xlink:href="#glyph-0-13" x="702.760417" y="154.89426"/>
<use xlink:href="#glyph-0-2" x="709.982639" y="154.89426"/>
<use xlink:href="#glyph-0-9" x="716.649306" y="154.89426"/>
<use xlink:href="#glyph-0-14" x="719.704861" y="154.89426"/>
<use xlink:href="#glyph-0-15" x="724.149306" y="154.89426"/>
<use xlink:href="#glyph-0-15" x="731.371528" y="154.89426"/>
</g>
<path fill-rule="evenodd" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 58.4 14.15 L 61.897461 14.15 C 62.173633 14.15 62.397461 14.373828 62.397461 14.65 L 62.397461 15.45 C 62.397461 15.726172 62.173633 15.95 61.897461 15.95 L 58.4 15.95 C 58.123828 15.95 57.9 15.726172 57.9 15.45 L 57.9 14.65 C 57.9 14.373828 58.123828 14.15 58.4 14.15 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-10" x="669.476562" y="223.89426"/>
<use xlink:href="#glyph-0-7" x="676.698785" y="223.89426"/>
<use xlink:href="#glyph-0-11" x="683.643229" y="223.89426"/>
<use xlink:href="#glyph-0-12" x="690.309896" y="223.89426"/>
<use xlink:href="#glyph-0-7" x="696.698785" y="223.89426"/>
<use xlink:href="#glyph-0-13" x="703.643229" y="223.89426"/>
<use xlink:href="#glyph-0-2" x="710.865451" y="223.89426"/>
<use xlink:href="#glyph-0-9" x="717.532118" y="223.89426"/>
<use xlink:href="#glyph-0-27" x="720.587674" y="223.89426"/>
<use xlink:href="#glyph-0-7" x="727.809896" y="223.89426"/>
<use xlink:href="#glyph-0-3" x="734.75434" y="223.89426"/>
</g>
<path fill-rule="evenodd" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 58.45 17.35 L 62.047461 17.35 C 62.323633 17.35 62.547461 17.573828 62.547461 17.85 L 62.547461 18.65 C 62.547461 18.926172 62.323633 19.15 62.047461 19.15 L 58.45 19.15 C 58.173828 19.15 57.95 18.926172 57.95 18.65 L 57.95 17.85 C 57.95 17.573828 58.173828 17.35 58.45 17.35 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-10" x="670.5" y="287.89426"/>
<use xlink:href="#glyph-0-7" x="677.722222" y="287.89426"/>
<use xlink:href="#glyph-0-11" x="684.666667" y="287.89426"/>
<use xlink:href="#glyph-0-12" x="691.333333" y="287.89426"/>
<use xlink:href="#glyph-0-7" x="697.722222" y="287.89426"/>
<use xlink:href="#glyph-0-13" x="704.666667" y="287.89426"/>
<use xlink:href="#glyph-0-2" x="711.888889" y="287.89426"/>
<use xlink:href="#glyph-0-9" x="718.555556" y="287.89426"/>
<use xlink:href="#glyph-0-27" x="721.611111" y="287.89426"/>
<use xlink:href="#glyph-0-7" x="728.833333" y="287.89426"/>
<use xlink:href="#glyph-0-28" x="735.777778" y="287.89426"/>
</g>
<path fill="none" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 51.75 10.95 L 57.76543 13.886523 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<path fill-rule="evenodd" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 58.102344 14.050977 L 57.543359 14.05625 L 57.76543 13.886523 L 57.762695 13.607031 Z M 58.102344 14.050977 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<path fill="none" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 51.45625 10.9 L 58.739258 16.988086 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<path fill-rule="evenodd" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 59.026953 17.228516 L 58.483008 17.099805 L 58.739258 16.988086 L 58.803516 16.716016 Z M 59.026953 17.228516 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<path fill="none" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 32.25 4.1 L 56.45 4.1 L 56.45 20.65 L 32.25 20.65 Z M 32.25 4.1 " transform="matrix(20, 0, 0, 20, -498.65625, -81)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-0" x="223.34375" y="310.007867"/>
<use xlink:href="#glyph-1-1" x="237.510417" y="310.007867"/>
<use xlink:href="#glyph-1-2" x="249.732639" y="310.007867"/>
<use xlink:href="#glyph-1-3" x="261.677083" y="310.007867"/>
<use xlink:href="#glyph-1-1" x="273.065972" y="310.007867"/>
<use xlink:href="#glyph-1-4" x="285.288194" y="310.007867"/>
<use xlink:href="#glyph-1-5" x="298.065972" y="310.007867"/>
<use xlink:href="#glyph-1-6" x="310.010417" y="310.007867"/>
<use xlink:href="#glyph-1-7" x="315.565972" y="310.007867"/>
<use xlink:href="#glyph-1-1" x="335.288194" y="310.007867"/>
<use xlink:href="#glyph-1-8" x="347.510417" y="310.007867"/>
<use xlink:href="#glyph-1-1" x="360.010417" y="310.007867"/>
<use xlink:href="#glyph-1-4" x="372.232639" y="310.007867"/>
<use xlink:href="#glyph-1-5" x="385.010417" y="310.007867"/>
<use xlink:href="#glyph-1-9" x="396.954861" y="310.007867"/>
<use xlink:href="#glyph-1-5" x="416.677083" y="310.007867"/>
<use xlink:href="#glyph-1-8" x="428.621528" y="310.007867"/>
<use xlink:href="#glyph-1-10" x="441.121528" y="310.007867"/>
<use xlink:href="#glyph-1-6" x="448.621528" y="310.007867"/>
<use xlink:href="#glyph-1-11" x="454.177083" y="310.007867"/>
<use xlink:href="#glyph-1-12" x="466.954861" y="310.007867"/>
<use xlink:href="#glyph-1-13" x="479.732639" y="310.007867"/>
<use xlink:href="#glyph-1-8" x="492.232639" y="310.007867"/>
<use xlink:href="#glyph-1-14" x="504.732639" y="310.007867"/>
<use xlink:href="#glyph-1-1" x="517.510417" y="310.007867"/>
<use xlink:href="#glyph-1-15" x="529.732639" y="310.007867"/>
<use xlink:href="#glyph-1-16" x="537.510417" y="310.007867"/>
<use xlink:href="#glyph-1-5" x="543.065972" y="310.007867"/>
<use xlink:href="#glyph-1-17" x="555.010417" y="310.007867"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-19" x="560.34375" y="138.51926"/>
<use xlink:href="#glyph-0-2" x="567.565972" y="138.51926"/>
<use xlink:href="#glyph-0-1" x="574.232639" y="138.51926"/>
<use xlink:href="#glyph-0-11" x="580.899306" y="138.51926"/>
<use xlink:href="#glyph-0-3" x="587.565972" y="138.51926"/>
<use xlink:href="#glyph-0-4" x="592.010417" y="138.51926"/>
<use xlink:href="#glyph-0-27" x="595.065972" y="138.51926"/>
<use xlink:href="#glyph-0-2" x="602.288194" y="138.51926"/>
<use xlink:href="#glyph-0-1" x="608.954861" y="138.51926"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 59 KiB

BIN
linux.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

54
notes.md Normal file
View File

@ -0,0 +1,54 @@
## Other
- the idea of a distribution is to create a user experience
- you log into your computer and install a program and everything just works
- or: something doesn't work... what are your next steps?
- you create an experience
- the distribution is that brings all the pieces together: installation, service management (systemd, openrc, initd), kernel updates, support
- lesson: composition
- functions
- libraries
- programs (unix)
- lesson: specifications
- LSP (open source milestone)
- lesson: caring about features and code instead of maintenance and collaborations
- lesson: dicatorships work
- decision making (processes)
- lightweight when risk of mistakes is low (can revert?)
- tests in CI are garbage
- reverse dependencies <-> me <-> users
- collaboration vs boundaries, communication
- what distribution work taught me for programming
- posix principles and their connection to functional programming (streams)
- navigation
- strings
- open source politics
- how to drive change
- how to handle contributions (contribution experience, PRs, documentation, mentoring,. ..)
- collaboration
- relationship between industry and FOSS
- what is the main currency (money vs energy)
- bus factor
- feedback from universities regarding Haskell tooling
- respect other projects when contributing
- enabling and supporting (switching from coding wizard to support role)
- project life cycles
- support
- stability vs. ..
- boundaries vs collaboration
- trust, respect, relationship
- working mode in open source
- dealing with expectations
- how to test (on the end users system)
- what if you diverge from the happy path
- why is stability an interesting goal?

553
nus.html Normal file
View File

@ -0,0 +1,553 @@
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Style-Type" content="text/css" />
<meta name="generator" content="pandoc" />
<meta name="author" content="Julian Ospald" />
<title>Two decades of Open Source</title>
<style type="text/css">
code{white-space: pre-wrap;}
span.smallcaps{font-variant: small-caps;}
div.columns{display: flex; gap: min(4vw, 1.5em);}
div.column{flex: auto; overflow-x: auto;}
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
/* The extra [class] is a hack that increases specificity enough to
override a similar rule in reveal.js */
ul.task-list[class]{list-style: none;}
ul.task-list li input[type="checkbox"] {
font-size: inherit;
width: 0.8em;
margin: 0 0.8em 0.2em -1.6em;
vertical-align: middle;
}
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
/* CSS for syntax highlighting */
pre > code.sourceCode { white-space: pre; position: relative; }
pre > code.sourceCode > span { line-height: 1.25; }
pre > code.sourceCode > span:empty { height: 1.2em; }
.sourceCode { overflow: visible; }
code.sourceCode > span { color: inherit; text-decoration: inherit; }
div.sourceCode { margin: 1em 0; }
pre.sourceCode { margin: 0; }
@media screen {
div.sourceCode { overflow: auto; }
}
@media print {
pre > code.sourceCode { white-space: pre-wrap; }
pre > code.sourceCode > span { display: inline-block; text-indent: -5em; padding-left: 5em; }
}
pre.numberSource code
{ counter-reset: source-line 0; }
pre.numberSource code > span
{ position: relative; left: -4em; counter-increment: source-line; }
pre.numberSource code > span > a:first-child::before
{ content: counter(source-line);
position: relative; left: -1em; text-align: right; vertical-align: baseline;
border: none; display: inline-block;
-webkit-touch-callout: none; -webkit-user-select: none;
-khtml-user-select: none; -moz-user-select: none;
-ms-user-select: none; user-select: none;
padding: 0 4px; width: 4em;
color: #aaaaaa;
}
pre.numberSource { margin-left: 3em; border-left: 1px solid #aaaaaa; padding-left: 4px; }
div.sourceCode
{ }
@media screen {
pre > code.sourceCode > span > a:first-child::before { text-decoration: underline; }
}
code span.al { color: #ff0000; font-weight: bold; } /* Alert */
code span.an { color: #60a0b0; font-weight: bold; font-style: italic; } /* Annotation */
code span.at { color: #7d9029; } /* Attribute */
code span.bn { color: #40a070; } /* BaseN */
code span.bu { color: #008000; } /* BuiltIn */
code span.cf { color: #007020; font-weight: bold; } /* ControlFlow */
code span.ch { color: #4070a0; } /* Char */
code span.cn { color: #880000; } /* Constant */
code span.co { color: #60a0b0; font-style: italic; } /* Comment */
code span.cv { color: #60a0b0; font-weight: bold; font-style: italic; } /* CommentVar */
code span.do { color: #ba2121; font-style: italic; } /* Documentation */
code span.dt { color: #902000; } /* DataType */
code span.dv { color: #40a070; } /* DecVal */
code span.er { color: #ff0000; font-weight: bold; } /* Error */
code span.ex { } /* Extension */
code span.fl { color: #40a070; } /* Float */
code span.fu { color: #06287e; } /* Function */
code span.im { color: #008000; font-weight: bold; } /* Import */
code span.in { color: #60a0b0; font-weight: bold; font-style: italic; } /* Information */
code span.kw { color: #007020; font-weight: bold; } /* Keyword */
code span.op { color: #666666; } /* Operator */
code span.ot { color: #007020; } /* Other */
code span.pp { color: #bc7a00; } /* Preprocessor */
code span.sc { color: #4070a0; } /* SpecialChar */
code span.ss { color: #bb6688; } /* SpecialString */
code span.st { color: #4070a0; } /* String */
code span.va { color: #19177c; } /* Variable */
code span.vs { color: #4070a0; } /* VerbatimString */
code span.wa { color: #60a0b0; font-weight: bold; font-style: italic; } /* Warning */
</style>
<link rel="stylesheet" type="text/css" media="screen, projection, print"
href="https://www.w3.org/Talks/Tools/Slidy2/styles/slidy.css" />
<script src="https://www.w3.org/Talks/Tools/Slidy2/scripts/slidy.js"
charset="utf-8" type="text/javascript"></script>
</head>
<body>
<div class="slide titlepage">
<h1 class="title">Two decades of Open Source</h1>
<p class="author">
Julian Ospald
</p>
<p class="date">Sep 20, 2024</p>
</div>
<div id="introduction" class="title-slide slide section level1">
<h1>Introduction</h1>
</div>
<div id="about-me" class="slide section level2">
<h1>About me</h1>
<ul>
<li>From Germany</li>
<li>Studied CS</li>
<li>Haskell developer</li>
<li>I love open source</li>
</ul>
</div>
<div id="professional-career" class="slide section level2">
<h1>Professional career</h1>
<ul>
<li>Software Engineer in R&amp;D (automotive industry)</li>
<li>Go Backend Developer (online advertisement platform</li>
<li>Haskell Developer at <strong>Capital Match</strong> (invoice
financing platform in Singapore)</li>
<li>Haskell Developer at <strong>IOHK</strong> (Cardano Blockchain)</li>
<li>Haskell Freelancer (blockchain and others)</li>
<li>Haskell Developer at <strong>Standard Chartered Bank</strong></li>
<li>Haskell Freelancer (chimney sweeper app for german businesses)</li>
</ul>
</div>
<div id="open-source-career" class="slide section level2">
<h1>Open Source career</h1>
<ul>
<li>Gentoo Linux developer (core team), 2012-2016
<ul>
<li>Ebuild development (packaging)</li>
<li>Code review</li>
<li>Development of a <a
href="https://www.gentoo.org/glep/glep-0066.html">git workflow</a></li>
</ul></li>
<li>Author of GHCup (the Haskell installer), ca. 2019</li>
<li>Maintainer of Haskell core libraries: filepath, unix, os-string,
file-io</li>
<li>Implementation of the <a
href="https://hasufell.github.io/posts/2022-06-29-fixing-haskell-filepaths.html">Abstract
FilePath Proposal</a></li>
<li>Member of the Haskell Core Libraries Comittee 2023-2026</li>
<li>Haskell Influencer (Haskell Foundation, …)</li>
</ul>
</div>
<div id="open-source" class="title-slide slide section level1">
<h1>Open Source</h1>
</div>
<div id="what-is-open-source" class="slide section level2">
<h1>What is Open Source</h1>
<ul>
<li><img src="osi.png" id="id" class="class" height="32" /> A group of
licenses (see OSI)
<ul>
<li><em>Not</em> free software</li>
<li><em>Not</em> copyleft</li>
</ul></li>
<li>🧑‍🤝‍🧑 A community
<ul>
<li>volunteers</li>
<li>companies</li>
</ul></li>
<li>🔮 A philosophy
<ul>
<li>sharing</li>
<li>collaboration</li>
<li>transparency</li>
</ul></li>
</ul>
</div>
<div id="popular-open-source-projects" class="slide section level2">
<h1>Popular Open Source projects</h1>
<ul>
<li><img src="512px-Tux.svg.png" id="id" class="class" height="32" />
Linux kernel
<ul>
<li>1500 developers from 200-250 companies</li>
</ul></li>
<li><img src="firefox.png" id="id" class="class" height="32" />
Firefox</li>
<li><img src="vscode.png" id="id" class="class" height="32" />
VSCode</li>
<li><img src="blender.png" id="id" class="class" height="32" />
Blender</li>
<li><img src="haskell_logo.png" id="id" class="class" height="32" /> GHC
(The Haskell compiler)</li>
</ul>
</div>
<div id="value-proposition-of-open-source" class="slide section level2">
<h1>Value proposition of Open Source</h1>
<ul>
<li>⚗️ the scientific method
<ul>
<li>share your results</li>
<li>allow people to replicate it</li>
</ul></li>
<li>🔓 access to a community
<ul>
<li>users</li>
<li>collaborators</li>
</ul></li>
<li>🕸️ network effects</li>
</ul>
</div>
<div id="reality-of-open-source" class="slide section level2">
<h1>Reality of Open Source</h1>
<ul>
<li>most projects…
<ul>
<li>are one-man shows</li>
<li>have no users</li>
<li>are underdocumened</li>
<li>have horrible code</li>
</ul></li>
<li>writing new code is easy, maintenance is hard</li>
<li>most maintainers
<ul>
<li>dont get paid</li>
<li>will stop maintenance at some point</li>
<li>dont care much about their users</li>
</ul></li>
</ul>
</div>
<div id="gentoo-and-package-management"
class="title-slide slide section level1">
<h1>Gentoo and package management</h1>
</div>
<div id="what-is-gentoo" class="slide section level2">
<h1>What is Gentoo</h1>
<ul>
<li>a Linux distribution
<ul>
<li>rolling release</li>
<li>source based</li>
</ul></li>
<li>19000 packages (program, library, …)</li>
<li>200 core developers (at its peak)</li>
<li>over 1000 contributors</li>
</ul>
</div>
<div id="how-does-a-linux-distro-work-relationships"
class="slide section level2">
<h1>How does a Linux distro work (relationships)</h1>
<p><img src="packager_relationships.svg" id="id" class="class"
height="500" /></p>
</div>
<div id="how-does-a-linux-distro-work-activities"
class="slide section level2">
<h1>How does a Linux distro work (activities)</h1>
<p><img src="install.svg" id="id" class="class" height="500" /></p>
</div>
<div id="a-typical-ebuild" class="slide section level2">
<h1>A typical ebuild</h1>
<div class="sourceCode" id="cb1"><pre
class="sourceCode bash"><code class="sourceCode bash"><span id="cb1-1"><a href="#cb1-1" tabindex="-1"></a><span class="va">EAPI</span><span class="op">=</span>8</span>
<span id="cb1-2"><a href="#cb1-2" tabindex="-1"></a></span>
<span id="cb1-3"><a href="#cb1-3" tabindex="-1"></a><span class="va">DESCRIPTION</span><span class="op">=</span><span class="st">&quot;A dummy package&quot;</span></span>
<span id="cb1-4"><a href="#cb1-4" tabindex="-1"></a><span class="va">HOMEPAGE</span><span class="op">=</span><span class="st">&quot;https://dummy.org&quot;</span></span>
<span id="cb1-5"><a href="#cb1-5" tabindex="-1"></a><span class="va">SRC_URI</span><span class="op">=</span><span class="st">&quot;https://github.com/dummy/dummy/archive/refs/tags/</span><span class="va">${PV}</span><span class="st">.tar.gz -&gt; </span><span class="va">${P}</span><span class="st">.tar.gz&quot;</span></span>
<span id="cb1-6"><a href="#cb1-6" tabindex="-1"></a></span>
<span id="cb1-7"><a href="#cb1-7" tabindex="-1"></a><span class="va">LICENSE</span><span class="op">=</span><span class="st">&quot;BSD-3&quot;</span></span>
<span id="cb1-8"><a href="#cb1-8" tabindex="-1"></a><span class="va">SLOT</span><span class="op">=</span><span class="st">&quot;0&quot;</span></span>
<span id="cb1-9"><a href="#cb1-9" tabindex="-1"></a><span class="va">KEYWORDS</span><span class="op">=</span><span class="st">&quot;~amd64 ~x86 &quot;</span></span>
<span id="cb1-10"><a href="#cb1-10" tabindex="-1"></a><span class="va">IUSE</span><span class="op">=</span><span class="st">&quot;debug&quot;</span></span>
<span id="cb1-11"><a href="#cb1-11" tabindex="-1"></a></span>
<span id="cb1-12"><a href="#cb1-12" tabindex="-1"></a><span class="va">RDEPEND</span><span class="op">=</span><span class="st">&quot;dev-util/boost&quot;</span></span>
<span id="cb1-13"><a href="#cb1-13" tabindex="-1"></a></span>
<span id="cb1-14"><a href="#cb1-14" tabindex="-1"></a><span class="va">PATCHES</span><span class="op">=</span><span class="va">(</span> <span class="st">&quot;</span><span class="va">${FILESDIR}</span><span class="st">&quot;</span>/<span class="va">${PN}</span>-4.9.2-disable_python_rpath.patch<span class="va">)</span></span>
<span id="cb1-15"><a href="#cb1-15" tabindex="-1"></a></span>
<span id="cb1-16"><a href="#cb1-16" tabindex="-1"></a><span class="fu">src_configure()</span> <span class="kw">{</span></span>
<span id="cb1-17"><a href="#cb1-17" tabindex="-1"></a> <span class="ex">econf</span> <span class="va">$(</span><span class="ex">use_enable</span> debug<span class="va">)</span></span>
<span id="cb1-18"><a href="#cb1-18" tabindex="-1"></a><span class="kw">}</span></span>
<span id="cb1-19"><a href="#cb1-19" tabindex="-1"></a></span>
<span id="cb1-20"><a href="#cb1-20" tabindex="-1"></a><span class="fu">src_compile()</span> <span class="kw">{</span></span>
<span id="cb1-21"><a href="#cb1-21" tabindex="-1"></a> <span class="ex">emake</span></span>
<span id="cb1-22"><a href="#cb1-22" tabindex="-1"></a><span class="kw">}</span></span>
<span id="cb1-23"><a href="#cb1-23" tabindex="-1"></a></span>
<span id="cb1-24"><a href="#cb1-24" tabindex="-1"></a><span class="fu">src_test()</span> <span class="kw">{</span></span>
<span id="cb1-25"><a href="#cb1-25" tabindex="-1"></a> <span class="ex">emake</span> test</span>
<span id="cb1-26"><a href="#cb1-26" tabindex="-1"></a><span class="kw">}</span></span>
<span id="cb1-27"><a href="#cb1-27" tabindex="-1"></a></span>
<span id="cb1-28"><a href="#cb1-28" tabindex="-1"></a><span class="fu">src_install()</span> <span class="kw">{</span></span>
<span id="cb1-29"><a href="#cb1-29" tabindex="-1"></a> <span class="ex">emake</span> DESTDIR=<span class="st">&quot;</span><span class="va">${D}</span><span class="st">&quot;</span> install</span>
<span id="cb1-30"><a href="#cb1-30" tabindex="-1"></a><span class="kw">}</span></span></code></pre></div>
</div>
<div id="packaging-challenges" class="slide section level2">
<h1>Packaging challenges</h1>
<ul>
<li>no standard on build systems (make, autotools, meson, cmake, …)
<ul>
<li>=&gt; an abstraction over build systems</li>
</ul></li>
<li>thousands of different execution environments (fragility)
<ul>
<li>system configuration</li>
<li>package configuration</li>
<li>platform, architecture</li>
</ul></li>
<li>reverse dependencies
<ul>
<li>shipping a “chain” instead of a single artifact</li>
</ul></li>
<li>high impact on small mistakes (e.g. assuming a specific shell)</li>
</ul>
</div>
<div id="packaging-challenges-pt-2." class="slide section level2">
<h1>Packaging challenges (pt 2.)</h1>
<ul>
<li>communication between teams/maintainers</li>
<li>execution of large changes
<ul>
<li>e.g. introduction of LibreSSL</li>
<li>e.g. changing of fundamental workflows (from CVS to git)</li>
</ul></li>
<li>monitoring upstream changes and making decisions about
compatibility/stability
<ul>
<li>when to update</li>
</ul></li>
</ul>
</div>
<div id="what-is-a-distro-really" class="slide section level2">
<h1>What is a Distro really?</h1>
<ul>
<li>a user experience
<ul>
<li>LTS distros vs rolling release</li>
<li>binary vs source based</li>
<li>choice of init system</li>
</ul></li>
<li>plug and play (everything works)</li>
<li>deviating from the happy path (fixing issues)</li>
<li>combining components to a coherent system (init system, coreutils,
kernel, …)</li>
<li>a choice of <strong>defaults</strong></li>
</ul>
</div>
<div id="ghcup" class="title-slide slide section level1">
<h1>GHCup</h1>
</div>
<div id="demo" class="slide section level2">
<h1>Demo</h1>
<p><img src="ghcup.png" id="id" class="class" height="500" /></p>
</div>
<div id="state-of-2019-haskell-installers" class="slide section level2">
<h1>State of 2019 (Haskell Installers)</h1>
<ul>
<li>stack is the only “Haskell Installer”</li>
<li>no unified alternative for cabal users</li>
<li>distro packages, nix, manual installs, …</li>
<li>😭</li>
</ul>
</div>
<div id="how-it-started" class="slide section level2">
<h1>How it started</h1>
<ul>
<li>🤹 small team at work (Capital Match), using different platforms
<ul>
<li>originally used stack</li>
<li>distro packages constantly out of date</li>
</ul></li>
<li>🦾 first version was 165 LOC
<ul>
<li>Posix shell</li>
</ul></li>
<li><img src="linux.png" id="id" class="class" height="32" /> only
supported linux and mac</li>
<li><img src="rust.png" id="id" class="class" height="32" /> inspired by
<strong>rustup</strong></li>
<li>support from haskell.org</li>
</ul>
</div>
<div id="ghcup-today" class="slide section level2">
<h1>GHCup today</h1>
<p><a
href="https://taylor.fausak.me/2022/11/18/haskell-survey-results/#s2q1">Haskell
Survey 2022</a>:</p>
<p><img src="survey.png" /></p>
<ul>
<li>over <strong>17k</strong> LOC Haskell</li>
<li>supports all platforms: Linux, Windows, macOS, FreeBSD</li>
<li>first thing new Haskell users get exposed to</li>
</ul>
</div>
<div id="what-is-ghcup-simplified" class="slide section level2">
<h1>What is GHCup (simplified)?</h1>
<div class="sourceCode" id="cb2"><pre class="sourceCode sh"><code class="sourceCode bash"><span id="cb2-1"><a href="#cb2-1" tabindex="-1"></a><span class="ex">curl</span> <span class="at">-s</span> <span class="at">-L</span> <span class="dt">\</span></span>
<span id="cb2-2"><a href="#cb2-2" tabindex="-1"></a> <span class="st">&#39;https://downloads.haskell.org/~ghc/9.6.5/ghc-9.6.5-x86_64-fedora33-linux.tar.xz&#39;</span> <span class="kw">|</span></span>
<span id="cb2-3"><a href="#cb2-3" tabindex="-1"></a> <span class="fu">tar</span> <span class="at">-xJ</span> <span class="at">-C</span> /tmp <span class="kw">&amp;&amp;</span></span>
<span id="cb2-4"><a href="#cb2-4" tabindex="-1"></a> <span class="bu">cd</span> /tmp/ghc-9.6.5-x86_64-unknown-linux/ <span class="kw">&amp;&amp;</span></span>
<span id="cb2-5"><a href="#cb2-5" tabindex="-1"></a> <span class="ex">./configure</span> <span class="at">--prefix</span><span class="op">=</span><span class="st">&quot;</span><span class="va">$HOME</span><span class="st">/.local&quot;</span> <span class="kw">&amp;&amp;</span></span>
<span id="cb2-6"><a href="#cb2-6" tabindex="-1"></a> <span class="fu">make</span> install <span class="kw">&amp;&amp;</span></span>
<span id="cb2-7"><a href="#cb2-7" tabindex="-1"></a> <span class="fu">rm</span> <span class="at">-rf</span> /tmp/ghc-9.6.5-x86_64-unknown-linux/</span></code></pre></div>
</div>
<div id="what-is-ghcup-really" class="slide section level2">
<h1>What is GHCup really?</h1>
<ul>
<li><img src="open-box.png" id="id" class="class" width="32"
height="32" /> installer (portable)</li>
<li><img src="debian.png" id="id" class="class" width="32"
height="32" /> distribution channel</li>
<li><img src="feedback.png" id="id" class="class" width="32"
height="32" /> feedback channel</li>
<li><img src="qa.png" id="id" class="class" width="32" height="32" />
testing/QA gateway</li>
<li><img src="user.png" id="id" class="class" width="32" height="32" />
provider of sane defaults (e.g. “recommended” GHC version)</li>
<li><img src="chain-saw.png" id="id" class="class" width="32"
height="32" /> glue for holistic toolchain experience
<ul>
<li>VSCode, stack, cabal-install integration</li>
</ul></li>
<li><img src="ghaction.png" id="id" class="class" width="32"
height="32" /> CI provisioning (e.g. github actions)</li>
</ul>
</div>
<div id="the-difference-to-gentoo" class="slide section level2">
<h1>The difference to Gentoo</h1>
<ul>
<li>one-man project (mostly)</li>
<li>much tighter coupling between upstream (e.g. GHC developers) and
downstream (GHCup developers)
<ul>
<li>heavier on relationship issues</li>
</ul></li>
<li>much more responsibility</li>
<li>position of authority</li>
</ul>
</div>
<div id="relationships-in-detail" class="slide section level2">
<h1>Relationships in detail</h1>
<p>Dependencies:</p>
<ul>
<li>supported tools
<ul>
<li>GHC</li>
<li>Cabal</li>
<li>HLS</li>
<li>Stack</li>
</ul></li>
<li>decisions that affect us
<ul>
<li>release frequency</li>
<li>upstream CI</li>
<li>platform support</li>
<li>binary distributions (the
<code>.tar.gz</code>/<code>.zip</code>)</li>
</ul></li>
</ul>
</div>
<div id="relationships-in-detail-1" class="slide section level2">
<h1>Relationships in detail</h1>
<p>Dependents:</p>
<ul>
<li><img src="haskell_logo.png" id="id" class="class" height="32" />
Haskell developers
<ul>
<li>beginners, advanced, students, companies</li>
</ul></li>
<li><img src="person.png" id="id" class="class" width="32"
height="32" /> end users (e.g. compiling pandoc from source)</li>
<li><img src="ghaction.png" id="id" class="class" width="32"
height="32" /> GitHub CI
<ul>
<li>GitHub images, Haskell repos</li>
</ul></li>
<li>🪞 mirrors
<ul>
<li><a href="https://mirror.sjtu.edu.cn/docs/ghcup">sjtug</a></li>
</ul></li>
<li>🧰 tools
<ul>
<li><a
href="https://github.com/haskell/vscode-haskell">vscode-haskell</a>, <a
href="https://play.haskell.org/">Haskell playground</a>, <a
href="https://github.com/williamboman/nvim-lsp-installer">nvim-lsp-installer</a></li>
</ul></li>
</ul>
</div>
<div id="other" class="slide section level2">
<h1>Other</h1>
<ul>
<li><p>the idea of a distribution is to create a user experience</p>
<ul>
<li>you log into your computer and install a program and everything just
works</li>
<li>or: something doesnt work… what are your next steps?</li>
</ul></li>
<li><p>you create an experience</p></li>
<li><p>the distribution is that brings all the pieces together:
installation, service management (systemd, openrc, initd), kernel
updates, support</p></li>
<li><p>lesson: composition</p>
<ul>
<li>functions</li>
<li>libraries</li>
<li>programs (unix)</li>
</ul></li>
<li><p>lesson: specifications</p>
<ul>
<li>LSP (open source milestone)</li>
</ul></li>
<li><p>lesson: caring about features and code instead of maintenance and
collaborations</p></li>
<li><p>dicatorships work</p></li>
<li><p>decision making (processes)</p>
<ul>
<li>lightweight when risk of mistakes is low (can revert?)</li>
</ul></li>
<li><p>tests in CI are garbage</p></li>
<li><p>reverse dependencies &lt;-&gt; me &lt;-&gt; users</p></li>
<li><p>collaboration vs boundaries, communication</p></li>
<li><p>what distribution work taught me for programming</p></li>
<li><p>posix principles and their connection to functional programming
(streams)</p></li>
<li><p>strings</p></li>
<li><p>open source politics</p></li>
<li><p>how to drive change</p></li>
<li><p>how to handle contributions (contribution experience, PRs,
documentation, mentoring,. ..)</p></li>
<li><p>collaboration</p></li>
<li><p>relationship between industry and FOSS</p></li>
<li><p>what is the main currency (money vs energy)</p></li>
<li><p>bus factor</p></li>
<li><p>feedback from universities regarding Haskell tooling</p></li>
<li><p>respect other projects when contributing</p></li>
<li><p>enabling and supporting (switching from coding wizard to support
role)</p></li>
<li><p>project life cycles</p></li>
<li><p>support</p></li>
<li><p>stability vs. ..</p></li>
<li><p>boundaries vs collaboration</p></li>
<li><p>trust, respect, relationship</p></li>
<li><p>working mode in open source</p></li>
<li><p>dealing with expectations</p></li>
<li><p>how to test (on the end users system)</p></li>
<li><p>what if you diverge from the happy path</p></li>
<li><p>why is stability an interesting goal?</p></li>
</ul>
</div>
</body>
</html>

271
nus.md Normal file
View File

@ -0,0 +1,271 @@
% Two decades of Open Source
% Julian Ospald
% Sep 20, 2024
# Introduction
## About me
* From Germany
* Studied CS
* Haskell developer
* I love open source
## Professional career
* Software Engineer in R&D (automotive industry)
* Go Backend Developer (online advertisement platform
* Haskell Developer at **Capital Match** (invoice financing platform in Singapore)
* Haskell Developer at **IOHK** (Cardano Blockchain)
* Haskell Freelancer (blockchain and others)
* Haskell Developer at **Standard Chartered Bank**
* Haskell Freelancer (chimney sweeper app for german businesses)
## Open Source career
* Gentoo Linux developer (core team), 2012-2016
- Ebuild development (packaging)
- Code review
- Development of a [git workflow](https://www.gentoo.org/glep/glep-0066.html)
* Author of GHCup (the Haskell installer), ca. 2019
* Maintainer of Haskell core libraries: filepath, unix, os-string, file-io
* Implementation of the [Abstract FilePath Proposal](https://hasufell.github.io/posts/2022-06-29-fixing-haskell-filepaths.html)
* Member of the Haskell Core Libraries Comittee 2023-2026
* Haskell Influencer (Haskell Foundation, ...)
# Open Source
## What is Open Source
* ![](osi.png){#id .class height=32px} A group of licenses (see OSI)
* *Not* free software
* *Not* copyleft
* 🧑‍🤝‍🧑 A community
* volunteers
* companies
* 🔮 A philosophy
* sharing
* collaboration
* transparency
## Popular Open Source projects
* ![](512px-Tux.svg.png){#id .class height=32px} Linux kernel
* 1500 developers from 200-250 companies
* ![](firefox.png){#id .class height=32px} Firefox
* ![](vscode.png){#id .class height=32px} VSCode
* ![](blender.png){#id .class height=32px} Blender
* ![](haskell_logo.png){#id .class height=32px} GHC (The Haskell compiler)
## Value proposition of Open Source
* ⚗️ the scientific method
* share your results
* allow people to replicate it
* 🔓 access to a community
* users
* collaborators
* 🕸️ network effects
## Reality of Open Source
* most projects...
* are one-man shows
* have no users
* are underdocumened
* have horrible code
* writing new code is easy, maintenance is hard
* most maintainers
* don't get paid
* will stop maintenance at some point
* don't care much about their users
# Gentoo and package management
## What is Gentoo
* a Linux distribution
* rolling release
* source based
* 19000 packages (program, library, ...)
* 200 core developers (at its peak)
* over 1000 contributors
## How does a Linux distro work (relationships)
![](packager_relationships.svg){#id .class height=500px}
## How does a Linux distro work (activities)
![](install.svg){#id .class height=500px}
## A typical ebuild
```bash
EAPI=8
DESCRIPTION="A dummy package"
HOMEPAGE="https://dummy.org"
SRC_URI="https://github.com/dummy/dummy/archive/refs/tags/${PV}.tar.gz -> ${P}.tar.gz"
LICENSE="BSD-3"
SLOT="0"
KEYWORDS="~amd64 ~x86 "
IUSE="debug"
RDEPEND="dev-util/boost"
PATCHES=( "${FILESDIR}"/${PN}-4.9.2-disable_python_rpath.patch)
src_configure() {
econf $(use_enable debug)
}
src_compile() {
emake
}
src_test() {
emake test
}
src_install() {
emake DESTDIR="${D}" install
}
```
## Packaging challenges
* no standard on build systems (make, autotools, meson, cmake, ...)
* => an abstraction over build systems
* thousands of different execution environments (fragility)
- system configuration
- package configuration
- platform, architecture
* reverse dependencies
- shipping a "chain" instead of a single artifact
* high impact on small mistakes (e.g. assuming a specific shell)
## Packaging challenges (pt 2.)
* communication between teams/maintainers
* execution of large changes
- e.g. introduction of LibreSSL
- e.g. changing of fundamental workflows (from CVS to git)
* monitoring upstream changes and making decisions about compatibility/stability
- when to update
## What is a Distro really?
* a user experience
- LTS distros vs rolling release
- binary vs source based
- choice of init system
* plug and play (everything works)
* deviating from the happy path (fixing issues)
* combining components to a coherent system (init system, coreutils, kernel, ...)
* a choice of **defaults**
## Why Gentoo made me a better programmer
* primary packaging skill: being meticulous
* small mistakes -> big impact
* long term maintenance of small code pieces
* intense review culture
* strict policies and workflow guidelines
* how to learn complex system
# GHCup
## Demo
![](ghcup.png){#id .class height=500px}
## State of 2019 (Haskell Installers)
* stack is the only "Haskell Installer"
* no unified alternative for cabal users
* distro packages, nix, manual installs, ...
* 😭
## How it started
* 🤹 small team at work (Capital Match), using different platforms
- originally used stack
- distro packages constantly out of date
* 🦾 first version was 165 LOC
- Posix shell
* ![](linux.png){#id .class height=32px} only supported linux and mac
* ![](rust.png){#id .class height=32px} inspired by **rustup**
* support from haskell.org
## GHCup today
[Haskell Survey 2022](https://taylor.fausak.me/2022/11/18/haskell-survey-results/#s2q1):
![](survey.png)
- over **17k** LOC Haskell
- supports all platforms: Linux, Windows, macOS, FreeBSD
- first thing new Haskell users get exposed to
## What is GHCup (simplified)?
```sh
curl -s -L \
'https://downloads.haskell.org/~ghc/9.6.5/ghc-9.6.5-x86_64-fedora33-linux.tar.xz' |
tar -xJ -C /tmp &&
cd /tmp/ghc-9.6.5-x86_64-unknown-linux/ &&
./configure --prefix="$HOME/.local" &&
make install &&
rm -rf /tmp/ghc-9.6.5-x86_64-unknown-linux/
```
## What is GHCup really?
* ![](open-box.png){#id .class width=32 height=32px} installer (portable)
* ![](debian.png){#id .class width=32 height=32px} distribution channel
* ![](feedback.png){#id .class width=32 height=32px} feedback channel
* ![](qa.png){#id .class width=32 height=32px} testing/QA gateway
* ![](user.png){#id .class width=32 height=32px} provider of sane defaults (e.g. "recommended" GHC version)
* ![](chain-saw.png){#id .class width=32 height=32px} glue for holistic toolchain experience
- VSCode, stack, cabal-install integration
* ![](ghaction.png){#id .class width=32 height=32px} CI provisioning (e.g. github actions)
## The difference to Gentoo
* one-man project (mostly)
* much tighter coupling between upstream (e.g. GHC developers) and downstream (GHCup developers)
* heavier on relationship issues
* much more responsibility
* position of authority
## Relationships in detail
Dependencies:
- supported tools
- GHC
- Cabal
- HLS
- Stack
- decisions that affect us
- release frequency
- upstream CI
- platform support
- binary distributions (the `.tar.gz`/`.zip`)
## Relationships in detail
Dependents:
- ![](haskell_logo.png){#id .class height=32px} Haskell developers
- beginners, advanced, students, companies
- ![](person.png){#id .class width=32 height=32px} end users (e.g. compiling pandoc from source)
- ![](ghaction.png){#id .class width=32 height=32px} GitHub CI
- GitHub images, Haskell repos
- 🪞 mirrors
- [sjtug](https://mirror.sjtu.edu.cn/docs/ghcup)
- 🧰 tools
- [vscode-haskell](https://github.com/haskell/vscode-haskell), [Haskell playground](https://play.haskell.org/), [nvim-lsp-installer](https://github.com/williamboman/nvim-lsp-installer)

BIN
open-box.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

BIN
osi.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

BIN
packager_relationships.dia Normal file

Binary file not shown.

331
packager_relationships.svg Normal file
View File

@ -0,0 +1,331 @@
<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="566" height="355" viewBox="0 0 566 355">
<defs>
<g>
<g id="glyph-0-0">
<path d="M 6.265625 -9.09375 L 7.453125 -9.09375 L 7.453125 -2.9375 C 7.453125 -1.914062 7.125 -1.148438 6.46875 -0.640625 C 5.8125 -0.128906 5.039062 0.125 4.15625 0.125 C 3.226562 0.125 2.445312 -0.128906 1.8125 -0.640625 C 1.1875 -1.148438 0.875 -1.914062 0.875 -2.9375 L 0.875 -9.09375 L 2.0625 -9.09375 L 2.0625 -2.9375 C 2.0625 -2.226562 2.253906 -1.703125 2.640625 -1.359375 C 3.023438 -1.023438 3.53125 -0.859375 4.15625 -0.859375 C 4.789062 -0.859375 5.300781 -1.023438 5.6875 -1.359375 C 6.070312 -1.703125 6.265625 -2.226562 6.265625 -2.9375 Z M 6.265625 -9.09375 "/>
</g>
<g id="glyph-0-1">
<path d="M 4.8125 -1.796875 C 4.8125 -2.035156 4.722656 -2.253906 4.546875 -2.453125 C 4.367188 -2.648438 3.953125 -2.816406 3.296875 -2.953125 C 2.535156 -3.109375 1.929688 -3.332031 1.484375 -3.625 C 1.046875 -3.914062 0.828125 -4.34375 0.828125 -4.90625 C 0.828125 -5.445312 1.050781 -5.910156 1.5 -6.296875 C 1.957031 -6.691406 2.566406 -6.890625 3.328125 -6.890625 C 4.140625 -6.890625 4.769531 -6.679688 5.21875 -6.265625 C 5.675781 -5.859375 5.90625 -5.363281 5.90625 -4.78125 L 4.75 -4.78125 C 4.75 -5.050781 4.625 -5.3125 4.375 -5.5625 C 4.132812 -5.8125 3.785156 -5.9375 3.328125 -5.9375 C 2.847656 -5.9375 2.503906 -5.832031 2.296875 -5.625 C 2.085938 -5.414062 1.984375 -5.1875 1.984375 -4.9375 C 1.984375 -4.695312 2.078125 -4.5 2.265625 -4.34375 C 2.460938 -4.195312 2.878906 -4.050781 3.515625 -3.90625 C 4.335938 -3.71875 4.953125 -3.472656 5.359375 -3.171875 C 5.765625 -2.867188 5.96875 -2.4375 5.96875 -1.875 C 5.96875 -1.28125 5.726562 -0.796875 5.25 -0.421875 C 4.78125 -0.0546875 4.148438 0.125 3.359375 0.125 C 2.460938 0.125 1.773438 -0.101562 1.296875 -0.5625 C 0.828125 -1.019531 0.59375 -1.53125 0.59375 -2.09375 L 1.75 -2.09375 C 1.78125 -1.613281 1.96875 -1.28125 2.3125 -1.09375 C 2.65625 -0.914062 3.003906 -0.828125 3.359375 -0.828125 C 3.828125 -0.828125 4.1875 -0.914062 4.4375 -1.09375 C 4.6875 -1.28125 4.8125 -1.515625 4.8125 -1.796875 Z M 4.8125 -1.796875 "/>
</g>
<g id="glyph-0-2">
<path d="M 6.234375 -1.1875 C 6.015625 -0.851562 5.703125 -0.550781 5.296875 -0.28125 C 4.890625 -0.0078125 4.351562 0.125 3.6875 0.125 C 2.75 0.125 1.992188 -0.179688 1.421875 -0.796875 C 0.859375 -1.410156 0.578125 -2.191406 0.578125 -3.140625 L 0.578125 -3.40625 C 0.578125 -4.144531 0.71875 -4.769531 1 -5.28125 C 1.28125 -5.800781 1.644531 -6.195312 2.09375 -6.46875 C 2.550781 -6.75 3.03125 -6.890625 3.53125 -6.890625 C 4.5 -6.890625 5.203125 -6.570312 5.640625 -5.9375 C 6.085938 -5.3125 6.3125 -4.523438 6.3125 -3.578125 L 6.3125 -3.0625 L 1.75 -3.0625 C 1.757812 -2.4375 1.941406 -1.90625 2.296875 -1.46875 C 2.648438 -1.03125 3.132812 -0.8125 3.75 -0.8125 C 4.15625 -0.8125 4.5 -0.894531 4.78125 -1.0625 C 5.070312 -1.226562 5.320312 -1.453125 5.53125 -1.734375 Z M 3.53125 -5.9375 C 3.070312 -5.9375 2.6875 -5.769531 2.375 -5.4375 C 2.0625 -5.101562 1.863281 -4.625 1.78125 -4 L 5.15625 -4 L 5.15625 -4.09375 C 5.132812 -4.539062 5.003906 -4.957031 4.765625 -5.34375 C 4.535156 -5.738281 4.125 -5.9375 3.53125 -5.9375 Z M 3.53125 -5.9375 "/>
</g>
<g id="glyph-0-3">
<path d="M 3.578125 -5.78125 C 2.828125 -5.78125 2.3125 -5.453125 2.03125 -4.796875 L 2.03125 0 L 0.875 0 L 0.875 -6.765625 L 2 -6.765625 L 2.03125 -5.984375 C 2.40625 -6.585938 2.941406 -6.890625 3.640625 -6.890625 C 3.859375 -6.890625 4.03125 -6.859375 4.15625 -6.796875 L 4.140625 -5.71875 C 3.972656 -5.757812 3.785156 -5.78125 3.578125 -5.78125 Z M 3.578125 -5.78125 "/>
</g>
<g id="glyph-0-4">
<path d="M 3.96875 0.125 C 3.15625 0.125 2.507812 -0.132812 2.03125 -0.65625 L 2.03125 2.59375 L 0.875 2.59375 L 0.875 -6.765625 L 1.9375 -6.765625 L 2 -6.015625 C 2.46875 -6.597656 3.117188 -6.890625 3.953125 -6.890625 C 4.804688 -6.890625 5.457031 -6.570312 5.90625 -5.9375 C 6.363281 -5.300781 6.59375 -4.46875 6.59375 -3.4375 L 6.59375 -3.3125 C 6.59375 -2.320312 6.363281 -1.5 5.90625 -0.84375 C 5.445312 -0.195312 4.800781 0.125 3.96875 0.125 Z M 3.609375 -5.90625 C 2.910156 -5.90625 2.382812 -5.597656 2.03125 -4.984375 L 2.03125 -1.75 C 2.382812 -1.132812 2.914062 -0.828125 3.625 -0.828125 C 4.25 -0.828125 4.707031 -1.070312 5 -1.5625 C 5.289062 -2.050781 5.4375 -2.632812 5.4375 -3.3125 L 5.4375 -3.4375 C 5.4375 -4.101562 5.289062 -4.679688 5 -5.171875 C 4.707031 -5.660156 4.242188 -5.90625 3.609375 -5.90625 Z M 3.609375 -5.90625 "/>
</g>
<g id="glyph-0-5">
<path d="M 3.75 0 C 3.476562 0.0820312 3.175781 0.125 2.84375 0.125 C 2.414062 0.125 2.050781 -0.00390625 1.75 -0.265625 C 1.445312 -0.523438 1.296875 -1 1.296875 -1.6875 L 1.296875 -5.875 L 0.0625 -5.875 L 0.0625 -6.765625 L 1.296875 -6.765625 L 1.296875 -8.40625 L 2.453125 -8.40625 L 2.453125 -6.765625 L 3.71875 -6.765625 L 3.71875 -5.875 L 2.453125 -5.875 L 2.453125 -1.671875 C 2.453125 -1.328125 2.523438 -1.109375 2.671875 -1.015625 C 2.828125 -0.921875 3 -0.875 3.1875 -0.875 C 3.332031 -0.875 3.515625 -0.894531 3.734375 -0.9375 Z M 3.75 0 "/>
</g>
<g id="glyph-0-6">
<path d="M 5.0625 0 C 4.976562 -0.164062 4.921875 -0.40625 4.890625 -0.71875 C 4.671875 -0.488281 4.398438 -0.289062 4.078125 -0.125 C 3.753906 0.0390625 3.382812 0.125 2.96875 0.125 C 2.28125 0.125 1.726562 -0.0664062 1.3125 -0.453125 C 0.894531 -0.835938 0.6875 -1.3125 0.6875 -1.875 C 0.6875 -2.601562 0.957031 -3.15625 1.5 -3.53125 C 2.050781 -3.90625 2.789062 -4.09375 3.71875 -4.09375 L 4.875 -4.09375 L 4.875 -4.640625 C 4.875 -5.035156 4.753906 -5.351562 4.515625 -5.59375 C 4.273438 -5.832031 3.914062 -5.953125 3.4375 -5.953125 C 3 -5.953125 2.644531 -5.84375 2.375 -5.625 C 2.113281 -5.414062 1.984375 -5.171875 1.984375 -4.890625 L 0.828125 -4.890625 C 0.828125 -5.367188 1.066406 -5.820312 1.546875 -6.25 C 2.035156 -6.675781 2.691406 -6.890625 3.515625 -6.890625 C 4.242188 -6.890625 4.84375 -6.703125 5.3125 -6.328125 C 5.789062 -5.953125 6.03125 -5.382812 6.03125 -4.625 L 6.03125 -1.59375 C 6.03125 -0.96875 6.109375 -0.46875 6.265625 -0.09375 L 6.265625 0 Z M 3.140625 -0.890625 C 3.554688 -0.890625 3.914062 -0.992188 4.21875 -1.203125 C 4.53125 -1.410156 4.75 -1.640625 4.875 -1.890625 L 4.875 -3.28125 L 3.796875 -3.28125 C 2.492188 -3.257812 1.84375 -2.84375 1.84375 -2.03125 C 1.84375 -1.71875 1.953125 -1.445312 2.171875 -1.21875 C 2.390625 -1 2.710938 -0.890625 3.140625 -0.890625 Z M 3.140625 -0.890625 "/>
</g>
<g id="glyph-0-7">
<path d="M 3.59375 -5.90625 C 2.832031 -5.90625 2.3125 -5.585938 2.03125 -4.953125 L 2.03125 0 L 0.875 0 L 0.875 -6.765625 L 1.96875 -6.765625 L 2 -6.03125 C 2.488281 -6.601562 3.15625 -6.890625 4 -6.890625 C 4.4375 -6.890625 4.820312 -6.800781 5.15625 -6.625 C 5.5 -6.457031 5.757812 -6.179688 5.9375 -5.796875 C 6.164062 -6.117188 6.457031 -6.378906 6.8125 -6.578125 C 7.175781 -6.785156 7.597656 -6.890625 8.078125 -6.890625 C 8.804688 -6.890625 9.367188 -6.691406 9.765625 -6.296875 C 10.160156 -5.910156 10.359375 -5.289062 10.359375 -4.4375 L 10.359375 0 L 9.1875 0 L 9.1875 -4.453125 C 9.1875 -5.023438 9.054688 -5.410156 8.796875 -5.609375 C 8.535156 -5.804688 8.1875 -5.90625 7.75 -5.90625 C 7.28125 -5.90625 6.910156 -5.765625 6.640625 -5.484375 C 6.378906 -5.210938 6.226562 -4.878906 6.1875 -4.484375 L 6.1875 0 L 5.03125 0 L 5.03125 -4.453125 C 5.03125 -4.984375 4.898438 -5.359375 4.640625 -5.578125 C 4.378906 -5.796875 4.03125 -5.90625 3.59375 -5.90625 Z M 3.59375 -5.90625 "/>
</g>
<g id="glyph-0-8">
</g>
<g id="glyph-0-9">
<path d="M 0.84375 -3.703125 C 0.84375 -4.910156 1.015625 -5.960938 1.359375 -6.859375 C 1.703125 -7.765625 2.109375 -8.503906 2.578125 -9.078125 C 3.054688 -9.648438 3.492188 -10.046875 3.890625 -10.265625 L 4.140625 -9.5 C 3.648438 -9.132812 3.171875 -8.472656 2.703125 -7.515625 C 2.234375 -6.566406 2 -5.269531 2 -3.625 C 2 -2.039062 2.234375 -0.769531 2.703125 0.1875 C 3.171875 1.15625 3.648438 1.835938 4.140625 2.234375 L 3.890625 2.9375 C 3.492188 2.71875 3.054688 2.320312 2.578125 1.75 C 2.109375 1.1875 1.703125 0.453125 1.359375 -0.453125 C 1.015625 -1.359375 0.84375 -2.441406 0.84375 -3.703125 Z M 0.84375 -3.703125 "/>
</g>
<g id="glyph-0-10">
<path d="M 5.078125 0 L 5.046875 -0.671875 C 4.609375 -0.140625 3.953125 0.125 3.078125 0.125 C 2.410156 0.125 1.875 -0.0664062 1.46875 -0.453125 C 1.0625 -0.847656 0.859375 -1.5 0.859375 -2.40625 L 0.859375 -6.765625 L 2.015625 -6.765625 L 2.015625 -2.390625 C 2.015625 -1.773438 2.140625 -1.363281 2.390625 -1.15625 C 2.648438 -0.957031 2.9375 -0.859375 3.25 -0.859375 C 4.125 -0.859375 4.710938 -1.1875 5.015625 -1.84375 L 5.015625 -6.765625 L 6.1875 -6.765625 L 6.1875 0 Z M 5.078125 0 "/>
</g>
<g id="glyph-0-11">
<path d="M 3.6875 -5.90625 C 3.3125 -5.90625 2.984375 -5.804688 2.703125 -5.609375 C 2.421875 -5.410156 2.195312 -5.148438 2.03125 -4.828125 L 2.03125 0 L 0.875 0 L 0.875 -9.59375 L 2.03125 -9.59375 L 2.03125 -5.953125 C 2.550781 -6.578125 3.21875 -6.890625 4.03125 -6.890625 C 4.695312 -6.890625 5.222656 -6.703125 5.609375 -6.328125 C 5.992188 -5.960938 6.191406 -5.34375 6.203125 -4.46875 L 6.203125 0 L 5.03125 0 L 5.03125 -4.4375 C 5.03125 -4.96875 4.914062 -5.34375 4.6875 -5.5625 C 4.457031 -5.789062 4.125 -5.90625 3.6875 -5.90625 Z M 3.6875 -5.90625 "/>
</g>
<g id="glyph-0-12">
<path d="M 0.578125 -3.453125 C 0.578125 -4.429688 0.847656 -5.25 1.390625 -5.90625 C 1.941406 -6.5625 2.691406 -6.890625 3.640625 -6.890625 C 4.585938 -6.890625 5.332031 -6.566406 5.875 -5.921875 C 6.425781 -5.273438 6.710938 -4.472656 6.734375 -3.515625 L 6.734375 -3.3125 C 6.734375 -2.332031 6.457031 -1.515625 5.90625 -0.859375 C 5.351562 -0.203125 4.601562 0.125 3.65625 0.125 C 2.707031 0.125 1.957031 -0.203125 1.40625 -0.859375 C 0.851562 -1.515625 0.578125 -2.332031 0.578125 -3.3125 Z M 1.734375 -3.3125 C 1.734375 -2.632812 1.890625 -2.050781 2.203125 -1.5625 C 2.523438 -1.070312 3.007812 -0.828125 3.65625 -0.828125 C 4.28125 -0.828125 4.753906 -1.066406 5.078125 -1.546875 C 5.398438 -2.035156 5.5625 -2.613281 5.5625 -3.28125 L 5.5625 -3.453125 C 5.5625 -4.109375 5.398438 -4.6875 5.078125 -5.1875 C 4.765625 -5.6875 4.285156 -5.9375 3.640625 -5.9375 C 3.003906 -5.9375 2.523438 -5.6875 2.203125 -5.1875 C 1.890625 -4.6875 1.734375 -4.109375 1.734375 -3.453125 Z M 1.734375 -3.3125 "/>
</g>
<g id="glyph-0-13">
<path d="M 4.90625 -9.09375 L 1.109375 0.78125 L 0.125 0.78125 L 3.921875 -9.09375 Z M 4.90625 -9.09375 "/>
</g>
<g id="glyph-0-14">
<path d="M 0.890625 -8.546875 C 0.890625 -8.734375 0.945312 -8.890625 1.0625 -9.015625 C 1.175781 -9.148438 1.34375 -9.21875 1.5625 -9.21875 C 1.789062 -9.21875 1.960938 -9.148438 2.078125 -9.015625 C 2.191406 -8.890625 2.25 -8.734375 2.25 -8.546875 C 2.25 -8.367188 2.191406 -8.21875 2.078125 -8.09375 C 1.960938 -7.96875 1.789062 -7.90625 1.5625 -7.90625 C 1.34375 -7.90625 1.175781 -7.96875 1.0625 -8.09375 C 0.945312 -8.21875 0.890625 -8.367188 0.890625 -8.546875 Z M 2.140625 -6.765625 L 2.140625 0 L 0.96875 0 L 0.96875 -6.765625 Z M 2.140625 -6.765625 "/>
</g>
<g id="glyph-0-15">
<path d="M 3.6875 -5.90625 C 3.3125 -5.90625 2.984375 -5.804688 2.703125 -5.609375 C 2.421875 -5.410156 2.195312 -5.148438 2.03125 -4.828125 L 2.03125 0 L 0.875 0 L 0.875 -6.765625 L 1.96875 -6.765625 L 2.015625 -5.921875 C 2.523438 -6.566406 3.195312 -6.890625 4.03125 -6.890625 C 4.695312 -6.890625 5.222656 -6.703125 5.609375 -6.328125 C 5.992188 -5.960938 6.191406 -5.34375 6.203125 -4.46875 L 6.203125 0 L 5.03125 0 L 5.03125 -4.4375 C 5.03125 -4.96875 4.914062 -5.34375 4.6875 -5.5625 C 4.457031 -5.789062 4.125 -5.90625 3.6875 -5.90625 Z M 3.6875 -5.90625 "/>
</g>
<g id="glyph-0-16">
<path d="M 3.546875 -3.640625 C 3.546875 -2.421875 3.367188 -1.359375 3.015625 -0.453125 C 2.671875 0.453125 2.257812 1.1875 1.78125 1.75 C 1.3125 2.320312 0.878906 2.71875 0.484375 2.9375 L 0.25 2.234375 C 0.726562 1.867188 1.203125 1.195312 1.671875 0.21875 C 2.148438 -0.757812 2.390625 -2.070312 2.390625 -3.71875 C 2.390625 -4.769531 2.269531 -5.6875 2.03125 -6.46875 C 1.800781 -7.25 1.519531 -7.898438 1.1875 -8.421875 C 0.851562 -8.941406 0.539062 -9.320312 0.25 -9.5625 L 0.484375 -10.265625 C 0.878906 -10.046875 1.3125 -9.648438 1.78125 -9.078125 C 2.257812 -8.503906 2.671875 -7.765625 3.015625 -6.859375 C 3.367188 -5.960938 3.546875 -4.890625 3.546875 -3.640625 Z M 3.546875 -3.640625 "/>
</g>
<g id="glyph-0-17">
<path d="M 1.0625 0 L 1.0625 -9.09375 L 3.625 -9.09375 C 4.820312 -9.09375 5.789062 -8.707031 6.53125 -7.9375 C 7.269531 -7.175781 7.640625 -6.132812 7.640625 -4.8125 L 7.640625 -4.28125 C 7.640625 -2.957031 7.265625 -1.910156 6.515625 -1.140625 C 5.773438 -0.378906 4.773438 0 3.515625 0 Z M 2.265625 -8.109375 L 2.265625 -0.984375 L 3.515625 -0.984375 C 4.484375 -0.984375 5.210938 -1.28125 5.703125 -1.875 C 6.203125 -2.476562 6.453125 -3.28125 6.453125 -4.28125 L 6.453125 -4.828125 C 6.453125 -5.878906 6.203125 -6.6875 5.703125 -7.25 C 5.210938 -7.820312 4.519531 -8.109375 3.625 -8.109375 Z M 2.265625 -8.109375 "/>
</g>
<g id="glyph-0-18">
<path d="M 9.3125 -6.765625 L 7.359375 0 L 6.421875 0 L 4.78125 -5.125 L 3.171875 0 L 2.234375 0 L 0.265625 -6.765625 L 1.421875 -6.765625 L 2.75 -1.71875 L 4.328125 -6.765625 L 5.265625 -6.765625 L 6.859375 -1.609375 L 8.171875 -6.765625 Z M 9.3125 -6.765625 "/>
</g>
<g id="glyph-0-19">
<path d="M 2.265625 -3.5625 L 2.265625 0 L 1.0625 0 L 1.0625 -9.09375 L 4.40625 -9.09375 C 5.445312 -9.09375 6.238281 -8.832031 6.78125 -8.3125 C 7.332031 -7.789062 7.609375 -7.128906 7.609375 -6.328125 C 7.609375 -5.441406 7.332031 -4.757812 6.78125 -4.28125 C 6.238281 -3.800781 5.445312 -3.5625 4.40625 -3.5625 Z M 2.265625 -8.109375 L 2.265625 -4.546875 L 4.40625 -4.546875 C 5.113281 -4.546875 5.625 -4.707031 5.9375 -5.03125 C 6.25 -5.363281 6.40625 -5.789062 6.40625 -6.3125 C 6.40625 -6.78125 6.25 -7.195312 5.9375 -7.5625 C 5.625 -7.925781 5.113281 -8.109375 4.40625 -8.109375 Z M 2.265625 -8.109375 "/>
</g>
<g id="glyph-0-20">
<path d="M 3.59375 -0.828125 C 4 -0.828125 4.359375 -0.945312 4.671875 -1.1875 C 4.984375 -1.4375 5.15625 -1.753906 5.1875 -2.140625 L 6.28125 -2.140625 C 6.25 -1.535156 5.96875 -1.003906 5.4375 -0.546875 C 4.914062 -0.0976562 4.300781 0.125 3.59375 0.125 C 2.570312 0.125 1.8125 -0.207031 1.3125 -0.875 C 0.820312 -1.550781 0.578125 -2.34375 0.578125 -3.25 L 0.578125 -3.515625 C 0.578125 -4.421875 0.820312 -5.207031 1.3125 -5.875 C 1.8125 -6.550781 2.570312 -6.890625 3.59375 -6.890625 C 4.382812 -6.890625 5.019531 -6.65625 5.5 -6.1875 C 5.988281 -5.71875 6.25 -5.132812 6.28125 -4.4375 L 5.1875 -4.4375 C 5.15625 -4.851562 4.992188 -5.207031 4.703125 -5.5 C 4.421875 -5.789062 4.050781 -5.9375 3.59375 -5.9375 C 3.113281 -5.9375 2.738281 -5.816406 2.46875 -5.578125 C 2.195312 -5.335938 2.003906 -5.03125 1.890625 -4.65625 C 1.785156 -4.28125 1.734375 -3.898438 1.734375 -3.515625 L 1.734375 -3.25 C 1.734375 -2.851562 1.785156 -2.46875 1.890625 -2.09375 C 2.003906 -1.726562 2.195312 -1.425781 2.46875 -1.1875 C 2.738281 -0.945312 3.113281 -0.828125 3.59375 -0.828125 Z M 3.59375 -0.828125 "/>
</g>
<g id="glyph-0-21">
<path d="M 5.125 0 L 2.78125 -3.140625 L 2.046875 -2.375 L 2.046875 0 L 0.875 0 L 0.875 -9.59375 L 2.046875 -9.59375 L 2.046875 -3.796875 L 2.65625 -4.53125 L 4.765625 -6.765625 L 6.171875 -6.765625 L 3.53125 -3.9375 L 6.484375 0 Z M 5.125 0 "/>
</g>
<g id="glyph-0-22">
<path d="M 3.453125 2.671875 C 3.097656 2.671875 2.664062 2.582031 2.15625 2.40625 C 1.65625 2.238281 1.25 1.9375 0.9375 1.5 L 1.546875 0.8125 C 2.046875 1.414062 2.648438 1.71875 3.359375 1.71875 C 3.910156 1.71875 4.347656 1.5625 4.671875 1.25 C 4.992188 0.945312 5.15625 0.5 5.15625 -0.09375 L 5.15625 -0.6875 C 4.695312 -0.144531 4.066406 0.125 3.265625 0.125 C 2.453125 0.125 1.804688 -0.195312 1.328125 -0.84375 C 0.847656 -1.5 0.609375 -2.320312 0.609375 -3.3125 L 0.609375 -3.4375 C 0.609375 -4.46875 0.84375 -5.300781 1.3125 -5.9375 C 1.789062 -6.570312 2.445312 -6.890625 3.28125 -6.890625 C 4.101562 -6.890625 4.742188 -6.597656 5.203125 -6.015625 L 5.265625 -6.765625 L 6.3125 -6.765625 L 6.3125 -0.140625 C 6.3125 0.753906 6.046875 1.445312 5.515625 1.9375 C 4.984375 2.425781 4.296875 2.671875 3.453125 2.671875 Z M 1.765625 -3.3125 C 1.765625 -2.632812 1.90625 -2.054688 2.1875 -1.578125 C 2.46875 -1.097656 2.921875 -0.859375 3.546875 -0.859375 C 4.273438 -0.859375 4.8125 -1.191406 5.15625 -1.859375 L 5.15625 -4.9375 C 5.007812 -5.21875 4.804688 -5.445312 4.546875 -5.625 C 4.285156 -5.8125 3.957031 -5.90625 3.5625 -5.90625 C 2.925781 -5.90625 2.46875 -5.660156 2.1875 -5.171875 C 1.90625 -4.679688 1.765625 -4.101562 1.765625 -3.4375 Z M 1.765625 -3.3125 "/>
</g>
<g id="glyph-0-23">
<path d="M 8.0625 -4.265625 C 8.0625 -2.898438 7.726562 -1.828125 7.0625 -1.046875 C 6.40625 -0.265625 5.519531 0.125 4.40625 0.125 C 3.332031 0.125 2.453125 -0.265625 1.765625 -1.046875 C 1.085938 -1.828125 0.75 -2.898438 0.75 -4.265625 L 0.75 -4.84375 C 0.75 -6.195312 1.085938 -7.265625 1.765625 -8.046875 C 2.441406 -8.828125 3.320312 -9.21875 4.40625 -9.21875 C 5.5 -9.21875 6.378906 -8.832031 7.046875 -8.0625 C 7.710938 -7.300781 8.050781 -6.25 8.0625 -4.90625 Z M 6.859375 -4.84375 C 6.859375 -5.925781 6.640625 -6.753906 6.203125 -7.328125 C 5.773438 -7.910156 5.175781 -8.203125 4.40625 -8.203125 C 3.65625 -8.203125 3.054688 -7.910156 2.609375 -7.328125 C 2.160156 -6.753906 1.9375 -5.925781 1.9375 -4.84375 L 1.9375 -4.265625 C 1.9375 -3.171875 2.160156 -2.332031 2.609375 -1.75 C 3.066406 -1.175781 3.664062 -0.890625 4.40625 -0.890625 C 5.195312 -0.890625 5.800781 -1.175781 6.21875 -1.75 C 6.644531 -2.332031 6.859375 -3.171875 6.859375 -4.265625 Z M 6.859375 -4.84375 "/>
</g>
<g id="glyph-0-24">
<path d="M 5.96875 -6.765625 L 3.53125 0 L 2.65625 0 L 0.203125 -6.765625 L 1.390625 -6.765625 L 3.109375 -1.578125 L 4.78125 -6.765625 Z M 5.96875 -6.765625 "/>
</g>
<g id="glyph-0-25">
<path d="M 3.1875 1.046875 C 2.789062 2.097656 2.1875 2.65625 1.375 2.71875 L 1.1875 2.734375 C 0.9375 2.734375 0.71875 2.695312 0.53125 2.625 L 0.53125 1.6875 L 0.84375 1.71875 C 1.226562 1.71875 1.53125 1.632812 1.75 1.46875 C 1.976562 1.3125 2.160156 1.023438 2.296875 0.609375 L 2.546875 -0.078125 L 0.140625 -6.765625 L 1.40625 -6.765625 L 3.09375 -1.703125 L 4.65625 -6.765625 L 5.90625 -6.765625 Z M 3.1875 1.046875 "/>
</g>
<g id="glyph-0-26">
<path d="M 0.609375 -5.8125 L 0.609375 -6.765625 L 5.734375 -6.765625 L 5.734375 -5.9375 L 1.96875 -0.953125 L 5.921875 -0.953125 L 5.921875 0 L 0.5625 0 L 0.5625 -0.84375 L 4.28125 -5.8125 Z M 0.609375 -5.8125 "/>
</g>
<g id="glyph-0-27">
<path d="M 1.9375 -1.375 L 1.9375 -0.4375 C 1.9375 -0.0625 1.835938 0.332031 1.640625 0.75 C 1.453125 1.175781 1.1875 1.53125 0.84375 1.8125 L 0.1875 1.359375 C 0.582031 0.804688 0.785156 0.238281 0.796875 -0.34375 L 0.796875 -1.375 Z M 1.9375 -1.375 "/>
</g>
<g id="glyph-0-28">
<path d="M 6.609375 -3.3125 C 6.609375 -2.320312 6.378906 -1.5 5.921875 -0.84375 C 5.460938 -0.195312 4.8125 0.125 3.96875 0.125 C 3.113281 0.125 2.457031 -0.175781 2 -0.78125 L 1.9375 0 L 0.875 0 L 0.875 -9.59375 L 2.03125 -9.59375 L 2.03125 -6.03125 C 2.488281 -6.601562 3.132812 -6.890625 3.96875 -6.890625 C 4.8125 -6.890625 5.460938 -6.570312 5.921875 -5.9375 C 6.378906 -5.300781 6.609375 -4.46875 6.609375 -3.4375 Z M 3.671875 -5.90625 C 3.253906 -5.90625 2.910156 -5.804688 2.640625 -5.609375 C 2.378906 -5.410156 2.175781 -5.160156 2.03125 -4.859375 L 2.03125 -1.921875 C 2.1875 -1.617188 2.394531 -1.363281 2.65625 -1.15625 C 2.925781 -0.957031 3.269531 -0.859375 3.6875 -0.859375 C 4.3125 -0.859375 4.757812 -1.097656 5.03125 -1.578125 C 5.300781 -2.054688 5.4375 -2.632812 5.4375 -3.3125 L 5.4375 -3.4375 C 5.4375 -4.101562 5.304688 -4.679688 5.046875 -5.171875 C 4.785156 -5.660156 4.328125 -5.90625 3.671875 -5.90625 Z M 3.671875 -5.90625 "/>
</g>
<g id="glyph-1-0">
<path d="M 1.859375 0 L 1.859375 -16.046875 L 6.40625 -16.046875 C 8.507812 -16.046875 10.210938 -15.367188 11.515625 -14.015625 C 12.828125 -12.660156 13.484375 -10.820312 13.484375 -8.5 L 13.484375 -7.546875 C 13.484375 -5.222656 12.828125 -3.382812 11.515625 -2.03125 C 10.203125 -0.675781 8.429688 0 6.203125 0 Z M 3.984375 -14.3125 L 3.984375 -1.734375 L 6.203125 -1.734375 C 7.921875 -1.734375 9.210938 -2.257812 10.078125 -3.3125 C 10.941406 -4.375 11.375 -5.785156 11.375 -7.546875 L 11.375 -8.515625 C 11.375 -10.367188 10.941406 -11.796875 10.078125 -12.796875 C 9.210938 -13.804688 7.988281 -14.3125 6.40625 -14.3125 Z M 3.984375 -14.3125 "/>
</g>
<g id="glyph-1-1">
<path d="M 1.5625 -15.09375 C 1.5625 -15.425781 1.660156 -15.703125 1.859375 -15.921875 C 2.066406 -16.148438 2.367188 -16.265625 2.765625 -16.265625 C 3.148438 -16.265625 3.445312 -16.148438 3.65625 -15.921875 C 3.875 -15.703125 3.984375 -15.425781 3.984375 -15.09375 C 3.984375 -14.78125 3.875 -14.507812 3.65625 -14.28125 C 3.445312 -14.0625 3.148438 -13.953125 2.765625 -13.953125 C 2.367188 -13.953125 2.066406 -14.0625 1.859375 -14.28125 C 1.660156 -14.507812 1.5625 -14.78125 1.5625 -15.09375 Z M 3.765625 -11.921875 L 3.765625 0 L 1.71875 0 L 1.71875 -11.921875 Z M 3.765625 -11.921875 "/>
</g>
<g id="glyph-1-2">
<path d="M 8.5 -3.15625 C 8.5 -3.59375 8.335938 -3.984375 8.015625 -4.328125 C 7.703125 -4.679688 6.96875 -4.976562 5.8125 -5.21875 C 4.476562 -5.488281 3.414062 -5.878906 2.625 -6.390625 C 1.84375 -6.910156 1.453125 -7.671875 1.453125 -8.671875 C 1.453125 -9.609375 1.851562 -10.421875 2.65625 -11.109375 C 3.46875 -11.804688 4.539062 -12.15625 5.875 -12.15625 C 7.300781 -12.15625 8.414062 -11.789062 9.21875 -11.0625 C 10.019531 -10.332031 10.421875 -9.453125 10.421875 -8.421875 L 8.375 -8.421875 C 8.375 -8.910156 8.15625 -9.375 7.71875 -9.8125 C 7.289062 -10.25 6.675781 -10.46875 5.875 -10.46875 C 5.03125 -10.46875 4.421875 -10.285156 4.046875 -9.921875 C 3.679688 -9.554688 3.5 -9.15625 3.5 -8.71875 C 3.5 -8.28125 3.671875 -7.925781 4.015625 -7.65625 C 4.359375 -7.394531 5.085938 -7.140625 6.203125 -6.890625 C 7.660156 -6.554688 8.75 -6.117188 9.46875 -5.578125 C 10.1875 -5.046875 10.546875 -4.289062 10.546875 -3.3125 C 10.546875 -2.257812 10.125 -1.40625 9.28125 -0.75 C 8.4375 -0.101562 7.320312 0.21875 5.9375 0.21875 C 4.351562 0.21875 3.140625 -0.179688 2.296875 -0.984375 C 1.460938 -1.796875 1.046875 -2.695312 1.046875 -3.6875 L 3.09375 -3.6875 C 3.132812 -2.84375 3.457031 -2.257812 4.0625 -1.9375 C 4.675781 -1.613281 5.300781 -1.453125 5.9375 -1.453125 C 6.757812 -1.453125 7.390625 -1.613281 7.828125 -1.9375 C 8.273438 -2.257812 8.5 -2.664062 8.5 -3.15625 Z M 8.5 -3.15625 "/>
</g>
<g id="glyph-1-3">
<path d="M 6.609375 0 C 6.140625 0.144531 5.613281 0.21875 5.03125 0.21875 C 4.269531 0.21875 3.617188 -0.0078125 3.078125 -0.46875 C 2.546875 -0.9375 2.28125 -1.769531 2.28125 -2.96875 L 2.28125 -10.359375 L 0.09375 -10.359375 L 0.09375 -11.921875 L 2.28125 -11.921875 L 2.28125 -14.828125 L 4.328125 -14.828125 L 4.328125 -11.921875 L 6.546875 -11.921875 L 6.546875 -10.359375 L 4.328125 -10.359375 L 4.328125 -2.953125 C 4.328125 -2.347656 4.457031 -1.957031 4.71875 -1.78125 C 4.976562 -1.613281 5.285156 -1.53125 5.640625 -1.53125 C 5.890625 -1.53125 6.207031 -1.578125 6.59375 -1.671875 Z M 6.609375 0 "/>
</g>
<g id="glyph-1-4">
<path d="M 6.3125 -10.1875 C 4.988281 -10.1875 4.082031 -9.613281 3.59375 -8.46875 L 3.59375 0 L 1.546875 0 L 1.546875 -11.921875 L 3.53125 -11.921875 L 3.578125 -10.5625 C 4.234375 -11.625 5.179688 -12.15625 6.421875 -12.15625 C 6.796875 -12.15625 7.09375 -12.101562 7.3125 -12 L 7.3125 -10.09375 C 7.007812 -10.15625 6.675781 -10.1875 6.3125 -10.1875 Z M 6.3125 -10.1875 "/>
</g>
<g id="glyph-1-5">
<path d="M 1.015625 -6.078125 C 1.015625 -7.804688 1.5 -9.25 2.46875 -10.40625 C 3.4375 -11.570312 4.753906 -12.15625 6.421875 -12.15625 C 8.097656 -12.15625 9.421875 -11.585938 10.390625 -10.453125 C 11.359375 -9.316406 11.851562 -7.898438 11.875 -6.203125 L 11.875 -5.828125 C 11.875 -4.097656 11.382812 -2.65625 10.40625 -1.5 C 9.4375 -0.351562 8.117188 0.21875 6.453125 0.21875 C 4.773438 0.21875 3.445312 -0.351562 2.46875 -1.5 C 1.5 -2.65625 1.015625 -4.097656 1.015625 -5.828125 Z M 3.046875 -5.828125 C 3.046875 -4.648438 3.328125 -3.625 3.890625 -2.75 C 4.453125 -1.882812 5.304688 -1.453125 6.453125 -1.453125 C 7.554688 -1.453125 8.390625 -1.878906 8.953125 -2.734375 C 9.523438 -3.597656 9.816406 -4.617188 9.828125 -5.796875 L 9.828125 -6.078125 C 9.828125 -7.253906 9.539062 -8.28125 8.96875 -9.15625 C 8.40625 -10.03125 7.554688 -10.46875 6.421875 -10.46875 C 5.296875 -10.46875 4.453125 -10.03125 3.890625 -9.15625 C 3.328125 -8.28125 3.046875 -7.253906 3.046875 -6.078125 Z M 3.046875 -5.828125 "/>
</g>
<g id="glyph-1-6">
</g>
<g id="glyph-1-7">
<path d="M 11.65625 -5.828125 C 11.65625 -4.085938 11.25 -2.644531 10.4375 -1.5 C 9.632812 -0.351562 8.492188 0.21875 7.015625 0.21875 C 5.503906 0.21875 4.34375 -0.3125 3.53125 -1.375 L 3.421875 0 L 1.546875 0 L 1.546875 -16.9375 L 3.59375 -16.9375 L 3.59375 -10.640625 C 4.40625 -11.648438 5.535156 -12.15625 6.984375 -12.15625 C 8.484375 -12.15625 9.632812 -11.59375 10.4375 -10.46875 C 11.25 -9.351562 11.65625 -7.882812 11.65625 -6.0625 Z M 6.484375 -10.421875 C 5.742188 -10.421875 5.140625 -10.242188 4.671875 -9.890625 C 4.210938 -9.535156 3.851562 -9.097656 3.59375 -8.578125 L 3.59375 -3.390625 C 3.851562 -2.859375 4.21875 -2.410156 4.6875 -2.046875 C 5.164062 -1.691406 5.769531 -1.515625 6.5 -1.515625 C 7.601562 -1.515625 8.394531 -1.9375 8.875 -2.78125 C 9.363281 -3.632812 9.609375 -4.648438 9.609375 -5.828125 L 9.609375 -6.0625 C 9.609375 -7.25 9.375 -8.269531 8.90625 -9.125 C 8.445312 -9.988281 7.640625 -10.421875 6.484375 -10.421875 Z M 6.484375 -10.421875 "/>
</g>
<g id="glyph-1-8">
<path d="M 8.953125 0 L 8.90625 -1.171875 C 8.125 -0.242188 6.960938 0.21875 5.421875 0.21875 C 4.253906 0.21875 3.3125 -0.125 2.59375 -0.8125 C 1.875 -1.507812 1.515625 -2.648438 1.515625 -4.234375 L 1.515625 -11.921875 L 3.546875 -11.921875 L 3.546875 -4.21875 C 3.546875 -3.144531 3.769531 -2.425781 4.21875 -2.0625 C 4.675781 -1.695312 5.1875 -1.515625 5.75 -1.515625 C 7.28125 -1.515625 8.316406 -2.085938 8.859375 -3.234375 L 8.859375 -11.921875 L 10.90625 -11.921875 L 10.90625 0 Z M 8.953125 0 "/>
</g>
<g id="glyph-1-9">
<path d="M 6.5 -10.421875 C 5.84375 -10.421875 5.265625 -10.242188 4.765625 -9.890625 C 4.273438 -9.546875 3.882812 -9.085938 3.59375 -8.515625 L 3.59375 0 L 1.546875 0 L 1.546875 -11.921875 L 3.484375 -11.921875 L 3.546875 -10.4375 C 4.453125 -11.582031 5.640625 -12.15625 7.109375 -12.15625 C 8.273438 -12.15625 9.203125 -11.828125 9.890625 -11.171875 C 10.578125 -10.515625 10.925781 -9.414062 10.9375 -7.875 L 10.9375 0 L 8.890625 0 L 8.890625 -7.84375 C 8.890625 -8.769531 8.679688 -9.429688 8.265625 -9.828125 C 7.859375 -10.222656 7.269531 -10.421875 6.5 -10.421875 Z M 6.5 -10.421875 "/>
</g>
<g id="glyph-1-10">
<path d="M 9.25 0 L 9.15625 -1.28125 C 8.332031 -0.28125 7.195312 0.21875 5.75 0.21875 C 4.351562 0.21875 3.222656 -0.34375 2.359375 -1.46875 C 1.492188 -2.601562 1.054688 -4.03125 1.046875 -5.75 L 1.046875 -6.0625 C 1.046875 -7.882812 1.476562 -9.351562 2.34375 -10.46875 C 3.207031 -11.59375 4.347656 -12.15625 5.765625 -12.15625 C 7.171875 -12.15625 8.273438 -11.679688 9.078125 -10.734375 L 9.078125 -16.9375 L 11.125 -16.9375 L 11.125 0 Z M 3.09375 -5.828125 C 3.09375 -4.648438 3.34375 -3.632812 3.84375 -2.78125 C 4.34375 -1.9375 5.144531 -1.515625 6.25 -1.515625 C 7.507812 -1.515625 8.453125 -2.085938 9.078125 -3.234375 L 9.078125 -8.734375 C 8.460938 -9.859375 7.523438 -10.421875 6.265625 -10.421875 C 5.160156 -10.421875 4.351562 -9.988281 3.84375 -9.125 C 3.34375 -8.269531 3.09375 -7.25 3.09375 -6.0625 Z M 3.09375 -5.828125 "/>
</g>
<g id="glyph-1-11">
<path d="M 8.921875 0 C 8.785156 -0.289062 8.6875 -0.707031 8.625 -1.25 C 8.25 -0.851562 7.773438 -0.507812 7.203125 -0.21875 C 6.628906 0.0703125 5.972656 0.21875 5.234375 0.21875 C 4.015625 0.21875 3.035156 -0.117188 2.296875 -0.796875 C 1.566406 -1.484375 1.203125 -2.320312 1.203125 -3.3125 C 1.203125 -4.59375 1.6875 -5.566406 2.65625 -6.234375 C 3.625 -6.898438 4.929688 -7.234375 6.578125 -7.234375 L 8.59375 -7.234375 L 8.59375 -8.1875 C 8.59375 -8.882812 8.378906 -9.441406 7.953125 -9.859375 C 7.523438 -10.285156 6.898438 -10.5 6.078125 -10.5 C 5.304688 -10.5 4.679688 -10.3125 4.203125 -9.9375 C 3.734375 -9.5625 3.5 -9.125 3.5 -8.625 L 1.453125 -8.625 C 1.453125 -9.476562 1.878906 -10.28125 2.734375 -11.03125 C 3.597656 -11.78125 4.753906 -12.15625 6.203125 -12.15625 C 7.492188 -12.15625 8.550781 -11.820312 9.375 -11.15625 C 10.207031 -10.5 10.625 -9.5 10.625 -8.15625 L 10.625 -2.796875 C 10.625 -1.691406 10.765625 -0.816406 11.046875 -0.171875 L 11.046875 0 Z M 5.53125 -1.5625 C 6.269531 -1.5625 6.90625 -1.742188 7.4375 -2.109375 C 7.976562 -2.484375 8.363281 -2.894531 8.59375 -3.34375 L 8.59375 -5.796875 L 6.6875 -5.796875 C 4.394531 -5.753906 3.25 -5.019531 3.25 -3.59375 C 3.25 -3.03125 3.441406 -2.550781 3.828125 -2.15625 C 4.210938 -1.757812 4.78125 -1.5625 5.53125 -1.5625 Z M 5.53125 -1.5625 "/>
</g>
<g id="glyph-1-12">
<path d="M 10.984375 -2.078125 C 10.597656 -1.492188 10.046875 -0.960938 9.328125 -0.484375 C 8.617188 -0.015625 7.675781 0.21875 6.5 0.21875 C 4.84375 0.21875 3.515625 -0.316406 2.515625 -1.390625 C 1.523438 -2.472656 1.03125 -3.859375 1.03125 -5.546875 L 1.03125 -6.015625 C 1.03125 -7.304688 1.273438 -8.410156 1.765625 -9.328125 C 2.265625 -10.242188 2.910156 -10.941406 3.703125 -11.421875 C 4.492188 -11.910156 5.335938 -12.15625 6.234375 -12.15625 C 7.941406 -12.15625 9.1875 -11.597656 9.96875 -10.484375 C 10.75 -9.367188 11.140625 -7.976562 11.140625 -6.3125 L 11.140625 -5.390625 L 3.078125 -5.390625 C 3.109375 -4.296875 3.429688 -3.363281 4.046875 -2.59375 C 4.671875 -1.820312 5.523438 -1.4375 6.609375 -1.4375 C 7.328125 -1.4375 7.9375 -1.582031 8.4375 -1.875 C 8.9375 -2.175781 9.375 -2.570312 9.75 -3.0625 Z M 6.234375 -10.46875 C 5.429688 -10.46875 4.75 -10.171875 4.1875 -9.578125 C 3.625 -8.992188 3.273438 -8.15625 3.140625 -7.0625 L 9.109375 -7.0625 L 9.109375 -7.203125 C 9.054688 -8.003906 8.828125 -8.75 8.421875 -9.4375 C 8.015625 -10.125 7.285156 -10.46875 6.234375 -10.46875 Z M 6.234375 -10.46875 "/>
</g>
</g>
</defs>
<rect x="-56.6" y="-35.5" width="679.2" height="426" fill="rgb(100%, 100%, 100%)" fill-opacity="1"/>
<path fill-rule="evenodd" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 30.998828 18.95 L 32.601172 18.95 C 32.801562 19.35 32.865625 19.55 32.865625 19.95 C 32.865625 20.35 32.801562 20.55 32.601172 20.95 L 30.998828 20.95 C 30.798437 20.55 30.734375 20.35 30.734375 19.95 C 30.734375 19.55 30.798437 19.35 30.998828 18.95 " transform="matrix(20, 0, 0, 20, -449, -123)"/>
<g fill="rgb(0%, 0%, 60.000002%)" fill-opacity="1">
<use xlink:href="#glyph-0-0" x="173.953125" y="279.89426"/>
<use xlink:href="#glyph-0-1" x="182.286458" y="279.89426"/>
<use xlink:href="#glyph-0-2" x="188.953125" y="279.89426"/>
<use xlink:href="#glyph-0-3" x="195.619792" y="279.89426"/>
</g>
<path fill-rule="evenodd" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 27.490039 6.2 L 36.309961 6.2 C 37.4125 6.6 37.765234 6.8 37.765234 7.2 C 37.765234 7.6 37.4125 7.8 36.309961 8.2 L 27.490039 8.2 C 26.3875 7.8 26.034766 7.6 26.034766 7.2 C 26.034766 6.8 26.3875 6.6 27.490039 6.2 " transform="matrix(20, 0, 0, 20, -449, -123)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-0" x="104.292969" y="24.89426"/>
<use xlink:href="#glyph-0-4" x="112.626302" y="24.89426"/>
<use xlink:href="#glyph-0-1" x="119.848524" y="24.89426"/>
<use xlink:href="#glyph-0-5" x="126.515191" y="24.89426"/>
<use xlink:href="#glyph-0-3" x="130.681858" y="24.89426"/>
<use xlink:href="#glyph-0-2" x="134.848524" y="24.89426"/>
<use xlink:href="#glyph-0-6" x="141.515191" y="24.89426"/>
<use xlink:href="#glyph-0-7" x="148.459635" y="24.89426"/>
<use xlink:href="#glyph-0-8" x="159.570747" y="24.89426"/>
<use xlink:href="#glyph-0-9" x="162.626302" y="24.89426"/>
<use xlink:href="#glyph-0-6" x="167.070747" y="24.89426"/>
<use xlink:href="#glyph-0-10" x="174.015191" y="24.89426"/>
<use xlink:href="#glyph-0-5" x="180.959635" y="24.89426"/>
<use xlink:href="#glyph-0-11" x="185.126302" y="24.89426"/>
<use xlink:href="#glyph-0-12" x="192.070747" y="24.89426"/>
<use xlink:href="#glyph-0-3" x="199.292969" y="24.89426"/>
<use xlink:href="#glyph-0-13" x="203.737413" y="24.89426"/>
<use xlink:href="#glyph-0-7" x="209.015191" y="24.89426"/>
<use xlink:href="#glyph-0-6" x="220.126302" y="24.89426"/>
<use xlink:href="#glyph-0-14" x="227.070747" y="24.89426"/>
<use xlink:href="#glyph-0-15" x="230.126302" y="24.89426"/>
<use xlink:href="#glyph-0-5" x="237.070747" y="24.89426"/>
<use xlink:href="#glyph-0-6" x="241.237413" y="24.89426"/>
<use xlink:href="#glyph-0-14" x="248.181858" y="24.89426"/>
<use xlink:href="#glyph-0-15" x="251.237413" y="24.89426"/>
<use xlink:href="#glyph-0-2" x="258.181858" y="24.89426"/>
<use xlink:href="#glyph-0-3" x="264.848524" y="24.89426"/>
<use xlink:href="#glyph-0-16" x="269.292969" y="24.89426"/>
</g>
<path fill-rule="evenodd" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 28.151172 13.7 L 35.548828 13.7 C 36.473437 14.130078 36.769336 14.344922 36.769336 14.775 C 36.769336 15.205078 36.473437 15.419922 35.548828 15.85 L 28.151172 15.85 C 27.226562 15.419922 26.930664 15.205078 26.930664 14.775 C 26.930664 14.344922 27.226562 14.130078 28.151172 13.7 " transform="matrix(20, 0, 0, 20, -449, -123)"/>
<g fill="rgb(100%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-17" x="119.40625" y="176.39426"/>
<use xlink:href="#glyph-0-12" x="127.739583" y="176.39426"/>
<use xlink:href="#glyph-0-18" x="134.961806" y="176.39426"/>
<use xlink:href="#glyph-0-15" x="144.684028" y="176.39426"/>
<use xlink:href="#glyph-0-1" x="151.628472" y="176.39426"/>
<use xlink:href="#glyph-0-5" x="158.295139" y="176.39426"/>
<use xlink:href="#glyph-0-3" x="162.461806" y="176.39426"/>
<use xlink:href="#glyph-0-2" x="166.628472" y="176.39426"/>
<use xlink:href="#glyph-0-6" x="173.295139" y="176.39426"/>
<use xlink:href="#glyph-0-7" x="180.239583" y="176.39426"/>
<use xlink:href="#glyph-0-8" x="191.350694" y="176.39426"/>
<use xlink:href="#glyph-0-9" x="194.40625" y="176.39426"/>
<use xlink:href="#glyph-0-19" x="198.850694" y="176.39426"/>
<use xlink:href="#glyph-0-6" x="206.90625" y="176.39426"/>
<use xlink:href="#glyph-0-20" x="213.850694" y="176.39426"/>
<use xlink:href="#glyph-0-21" x="220.517361" y="176.39426"/>
<use xlink:href="#glyph-0-6" x="226.90625" y="176.39426"/>
<use xlink:href="#glyph-0-22" x="233.850694" y="176.39426"/>
<use xlink:href="#glyph-0-2" x="241.072917" y="176.39426"/>
<use xlink:href="#glyph-0-3" x="247.739583" y="176.39426"/>
<use xlink:href="#glyph-0-16" x="252.184028" y="176.39426"/>
</g>
<path fill="none" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 31.895508 8.686719 L 31.85 13.7 " transform="matrix(20, 0, 0, 20, -449, -123)"/>
<path fill-rule="evenodd" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 31.899023 8.311719 L 32.144336 8.814063 L 31.895508 8.686719 L 31.644531 8.80957 Z M 31.899023 8.311719 " transform="matrix(20, 0, 0, 20, -449, -123)"/>
<path fill-rule="evenodd" fill="rgb(100%, 100%, 100%)" fill-opacity="1" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 41.783789 13.9 L 48.816211 13.9 C 49.695312 14.3 49.976562 14.5 49.976562 14.9 C 49.976562 15.3 49.695312 15.5 48.816211 15.9 L 41.783789 15.9 C 40.904687 15.5 40.623437 15.3 40.623437 14.9 C 40.623437 14.5 40.904687 14.3 41.783789 13.9 " transform="matrix(20, 0, 0, 20, -449, -123)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-23" x="389.929688" y="178.89426"/>
<use xlink:href="#glyph-0-5" x="398.818576" y="178.89426"/>
<use xlink:href="#glyph-0-11" x="402.985243" y="178.89426"/>
<use xlink:href="#glyph-0-2" x="409.929688" y="178.89426"/>
<use xlink:href="#glyph-0-3" x="416.596354" y="178.89426"/>
<use xlink:href="#glyph-0-8" x="421.040799" y="178.89426"/>
<use xlink:href="#glyph-0-5" x="424.096354" y="178.89426"/>
<use xlink:href="#glyph-0-2" x="428.263021" y="178.89426"/>
<use xlink:href="#glyph-0-6" x="434.929688" y="178.89426"/>
<use xlink:href="#glyph-0-7" x="441.874132" y="178.89426"/>
<use xlink:href="#glyph-0-1" x="452.985243" y="178.89426"/>
<use xlink:href="#glyph-0-13" x="459.65191" y="178.89426"/>
<use xlink:href="#glyph-0-4" x="464.929688" y="178.89426"/>
<use xlink:href="#glyph-0-6" x="472.15191" y="178.89426"/>
<use xlink:href="#glyph-0-20" x="479.096354" y="178.89426"/>
<use xlink:href="#glyph-0-21" x="485.763021" y="178.89426"/>
<use xlink:href="#glyph-0-6" x="492.15191" y="178.89426"/>
<use xlink:href="#glyph-0-22" x="499.096354" y="178.89426"/>
<use xlink:href="#glyph-0-2" x="506.318576" y="178.89426"/>
<use xlink:href="#glyph-0-3" x="512.985243" y="178.89426"/>
<use xlink:href="#glyph-0-1" x="517.429688" y="178.89426"/>
</g>
<path fill="none" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 37.302539 14.825586 L 40.09043 14.851563 " transform="matrix(20, 0, 0, 20, -449, -123)"/>
<path fill-rule="evenodd" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 36.927539 14.822266 L 37.429883 14.576758 L 37.302539 14.825586 L 37.425195 15.076758 Z M 36.927539 14.822266 " transform="matrix(20, 0, 0, 20, -449, -123)"/>
<path fill-rule="evenodd" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 40.46543 14.855078 L 39.963086 15.100391 L 40.09043 14.851563 L 39.967773 14.600391 Z M 40.46543 14.855078 " transform="matrix(20, 0, 0, 20, -449, -123)"/>
<path fill="none" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 22.5 12.35 L 50.7 12.35 L 50.7 23.85 L 22.5 23.85 Z M 22.5 12.35 " transform="matrix(20, 0, 0, 20, -449, -123)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-1-0" x="305" y="333.007867"/>
<use xlink:href="#glyph-1-1" x="319.722222" y="333.007867"/>
<use xlink:href="#glyph-1-2" x="325.277778" y="333.007867"/>
<use xlink:href="#glyph-1-3" x="336.944444" y="333.007867"/>
<use xlink:href="#glyph-1-4" x="344.444444" y="333.007867"/>
<use xlink:href="#glyph-1-5" x="351.944444" y="333.007867"/>
<use xlink:href="#glyph-1-6" x="364.722222" y="333.007867"/>
<use xlink:href="#glyph-1-7" x="370.277778" y="333.007867"/>
<use xlink:href="#glyph-1-5" x="383.055556" y="333.007867"/>
<use xlink:href="#glyph-1-8" x="395.833333" y="333.007867"/>
<use xlink:href="#glyph-1-9" x="408.333333" y="333.007867"/>
<use xlink:href="#glyph-1-10" x="420.833333" y="333.007867"/>
<use xlink:href="#glyph-1-11" x="433.611111" y="333.007867"/>
<use xlink:href="#glyph-1-4" x="445.833333" y="333.007867"/>
<use xlink:href="#glyph-1-1" x="453.611111" y="333.007867"/>
<use xlink:href="#glyph-1-12" x="459.166667" y="333.007867"/>
<use xlink:href="#glyph-1-2" x="471.111111" y="333.007867"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-1" x="222" y="239.01926"/>
<use xlink:href="#glyph-0-2" x="228.666667" y="239.01926"/>
<use xlink:href="#glyph-0-3" x="235.333333" y="239.01926"/>
<use xlink:href="#glyph-0-24" x="239.777778" y="239.01926"/>
<use xlink:href="#glyph-0-2" x="245.888889" y="239.01926"/>
<use xlink:href="#glyph-0-1" x="252.555556" y="239.01926"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-1" x="283" y="154.01926"/>
<use xlink:href="#glyph-0-25" x="289.666667" y="154.01926"/>
<use xlink:href="#glyph-0-15" x="295.777778" y="154.01926"/>
<use xlink:href="#glyph-0-20" x="302.722222" y="154.01926"/>
<use xlink:href="#glyph-0-11" x="309.388889" y="154.01926"/>
<use xlink:href="#glyph-0-3" x="316.333333" y="154.01926"/>
<use xlink:href="#glyph-0-12" x="320.5" y="154.01926"/>
<use xlink:href="#glyph-0-15" x="327.722222" y="154.01926"/>
<use xlink:href="#glyph-0-14" x="334.666667" y="154.01926"/>
<use xlink:href="#glyph-0-26" x="337.722222" y="154.01926"/>
<use xlink:href="#glyph-0-6" x="344.111111" y="154.01926"/>
<use xlink:href="#glyph-0-5" x="351.055556" y="154.01926"/>
<use xlink:href="#glyph-0-14" x="355.222222" y="154.01926"/>
<use xlink:href="#glyph-0-12" x="358.277778" y="154.01926"/>
<use xlink:href="#glyph-0-15" x="365.5" y="154.01926"/>
</g>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-4" x="200" y="82.01926"/>
<use xlink:href="#glyph-0-6" x="207.222222" y="82.01926"/>
<use xlink:href="#glyph-0-20" x="214.166667" y="82.01926"/>
<use xlink:href="#glyph-0-21" x="220.833333" y="82.01926"/>
<use xlink:href="#glyph-0-6" x="227.222222" y="82.01926"/>
<use xlink:href="#glyph-0-22" x="234.166667" y="82.01926"/>
<use xlink:href="#glyph-0-2" x="241.388889" y="82.01926"/>
<use xlink:href="#glyph-0-1" x="248.055556" y="82.01926"/>
<use xlink:href="#glyph-0-27" x="254.722222" y="82.01926"/>
<use xlink:href="#glyph-0-8" x="257.222222" y="82.01926"/>
<use xlink:href="#glyph-0-3" x="260.277778" y="82.01926"/>
<use xlink:href="#glyph-0-2" x="264.444444" y="82.01926"/>
<use xlink:href="#glyph-0-4" x="271.111111" y="82.01926"/>
<use xlink:href="#glyph-0-12" x="278.333333" y="82.01926"/>
<use xlink:href="#glyph-0-3" x="285.555556" y="82.01926"/>
<use xlink:href="#glyph-0-5" x="290.277778" y="82.01926"/>
<use xlink:href="#glyph-0-1" x="294.444444" y="82.01926"/>
<use xlink:href="#glyph-0-8" x="301.111111" y="82.01926"/>
<use xlink:href="#glyph-0-28" x="304.166667" y="82.01926"/>
<use xlink:href="#glyph-0-10" x="311.388889" y="82.01926"/>
<use xlink:href="#glyph-0-22" x="318.333333" y="82.01926"/>
<use xlink:href="#glyph-0-1" x="325.555556" y="82.01926"/>
<use xlink:href="#glyph-0-27" x="332.222222" y="82.01926"/>
<use xlink:href="#glyph-0-8" x="334.722222" y="82.01926"/>
<use xlink:href="#glyph-0-20" x="337.777778" y="82.01926"/>
<use xlink:href="#glyph-0-11" x="344.444444" y="82.01926"/>
<use xlink:href="#glyph-0-2" x="351.388889" y="82.01926"/>
<use xlink:href="#glyph-0-20" x="358.055556" y="82.01926"/>
<use xlink:href="#glyph-0-21" x="364.722222" y="82.01926"/>
<use xlink:href="#glyph-0-1" x="371.111111" y="82.01926"/>
<use xlink:href="#glyph-0-8" x="377.777778" y="82.01926"/>
<use xlink:href="#glyph-0-15" x="380.833333" y="82.01926"/>
<use xlink:href="#glyph-0-2" x="387.777778" y="82.01926"/>
<use xlink:href="#glyph-0-18" x="394.444444" y="82.01926"/>
<use xlink:href="#glyph-0-8" x="404.166667" y="82.01926"/>
<use xlink:href="#glyph-0-24" x="407.222222" y="82.01926"/>
<use xlink:href="#glyph-0-2" x="413.333333" y="82.01926"/>
<use xlink:href="#glyph-0-3" x="420" y="82.01926"/>
<use xlink:href="#glyph-0-1" x="424.444444" y="82.01926"/>
<use xlink:href="#glyph-0-14" x="431.111111" y="82.01926"/>
<use xlink:href="#glyph-0-12" x="434.166667" y="82.01926"/>
<use xlink:href="#glyph-0-15" x="441.388889" y="82.01926"/>
<use xlink:href="#glyph-0-1" x="448.333333" y="82.01926"/>
</g>
<path fill="none" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 30.586719 16.338477 C 30.261914 17.239648 30.376758 18.24082 30.89707 19.044922 " transform="matrix(20, 0, 0, 20, -449, -123)"/>
<path fill-rule="evenodd" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 30.731445 15.99707 L 30.70918 16.555664 L 30.550586 16.325586 L 30.271289 16.314453 Z M 30.731445 15.99707 " transform="matrix(20, 0, 0, 20, -449, -123)"/>
<path fill="none" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 32.658008 18.456641 C 32.913867 17.616992 32.875 16.714844 32.547656 15.900391 " transform="matrix(20, 0, 0, 20, -449, -123)"/>
<path fill-rule="evenodd" fill="rgb(0%, 0%, 0%)" fill-opacity="1" stroke-width="0.1" stroke-linecap="butt" stroke-linejoin="miter" stroke="rgb(0%, 0%, 0%)" stroke-opacity="1" stroke-miterlimit="10" d="M 32.533789 18.807813 L 32.510352 18.249219 L 32.687305 18.465625 L 32.966602 18.453906 Z M 32.533789 18.807813 " transform="matrix(20, 0, 0, 20, -449, -123)"/>
<g fill="rgb(0%, 0%, 0%)" fill-opacity="1">
<use xlink:href="#glyph-0-3" x="81" y="239.01926"/>
<use xlink:href="#glyph-0-2" x="85.166667" y="239.01926"/>
<use xlink:href="#glyph-0-4" x="91.833333" y="239.01926"/>
<use xlink:href="#glyph-0-12" x="99.055556" y="239.01926"/>
<use xlink:href="#glyph-0-3" x="106.277778" y="239.01926"/>
<use xlink:href="#glyph-0-5" x="111" y="239.01926"/>
<use xlink:href="#glyph-0-1" x="115.166667" y="239.01926"/>
<use xlink:href="#glyph-0-8" x="121.833333" y="239.01926"/>
<use xlink:href="#glyph-0-28" x="124.888889" y="239.01926"/>
<use xlink:href="#glyph-0-10" x="132.111111" y="239.01926"/>
<use xlink:href="#glyph-0-22" x="139.055556" y="239.01926"/>
<use xlink:href="#glyph-0-1" x="146.277778" y="239.01926"/>
</g>
</svg>

After

Width:  |  Height:  |  Size: 45 KiB

BIN
person.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.7 KiB

BIN
qa.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

BIN
rust.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

BIN
survey.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

BIN
user.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 24 KiB

BIN
vscode.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 334 B