[Migration] NPM (#1266)

* chore: add npm + vite for progressive enhancement

* fix: update Dockerfile to copy only the dist folder contents

* fix: update Dockerfile to use multi-stage build for optimized production image

* fix: correct nginx config file copy command in Dockerfile

* chore: add netlify configuration for build and redirects

* fix: add NODE_VERSION to environment in Netlify configuration

* remove wrong dist folder

* Update package.json

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* chore: split public and src

* migrating all util files from js to ts

* feat: Implement HeightmapGenerator and Voronoi module

- Added HeightmapGenerator class for generating heightmaps with various tools (Hill, Pit, Range, Trough, Strait, etc.).
- Introduced Voronoi class for creating Voronoi diagrams using Delaunator.
- Updated index.html to include new modules.
- Created index.ts to manage module imports.
- Enhanced arrayUtils and graphUtils with type definitions and improved functionality.
- Added utility functions for generating grids and calculating Voronoi cells.

* chore: add GitHub Actions workflow for deploying to GitHub Pages

* fix: update branch name in GitHub Actions workflow from 'main' to 'master'

* chore: update package.json to specify Node.js engine version and remove unused launch.json

* Initial plan

* Update copilot guidelines to reflect NPM/Vite/TypeScript migration

Co-authored-by: Azgaar <26469650+Azgaar@users.noreply.github.com>

* Update src/modules/heightmap-generator.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/utils/graphUtils.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* Update src/modules/heightmap-generator.ts

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>

* feat: Add TIME and ERROR variables to global scope in HeightmapGenerator

* fix: Update base path in vite.config.ts for Netlify deployment

* fix: Update Node.js version in Dockerfile to 24-alpine

---------

Co-authored-by: Marc Emmanuel <marc.emmanuel@tado.com>
Co-authored-by: Marc Emmanuel <marcwissler@gmail.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
Co-authored-by: Azgaar <26469650+Azgaar@users.noreply.github.com>
This commit is contained in:
Azgaar 2026-01-22 12:20:12 +01:00 committed by GitHub
parent 0c26f0831f
commit 9e0eb03618
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
713 changed files with 5182 additions and 2161 deletions

223
public/charges/falcon.svg Normal file
View file

@ -0,0 +1,223 @@
<svg xmlns="http://www.w3.org/2000/svg" fill="#d7374a" stroke="#000" viewBox="50 50 200 200">
<metadata source="http://wappenwiki.org/images/4/43/Loftur_the_rich_Guttormsson.svg" license="https://creativecommons.org/licenses/by-nc-sa/3.0"/>
<g id="falcon" stroke-width=".351">
<g>
<g class="secondary">
<path d="M74.542 112.486a1.967 1.967 0 0 0-1.158-1.475c-.573-.245-1.568.07-1.86.316-.07.21.093.2.257.27.398.187 1.041.081 1.264.655.105.257-.012.42.175.631"/>
<path d="M79.398 122.419c.117.047.573.246.655.35.234.293.328.715.129 1.405-.258.842-1.299 1.58-1.451 1.52-.199-.081-.129-.385-.094-.549.117-.433.62-.69.304-1.38-.117-.258-.374-.445-.42-.726a.24.24 0 0 1 0-.129c.023-.082.081-.14.14-.199.21-.175.48-.386.737-.292z"/>
<path d="M72.705 112.907c-.234-.597-.795-1.065-1.415-1.24-.901-.234-1.685.257-1.954.514-.012.223.28.293.444.34.433.093.948-.106 1.44.42.187.211.105.387.339.55"/>
<path d="M73.583 115.773a1.123 1.123 0 0 0-.527-.514c-.42-.164-.807-.117-1.252-.082-.468.035-1.427.725-1.556 1.181-.117.422.152.305.422.234.362-.093.83-.386 1.427-.117.07.035.515.468.643.597"/>
<path d="M74.25 114.943c-.2-.234-.246-.609-.737-.82-.328-.14-.422-.233-.597-.561-.059-.094-.175-.316-.152-.421.047-.258-.024-.293.269-.421.129-.059.27.245 1.228-.468.246-.188.468-.246.702.058.211.28.27.585.211.737-.058.152.117.34.199.515.082.187.14.503.28.679.06.07.13.128.2.198.35.34.456.714.678 1.135a.98.98 0 0 0 .328.363c.117.082.246.129.374.176.223.081.609.725.843.83-.129.363-.702.14-1.053.304-.234.106-.48.188-.726.153-.327-.047-.585-.27-.807-.515a7.22 7.22 0 0 1-1.135-1.58c-.082-.117-.152-.245-.105-.362z"/>
<path d="M80.24 122.01c-.14-.68-.643-.597-.596-.726.467-1.287-.34-.913.035-1.603l2.106.059s3.966.128 6.294.175c.047-.023.082-.035.129-.058.304-.106.561-.457.772-.679.257-.27.515-.503.796-.725a6.08 6.08 0 0 0-.164-.808s-3.592.176-4.189.152c-.093 0-.07.012-.48 0-.304-.198-1.029-.081-1.146.059-.187-.176-.725-.21-1.041.023-.258-.128-.737-.117-1.03 0-.269-.187-.971-.222-1.17 0-.164-.023-.655.024-1.182-.128-.784-.14-1.848-1.627-2.457-1.744-.257-.047-.491-.245-.725-.269a1.518 1.518 0 0 1-.398-.093 1.071 1.071 0 0 1-.41-.281c-.304-.363-.49-.702-.912-.96-.082-.046-.164-.093-.246-.152-.175-.14-.304-.433-.42-.596-.106-.152-.328-.293-.305-.457.023-.163-.105-.444-.374-.667-.281-.234-.492-.128-.69.106-.773.9-.972.643-1.089.725-.269.199-.175.21-.175.48 0 .117.175.292.245.374.258.281.351.351.714.41.527.093.655.444.901.631.27.211.573.433.421.855-.175.503-.667.725-.819.865-.21.2-.304.562.21.89a.877.877 0 0 0 .984.011c.058-.047.152-.023.222-.023.094.012.187.047.28.082.539.222 1.17.058 1.615.48.129.128.246.292.422.339.187.058.257.327.42.421.258.152.165.55.246.842.059.2.211.363.328.539.246.397.386.97.257 1.427-.035.129-.128.152-.163.28-.07.27-.14.48.011.691.094.14.656.62.913.374.14-.128.363-.795 1.158-.713.176.023.492.164.503.14.012.012.281-.316.2-.749z"/>
<path fill="none" d="M73.045 115.258c.936-.245 1.228.656 1.415.784.059.035.153.117.223.117.14 0 .269.047.398.094"/>
<g stroke="none" fill="#000">
<path d="M75.01 112.954c-.047.175-.14.339-.257.491a1.373 1.373 0 0 1-.433.386c.199-.047.386-.14.562-.269a1.93 1.93 0 0 0 .456-.468l-.328-.14z"/>
<path d="M80.615 118.78c.128-.21.152-.468.152-.714-.012-.105-.012-.187-.07-.292l-.281.21c.035.012.058.094.082.141.07.199.128.433.082.655 0-.011.035 0 .035 0z"/>
<polygon points="88.98 119.131 80.685 119.143 88.992 119.482 88.98 119.131"/>
<path d="M81.82 118.745c.152-.257.257-.737.035-1.006l-.223.269c.012-.012.059.047.082.094.082.187.117.42.082.62-.011 0 .024.023.024.023z"/>
<path d="M82.861 118.733c.07-.327.222-.667.012-.982l-.246.245c.023 0 .059.047.082.106.082.199.094.42.117.631h.035z"/>
<path d="M83.914 118.722c.105-.293.129-.632.047-.936 0 0 0-.012 0 0l-.328.128c.012.024.012.012.024.024.152.222.222.491.222.772l.035.012z"/>
<path d="M85.084 118.78c.082-.327.105-.667.047-.994a.224.224 0 0 0-.105-.14l-.176.303c-.023-.011-.047-.058-.047-.046a.46.46 0 0 1 .07.152c.082.234.152.48.152.725h.059z"/>
<path d="M75.022 116.417c.328.082.643.292.924.456.14.094.316.234.468.293.176.07.363.058.527.14-.082-.047-.164-.082-.246-.117-.269-.059-.456-.27-.643-.456-.281-.246-.562-.503-.913-.656 0 .012-.117.34-.117.34z"/>
<path d="M73.349 113.2c.058.292-.129.62-.351.842.34-.164.632-.433.702-.831 0-.012-.351-.012-.351-.012z"/>
<path d="M74.297 116.1c.07.13.117.27.117.422.011.152-.024.316-.07.468a1.274 1.274 0 0 0 .292-.994l-.34.105z"/>
<path d="M79.714 121.132a.878.878 0 0 0-.667.035c-.059.023-.117.059-.187.059.058.035.14.023.21.035.187 0 .351.07.492.187-.012-.012.152-.316.152-.316z"/>
<path d="M77.83 119.833c-.21.433-.398.901-.374 1.404l.35-.047c-.14-.433-.07-.9.024-1.357z"/>
</g>
</g>
<g>
<path d="M91.39 105.758c.117 1.088-1.228 2.867-1.486 4.68-.175 1.568-.596 2.492-1.275 3.428-1.1 1.521-.971 2.492-1.357 3.896-.024.07-.047.14-.035.2.047.186.316.163.491.093.176-.082.421-.152.527.011.082.13 0 .293.035.445.058.222.374.27.491.48.082.152.024.35-.035.515a7.493 7.493 0 0 0-.304.994c-.105.538-.129.632.374.597 1.322-.106 2.399-2.141 3.09-2.598.56-.234 2.117-.924 2.9-2.106.083-.163.27-.327.504-.444.912-.433 2.433-1.978 3.124-3.241"/>
<g stroke="none" fill="#000">
<polygon points="98.621 112.766 98.984 111.55 98.305 112.626 98.621 112.766"/>
<path d="M89.472 115.399c-.69.187-.656 1.1-.632 1.673 0 .199 0 .386-.047.597.175-.129.269-.351.316-.562.152-.597-.035-1.205.363-1.708z"/>
<path d="M93.894 112.743c-.41.503-.842 1.147-1.228 1.673-.13.187-.27.375-.386.585.432-.21.783-.562 1.064-.948.281-.374.492-.819.55-1.31z"/>
<path d="M92.607 108.8c-.41.995-1.439 1.615-1.685 2.703-.082.35-.07.772.152 1.076-.07-.35-.011-.69.117-.994.351-.983 1.393-1.685 1.416-2.785z"/>
<path d="M96.187 108.051c-.222.971-.55 1.86-1.018 2.75.866-.562 1.31-1.755 1.018-2.75z"/>
<path d="M91.566 105.723c-.152-.948-.082-1.954.093-2.89.059-.327.14-.643.176-.971l-.035-.012c-.351.585-.492 1.252-.597 1.92a7.36 7.36 0 0 0-.058 1.52c.011.176.035.34.07.515l.35-.082z"/>
<path d="M92.689 116.382c-.105.737-.526 1.392-.913 2.012l.305.176c.304-.69.631-1.416.643-2.188h-.035z"/>
<path d="M95.614 113.901c-.117.702-.34 1.38-.597 2.036l.34.105c.163-.702.292-1.427.304-2.14h-.047z"/>
</g>
</g>
</g>
<g>
<path stroke-linejoin="round" d="M100.165 93.847c.75-.058 1.404-.058 1.99-.526.046-1.053-.586-2.434-1.416-3.065 1.17.082 3.124-.152 3.79-1.124a4.716 4.716 0 0 0-1.836-2.901c.713.129 2.925.714 4.352-.386.058-.948-1.404-2.574-1.907-2.972 1.275.246 3.732-.316 4.13-1.006.936.538 5.64 1.427 6.61.96.796.748 6.576 1.321 7.325.21.994.596 5.756-.48 6.06-1.884 1.942-.667 1.744-2.633 1.498-2.691 1.03.538 4.06-.995 4.27-2.422.667-.257.667-1.568.422-1.615 1.181-.48 2.2-1.275 2.351-2.094 1.1-.9.351-1.895-.362-1.743-1.1.246-2.785.89-5.593.866-6.517.42-11.045-.34-16.134-1.533-4.634-.995-7.16-1.895-8.95-1.814.947-.362 1.59-1.134 1.614-1.79-1.533.808-4.318 1.287-9.255.223-6.341-1.264-13.572-.246-16.801 2.527-2.13.363-3.44 1.263-4.282 2.866-.702 1.334-.2 2.855.397 3.206.866.503.936.948 2.188 1.451.597.234 1.591.679 2.036 1.135a10.6 10.6 0 0 0 1.708 1.439c.96.643 2.095 1.521 2.867 2.574 1.755 2.773.795 5.113.503 6.084-.667 2.188-.901 3.136-.328 4.809"/>
<g>
<path fill="none" d="M107.255 79.667c1.837.726 4.236.679 4.856.176-.012-.62-.433-1.521-.737-2.048 1.217.878 5.546 1.626 6.482 1.112.83.702 6.025 1.275 6.692.117 1.03.538 5.078.433 6.213-.562"/>
<path fill="none" d="M109.748 73.665c1.135.9 5.616 2.13 8.014 1.615.843 1.158 6.751 1.825 8.295.175.585.386 4.06.702 6.704-.62"/>
<g stroke="none">
<path d="M134.938 72.53c-4.645 1.45-9.594 1.275-14.368.69-4.809-.561-9.5-1.813-14.25-2.726l-.059.328c.585.105 1.182.234 1.767.363 8.096 1.801 18.93 4.235 26.91 1.345z"/>
<path d="M132.82 76.239c-.737.14-1.474.34-2.211.491-.375.07-1.112.2-1.486.27-5.452.912-11.068.514-16.427-.738-.538-.117-3.089-.76-3.662-.889l-.082.328c.971.246 1.942.515 2.925.749 6.845 1.684 14.18 1.872 20.943-.211z"/>
<path d="M105.969 80.837c-.562-.34-1.182-.585-1.79-.807a28.012 28.012 0 0 0-3.78-1.112c-.643-.14-1.298-.21-1.954-.269-1.965-.164-3.954-.21-5.908.07a13.67 13.67 0 0 0-1.942.422l.093.327c2.82-.749 5.815-.702 8.705-.456 2.258.304 4.47.971 6.576 1.825z"/>
</g>
<g stroke="none" fill="#000">
<path d="M85.376 76.18c-.175.457-.737.656-.947 1.112.164-.199.386-.316.608-.433.246-.129.492-.269.644-.515l-.305-.163z"/>
<path d="M108.847 69.348c-.351.175-.655.433-1.006.596-1.042.55-2.212.679-3.358.737l.011.34c1.568.035 3.265-.48 4.353-1.673z"/>
</g>
<path fill="none" d="M106.764 68.108c-2.281 1.006-4.34.83-4.586.818-1.065-.046-2.82-.655-3.92-.655-.35 0-.713.024-1.03.164-.14.07-.268.152-.42.21-.34.141-.726.07-1.054.2-.28.105-.561.362-.842.503-.725.374-1.521.678-2.352.596-.316-.035-.819-.257-1.123-.175"/>
<path fill="none" d="M106.296 70.658c1.591.878 3.3 2.153 4.06 4.247-1.065.655-3.323.702-4.89.176"/>
<path fill="none" d="M102.166 68.938c1.708 1.135 2.785 2.2 3.112 3.358-.538.597-1.79.83-2.96.83"/>
</g>
<g stroke="none" fill="#000">
<path d="M128.175 80.463c-.35.07-.69.164-1.041.257l-1.042.222c-.69.13-1.415.234-2.106.305-4.141.35-8.658.14-12.6-1.264l-.13.316c.656.269 1.37.503 2.06.655 4.33 1.006 10.67 1.041 14.86-.491z"/>
</g>
<path fill="none" d="M132.75 74.835c.772.152 1.778-.035 2.702-.41"/>
</g>
<g>
<g>
<g>
<path stroke-linejoin="round" d="M79.562 83.4c.667 0 1.158-.902 1.158-1.487 0-.573-.258-1.111-.597-1.415-.468-.41-1.053-.316-1.053-.316.223.058.971 1.076.328 1.603-.246.199-.62.14-.82.023-.514-.292-.701-.994-1.93-1.111 0 0 .363-.316.527-.948.105-.421.023-.866-.328-1.287-.35-.433-.795-.503-.97-.468.292.28.514.772.28 1.158-.234.386-.76.562-1.392.293-.913-.41-1.498-.609-2.165-.76-1.58-.399-2.948-.387-4.645.081-1.58.433-3.276.644-3.44 2.27.094.725.34 1.111.726 1.767.515.9 2.667 2.059 3.206 3.323.386.877.304 1.462.269 1.988-.012.504-.27.55-.445.527-.175.807.573 1.088.842 1.544 3.078 3.85 1.931 7.196 7.851 13.455 3.323 3.534 11.174 7.77 20.592 8.483 4.364 1.088 4.107.41 10.811 1.17 3.007.678 6.74 4.27 12.648 6.26 4.34 1.45 7.324.807 7.64.128 3.159.468 4.025-1.731 4.025-1.731s2.492-.012 2.808-1.99c2.784.153 3.568-2.246 2.386-2.105-9.278-.07-17.339-1.159-23.212-6.822-19.025-20.615-28.584-16.497-35.1-23.634z"/>
<g stroke="none" fill="#000">
<path d="M132.68 117.762c-2.621.012-5.265-.105-7.828-.69-2.574-.573-4.972-1.696-7.44-2.586l-.013.035c5.44 2.691 9.197 3.71 15.28 3.604v-.363z"/>
<path d="M135.476 115.773c-5.031.152-10.156-.082-14.941-1.766l-.012.035c4.142 1.907 9.489 2.188 14.005 2.106l.948-.024v-.35z"/>
<path d="M128.667 119.506c-2.621-.246-5.242-.714-7.722-1.627-2.493-.889-4.797-2.234-7.196-3.334l-.012.035c5.008 2.983 9.01 4.809 14.906 5.277l.024-.351z"/>
</g>
</g>
<g class="secondary">
<path d="M96.094 127.976c-.562-.316-1.31-.304-1.884.012-.55.304-.9 1.287-.89 1.673.13.176.223.047.375-.035.398-.199.702-.772 1.287-.597.27.082.328.27.609.258"/>
<path d="M106.916 130.211c.106-.07.55-.304.667-.304.375-.012.772.175 1.194.76.514.714.456 1.99.315 2.083-.187.105-.386-.129-.491-.27-.27-.35-.164-.912-.9-1.087-.27-.07-.586.023-.832-.117a.315.315 0 0 1-.093-.082c-.047-.07-.059-.152-.07-.234-.024-.258-.024-.597.21-.749z"/>
<path d="M95.298 129.696c-.608-.175-1.334-.023-1.848.363-.738.562-.831 1.486-.784 1.86.163.152.41-.035.538-.152.34-.28.491-.807 1.205-.877.28-.024.374.152.643.07"/>
<path d="M98.106 130.75a1.103 1.103 0 0 0-.725.105c-.386.234-.585.561-.831.936-.27.397-.292 1.58-.012 1.954.27.35.328.058.445-.2.152-.35.199-.9.772-1.204.059-.036.69-.117.866-.153"/>
<path d="M97.849 129.708c-.316.012-.632-.175-1.1.082-.316.175-.433.187-.807.129-.117-.012-.351-.047-.433-.14-.176-.2-.258-.165-.176-.48.035-.14.363-.059.375-1.252 0-.305.093-.527.468-.515.35 0 .631.14.713.28.094.141.34.106.527.164.199.059.491.2.702.2.093 0 .187-.024.28-.036.492-.07.843.07 1.311.164.164.035.34.012.491-.035.13-.047.258-.105.363-.187.199-.129.948-.035 1.17-.152.21.327-.316.643-.398 1.018-.058.245-.14.49-.327.666-.234.234-.574.293-.901.328a6.765 6.765 0 0 1-1.942-.07c-.106-.024-.246-.047-.316-.164z"/>
<g stroke="none" fill="#000">
<path d="M96.749 127.906c.21.304.328.702.28 1.088.083-.187.13-.386.13-.596a1.754 1.754 0 0 0-.094-.644l-.316.152z"/>
</g>
</g>
<g>
<path class="secondary" d="M107.103 129.287c-.62-.304-.865.14-.936.035-.725-1.158-1.497-.316-1.813-1.03-.105-.21.187-1.076.187-1.076l.48-1.708s.784-3.136 1.357-5.464c-.222-.468-.34-.96-.503-1.451-.152-.48-.433-.913-.737-1.322-.304.058-.515.129-.515.129s-.585 3.545-.737 4.118c-.012.094 0 .07-.105.468-.258.246-.293.994-.188 1.135-.21.152-.35.667-.187 1.018-.187.222-.269.702-.222 1.006-.246.222-.421.9-.246 1.135-.058.152-.222.55-.48 1.03-.362.538-1.66.503-2.14.912-.2.164-.492.246-.656.41a1.687 1.687 0 0 1-.316.257c-.14.082-.304.14-.468.152-.468.024-.854-.047-1.31.14-.094.036-.176.082-.27.094-.21.047-.526-.023-.736-.035-.187-.012-.433.082-.55-.035-.117-.117-.421-.187-.76-.117-.363.082-.41.304-.34.608.246 1.17-.082 1.159-.094 1.31-.011.328.059.27.27.422.093.07.339.047.456.035.374-.035.491-.07.76-.316.398-.363.75-.246 1.053-.327.328-.082.69-.188.936.187.293.444.164.96.188 1.17.023.28.257.573.83.374.421-.152.609-.503.62-.772 0-.07.07-.129.117-.187a.877.877 0 0 1 .234-.176c.503-.292.76-.889 1.358-.983.175-.035.374-.011.526-.117.152-.117.41 0 .597-.07.28-.105.538.21.819.328.199.082.41.058.62.07.468.047 1.006.28 1.287.667.082.105.047.199.129.304.163.222.292.398.55.41.175.011.889-.14.853-.492-.023-.187-.409-.772.14-1.357.118-.129.434-.292.41-.316.012.047-.07-.374-.468-.573z"/>
<path fill="none" d="M97.369 130.866c.374-.889 1.275-.573 1.486-.632.07-.023.175-.046.222-.105a1.13 1.13 0 0 1 .316-.257"/>
<g stroke="none" fill="#000">
<path d="M95.918 129.369c.27.128.421.48.445.784.082-.363.047-.76-.234-1.065.011 0-.21.28-.21.28z"/>
<path d="M99.498 130c.281-.245.55-.432.901-.538.258-.082.574-.163.75-.374.07-.059.14-.117.221-.164-.175.059-.315.199-.48.27-.14.046-.374.07-.526.105-.374.046-.749.233-1.053.42-.012-.011.187.281.187.281z"/>
<path d="M98.796 130.387c.328.058.667.21.854.503-.093-.363-.409-.656-.737-.831l-.117.328z"/>
<path d="M103.84 126.444c-.176-.176-.434-.246-.668-.304-.105-.012-.175-.036-.304 0l.14.315c.024-.023.106-.046.153-.046.21-.024.456-.035.655.058l.023-.023z"/>
<polygon points="105.945 118.336 104.202 126.455 106.284 118.406 105.945 118.336"/>
<path d="M104.05 125.262c-.223-.21-.667-.41-.971-.246l.21.281c0-.012.059-.047.117-.058a.944.944 0 0 1 .62.058l.024-.035z"/>
<path d="M104.26 124.232c-.304-.128-.596-.362-.96-.222l.188.293c0-.024.059-.047.117-.059.21-.035.421 0 .644.024l.011-.036z"/>
<path d="M104.47 123.203a1.608 1.608 0 0 0-.9-.246c-.012 0-.012 0 0 0l.059.351c.023-.012.011 0 .035-.012.257-.105.526-.117.795-.058l.012-.035z"/>
<path d="M104.787 122.068a2.352 2.352 0 0 0-.971-.258.205.205 0 0 0-.164.07l.257.235c-.011.023-.058.035-.047.035.024-.024.118-.035.164-.035.246-.024.503-.047.737 0 0-.012.024-.047.024-.047z"/>
<path d="M106.085 129.17a.924.924 0 0 0-.386.55.367.367 0 0 1-.07.187c.059-.035.105-.094.152-.14a.685.685 0 0 1 .445-.27c.012-.011-.14-.327-.14-.327z"/>
<path d="M103.921 129.872c.21.433.48.866.89 1.158l.175-.304c-.445-.164-.773-.503-1.065-.854z"/>
</g>
<g>
<path d="M96.152 110.122c.96.538 1.603 2.68 2.925 3.943 1.158 1.065 1.662 1.942 2.024 3.042.585 1.79 1.44 2.247 2.352 3.393.047.059.082.117.14.14.176.07.316-.163.363-.35.047-.188.129-.433.316-.422.152.012.234.176.374.234.223.082.445-.152.679-.117.175.024.292.176.398.328.199.28.386.573.62.83.374.398.433.469.702.047.69-1.123-.328-3.205-.293-4.024.14-.597.492-2.258 0-3.58-.082-.164-.105-.41-.058-.668.175-.994-.176-3.123-.784-4.434"/>
<g stroke="none" fill="#000">
<polygon points="106.074 108.379 105.29 107.373 105.77 108.554 106.074 108.379"/>
<path d="M102.833 117.341c-.258.667.503 1.182.983 1.486.163.105.304.222.456.386 0-.222-.129-.433-.27-.585-.397-.468-.994-.678-1.17-1.287z"/>
<path d="M103.278 112.193c.163.632.432 1.357.643 1.977.07.223.152.433.246.656.082-.48.011-.971-.14-1.416-.153-.456-.387-.89-.75-1.217z"/>
<path d="M99.323 110.918c.562.912.456 2.117 1.193 2.948.234.281.585.515.96.515a1.729 1.729 0 0 1-.737-.679c-.574-.865-.539-2.117-1.416-2.784z"/>
<path d="M100.832 107.583a10.528 10.528 0 0 1 1.627 2.434c.046-1.03-.656-2.083-1.627-2.434z"/>
<path d="M96.222 109.958c-.865-.433-1.626-1.076-2.281-1.778-.222-.246-.433-.491-.69-.714l-.035.024c.269.62.737 1.135 1.205 1.614.362.351.76.679 1.193.948.152.094.292.175.456.246l.152-.34z"/>
<path d="M105.512 115.305c.538.515.82 1.24 1.1 1.92l.316-.141c-.386-.655-.772-1.346-1.392-1.802l-.024.023z"/>
<path d="M105.231 111.48c.503.502.925 1.087 1.3 1.684l.28-.21c-.48-.55-.983-1.065-1.556-1.498l-.024.023z"/>
</g>
</g>
</g>
<g stroke="none" fill="#000">
<path d="M75.22 96.737c.55 3.288 3.055 5.92 5.792 7.652.936.573 1.93 1.053 2.972 1.37a19.326 19.326 0 0 1-5.604-3.932c-1.416-1.44-2.597-3.136-3.16-5.09z"/>
<path d="M83.27 100.353c-.105-.971-.83-1.872-1.754-2.176a26.41 26.41 0 0 1 1.754 2.176z"/>
</g>
</g>
<g>
<path class="tertiary" d="M68.47 86.687s-.515-.28-1.228-.503c-.714-.222-1.744-.597-2.692-.433-.713.14-1.181.491-1.556.538-.42.117-.713 0-.9-.128-.41-.281-.328-.55-.457-.492-.234.386.14.82.351.971.351.27.726.422 1.416.281.398-.07.608-.292 1.088-.374.667-.2 1.45-.059 2 .058.504.117 1.674.55 2.025.585-.012-.456-.047-.503-.047-.503z"/>
<path class="secondary" stroke-linejoin="round" d="M65.217 82.803c-.374-.655-.631-1.03-.725-1.767-.597-.27-1.334.164-1.357.503-.702 0-2.071.854-2.574 1.942-.527 1.147-.258 2.574.292 3.72.035.071.176.153.188.013 0-.351.234-1.521.76-1.966.749-.655 2.153.21 2.948.199.609-.012 1.358-.27 1.849.105.456.351 1.006.609 1.334 1.697 0 0-.597-.468-1.591-.27-.854.176-1.685-.105-2.294 0-.245.036-1.053.34-1.24.48-.21.152-.327.433.024.422.491-.012 1.064-.211 1.556-.094.386.094.784.105 1.193.129.89.035 1.814.117 2.539.678 0 0 .573.27.597-.491.035-.527.117-1.1-.27-1.99-.561-1.263-2.714-2.421-3.229-3.31z"/>
<g>
<path fill="#f6f6f6" d="M68.365 81.188a3.874 3.874 0 0 0-1.065.445c-.164.093-.328.21-.503.292a1.763 1.763 0 0 1-.772.164v.023c.011.585.561 1.03 1.041 1.135.491.106 1.041-.117 1.287-.55.164-.292.187-.643.164-.982 0-.13-.059-.422-.152-.527z"/>
<g stroke="none" fill="#000">
<path d="M65.86 81.024c.82-.386 1.674-.48 2.552-.643-.855-.34-2.013-.164-2.551.643z"/>
<path d="M62.971 81.516c.023.374.21.678.456.924-.117-.27-.187-.62-.105-.89 0 .013-.351-.034-.351-.034z"/>
<path d="M64.036 81.527c-.562.398-.27 1.37.456 1.065-.105-.082-.222-.14-.28-.21-.223-.246-.13-.55-.176-.855z"/>
<path d="M66.516 82.019c-.023.082.012.327.047.41.07.14.21.257.327.35.082.07.211.117.305.047.093-.058.082-.199.07-.304-.024-.199-.117-.69-.14-.89"/>
<path d="M71.535 89.238c.281-.047.433-.34.386-.597a.421.421 0 0 0-.128-.246c-.07.082-.106.14-.152.21-.106.212-.129.387-.106.633z"/>
<path d="M75.35 89.987c-.035.07-.13.222-.152.292-.024.07-.024.246-.036.328.375.105.55-.504.188-.62z"/>
<path d="M74.425 89.519c-.164.222-.175.409-.035.655.316-.07.34-.539.035-.656z"/>
<path d="M73.314 89.6c-.094.234-.082.457-.094.69 0 .07-.011.141-.035.246a.326.326 0 0 0 .293-.14c.199-.246.105-.632-.164-.796z"/>
<path d="M72.378 89.448c-.047.176-.176.27-.27.386-.116.14-.257.363-.163.562.175-.129.292-.175.433-.34.152-.14.222-.479 0-.608z"/>
<path d="M67.206 83.856c.375.199.796.28 1.159.011.327-.187.573-.456.877-.69-.093-.023-.199 0-.304.024-.351.105-.667.315-.971.49-.222.106-.503.071-.76.165z"/>
<path d="M64.937 81.352a.417.417 0 0 0-.012.421c.21.398.69.515 1.1.503v-.35c-.468-.012-.866-.071-1.042-.574h-.046z"/>
<path d="M68.412 81.364c.444-.094.924-.223 1.345.011.129.07.257.176.41.258l.023-.024a.876.876 0 0 0-.293-.444c-.444-.351-1.064-.281-1.567-.14-.012 0 .082.339.082.339z"/>
</g>
</g>
<g stroke="none" fill="#000">
<path d="M76.637 82.358c.561-.07.947.421 1.369.702.222.164.456.304.725.398.269.093.561.14.842.129l-.035-.351c-.503.081-1.006-.059-1.439-.328-.445-.234-.913-.69-1.462-.55z"/>
<path d="M73.372 80.299c.597-.047 1.077.374 1.603.597.55.28 1.276.397 1.779-.059l-.234-.257c-.632.655-1.568.093-2.282-.164-.28-.094-.573-.187-.866-.117z"/>
<path d="M72.366 83.587c.117-.27.047-.527-.199-.702-.222.234-.105.631.2.702z"/>
<path d="M71.114 84.803a.838.838 0 0 0 .293-.889c-.34.129-.48.573-.293.89z"/>
</g>
</g>
<g stroke="none" fill="#000">
<path d="M118.207 113.515c-.796-.21-1.627-.269-2.446-.304-1.638-.059-3.287-.035-4.925-.023-.82 0-1.638.011-2.434-.07l-.047.35c1.65.14 3.3.024 4.95 0 1.626-.058 3.264-.082 4.902.047z"/>
</g>
</g>
<g>
<path d="M96.105 98.13c.714.199 1.334.433 2.048.199.41-.971.304-2.48-.258-3.358 1.065.491 2.984.96 3.943.269.2-1.194-.058-2.352-.713-3.37.62.375 2.492 1.685 4.212 1.158.386-.865-.422-2.901-.75-3.451 1.112.679 3.604 1.006 4.225.503.69.83 4.785 3.311 5.861 3.206.48.983 5.698 3.545 6.786 2.75.726.9 5.57 1.567 6.33.35 2.047.059 2.55-1.86 2.34-2 .772.854 4.154.48 4.844-.773.713-.011 1.17-1.228.96-1.368 1.274-.036 2.515-.433 2.936-1.147 1.345-.468.994-1.661.269-1.755-1.112-.152-2.925-.14-5.546-1.135-6.26-1.884-10.237-4.165-14.59-7.078-3.99-2.551-6.049-4.283-7.757-4.833 1.018-.011 1.896-.503 2.141-1.123-1.708.223-4.493-.304-8.751-3.018-5.5-3.405-13.07-5.137-17.07-3.674-2.13-.41-3.885-.105-5.23 1.111-1.124 1.007-1.182 2.61-.75 3.136.632.772.55 1.217 1.545 2.13.468.432 1.93 1.438 2.188 2.023.304.69.667 1.334 1.1 1.943.678.947 1.439 2.152 1.79 3.404.678 3.206-1.041 5.078-1.662 5.874-1.392 1.813-1.942 2.62-1.989 4.399"/>
<g>
<path fill="none" d="M108.823 90.068c-.14-1.193-1.158-3.018-2.211-4.071"/>
<path fill="none" d="M107.7 87.307c1.474 1.322 3.732 2.118 4.493 1.86.21-.585.129-1.579.023-2.176.831 1.252 4.622 3.463 5.687 3.3.538.947 5.194 3.3 6.236 2.457.772.854 4.61 2.176 6.013 1.638"/>
<path fill="none" d="M110.777 84.043c.667 1.03 1.229 1.79 1.428 2.948"/>
<path fill="none" d="M112.134 82.557c.76 1.24 4.528 3.955 6.95 4.317.386 1.38 5.686 4.06 7.71 3.066.422.561 3.557 2.07 6.494 1.766"/>
<path fill="none" d="M92.935 83.34c4.762 1.23 8.061 2.037 11.665 6.237"/>
<g stroke="none" fill="#000">
<path d="M136.143 90.29c-4.856-.268-9.43-2.152-13.7-4.363-4.318-2.212-8.273-5.02-12.403-7.535l-.175.292c.514.305 1.03.632 1.532.96 6.95 4.504 16.252 10.565 24.746 10.647z"/>
<path d="M132.855 93.028c-.737-.128-1.497-.198-2.246-.315-.375-.07-1.112-.2-1.486-.27-5.429-1.052-10.554-3.38-15.14-6.434-.468-.305-2.632-1.79-3.124-2.118l-.187.28c.83.574 1.638 1.17 2.48 1.72 5.827 3.99 12.636 6.728 19.703 7.137z"/>
<path d="M106.085 87.962c-.409-.514-.9-.959-1.392-1.38a29.456 29.456 0 0 0-3.147-2.364c-.55-.362-1.147-.655-1.743-.936-1.779-.842-3.627-1.58-5.558-2A12.239 12.239 0 0 0 92.28 81l-.023.34c2.902.28 5.686 1.368 8.319 2.62 2 1.065 3.837 2.469 5.51 4.001z"/>
</g>
<g>
<path fill="none" d="M92.689 84.733c.199-.386.41-.994.246-1.392a1.55 1.55 0 0 0-.913-.866c-.058-.433.374-.89.234-1.31-.094-.305-.374-.503-.643-.679.011-.69-.468-1.369-1.135-1.544-.129-.527-.468-.843-1.007-.971a2.236 2.236 0 0 0-.959-1.44c.386-.432.363-1.181-.023-1.59.514-.305.877-.843.982-1.44-.163-.41-.9-.667-.9-.667"/>
<g stroke="none" fill="#000">
<path d="M88.524 72.682c-.176.105-.304.258-.445.386-.269.293-.573.328-.947.328-.188 0-.375 0-.55.047.386-.012.725.117 1.111.082.386-.047.655-.375.983-.515 0-.012-.152-.328-.152-.328z"/>
<path d="M88.418 74.788c-.374.281-.982.21-1.427.351.257-.011.515.024.772.047.281.023.574.035.843-.094-.012 0-.188-.304-.188-.304z"/>
<path d="M92.642 84.57c-.175.07-.398.163-.585.081-.093-.035-.175-.117-.28-.187a.479.479 0 0 0-.352-.082.435.435 0 0 1 .293.14c.269.387.562.445 1.018.363a5.43 5.43 0 0 1-.094-.316z"/>
<path d="M91.94 82.335c-.234.222-.573.117-.866.175a.664.664 0 0 0-.304.14c.21-.081.41-.046.62.012.223.07.503.094.737-.023a11.085 11.085 0 0 1-.187-.304z"/>
<path d="M90.349 78.848c-.164.351-.491.527-.83.702a.926.926 0 0 0-.293.27.772.772 0 0 1 .327-.188c.398-.094.82-.234 1.077-.585.011 0-.281-.199-.281-.199z"/>
<path d="M91.542 80.334c-.397.304-.947.199-1.333.503.222-.117.468-.093.713-.082.258.012.527-.023.773-.105l-.153-.316z"/>
<path d="M89.343 77.889c-.14.339-.515.48-.82.655a1.03 1.03 0 0 0-.292.257.89.89 0 0 1 .328-.175c.386-.117.83-.2 1.076-.55a4.08 4.08 0 0 0-.292-.187z"/>
<path d="M88.407 76.403c-.328.374-.924.362-1.275.702.222-.129.467-.152.725-.187.269-.036.55-.082.784-.258l-.234-.257z"/>
<path d="M88.688 72.986c.48-.327.713-.889.725-1.45-.105.48-.433.959-.89 1.135-.01.011.165.315.165.315z"/>
</g>
</g>
<path fill="none" d="M99.16 76.052c1.192.912 2.421 2.585 2.713 3.755-.55.586-1.813.784-2.983.761"/>
<path fill="none" d="M111.28 76.31c-2.48.14-4.364-.738-4.586-.831-.983-.422-2.41-1.603-3.44-1.978-.328-.117-.679-.234-1.03-.199-.152.012-.304.047-.468.059-.374.012-.702-.187-1.064-.187-.304 0-.655.14-.971.175-.808.094-1.662.105-2.41-.269-.281-.14-.667-.526-.995-.55"/>
<g stroke="none" fill="#000">
<path d="M108.016 84.51c.468.504.948.96 1.416 1.452.468.491.866 1.018 1.31 1.532l.035-.011c-.105-.34-.28-.632-.48-.913-.584-.83-1.31-1.568-2.024-2.293 0-.012-.257.234-.257.234z"/>
<path d="M99.346 78.848c-2.094-2.176-5.815-3.17-8.775-2.937 3.09.305 6.225 1.088 8.775 2.937z"/>
<path d="M99.264 75.911c-2.024-1.333-5.276-2.644-7.722-2.328v.035c2.001-.128 4.037.655 5.804 1.533.596.316 1.17.655 1.72 1.053l.198-.293z"/>
<path d="M112.801 78.205c-.386.046-.76.175-1.158.21-1.17.152-2.305-.14-3.405-.48l-.105.316c1.463.574 3.23.69 4.668-.046z"/>
<path d="M96.34 72.355c-.375-.035-.714.245-1.054.234-.327-.012-.678-.14-1.006-.223-.69-.175-1.51-.269-2.164.082.163 0 .374-.047.538-.058.526-.047 1.041.07 1.544.257.328.105.714.28 1.077.304.199.012.41-.046.596-.117.164-.058.328-.128.445-.128l.023-.351z"/>
</g>
<path fill="none" d="M105.372 79.457c1.357 1.216 2.48 2.866 2.901 4.855-1.193.398-2.527.328-3.65-.222"/>
<path fill="none" d="M109.947 78.532c1.193 1.38 2.34 3.17 2.316 5.394-1.228.246-3.37-.503-4.645-1.545"/>
<g stroke="none" fill="#000">
<path d="M106.624 78.216c-1.521-2.094-3.955-3.451-6.505-3.849 1.03.41 2.07.819 3.041 1.345 1.264.68 2.387 1.557 3.464 2.504z"/>
<path d="M110.742 82.569c-.094-.316-.28-.585-.468-.831a14.045 14.045 0 0 0-1.615-1.72 3.258 3.258 0 0 0-.374-.304l-.21.28c.935.773 1.836 1.686 2.632 2.586l.035-.011z"/>
<path d="M105.969 82.861a6.067 6.067 0 0 0-.878-.936 20.035 20.035 0 0 0-3.112-2.27l-.187.293c.702.433 1.45.913 2.117 1.392.702.48 1.322 1.053 2.024 1.545 0 .011.035-.024.035-.024z"/>
</g>
<path fill="none" d="M106.682 75.478c1.205 1.65 1.849 3.03 1.743 4.236-.713.374-1.965.152-3.065-.246"/>
<path fill="none" d="M105.383 79.433c-1.04-.842-3.626-2.363-5.417-2.738"/>
</g>
<path fill="none" d="M100.423 81.34c2.281 1.135 4.399 2.855 6.189 4.657"/>
<path fill="none" d="M133.276 91.695c.667.41 1.685.585 2.668.561"/>
<g stroke="none" fill="#000">
<path d="M127.028 95.368c-.35-.058-.713-.093-1.064-.128l-1.053-.152a31.43 31.43 0 0 1-2.083-.457c-4.013-1.123-8.166-2.901-11.36-5.58l-.235.245a12.43 12.43 0 0 0 1.709 1.334c3.685 2.457 9.629 4.703 14.087 4.739z"/>
<path d="M92.291 78.65c.527.14 1.053.186 1.58.327.866.199 1.72.468 2.562.772 1.17.421 2.773 1.217 3.908 1.755l.152-.304c-1.907-1.006-3.931-1.849-6.06-2.282-.703-.14-1.416-.28-2.142-.269z"/>
</g>
<g>
<path fill="none" d="M92.572 86.699c2.948.9 6.002 2.118 8.564 5.171"/>
<path fill="none" d="M90.677 89.881c.315-.199.631-.643.783-.983.094-.21.153-.456.281-.655.094-.14.223-.257.328-.386.269-.327.398-.76.515-1.17.046-.152-.164-.327-.059-.444.48-.539.351-1.124.176-1.521"/>
<path fill="none" d="M97.907 94.959c-2.69-3.381-4.41-3.92-6.786-5.51"/>
<g stroke="none" fill="#000">
<path d="M85.634 95.064c-.644-.561-1.041-1.673-.878-2.503l-.339-.07c-.082.912.456 2.058 1.217 2.573z"/>
<path d="M90.103 93.824c1.486 2.013 3.545 3.686 5.944 4.458l.117-.316c-1.147-.456-2.258-.971-3.264-1.685a15.32 15.32 0 0 1-1.44-1.17c-.48-.41-.877-.877-1.357-1.287z"/>
<path d="M102.67 90.139c-2.458-2.563-6.33-4.973-9.9-5.417l-.046.339c2.913.468 5.616 1.813 7.991 3.533.679.48 1.299 1.041 1.954 1.545z"/>
<path d="M99.604 93.707c-.421-.678-.971-1.287-1.533-1.86-1.685-1.743-3.92-2.796-5.92-4.119l-.2.281c1.3.96 2.774 1.627 4.096 2.516.667.444 1.299.924 1.884 1.462.222.187.433.421.643.62.363.351.679.75 1.03 1.1z"/>
<path d="M86.09 95.837c.82.55 2.094.292 2.644-.527a5.472 5.472 0 0 1-2.644.526z"/>
<path d="M90.618 89.717a1.566 1.566 0 0 1-1.369.328 1.802 1.802 0 0 0 1.568-.035l-.199-.293z"/>
<path d="M91.344 87.518c-.246.164-.457.316-.714.444-.234.14-.585.188-.737.468.316-.046.608.012.9-.152.293-.152.527-.433.55-.76z"/>
<path d="M90.501 89.858c-.035.55-.257 1.1-.632 1.556a2.89 2.89 0 0 0 .983-1.498l-.35-.058z"/>
<path d="M92.432 86.102c-.375.316-.82.164-1.229.012-.152-.047-.304-.094-.456-.129l.421.21c.456.282.924.492 1.45.211-.01 0-.186-.304-.186-.304z"/>
<path d="M93.531 98.96c-1.415-.526-2.492-1.567-3.72-2.41.877 1.205 2.164 2.364 3.72 2.41z"/>
<path d="M95.871 96.351a10.896 10.896 0 0 0-2.55-2.925c-.901-.713-1.942-1.228-2.984-1.673.913.679 1.896 1.229 2.773 1.954.995.784 1.872 1.72 2.761 2.644z"/>
</g>
</g>
</g>
</g>
</svg>

After

Width:  |  Height:  |  Size: 30 KiB