diff options
Diffstat (limited to '.github')
48 files changed, 1661 insertions, 0 deletions
diff --git a/.github/ISSUE_TEMPLATE/---01-bug-report.yml b/.github/ISSUE_TEMPLATE/---01-bug-report.yml new file mode 100644 index 000000000..eb1ee8ae2 --- /dev/null +++ b/.github/ISSUE_TEMPLATE/---01-bug-report.yml @@ -0,0 +1,55 @@ +name: "\U0001F41B Bug Report" +description: Report an issue or possible bug +labels: [] +assignees: [] +body: + - type: markdown + attributes: + value: | + ## Quick Checklist + Thank you for taking the time to file a bug report! Please fill out this form as completely as possible. + + β
I am using the **latest version of Astro** and all plugins. + β
I am using a version of Node that Astro supports (`v18.20.8`, `v20.3.0`, `v22.0.0` or higher.) + - type: textarea + id: astro-info + attributes: + label: Astro Info + description: Run the command `astro info` in your terminal and paste the output here. Please review the data before submitting in case there is any sensitive information you don't want to share. + render: block + validations: + required: true + - type: input + id: browser + attributes: + label: If this issue only occurs in one browser, which browser is a problem? + placeholder: Chrome, Firefox, Safari + - type: textarea + id: bug-description + attributes: + label: Describe the Bug + description: A clear and concise description of what the bug is. + validations: + required: true + - type: textarea + id: bug-expectation + attributes: + label: What's the expected result? + description: Describe what you expect to happen. + validations: + required: true + - type: input + id: bug-reproduction + attributes: + label: Link to Minimal Reproducible Example + description: 'Use [StackBlitz](https://astro.new/repro) to create a minimal reproduction of the problem. **A minimal reproduction is required** so that others can help debug your issue. If a report is vague (e.g. just a generic error message) and has no reproduction, it may be auto-closed. Not sure how to create a minimal example? [Read our guide](https://docs.astro.build/en/guides/troubleshooting/#creating-minimal-reproductions)' + placeholder: 'https://stackblitz.com/abcd1234' + validations: + required: true + - type: checkboxes + id: will-pr + attributes: + label: Participation + options: + - label: I am willing to submit a pull request for this issue. + required: false diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml new file mode 100644 index 000000000..5c5f4e11b --- /dev/null +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -0,0 +1,14 @@ +blank_issues_enabled: false +contact_links: + - name: π Support + url: https://astro.build/chat + about: 'This issue tracker is not for support questions. Join us on Discord for assistance!' + - name: π Documentation + url: https://github.com/withastro/docs + about: File an issue or make an improvement to the docs website. + - name: π‘ Ideas for New Features, Improvements and RFCs + url: https://github.com/withastro/roadmap/discussions + about: Propose and discuss future improvements to Astro + - name: πΎ Chat + url: https://astro.build/chat + about: Our Discord server is active, come join us! diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md new file mode 100644 index 000000000..59e8413b6 --- /dev/null +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -0,0 +1,20 @@ +## Changes + +- What does this change? +- Be short and concise. Bullet points can help! +- Before/after screenshots can help as well. +- Don't forget a changeset! `pnpm exec changeset` + +## Testing + +<!-- How was this change tested? --> +<!-- DON'T DELETE THIS SECTION! If no tests added, explain why. --> + +## Docs + +<!-- Could this affect a userβs behavior? We probably need to update docs! --> +<!-- If docs will be needed or youβre not sure, uncomment the next line: --> +<!-- /cc @withastro/maintainers-docs for feedback! --> + +<!-- DON'T DELETE THIS SECTION! If no docs added, explain why.--> +<!-- https://github.com/withastro/docs --> diff --git a/.github/assets/banner.jpg b/.github/assets/banner.jpg Binary files differnew file mode 100644 index 000000000..e88438780 --- /dev/null +++ b/.github/assets/banner.jpg diff --git a/.github/assets/banner.png b/.github/assets/banner.png Binary files differnew file mode 100644 index 000000000..7696fafb7 --- /dev/null +++ b/.github/assets/banner.png diff --git a/.github/assets/deepgram-dark.svg b/.github/assets/deepgram-dark.svg new file mode 100644 index 000000000..9b66066ff --- /dev/null +++ b/.github/assets/deepgram-dark.svg @@ -0,0 +1 @@ +<svg fill="none" height="28" viewBox="0 0 223 28" width="223" xmlns="http://www.w3.org/2000/svg"><path d="m60.4252 13.8164h-7.5678v13.8149h7.5678z" fill="#fb3640"/><path d="m32.3418 13.8149v3c.2704 7.2029 4.4332 10.8043 12.4885 10.8043h11.7413v-5.9161h-11.4958c-.6715.0546-1.3474-.022-1.9886-.2255-.6412-.2034-1.2351-.5297-1.7473-.9599-.8865-1.0439-1.3434-2.376-1.2809-3.7343-.0533-.7657-.0853-1.7518-.0853-2.9581s0-2.1818.0853-2.9161c-.0338-.6819.0716-1.3636.3099-2.00492s.6047-1.22931 1.0778-1.72937c1.0682-.87802 2.4433-1.31092 3.8319-1.20631h11.357v-5.9686h-11.5598c-3.96 0-7.0448.923088-9.233 2.77975-1.1283 1.00888-2.0214 2.24542-2.6183 3.625-.5969 1.37957-.8835 2.86961-.84 4.36815-.0214.7657-.0427 1.8147-.0427 3.042z" fill="#fb3640"/><path d="m.00054836 13.8164h7.56781164v-13.81484551h-7.56781164z" fill="#fb3640"/><path d="m28.0411 10.7729c-.1174-3.43015-1.2595-6.13648-3.4904-7.99315-2.2308-1.856662-5.2408-2.77975-9.2009-2.77975h-11.5705v5.91615h11.3677c1.3886-.10461 2.7637.32829 3.832 1.20631.471.50139.8362 1.0896 1.0743 1.73059.2382.64099.3447 1.32205.3133 2.00375.0533.7342.0854 1.6993.0854 2.9161s0 2.1923-.0854 2.9581c.0775 1.378-.3846 2.733-1.2916 3.7867-.5099.4304-1.1019.7569-1.7414.9604-.6396.2035-1.3139.2799-1.9838.225h-11.5705v5.9161h11.7413c8.0481 0 12.211-3.6014 12.4885-10.8043 0-.7448 0-1.7413 0-3 0-1.2588.0534-2.2763.032-3.042z" fill="#fb3640"/><g fill="#fff"><path d="m72.1754 22.4594c-.0607-.0568-.1091-.1251-.1421-.2009-.033-.0757-.05-.1572-.05-.2396v-16.38485c-.0046-.08673.0092-.17343.0404-.25467.0313-.08124.0793-.15524.141-.21736.053-.05731.1171-.10356.1886-.136s.149-.0504.2277-.05282h6.7566c2.1257-.12785 4.2265.50568 5.9134 1.78324.7309.64038 1.3124 1.42836 1.7048 2.31004s.5864 1.83622.5687 2.79842v1.9511 1.9196c-.1708 4.6084-2.8357 6.9126-7.9948 6.9126h-6.9487c-.1545-.0108-.2992-.0782-.4056-.1888zm7.2049-3.5769c.4295.0353.8619-.0132 1.2723-.1428.4103-.1296.7905-.3378 1.1186-.6125.5696-.6676.863-1.5213.8219-2.3916 0-.493.0534-1.1224.0534-1.8987 0-.7762 0-1.3951-.0534-1.8671.0218-.4365-.0454-.8729-.1975-1.2836s-.3862-.78741-.6884-1.10805c-.6901-.5516-1.5675-.82527-2.455-.76574h-2.4016v10.07009z"/><path d="m91.7918 22.4594c-.0608-.0568-.1091-.1252-.1421-.2009s-.0501-.1573-.0501-.2397v-16.38477c-.0014-.17602.0676-.34553.1922-.47204.0598-.06283.1327-.11223.2138-.14482.0811-.03258.1683-.04759.2558-.04399h12.0726c.087-.00226.174.01336.255.04586.081.03251.154.08119.214.14295.065.06109.116.13442.151.21557.035.08114.053.16839.052.25647v2.49653c.002.08514-.016.16957-.051.24745-.035.07789-.087.14736-.152.2036-.126.11793-.295.18202-.469.17833h-8.1232v3.20986h7.5572c.089-.0013.177.0148.259.0472.083.0324.158.0805.221.1416.063.06.112.1319.145.2113.033.0793.049.1645.047.2502v2.2973c.003.0874-.013.1743-.046.2555s-.083.1549-.146.2165c-.063.0611-.138.1092-.221.1416-.082.0324-.17.0485-.259.0472h-7.5572v3.3042h8.3252c.089-.0014.177.0147.259.0475.083.0327.157.0813.22.1429.063.0617.112.1351.146.2159.033.0808.049.1674.048.2546v2.486c.003.0845-.012.1686-.045.2465-.033.078-.084.1478-.147.2046-.063.0607-.139.1078-.221.1385-.083.0307-.171.0443-.26.0398h-12.328c-.1592-.0131-.3076-.0842-.4162-.1993z"/><path d="m109.44 22.4594c-.06-.0569-.109-.1252-.142-.2009-.033-.0758-.05-.1573-.05-.2397v-16.38481c-.004-.17454.061-.34386.182-.47203.057-.06258.129-.11193.208-.14456.079-.03262.165-.04773.251-.04425h12.125c.089-.00142.177.0147.259.04741.083.03271.157.08133.22.14298s.112.13507.145.21589c.034.08082.05.16739.049.25456v2.49654c.003.08442-.012.16857-.045.24652-.034.07794-.084.14776-.147.20453-.131.11856-.303.18253-.481.17832h-8.112v3.2098h7.557c.088-.0014.174.0145.255.0466.081.0322.155.0801.216.1408.062.0606.111.1329.144.2124.032.0796.048.1648.047.2506v2.2972c.002.0874-.013.1744-.046.2556s-.083.1548-.146.2165c-.061.0612-.134.1096-.215.142-.081.0325-.168.0484-.255.0468h-7.557v3.3042h8.326c.087-.0016.174.0143.254.0467.081.0325.154.0809.215.1421.064.0616.113.1353.146.2165s.049.1681.047.2555v2.4861c.003.0844-.012.1686-.046.2465-.033.078-.083.1478-.147.2045-.062.0594-.135.1058-.216.1365-.081.0306-.167.0449-.253.0419h-12.286c-.093.0062-.187-.0084-.274-.043-.087-.0345-.165-.088-.228-.1563z"/><path d="m127.128 22.4573c-.06-.0569-.109-.1252-.142-.2009-.033-.0758-.05-.1573-.05-.2397v-16.38481c-.007-.17311.054-.34224.171-.47203.061-.06177.134-.11045.215-.14295.08-.03251.167-.04813.255-.04587h7.268c1.87-.10866 3.72.41722 5.241 1.48953.64.53146 1.143 1.20341 1.47 1.96149.326.75807.466 1.58104.409 2.40224.059.8157-.083 1.6335-.413 2.384-.331.7505-.841 1.4116-1.487 1.9272-1.538 1.032-3.381 1.5337-5.241 1.4266h-2.925v5.4651c0 .1643-.065.322-.181.4406-.061.0617-.134.1104-.215.1429-.08.0325-.167.0481-.255.0459h-3.693c-.163-.0084-.317-.08-.427-.1993zm7.589-9.5036c.602.0316 1.194-.1635 1.655-.5455.21-.2104.373-.4621.478-.7387.105-.2765.149-.5717.13-.8662.029-.5816-.17-1.15178-.555-1.59444-.224-.21381-.493-.37781-.788-.48095-.294-.10314-.608-.14303-.92-.11696h-2.882v4.34275z"/><path d="m147.498 21.1148c-.72-.6422-1.293-1.4283-1.68-2.3057-.386-.8774-.578-1.8258-.561-2.7817 0-.4721 0-1.2378 0-2.2973 0-1.0594 0-1.8357 0-2.3182-.016-.9353.178-1.86262.567-2.71634s.964-1.61302 1.685-2.22426c1.667-1.2413 3.728-1.86193 5.817-1.75177 1.463-.02576 2.916.24194 4.27.78673 1.091.4217 2.054 1.11154 2.796 2.00352.599.70981.954 1.58723 1.015 2.50702.003.0738-.01.1474-.037.2162-.028.0688-.069.1313-.122.1835-.054.0522-.117.0931-.187.12-.07.0268-.145.0392-.22.0363h-3.939c-.137.0105-.274-.0187-.395-.084-.108-.0701-.202-.159-.277-.2622-.213-.48354-.552-.9033-.982-1.2168-.57-.36395-1.243-.54029-1.922-.50351-1.985 0-3.01 1.04897-3.074 3.03151v2.1714 2.1923c.064 2.0979 1.068 3.2098 3.128 3.2098.854.0462 1.696-.2148 2.369-.7343.306-.2832.543-.6298.694-1.0145.151-.3848.213-.7979.182-1.2093v-.4195h-2.295c-.088.0016-.174-.0143-.255-.0468s-.154-.0808-.215-.1421c-.063-.0616-.113-.1352-.146-.2164s-.049-.1682-.046-.2556v-1.993c-.003-.0874.013-.1744.046-.2556s.083-.1549.146-.2165c.061-.0612.134-.1096.215-.142.081-.0325.167-.0484.255-.0468h6.532c.087-.0016.174.0143.255.0468.081.0324.154.0808.215.142.063.0616.113.1353.146.2165s.048.1682.046.2556v2.9266c.022 1.3105-.349 2.5984-1.067 3.7028-.697 1.0487-1.692 1.8731-2.861 2.3707-1.349.5631-2.804.8419-4.27.8182-2.099.1236-4.171-.5106-5.828-1.7833z"/><path d="m165.745 22.4586c-.061-.0568-.109-.1251-.142-.2009-.033-.0757-.05-.1572-.05-.2396v-16.38484c-.004-.17455.061-.34386.181-.47203.06-.06284.133-.11224.214-.14482.081-.03259.169-.0476.256-.044h7.066c1.903-.11509 3.788.41842 5.337 1.51051.632.51857 1.133 1.17381 1.465 1.91445.331.74064.484 1.5466.446 2.35483.033 1.0626-.256 2.1109-.833 3.0105-.576.8591-1.386 1.5423-2.337 1.9721l3.469 6.1574c.049.0869.079.1837.085.2832-.004.1379-.061.2691-.16.3672-.048.0522-.108.0934-.174.1206-.067.0272-.138.0397-.21.0367h-3.619c-.229.0141-.456-.0446-.648-.1674-.193-.1228-.339-.3032-.419-.5144l-2.829-5.4756h-2.465v5.4861c.003.0844-.012.1685-.046.2465-.033.0779-.083.1477-.147.2045-.063.0607-.138.1079-.221.1386-.082.0306-.171.0442-.259.0397h-3.512c-.084-.0025-.167-.0214-.244-.0556s-.146-.083-.204-.1437zm7.472-9.6819c.613.0444 1.22-.1517 1.686-.5455.198-.1964.351-.4314.451-.6898.099-.2584.142-.5344.126-.8102.014-.2819-.03-.5638-.129-.82871-.099-.26496-.251-.50755-.448-.71324-.226-.20408-.492-.36053-.782-.45975-.29-.09921-.598-.13909-.904-.11718h-2.85v4.19588z"/><path d="m183.903 22.4899c-.099-.0981-.156-.2293-.161-.3672-.013-.0763-.013-.1544 0-.2307l5.988-16.18554c.058-.22832.198-.42838.394-.56332.197-.13493.436-.19565.674-.17095h4.013c.238-.0247.478.03602.674.17095.196.13494.336.335.394.56332l5.988 16.18554c.014.0763.014.1545 0 .2307-.008.1391-.069.2701-.171.3672-.099.0988-.233.1554-.374.1573h-3.341c-.187.0118-.373-.0359-.531-.136-.157-.1001-.278-.2473-.344-.4199l-.928-2.4441h-6.725l-.929 2.4441c-.066.1726-.186.3198-.344.4199-.157.1001-.344.1478-.531.136h-3.341c-.075.0033-.15-.009-.22-.0361s-.133-.0684-.185-.1212zm6.596-6.6295h4.568l-2.284-6.41963z"/><path d="m205.331 22.4704c-.063-.0567-.114-.1266-.147-.2045-.033-.078-.048-.1621-.045-.2465v-16.38485c-.001-.08717.015-.17374.048-.25456.034-.08082.083-.15423.146-.21588s.137-.11028.22-.14299c.082-.03271.17-.04883.259-.04741h2.903c.193-.00893.385.03923.551.1383.165.09907.297.24452.378.41765l4.419 7.77284 4.44-7.77284c.081-.17313.212-.31858.378-.41765.165-.09907.357-.14723.551-.1383h2.903c.087-.00226.174.01336.255.04586.081.03251.154.08119.215.14295.063.0616.112.13527.145.21646s.049.16817.047.25557v16.39535c.003.0844-.012.1685-.045.2465-.034.0779-.084.1477-.147.2045-.062.0604-.135.1075-.216.1382s-.168.0444-.254.0401h-3.266c-.169-.0052-.328-.0732-.447-.1901s-.188-.274-.194-.4392v-9.1995l-2.818 5.0036c-.083.1673-.209.3098-.367.4131-.158.1032-.34.1634-.529.1743h-1.388c-.191-.0091-.376-.0684-.535-.1718-.16-.1033-.288-.2468-.372-.4156l-2.743-4.9931v9.189c.003.0844-.012.1685-.045.2465-.034.0779-.084.1477-.148.2045-.063.0607-.138.1079-.221.1385-.082.0307-.171.0443-.259.0398h-3.202c-.087.0017-.174-.0142-.255-.0467-.08-.0325-.154-.0808-.215-.1421z"/></g></svg>
\ No newline at end of file diff --git a/.github/assets/deepgram.svg b/.github/assets/deepgram.svg new file mode 100644 index 000000000..ec55ad3fa --- /dev/null +++ b/.github/assets/deepgram.svg @@ -0,0 +1 @@ +<svg fill="none" height="28" viewBox="0 0 223 28" width="223" xmlns="http://www.w3.org/2000/svg"><path d="m60.4252 13.8164h-7.5678v13.8149h7.5678z" fill="#fb3640"/><path d="m32.3418 13.8149v3c.2704 7.2029 4.4332 10.8043 12.4885 10.8043h11.7413v-5.9161h-11.4958c-.6715.0546-1.3474-.022-1.9886-.2255-.6412-.2034-1.2351-.5297-1.7473-.9599-.8865-1.0439-1.3434-2.376-1.2809-3.7343-.0533-.7657-.0853-1.7518-.0853-2.9581s0-2.1818.0853-2.9161c-.0338-.6819.0716-1.3636.3099-2.00492s.6047-1.22931 1.0778-1.72937c1.0682-.87802 2.4433-1.31092 3.8319-1.20631h11.357v-5.9686h-11.5598c-3.96 0-7.0448.923088-9.233 2.77975-1.1283 1.00888-2.0214 2.24542-2.6183 3.625-.5969 1.37957-.8835 2.86961-.84 4.36815-.0214.7657-.0427 1.8147-.0427 3.042z" fill="#fb3640"/><path d="m.00054836 13.8164h7.56781164v-13.81484551h-7.56781164z" fill="#fb3640"/><path d="m28.0411 10.7729c-.1174-3.43015-1.2595-6.13648-3.4904-7.99315-2.2308-1.856662-5.2408-2.77975-9.2009-2.77975h-11.5705v5.91615h11.3677c1.3886-.10461 2.7637.32829 3.832 1.20631.471.50139.8362 1.0896 1.0743 1.73059.2382.64099.3447 1.32205.3133 2.00375.0533.7342.0854 1.6993.0854 2.9161s0 2.1923-.0854 2.9581c.0775 1.378-.3846 2.733-1.2916 3.7867-.5099.4304-1.1019.7569-1.7414.9604-.6396.2035-1.3139.2799-1.9838.225h-11.5705v5.9161h11.7413c8.0481 0 12.211-3.6014 12.4885-10.8043 0-.7448 0-1.7413 0-3 0-1.2588.0534-2.2763.032-3.042z" fill="#fb3640"/><g fill="#000"><path d="m72.1754 22.4594c-.0607-.0568-.1091-.1251-.1421-.2009-.033-.0757-.05-.1572-.05-.2396v-16.38485c-.0046-.08673.0092-.17343.0404-.25467.0313-.08124.0793-.15524.141-.21736.053-.05731.1171-.10356.1886-.136s.149-.0504.2277-.05282h6.7566c2.1257-.12785 4.2265.50568 5.9134 1.78324.7309.64038 1.3124 1.42836 1.7048 2.31004s.5864 1.83622.5687 2.79842v1.9511 1.9196c-.1708 4.6084-2.8357 6.9126-7.9948 6.9126h-6.9487c-.1545-.0108-.2992-.0782-.4056-.1888zm7.2049-3.5769c.4295.0353.8619-.0132 1.2723-.1428.4103-.1296.7905-.3378 1.1186-.6125.5696-.6676.863-1.5213.8219-2.3916 0-.493.0534-1.1224.0534-1.8987 0-.7762 0-1.3951-.0534-1.8671.0218-.4365-.0454-.8729-.1975-1.2836s-.3862-.78741-.6884-1.10805c-.6901-.5516-1.5675-.82527-2.455-.76574h-2.4016v10.07009z"/><path d="m91.7918 22.4594c-.0608-.0568-.1091-.1252-.1421-.2009s-.0501-.1573-.0501-.2397v-16.38477c-.0014-.17602.0676-.34553.1922-.47204.0598-.06283.1327-.11223.2138-.14482.0811-.03258.1683-.04759.2558-.04399h12.0726c.087-.00226.174.01336.255.04586.081.03251.154.08119.214.14295.065.06109.116.13442.151.21557.035.08114.053.16839.052.25647v2.49653c.002.08514-.016.16957-.051.24745-.035.07789-.087.14736-.152.2036-.126.11793-.295.18202-.469.17833h-8.1232v3.20986h7.5572c.089-.0013.177.0148.259.0472.083.0324.158.0805.221.1416.063.06.112.1319.145.2113.033.0793.049.1645.047.2502v2.2973c.003.0874-.013.1743-.046.2555s-.083.1549-.146.2165c-.063.0611-.138.1092-.221.1416-.082.0324-.17.0485-.259.0472h-7.5572v3.3042h8.3252c.089-.0014.177.0147.259.0475.083.0327.157.0813.22.1429.063.0617.112.1351.146.2159.033.0808.049.1674.048.2546v2.486c.003.0845-.012.1686-.045.2465-.033.078-.084.1478-.147.2046-.063.0607-.139.1078-.221.1385-.083.0307-.171.0443-.26.0398h-12.328c-.1592-.0131-.3076-.0842-.4162-.1993z"/><path d="m109.44 22.4594c-.06-.0569-.109-.1252-.142-.2009-.033-.0758-.05-.1573-.05-.2397v-16.38481c-.004-.17454.061-.34386.182-.47203.057-.06258.129-.11193.208-.14456.079-.03262.165-.04773.251-.04425h12.125c.089-.00142.177.0147.259.04741.083.03271.157.08133.22.14298s.112.13507.145.21589c.034.08082.05.16739.049.25456v2.49654c.003.08442-.012.16857-.045.24652-.034.07794-.084.14776-.147.20453-.131.11856-.303.18253-.481.17832h-8.112v3.2098h7.557c.088-.0014.174.0145.255.0466.081.0322.155.0801.216.1408.062.0606.111.1329.144.2124.032.0796.048.1648.047.2506v2.2972c.002.0874-.013.1744-.046.2556s-.083.1548-.146.2165c-.061.0612-.134.1096-.215.142-.081.0325-.168.0484-.255.0468h-7.557v3.3042h8.326c.087-.0016.174.0143.254.0467.081.0325.154.0809.215.1421.064.0616.113.1353.146.2165s.049.1681.047.2555v2.4861c.003.0844-.012.1686-.046.2465-.033.078-.083.1478-.147.2045-.062.0594-.135.1058-.216.1365-.081.0306-.167.0449-.253.0419h-12.286c-.093.0062-.187-.0084-.274-.043-.087-.0345-.165-.088-.228-.1563z"/><path d="m127.128 22.4573c-.06-.0569-.109-.1252-.142-.2009-.033-.0758-.05-.1573-.05-.2397v-16.38481c-.007-.17311.054-.34224.171-.47203.061-.06177.134-.11045.215-.14295.08-.03251.167-.04813.255-.04587h7.268c1.87-.10866 3.72.41722 5.241 1.48953.64.53146 1.143 1.20341 1.47 1.96149.326.75807.466 1.58104.409 2.40224.059.8157-.083 1.6335-.413 2.384-.331.7505-.841 1.4116-1.487 1.9272-1.538 1.032-3.381 1.5337-5.241 1.4266h-2.925v5.4651c0 .1643-.065.322-.181.4406-.061.0617-.134.1104-.215.1429-.08.0325-.167.0481-.255.0459h-3.693c-.163-.0084-.317-.08-.427-.1993zm7.589-9.5036c.602.0316 1.194-.1635 1.655-.5455.21-.2104.373-.4621.478-.7387.105-.2765.149-.5717.13-.8662.029-.5816-.17-1.15178-.555-1.59444-.224-.21381-.493-.37781-.788-.48095-.294-.10314-.608-.14303-.92-.11696h-2.882v4.34275z"/><path d="m147.498 21.1148c-.72-.6422-1.293-1.4283-1.68-2.3057-.386-.8774-.578-1.8258-.561-2.7817 0-.4721 0-1.2378 0-2.2973 0-1.0594 0-1.8357 0-2.3182-.016-.9353.178-1.86262.567-2.71634s.964-1.61302 1.685-2.22426c1.667-1.2413 3.728-1.86193 5.817-1.75177 1.463-.02576 2.916.24194 4.27.78673 1.091.4217 2.054 1.11154 2.796 2.00352.599.70981.954 1.58723 1.015 2.50702.003.0738-.01.1474-.037.2162-.028.0688-.069.1313-.122.1835-.054.0522-.117.0931-.187.12-.07.0268-.145.0392-.22.0363h-3.939c-.137.0105-.274-.0187-.395-.084-.108-.0701-.202-.159-.277-.2622-.213-.48354-.552-.9033-.982-1.2168-.57-.36395-1.243-.54029-1.922-.50351-1.985 0-3.01 1.04897-3.074 3.03151v2.1714 2.1923c.064 2.0979 1.068 3.2098 3.128 3.2098.854.0462 1.696-.2148 2.369-.7343.306-.2832.543-.6298.694-1.0145.151-.3848.213-.7979.182-1.2093v-.4195h-2.295c-.088.0016-.174-.0143-.255-.0468s-.154-.0808-.215-.1421c-.063-.0616-.113-.1352-.146-.2164s-.049-.1682-.046-.2556v-1.993c-.003-.0874.013-.1744.046-.2556s.083-.1549.146-.2165c.061-.0612.134-.1096.215-.142.081-.0325.167-.0484.255-.0468h6.532c.087-.0016.174.0143.255.0468.081.0324.154.0808.215.142.063.0616.113.1353.146.2165s.048.1682.046.2556v2.9266c.022 1.3105-.349 2.5984-1.067 3.7028-.697 1.0487-1.692 1.8731-2.861 2.3707-1.349.5631-2.804.8419-4.27.8182-2.099.1236-4.171-.5106-5.828-1.7833z"/><path d="m165.745 22.4586c-.061-.0568-.109-.1251-.142-.2009-.033-.0757-.05-.1572-.05-.2396v-16.38484c-.004-.17455.061-.34386.181-.47203.06-.06284.133-.11224.214-.14482.081-.03259.169-.0476.256-.044h7.066c1.903-.11509 3.788.41842 5.337 1.51051.632.51857 1.133 1.17381 1.465 1.91445.331.74064.484 1.5466.446 2.35483.033 1.0626-.256 2.1109-.833 3.0105-.576.8591-1.386 1.5423-2.337 1.9721l3.469 6.1574c.049.0869.079.1837.085.2832-.004.1379-.061.2691-.16.3672-.048.0522-.108.0934-.174.1206-.067.0272-.138.0397-.21.0367h-3.619c-.229.0141-.456-.0446-.648-.1674-.193-.1228-.339-.3032-.419-.5144l-2.829-5.4756h-2.465v5.4861c.003.0844-.012.1685-.046.2465-.033.0779-.083.1477-.147.2045-.063.0607-.138.1079-.221.1386-.082.0306-.171.0442-.259.0397h-3.512c-.084-.0025-.167-.0214-.244-.0556s-.146-.083-.204-.1437zm7.472-9.6819c.613.0444 1.22-.1517 1.686-.5455.198-.1964.351-.4314.451-.6898.099-.2584.142-.5344.126-.8102.014-.2819-.03-.5638-.129-.82871-.099-.26496-.251-.50755-.448-.71324-.226-.20408-.492-.36053-.782-.45975-.29-.09921-.598-.13909-.904-.11718h-2.85v4.19588z"/><path d="m183.903 22.4899c-.099-.0981-.156-.2293-.161-.3672-.013-.0763-.013-.1544 0-.2307l5.988-16.18554c.058-.22832.198-.42838.394-.56332.197-.13493.436-.19565.674-.17095h4.013c.238-.0247.478.03602.674.17095.196.13494.336.335.394.56332l5.988 16.18554c.014.0763.014.1545 0 .2307-.008.1391-.069.2701-.171.3672-.099.0988-.233.1554-.374.1573h-3.341c-.187.0118-.373-.0359-.531-.136-.157-.1001-.278-.2473-.344-.4199l-.928-2.4441h-6.725l-.929 2.4441c-.066.1726-.186.3198-.344.4199-.157.1001-.344.1478-.531.136h-3.341c-.075.0033-.15-.009-.22-.0361s-.133-.0684-.185-.1212zm6.596-6.6295h4.568l-2.284-6.41963z"/><path d="m205.331 22.4704c-.063-.0567-.114-.1266-.147-.2045-.033-.078-.048-.1621-.045-.2465v-16.38485c-.001-.08717.015-.17374.048-.25456.034-.08082.083-.15423.146-.21588s.137-.11028.22-.14299c.082-.03271.17-.04883.259-.04741h2.903c.193-.00893.385.03923.551.1383.165.09907.297.24452.378.41765l4.419 7.77284 4.44-7.77284c.081-.17313.212-.31858.378-.41765.165-.09907.357-.14723.551-.1383h2.903c.087-.00226.174.01336.255.04586.081.03251.154.08119.215.14295.063.0616.112.13527.145.21646s.049.16817.047.25557v16.39535c.003.0844-.012.1685-.045.2465-.034.0779-.084.1477-.147.2045-.062.0604-.135.1075-.216.1382s-.168.0444-.254.0401h-3.266c-.169-.0052-.328-.0732-.447-.1901s-.188-.274-.194-.4392v-9.1995l-2.818 5.0036c-.083.1673-.209.3098-.367.4131-.158.1032-.34.1634-.529.1743h-1.388c-.191-.0091-.376-.0684-.535-.1718-.16-.1033-.288-.2468-.372-.4156l-2.743-4.9931v9.189c.003.0844-.012.1685-.045.2465-.034.0779-.084.1477-.148.2045-.063.0607-.138.1079-.221.1385-.082.0307-.171.0443-.259.0398h-3.202c-.087.0017-.174-.0142-.255-.0467-.08-.0325-.154-.0808-.215-.1421z"/></g></svg>
\ No newline at end of file diff --git a/.github/assets/divriots-dark.svg b/.github/assets/divriots-dark.svg new file mode 100644 index 000000000..30d4b2be9 --- /dev/null +++ b/.github/assets/divriots-dark.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 703.9 121.2"><path d="M297 103.5 341.4 59a6.2 6.2 0 0 0 0-8.8L297 5.9" fill="none" stroke="#fff" stroke-width="13.1"/><path d="M55.8 9.9 11.4 54.3a6.2 6.2 0 0 0 0 8.8l44.4 44.4" fill="none" stroke="#fff" stroke-width="11.1"/><g fill="#fff"><rect height="20" rx="3" width="20" x="40" y="5.9"/><rect height="20" rx="3" width="20" y="48.9"/><rect height="20" rx="3" width="20" x="40" y="91.9"/><path d="M154 0V97h-15.7v-9a25.1 25.1 0 0 1-10 7.4 33.1 33.1 0 0 1-13 2.5A37.1 37.1 0 0 1 97 93.4a32 32 0 0 1-12.5-12.5A38 38 0 0 1 80 62a37.3 37.3 0 0 1 4.6-18.7A32.1 32.1 0 0 1 97 30.9a37.1 37.1 0 0 1 18.1-4.4 33 33 0 0 1 12.7 2.3 25.3 25.3 0 0 1 9.8 7V0zM117.2 84a21.3 21.3 0 0 0 10.5-2.6 19.8 19.8 0 0 0 7.5-7.7 23.3 23.3 0 0 0 2.7-11.5 23.3 23.3 0 0 0-2.7-11.5 18.9 18.9 0 0 0-7.5-7.6 21.8 21.8 0 0 0-21.1 0 18.9 18.9 0 0 0-7.4 7.6 23.3 23.3 0 0 0-2.8 11.5 23.3 23.3 0 0 0 2.8 11.5 19.8 19.8 0 0 0 7.4 7.7 21.3 21.3 0 0 0 10.6 2.6zm58.1-56.7h16.3V97h-16.3zm103 0L248.4 97h-16.8l-29.9-69.7h17l21.6 51.7 22.4-51.7zM398.8 91.1a.4.4 0 0 0-.2.3l-.1.1c-.1 0-.3-.1-.3-.4s.2-.3.4-.3.4.1.2.3zm.5 0q1.1-2 .9 1.3a40.2 40.2 0 0 1-.6 4.9q-.1 1.2-.4 1.2c-.4 0-.5-.5-.4-1.7a7.4 7.4 0 0 0 .1-1.4 10 10 0 0 1 .3-1.2c0-.9-.2-1.3-.6-1.4h-.5l.2.7c.2.4.2.5 0 .1a1 1 0 0 1-.8-1q0-.3.4-.4c.4-.2.7-.1.9.1a.4.4 0 0 1 .2.2h.5v-.3a1 1 0 0 1-.2-1zm1.7 6.6q.4-.2.4.4a.4.4 0 0 1-.4.4.3.3 0 0 1-.3-.3.8.8 0 0 1 .3-.5zm51.1 16.3c-.2-.3-.1-.4.2-.4a.4.4 0 0 1 .4.4.4.4 0 0 1-.1.3.5.5 0 0 1-.5-.3zM401.4 94c.3 0 .4.3.4 1s-.1.8-.4.8-.4-.2-.4-.8.1-1 .4-1zm50.6 10.6q6.4 8 6.2 8.5c0 .1-.3 0-.8-.4a12.6 12.6 0 0 1-1.2-1 12.8 12.8 0 0 1-1.1-1.4 2.2 2.2 0 0 1-.6-1 3.6 3.6 0 0 0-.7-1 18.6 18.6 0 0 0-1.5-1.6l-.9-.9a2 2 0 0 1-.4-.5c.6.7.7 1 .4 1 0 0 0 .2.3.5a10 10 0 0 1 .7.8l1.4 1.6a11.5 11.5 0 0 1 1.4 1.7l1.1 1.4a4.3 4.3 0 0 1 .6 1.8c0 .3 0 .5-.2.5s0 0-.4-.3a.8.8 0 0 0-1 0c-.2.1-.5 0-.7-.4l-.1.2a.6.6 0 0 1-.4.7c-.2 0-.3 0-.3-.3a54 54 0 0 0-4.2-5.3 3.7 3.7 0 0 1-1.3-1.4l-.4-.7c0-.2-.3-.4-.5-.4-.5 0 0 .8 1.5 2.5a9.7 9.7 0 0 1 1.4 2c0 .7.2 1 .6.8.1 0 .2.3.1.8q-.1.6.4.4c.3 0 .4 0 .4.2v.5l.6.9.7.7c.2.2.3.2.4.1s.2 0 0 .3c0 .2-.1.4-.4.5l-.8.6c-.7.5-1 .8-1 1s-.2.3-.6.3-.6.1-.6.4-.2.4-.5.7a9.5 9.5 0 0 1-1 .8 7.1 7.1 0 0 1-1.1.7c-.4.3-.6.4-.7.3l-.8-.2c-.2 0-.6-.3-1.1-1a28.6 28.6 0 0 1-2-2.2l-3.3-3.8-4-4.8q-2-2.3-4-4.3l-2.5-3a20.1 20.1 0 0 1-1.8-2.1l-2.1-2.6q-1.9-2-4-4.7l-6-8.1-3-4-1.8-2.5-1.2-1.6a8 8 0 0 0-.5-1c-.7-1-1.1-1.6-1.4-1.6s-.8-.1-1.4.2a2.7 2.7 0 0 0-.8 1.4l-.8 3.4a5.9 5.9 0 0 1 0 1.2 4.3 4.3 0 0 0-.2 1l-.4 2-.6 3.4-.6 3.3c-.2 1-.1 1.5-.1 1.6a.1.1 0 0 1-.1.1 5 5 0 0 1-.3-2.4 51.5 51.5 0 0 1 1-8c-.3-.3-.3-.5.1-.5.2 0 .3-.5.3-1.7.2-1.2 0-1.8-.3-1.8-.2 0-.3.3-.3.7s-.1.7-.4.7-.2.3 0 .7c.2.7.2 1 .1 1.1a7.3 7.3 0 0 0-.5 2.3 30.9 30.9 0 0 1-.4 3.3c0 1.2-.2 2-.6 2.1s-.4.4 0 .6.3.5.1 1-.4.6-.7.4a1.4 1.4 0 0 0-1 .3c0 .2 0 .2-.1.1a1.2 1.2 0 0 1 .1-.4c.1-.6 0-.8-.2-.8-.4.2-.5.5-.3 1 0 .4-.1.7-.3.7s-.4-.6-.3-1.7 0-1.6-.1-1.5-.1-.4.3-1a2 2 0 0 0 .4-2.1 6.4 6.4 0 0 1-.1-2.4 4.3 4.3 0 0 1 .6-2.2 4.4 4.4 0 0 0 .5-1.7.6.6 0 0 0-.7-.7c-.4 0-.6 0-.6.3s-.2.4-.7.4-.5.1-.3.4a1.4 1.4 0 0 1-.2 1q-.6.6 0 .3a.5.5 0 0 1 .7.1c.1.2 0 .5-.2.9a3.2 3.2 0 0 0-.7 1.2c0 .6 0 .8.2.6.3-.4.5-.4.5 0a.4.4 0 0 1-.4.4l-.6.7a1.3 1.3 0 0 1-.1.6 1.6 1.6 0 0 0-.3.4c0 .2.1.3.3.2.4-.2.4 0 0 .6a1 1 0 0 1-1 .7c-.3 0-.3.2 0 .6.5.2.6.9.3 2a9.6 9.6 0 0 1-.7 2c-.4.4-.5.4-.3 0s.2-.7 0-1c-.3 0-.4.3-.4.8s.1.8.4.8.3.2-.3.6c-.4.4-.4.5-.3.5.9 0 1.2.2 1 .7-.3 1-.7 1-1 0 0-.2-.1-.1-.2.3s.1.7.5.7.6.3.3.9a3.4 3.4 0 0 1-.1.8 4.3 4.3 0 0 0-.2 1 3 3 0 0 1-.1 1v.4c0 .1-.3.2-.7.2s-.7-.2-.6-.9a1.3 1.3 0 0 0 .2-.5.6.6 0 0 1 .2-.6c.6-.4.7-1.1.3-2.2s-.8-1.3-1.7-.4a1.6 1.6 0 0 0-.5 1h.7c.5-.1.6.1.5.8a12.1 12.1 0 0 0-.2 2.4 1 1 0 0 1-1.2 1 12.7 12.7 0 0 0-2.2.4 4 4 0 0 1-2.6-.5l-1.6-.5a3.4 3.4 0 0 1 0-1.4l.7-6.6a64.9 64.9 0 0 0 .7-4.9l.3-2c.5-3.1.8-5.7 1-7.9s.3-3.5.1-3.8c-.2-.5-.3-.8-.5-.8a1.7 1.7 0 0 1-.9-.4 11.9 11.9 0 0 1-1-1l-1-1.3a2.6 2.6 0 0 1-.5-1 1 1 0 0 1 .4-.8 14.5 14.5 0 0 1 2.1-.7c1.7-.7 2.6-1.2 2.7-1.7a8.7 8.7 0 0 0 .7-2.8l.8-5.7 1.5-8.1L394 39l1.7-8.2-1.1-.9a4.6 4.6 0 0 0-.7-.6c-.2-.1-.3-.3-.3-.4s-.3-.6-1-1.2a5.3 5.3 0 0 0-1.7-1.3 19 19 0 0 1-1.5-1.1l-2.5-2.4A36 36 0 0 1 384 20a1.7 1.7 0 0 1-.1-1.5A7.1 7.1 0 0 1 386 16a35.6 35.6 0 0 1 4.7-3 52 52 0 0 1 6-2.9 43.9 43.9 0 0 1 6.5-2.2q2.6-.7 5.7-1.3a72.6 72.6 0 0 1 12.3-1 23.5 23.5 0 0 1 4.6 0 20.3 20.3 0 0 1 5 1.7 19.3 19.3 0 0 1 4.9 2.8 36.3 36.3 0 0 1 3.2 3 87.1 87.1 0 0 1 8.1 8.5 26.3 26.3 0 0 1 2.4 2.8 13 13 0 0 1 2 3.9 17.4 17.4 0 0 1 .7 4q.3 6.3-4.2 12.6-4.4 6.2-14 12.9l-2.4 1.7-3 1.8c-1 .7-1.7 1.3-2.6 1.8l-1.8 1-2 1.1a1.3 1.3 0 0 0-.8.7 2.4 2.4 0 0 0 .5 1.1 12.7 12.7 0 0 1 1.3 1.8l2.1 3c.8 1.2 1.6 2 2.3 2.7s1.3 2 2.3 3.2l3 3.5 3.7 4.6 4.6 5.6L445 96a133 133 0 0 0 4.7 5.6 86 86 0 0 0 2.4 3zm-58.1-76.7.1-.3c0-.1-.1-.2-.4-.2s-.2 0 0 .2c0 .3.1.5.3.5zm-1.4 61.6c0-.3-.1-.4-.3-.4s-.3.1-.3.4a.4.4 0 0 0 .2.3s.2 0 .4-.3zm1.7 2.7a2.7 2.7 0 0 0 .1-1.6q0-.8-.3-.8a.4.4 0 0 0-.4.4v.6a4 4 0 0 1-.1.8c-.1.6 0 1 .1 1.1s.4 0 .5-.5zm0-3.8c.3 0 .5 0 .5-.3a.4.4 0 1 0-.8 0c-.1.2 0 .3.3.3zm6-3.9c.2-.2.1-.3-.2-.3s-.4.1-.4.3v.3a.1.1 0 0 0 .1.1q.2 0 .5-.4zm.7-3.4v-.7l-.3.5a2.8 2.8 0 0 0-.6 1.4c0 .4.1.6.3.4a5.4 5.4 0 0 0 .6-1.6zm.1-2.3c.3-.5.3-.8 0-1-.2-.5-.3-.4-.3.3s.1.9.3.7zm1.5-30.6c-.3.3-.5.6-.4.7a2.5 2.5 0 0 0 1-.4c.3-.3.4-.5.3-.6s-.3 0-.9.3zm.6 4.7.4-.1-.4-.4a.3.3 0 1 0 0 .5zm.6 23 .1-.5c-.2-.6-.3-.5-.3.1v.6c.1.1.2 0 .2-.1zm.7-28.6c0-.5 0-.6-.2-.4-.3 0-.4.2-.4.7s0 .5.1.5a2.7 2.7 0 0 0 .5-.8zm2.3 25.1c0-.2-.1-.2-.4-.2h-.6s0 .2.5.2zM426 56.4c0-.4 0-.5-.2-.4s-.3.2-.5.5 0 .5.3.5l.4-.5zm-11.6-5.7q13.5-8.5 19.4-15.1 6-6.6 6-13.1c0-1.3-.3-2.2-.8-2.6s-1.7-.8-3.7-1.2q-5.4-.9-14.4.7a29.9 29.9 0 0 0-4.7 1.1 1.2 1.2 0 0 0-1 1.3 17.8 17.8 0 0 1-.3 2L414 28l-1 5.2-1.2 5.3-1 5.3c-.4 1.7-.8 3.4-1 5s-.6 2.6-.8 3.6l-.3 1.4c0 .1.3.1.9-.2l4.7-2.9zm27 49.6c.5.3.6 0 .2-.6a7.2 7.2 0 0 1-.7-.8 2.3 2.3 0 0 0-.7-.7l-1-1 .9 1a2 2 0 0 1 .7 1.4c0 .5.2.7.5.7zm5.4 5.7a.4.4 0 0 1-.1-.3.4.4 0 0 1-.2-.3 1.2 1.2 0 0 0-.1-.4 14.8 14.8 0 0 1-1-1l-1.4-1.6a8.2 8.2 0 0 0-1.4-1.4l.4.7a8.2 8.2 0 0 0 .7 1.1 8.5 8.5 0 0 0 .7.8l.7.9c0 .2.3.6.7 1s.8.7 1 .6zm.8-5c.2 0 0-.3-.6-1a2.9 2.9 0 0 1-.7-.6l-.3-.2c-.2 0 0 .2.5.8s.8 1 1.1 1zm6.8 11.7a.8.8 0 0 0-.6-.5c-.2 0-.3.1-.3.4a.6.6 0 0 0 .7.7c.3 0 .3-.2.1-.5zm-5.4-9.7.9.8-.6-.8a4.3 4.3 0 0 0-.5-.7l-.3-.3c-.3 0-.1.3.5 1zm7.8-.6c-.2 0-.3-.3-.3-.8a3.2 3.2 0 0 0 .1-1 1.6 1.6 0 0 1 .2-.7c0-.5 0-.7.2-.7s.2.2 0 .7a2.4 2.4 0 0 0-.1.7v.7a1.6 1.6 0 0 1-.2 1.1zm10-9.8a.3.3 0 0 1-.4-.3c0-.1.1-.2.4-.2l.2.4-.2.1zm-7 14.7c.1 0 .2.1.2.4s-.1.3-.4.3l-.1-.3.1-.3a.1.1 0 0 1 .2 0zm24-81.7c0 .5 0 1.4-.2 2.6l-.3 4.2-.5 4.7c-.2 1.7-.3 3-.6 4.4l-1.5 10.2-.8 5.8-.8 5.2c-.4 2.2-.5 4.2-.8 6a16.7 16.7 0 0 0-.3 1.7 7 7 0 0 0-.2 1 3.7 3.7 0 0 0-.2 1 73.2 73.2 0 0 0-.8 5.2 1.2 1.2 0 0 1-.3.4v.3a1 1 0 0 0 0 .4 1 1 0 0 1 0 .7c0 .2-.2.2-.3.1-.3-.1-.4-.3-.2-.6s-.2-.4-.6-.4-.7.2-.7.5a1 1 0 0 0-.2.4l.2.1v.1c.1 0 .2.2.2.5s0 .5-.2.5c-.4 0-.4 0 0 .2q0 .5-.3.5a.5.5 0 0 0-.1.6c.2.1 0 .2-.2.2a.5.5 0 0 0-.5.3 2.7 2.7 0 0 0 0 1.1v1.3l-.4 1a1.9 1.9 0 0 1-.2 1.2c-.2 0-.4-.6-.4-1.9a3.5 3.5 0 0 0 0-1.4c0-.2-.2-.1-.4.1a4.4 4.4 0 0 0-.3 1.5c0 .6 0 .9-.3.9s-.3-.3-.3-1l.3-.8a1 1 0 0 0 .2-.7c0-.4 0-.5-.2-.3s-.3 0 0-.5l.2-.5.4.3c.2.3.4.3.7-.3a2.6 2.6 0 0 0-.1-1c-.1-.1-.2 0-.2.2s-.1.3-.4.3-.4-.2-.1-.5c.3-.8.2-1.1-.2-.9s-.4.1-.4-.1.1-.3.4-.3.3-.3 0-.8a1.2 1.2 0 0 1-.3-1.1q.5-.4.5 0c0 .2 0 .3.2.3s.3-.3.2-1a3.7 3.7 0 0 0-.3-1.3q-.4-.4-.1-.4l.7-.7c.4-.5.2-.8-.2-.8s-.4.2-.4.7l-.1.2a2 2 0 0 0-.2-.5c0-.7.2-1 .5-1s.4-.1.4-.3v-.3a1.2 1.2 0 0 0 0-.5c.2-.1.2-.2 0-.2a.1.1 0 0 0-.2 0c-.1.1-.2 0-.2-.5l.4-3.4c0-.6 0-.7-.3-.5a1.6 1.6 0 0 0-.3 1.2c0 .5-.1.7-.4.6s-.1.2 0 .6c0 .4 0 .6-.2.6s-.3.2-.1.7 0 .6-.3.4c-.1-.1-.3-.2-.3 0a.9.9 0 0 1 0 1c-.7.8-.7 1.1 0 .8.3-.1.4 0 .2.2s-.3.6-.5.4-.2 0-.2.6a1.3 1.3 0 0 0 .5 1c0 .3 0 .5-.3.6s-.4.6-.2 1.3c.2.8.1 1.1-.1 1a.4.4 0 0 0-.6 0c0 .2 0 .3.2.3s.2.2.4.5-.1.5-.4.2c-.1 0-.2.2 0 .9s0 .8-.2.8-.3-.1-.4.1a.8.8 0 0 0 0 .6q.2.3-.2.2a.8.8 0 0 1-.4-.4c-.1-.3-.2-.2-.2.2a1 1 0 0 0 .1.5.4.4 0 0 0 .4.2c.1.2 0 .2-.5.2a1.7 1.7 0 0 1-1-.3c-.3-.3-.3-.4 0-.5a.6.6 0 0 0 .4-.6c0-.3.1-.5.3-.5s.1 0 0-.2l-.3-.5c-.2-.3-.4-.4-.5-.3a9.5 9.5 0 0 1-.2 1 13.2 13.2 0 0 0-.2 2.5 6 6 0 0 1-.1 1.2 1.6 1.6 0 0 1-.2.7 1.3 1.3 0 0 0 0 1.2c0 .5 0 .7-.2.7s-.3.6-.5 1.4a23.7 23.7 0 0 0-.3 3.1l-.4 2.1c0 .3-.2.3-.5 0s-.6 0-.7.4q-.3.7.2.3a1.4 1.4 0 0 1 .7.1c.2.2 0 .3-.5.4a1.4 1.4 0 0 0-1 1l.2.3c0-.2.2-.5.6-.7s.4.2.4 1.3a6.5 6.5 0 0 1 0 1.3v.7c-.6.6-.9.4-1-.7 0-.6-.2-1-.4-1s-.3.2-.3.8v.9a2.6 2.6 0 0 1-.2.8 4.3 4.3 0 0 0 0 1 3 3 0 0 1-.2 1 2.9 2.9 0 0 1-.1.8 3.6 3.6 0 0 1-.3.7l-.2.6v.5c-.2 0-.3.3-.1.8s0 .6-.2.6-.4.2-.2.6q.2.4 0 .4h-1a2.6 2.6 0 0 0-1.7.3 1 1 0 0 1-.7.2 1.1 1.1 0 0 1-.8-.3c-.3-.3-.3-.5.1-.5s.4-.1.1-.5c-.4-.5-.2-.7.5-.5.3.2.3 0 .1-.4s-.2-.8 0-1 .2-.3 0-.2-.3-.3-.2-1.3a6 6 0 0 1 .1-1.2 3.7 3.7 0 0 0 .1-.7 4 4 0 0 0 0-3l-.2-1.2v-1.4a9 9 0 0 1 .2-1c0-.2.2-.3.4-.1a1 1 0 0 1 0 .7.2.2 0 0 0 .2.2c.2 0 .2-.3.2-.9-.1-.6-.3-1-.4-1v-.2a.3.3 0 0 0-.2-.3 1 1 0 0 1 .2-.4v-1.8c0-1 .4-2.1.6-3.3l.3-3c.1-.6.3-1 .5-1h.3c0-.3 0-.5-.3-.5a49.4 49.4 0 0 1 .3-5.6l.5-4 .2-2.5.5-3.3c.2-1.5.5-3 .6-4.6s.4-3 .6-4.3l.4-2.9.7-4.2 1-7 1.2-7.6 1-6.7.9-5.2c.2-1.4.4-2.6.6-3.1a3.4 3.4 0 0 1 .5-1.4 1.7 1.7 0 0 1 1-.4 5.9 5.9 0 0 1 2.3 0 7 7 0 0 1 2.6.7c.8.6 1.3.7 1.5.4s.5 0 1.3.5a3.8 3.8 0 0 0 1 .5c.1 0 .3-.1.4-.4s.4-.6.7-.5a13 13 0 0 1 2.9 1c.3 0 .6.4.8 1a6.3 6.3 0 0 1 .4 2.3zm-25.3 69.5v-.7l-.4.3-.3.6q-.1.1 0 .4l.3.6a4 4 0 0 0 .4-1.1zm1.1-8.9c.2-.4.1-.5-.3-.3-.3 0-.5.1-.5.3s.1.4.4.4a.4.4 0 0 0 .5-.4zm0-2.2c.1 0 .2-.1.2-.3s-.1-.4-.3-.4-.3.2-.2.4c0 .2.1.3.2.3zm3.8-2.7c.2-.2.1-.3-.1-.3s-.5.1-.5.3.1.4.3.4h.2v-.1zm1.7 2.2a.9.9 0 0 0 .5.3q.3-.1 0-.4c0-.3-.1-.4-.5-.4s-.3.2 0 .6zm1.5-10c.2 0 .3-.2.3-.4l-.1-.5-.5.5c0 .3.2.4.3.4zm0 1.9q.4-.5 0-.2a1.1 1.1 0 0 1-.8.2c0-.1-.1-.1-.1 0 .3.6.6.5 1 0zm1.7 0c0-.2.2-.4.4-.4s.3 0 .3-.2l-.2-.1h-.5c-.2 0-.3.2-.3.5q.1 1.3.3.3zm.6 1.1a.7.7 0 0 0 .4.3c.2 0 .3-.3.3-.6s-.2-.4-.5-.1-.4.3-.2.5zm3.9-10.5c-.2 1-.2 1.3 0 1.1l.3-.7a9.3 9.3 0 0 0 .1-1.6 7.8 7.8 0 0 0 .2-1.3c0-.3 0-.5-.2-.5s-.2.2-.2.8a6.9 6.9 0 0 1-.1 1 6.6 6.6 0 0 1-.1 1.2zm.8 12.4q.1 0 0 0c0-.2 0 0-.2 0l-.5.3.2.1c.4 0 .5-.1.5-.3zm.2-1.7q.1-.2 0-.2t-.2 0c-.3.1-.5.2-.5.4s.1.1.4.1.4-.1.4-.3zm-.2-14 .1-.3c0-.2-.1-.3-.3-.3s-.3.1-.2.3.3.3.4.3zm.1-1.5c.2 0 .2-.3.2-.6 0-.5 0-.7-.2-.7-.2-.2-.2 0-.2.6s0 .7.2.7zM476 72c-.2 0-.4 0-.4.2a.3.3 0 0 0 .4.4c.2 0 .3-.2.5-.4q0-.3-.5-.2zm-1.9-15.7c-.3.3-.3.5-.1.8s.3.3.3.2a1.2 1.2 0 0 0 .3-.8 1.8 1.8 0 0 1-.3-.7.1.1 0 0 0 0 .1.3.3 0 0 1-.2.2zm-.1 2.3a.7.7 0 0 0 .3.4l.4-.1-.4-.4c-.3-.2-.4 0-.3.1zm2 15.2c.2-.2.2-.2-.1-.2s-.6.3-.7 1c0 0 0 .3-.3.5s-.3.2 0 .2.4.3.3.9a2 2 0 0 1-.3 1 1 1 0 0 0-.3.6c0 .2.1.3.5.3a1 1 0 0 0 .8-.4 1.7 1.7 0 0 0 .2-.7 5.8 5.8 0 0 0 .1-1.2 5 5 0 0 0 0-1.2l-.4-.4a.1.1 0 0 1-.2-.2 1.5 1.5 0 0 1 .4-.2zm.1-.6c.3 0 .5-.1.5-.3s-.2-.2-.5 0a.3.3 0 0 0-.2 0h-.1l-.2.2h.5zm.5-2.2c.2 0 .3-.3.3-.7a1 1 0 0 0-.4-1q-.4 0 0 .2t.1.2c-.2 0-.4.3-.4.7q0 .5.4.5zm.6-2.8c.1-.3.1-.5-.1-.4s-.4.2-.6.6-.3.6.2.6a.8.8 0 0 0 .5-.8zm1.3-11c0-.3 0-.4-.3-.4s-.2.1 0 .4l.3.5zm-2.6 23c.1 0 .2.5.1 1.6a2.7 2.7 0 0 1-.5 2c-.1.2-.2.1-.2-.3a1.5 1.5 0 0 0-.1-1 1.2 1.2 0 0 1 .2-1.1l.2-1s0-.3.3-.3zm-9.5 13.3c0-.4.1-.6.4-.7s.4.1.5.5 0 .5-.4.5c-.3 0-.5 0-.5-.3zm5.7-5.2c0-.4.1-.4.4 0a2 2 0 0 1 .2.8q0 .4-.2.2a1.2 1.2 0 0 1-.4-1zm-5.6 2a.6.6 0 0 1 .5-.8c.3-.2.5 0 .6.4a.4.4 0 0 1-.5.4c-.4.1-.6.1-.6-.1zm-.2 4.3c.2-.2.4-.2.6 0q.1 0 0 .1h-.7q-.1-.2.1-.2zm8.8-9.6c0-.4 0-.5.2-.3s.2.2.1.4c-.2.7-.3.7-.3-.1zm-4.7 7.6q.3-.3.3-.1v.7c0 .7 0 1-.3 1s-.2-.1-.2-.4a3.8 3.8 0 0 1 .2-1.3zm1 5.3c.1-.2.3-.2.3-.1v.2c-.4.9-.7 1-1 .1q-.4-.3.1 0l.6-.2zm-.1-8.8q-.1.8-.4.2a3 3 0 0 1 .3-2l.2-1.1.1 1a7.6 7.6 0 0 1-.2 2zm1.2 1.1c.2 0 .2.4-.2 1.2l-.2 1.3-.2 1.3-.5 1 .1-1.2a5.3 5.3 0 0 0 .1-1.1 3.6 3.6 0 0 1 .3-.7.7.7 0 0 0 0-.5v-1.8q.2-.2.2 0l.4.5zm2-2.1c.2 0 .2 0 .2.2s-.3.4-.4.4a.1.1 0 0 1 0-.1v-.3q0-.3.3-.3zm-4 2.8q0-.3.2 0c.2 0 .3.2.3.3h-.3c-.3 0-.3 0-.3-.3zm-3-3.9c.2 0 .4.2.6.5s.2.6.1.7l-.5.4c-.3.2-.6 0-.7-.2a1 1 0 0 1 .1-.7q.2 0 .2-.4c-.1 0-.2 0-.2-.2a.5.5 0 0 1 .4-.1zm-3.3 12c.2-.3.4-.3.5-.1s.2.5 0 .8-.4.3-.5 0c-.3-.2-.3-.5 0-.7zm-.9 4.2c0-.5 0-.7.3-.4a1.2 1.2 0 0 1 .3 1.4c-.1.5-.3.7-.6.8s-.2 0-.2-.5c0-.3 0-.4.2-.4.4-.1.4-.4 0-1zm5-19.8c.1 0 .3 0 .3.2a3.4 3.4 0 0 1 0 1.2c0 1.7-.3 2.2-.8 1.7-.1-.5-.2-.6-.2-.2a.4.4 0 0 1-.5.5c-.2 0-.3 0-.3-.2a1 1 0 0 1 .1-.4l.2-.5c.4-.3.5-.5.5-.7 0-1.1.1-1.7.6-1.7zm-5 22.3c.2.1.3.4.2.9s-.3.7-.7.7a.3.3 0 0 1-.3-.3 2.9 2.9 0 0 1 .1-1c.2-.3.4-.4.6-.3zm.7-5.3a.4.4 0 0 1 .5.4c0 .2-.2.3-.5.3s-.4 0-.4-.3a.4.4 0 0 1 .4-.4zm102.2-74.8a36 36 0 0 1 6 15.8q.8 7.8-2.5 17.8a64 64 0 0 1-4.2 10.2 67.2 67.2 0 0 1-5.6 9 56 56 0 0 1-6.3 7.6 42.1 42.1 0 0 1-6.7 5.3 18.4 18.4 0 0 1-3.6 2 2.2 2.2 0 0 1-1.6 0c-.2-.3-.4-.2-.4.3s-.5.8-1.6 1.2a27.4 27.4 0 0 1-6.9 1.7 19 19 0 0 1-6.1-.1 26.9 26.9 0 0 0-3-.7c-1.4-.3-2.7-.6-4-.7l-6.8-1.4a46 46 0 0 1-4.5-1.4 29 29 0 0 1-3-1.4 23.3 23.3 0 0 1-2.3-2.1 22.5 22.5 0 0 1-2.5-3.1q-1.3-1.8-2.4-3.8l-1.8-4a22.5 22.5 0 0 1-1-3.5 6.1 6.1 0 0 0-.3-2c-.2-.7-.4-1.7-.5-3a44.1 44.1 0 0 1 0-5 66.2 66.2 0 0 1 2-14.5 77.7 77.7 0 0 1 4.8-14.2 66.7 66.7 0 0 1 7.3-12.3 42.2 42.2 0 0 1 9-9 35.3 35.3 0 0 1 8-4.6 20.5 20.5 0 0 1 7.6-1.4h2.2a8 8 0 0 1 1.6.2 4.6 4.6 0 0 1 1.4.5 15.9 15.9 0 0 1 2 .9 46.3 46.3 0 0 0 4.9 2l5.3 1.5a19.1 19.1 0 0 1 8.2 3.8 34.6 34.6 0 0 1 7.3 8.4zm-59.8 37.6c.3 0 .4-.2.4-.6 0-.1-.1-.2-.4-.2s-.3.2-.3.5.1.5.3.3zm.6-3.3c.3 0 .5 0 .5-.2s-.1-.3-.4-.4a.3.3 0 0 0-.4.1c-.2.3-.1.5.3.5zm3.7 1c.2 0 .3 0 .3-.4s0-.4-.1-.4-.3.2-.4.4 0 .5.2.5zm44.6-20.2v-3.3a10.1 10.1 0 0 0-.3-2.6 13 13 0 0 0-.4-2.2 11.8 11.8 0 0 0-.8-2l-.4-1-.6-1.6a23.4 23.4 0 0 0-2.2-4.2 32.6 32.6 0 0 0-3-4.5l-1.5-2-2 .2q-4.5.4-10 4.3a48.7 48.7 0 0 0-9.7 9.8 65.8 65.8 0 0 0-3.8 5.6 45.2 45.2 0 0 0-3 5.7 68 68 0 0 0-5.6 22.1q-.7 10.8 3 18.3l1 2c.4.8 1 1.5 1.5 2.1a19.6 19.6 0 0 1 1.4 1.6l.7.7a3.6 3.6 0 0 0 .8-.2 8.6 8.6 0 0 0 1.7-.5l1.8-.6a10.4 10.4 0 0 0 1.4-.7l1.4-.6a3.9 3.9 0 0 0 1-.5l2-1.3 2.6-1.6 2.2-1.7a49 49 0 0 0 8.4-8.5 67.1 67.1 0 0 0 6.9-12 70.3 70.3 0 0 0 4.2-11.2 34.6 34.6 0 0 0 1.3-9.6zm6.3 23.5c0-.3 0-.4-.3-.4a.6.6 0 0 0-.5.4l.1.3c.4 0 .6-.1.7-.3zm.6-1.3a1.1 1.1 0 0 0 .2-.8c0-.4 0-.5-.2-.3a1.7 1.7 0 0 0-.3.7c0 .3.1.4.3.4zm2.5-6.3a2.4 2.4 0 0 0 .2-1c0-.3-.1-.2-.2 0a2.5 2.5 0 0 0-.4 1.2c0 .3.1.2.4-.2zm1.4-5.1c.2-.8.2-1.1.1-1.1l-.3.4a4 4 0 0 0-.7 2c0 .7 0 1-.3 1-.1.5-.2.7 0 .8s.3 0 .6-.6a8.3 8.3 0 0 0 .6-2.5zm.7-2.8a9 9 0 0 0 .2-2.7 2.4 2.4 0 0 0 0-1v.2c-.3.6-.5 1-.7 1a4.4 4.4 0 0 1 0 .8 6.4 6.4 0 0 0 0 1c.1 1.3.3 1.5.5.7zm3.6 2.6.4-.8c.2-.5.2-.7-.1-.7-.1 0-.3.2-.4.7s-.2.8.1.8zm72-37.8.3.4-.3.1-.3-.1a.1.1 0 0 1-.1-.1c0-.2.1-.3.4-.3zm-8.4 2c.4 0 .6 0 .6.2s-.3.5-.7.5-.6-.2-.6-.5a1 1 0 0 1 .7-.3zm6.2-2.7a1.2 1.2 0 0 0 .1 1c.2.2.2.3 0 .3l-1.8.1a3.6 3.6 0 0 1-1.4 0c-.3 0-.4-.2-.3-.3a1.2 1.2 0 0 1 .8-.4c.6 0 .9-.3.9-.7s.3-.5.8-.5c.8 0 1 .1.9.5zm-2.8-3.2c0-.4.1-.6.4-.6a1.3 1.3 0 0 1 1 .2c.4.2.4.2.1.2a5.6 5.6 0 0 0-1 .3c-.3.2-.5.1-.5-.1zm.4 3c0 .2-.5.3-1.5.3s-1.4 0-1.3-.1a2.6 2.6 0 0 1 1.5-.3c.9-.1 1.3 0 1.3.1zM635 14c.5 0 .7 0 .8.3s.1.3-.2.4h-.7a6.4 6.4 0 0 0-1.2.1l-3 .3a3.3 3.3 0 0 0-1.7.4c-.5.2-.5.4-.2.6a8 8 0 0 0 2.1 0c1.3-.2 2-.1 2 .1s-.5.4-1.5.6a22.4 22.4 0 0 0-2.7.3 69.5 69.5 0 0 0-7.8 1 7.2 7.2 0 0 0-1.8.4 14.3 14.3 0 0 0-.6 2.6l-.7 5.7-.7 4c-.3 1.5-.4 2.8-.5 4.3s-.5 3-.7 4.3l-.5 3.7-1 6.7c-.2 2.2-.5 3.8-.7 4.9q0 .8-.4 2.7l-.7 4.5c-.3 1.8-.4 3.6-.8 5.7l-1 6.2q-.8 6.4-1.7 11.6l-.8 6.1-.7 3.4c-.3 1.6-.4 3.2-.6 4.9q-.8 4.9-1.4 7.2a8.3 8.3 0 0 1-1.2 3.3 1.7 1.7 0 0 1-1 1c-.4.1-.5 0-.3-.5.2-.2.1-.2-.2 0-.8.7-1.3.6-1.6-.2q-.2-.5-.4 0c-.2.1-.4.1-.6-.2s-.7-.4-1.5-.3a5.7 5.7 0 0 1-1.9 0l-2.6-.1a16.6 16.6 0 0 1-2.5-.4c-.8-.2-1.2-.4-1.3-.6q-1.2-1.8-.5-6.4c0-1.2.3-3 .7-5.5l1.2-8.5 1.7-10.6 2-11.6 1.1-6.4a33.8 33.8 0 0 1 .6-3.4l.4-3.5 1-6.1 1.2-7.7c.4-2.7 1-5.3 1.3-7.7l1-6.3.7-3.7c.2-.5.2-.8.1-.9h-1l-3 .6-5.5.8-6.1 1q-3.1.6-5.6.9l-5 .8a26.5 26.5 0 0 1-2.9.3c0-.2.1-.6.6-1 .3-.2.2-.3-.1-.2-.6.1-.9 0-.9-.4a1.5 1.5 0 0 1 .4-1.1l.3-.3-.4.2c-.5 0-.7-.2-.7-.7a3.2 3.2 0 0 0-.6-1.9 9.3 9.3 0 0 1-.6-1.4 50.4 50.4 0 0 1-1.6-4.1 4.5 4.5 0 0 1-.4-1.3c0-.5.4-.9 1.1-1.3a7.8 7.8 0 0 1 2.5-1l5-1 7.3-1.3 7.8-1.3 6-1a19.6 19.6 0 0 0 2.3-.2 170.4 170.4 0 0 1 8.7-1 14.4 14.4 0 0 0 2.9-.6 18 18 0 0 0 2-.1 16.6 16.6 0 0 0 2.6-.4q2.2-.3 6.8-.6t8.7-.7h2.7c.5 0 .8.1.8.3q0 .7.4 0a.4.4 0 0 1 .4-.3h.6c.3 0 .6.2 1 .7a2.1 2.1 0 0 1 .5 1.3c-.1.2 0 .4.2.4s.3.7.3 2.2c0 1.8 0 2.4-.5 1.8a4.3 4.3 0 0 0-2-.3c-.9 0-1.4.2-1.6.5q0 .4.2.4a.4.4 0 0 1 .5.4c0 .4-.5.6-1.4.6a2.9 2.9 0 0 0-1.7.2h-.4a.8.8 0 0 1-.6-.2 3.4 3.4 0 0 0-1.5.2 2 2 0 0 1-1.4.5c-.3-.3-.6-.3-1 .1-.3.2-.4.2-.4.1h-.4a.8.8 0 0 0-.6.2q-.8.3-.8 0c0-.4-.2-.4-.6 0a1.9 1.9 0 0 1-1.4 0 3.1 3.1 0 0 0-1-.3l-.4.4q0 .6.4.4c.3 0 .4 0 .4.2 0 .4-.5.4-1.5 0a1.2 1.2 0 0 0-1.1.3 1.1 1.1 0 0 1-.9.2.5.5 0 0 0-.7 0c-.4.2-.4.4 0 .6a4.6 4.6 0 0 0 2-.1c1.1 0 1.7 0 1.7.2s0 0 .1-.1c.4-.4 1-.4 1.8-.1 1 0 1.5-.1 1.7-.3 0-.3.2-.4.7-.4s.5.1.1.4l-.2.3h.7c.6 0 1-.1 1-.3s.3-.2 1-.2a1.5 1.5 0 0 1 .6.2h.6c.3 0 .2.2-.1.5s-.3.6.1.6a.5.5 0 0 0 .6-.6c0-.3.3-.5 1-.5s1 .2 1 .5 0 .6.5.6zm-4.5-4.8c-1 .1-1.4.4-1.2.7s.3.5.4.2a1.1 1.1 0 0 1 .7-.2l1.4-.2a4.3 4.3 0 0 1 1.5 0h1a.7.7 0 0 0 .9 0 1 1 0 0 0 .5-.9c0-.2-.3-.2-1-.1a32.6 32.6 0 0 0-4.2.5zm-24.7 65.2a1.8 1.8 0 0 0 0-1c-.4-.4-.6 0-.6 1.2 0 .9 0 1.2.2.8a1 1 0 0 0 .1-.4zm3-22c.2 0 .2 0 .2-.2a.6.6 0 0 0-.1-.4c-.2-.4-.3-.3-.3.1s0 .7.3.5zm.3-2.8a.8.8 0 0 0 .2-.6c-.2-.3-.3-.2-.3.2s0 .5.1.4zm13-32.9c.5 0 .7 0 .5-.2h-.3q-.1-.2-.4 0c-.4.1-.3.2.2.2zm1.3 0a.4.4 0 1 0-.4-.4.4.4 0 0 0 .4.4zm1.5-.4q.5-.4-.4-.4a.4.4 0 0 0-.4.4c0 .3.1.4.3.4s.3 0 .5-.4zm2-.1c1-.3 1.3-.5.8-.6a2.4 2.4 0 0 0-1.4-.1c-.4 0-.7.3-.7.5v.5a6.9 6.9 0 0 0 1.3-.3zm2.8-2c.3 0 .4-.1.4-.3a.1.1 0 0 0-.1-.1v-.3q-.3 0-.4.4c-.2.2-.2.3 0 .3zm3.6-.3c.4 0 .6 0 .6-.3h-.9c-.2.3 0 .4.3.4zM702.5 9a2.4 2.4 0 0 1 1.3 1.6 4.4 4.4 0 0 1-.4 2.6l-1.7 5-1.7 5.7-1.4 5.3a74.7 74.7 0 0 0-1.3 6 8.1 8.1 0 0 1-.4 1.5 7.7 7.7 0 0 0-.4 1.4c-.4 0-.4.1-.1.4a1.5 1.5 0 0 1 .1.9 6.8 6.8 0 0 1-.1 1.2L696 42a4.3 4.3 0 0 1-.3 1l-.4.6a5.6 5.6 0 0 0-.3-1 1 1 0 0 0-.5-.9q-.5-.2-.5.5c.1.4 0 .6-.4.5s-.4-.4-.5-.8a5.1 5.1 0 0 0-.5-1.4l-.2.4c-.4.7-.7.8-.9.4a22.1 22.1 0 0 1 0-3.6l.2-1.3-.5 1.4c-.2 1.7-.7 2.4-1.4 2h-.5a1 1 0 0 0-.4-.1 7.6 7.6 0 0 1-2.3-.7 5.2 5.2 0 0 1-1.8-1h-.3a.4.4 0 0 0-.2-.2 1.3 1.3 0 0 1-.7-.2l-1-.6c-.9-.6-1.3-.7-1.4-.6a18.4 18.4 0 0 1-.3-3.9 6.2 6.2 0 0 1 .1-1 9.5 9.5 0 0 1 .3-1.2 9.3 9.3 0 0 0 .3-1.5l.3-2.7.4-2.2a2.8 2.8 0 0 1 .3-1.1 1 1 0 0 0 .2-1c0-.3-.3-.4-.7-.3h-.8a2.1 2.1 0 0 0-.7-.2h-.4l-.2-.1h-.1c0 .3-.5.5-1.4.7a35.3 35.3 0 0 0-12 4.3l-4 2.4a68.8 68.8 0 0 0-7.5 6.4c-1.2 1.2-2.1 2.5-3.2 3.8a32 32 0 0 0-2.5 3.3 4.7 4.7 0 0 0-1 1.9 78.7 78.7 0 0 0 9.6 2.3c5.7.9 8.5 1.6 8.6 2.2 0 .1.2.2.7.2a4 4 0 0 1 2.4.7 21.8 21.8 0 0 1 3.5 2.3 38.8 38.8 0 0 1 3.8 3 20.7 20.7 0 0 1 3.2 3.1c.6.8 1.2 1.6 2 2.4l2 2a36.1 36.1 0 0 1 4.8 6.2 12.4 12.4 0 0 1 2 5.3 14 14 0 0 1-.9 6.6 32.4 32.4 0 0 1-3.3 7.1 39.2 39.2 0 0 1-5.3 6.9 35.4 35.4 0 0 1-6.7 5.7 34.3 34.3 0 0 1-7.9 4 46.3 46.3 0 0 1-8.5 2 27.2 27.2 0 0 1-3.9.3 48 48 0 0 1-3 .2 15.4 15.4 0 0 1-4.7-1 8.6 8.6 0 0 1-3.2-2.4l-2.6-2.4a27.4 27.4 0 0 0-3-2.8l-2.4-2.6a22.5 22.5 0 0 1-1.7-1.9c-1.4-1.5-1.7-3-.9-4.3l.6-.8 1.5 1.5a27.4 27.4 0 0 0 3.1 2.8 6.9 6.9 0 0 0 2.7.4h2.3l3.3-.3 3-.2a12.5 12.5 0 0 0 2.3-.6 1.9 1.9 0 0 1 1-.4l1.4-.6a9.2 9.2 0 0 1 1.4-.4 1.9 1.9 0 0 0 1-.4 17.8 17.8 0 0 0 3.4-1.5 83 83 0 0 0 4.5-2.7 44 44 0 0 0 5.5-4.5 31.6 31.6 0 0 0 4.3-5.1 23.7 23.7 0 0 0 2.2-3.7 22.8 22.8 0 0 0 1.7-3.9 14.7 14.7 0 0 0 .8-3.3 3.4 3.4 0 0 0 0-2.3 3 3 0 0 0-1.3-.8 14.5 14.5 0 0 0-2.3-.9 28 28 0 0 0-3-1l-2.9-.6-7.2-1.3a62.6 62.6 0 0 1-10-2.8l-2.6-1.3a17.2 17.2 0 0 1-2-1.5 61.7 61.7 0 0 1-4.7-5l-3-3.4a60 60 0 0 1-4.3-4.9 4.3 4.3 0 0 1-.8-2.9 17.3 17.3 0 0 1 .4-2.8 16.7 16.7 0 0 1 1.7-3 22.4 22.4 0 0 1 2.8-4l4-4.2a56.6 56.6 0 0 1 4.2-3.9 42 42 0 0 1 4.3-3.3 44.8 44.8 0 0 1 15.4-6.6 37.1 37.1 0 0 1 16-.4l2 .4h1a11.5 11.5 0 0 1 1.2-3 16.5 16.5 0 0 1 1.8-3.5c.6-.9 1-1.1 1.1-.7 0 .2.2.4.6.4a2.4 2.4 0 0 1 1 .4 12.5 12.5 0 0 1 1.5 1.1 9.6 9.6 0 0 1 1.4 1.1 11.8 11.8 0 0 1 1 .9c.3.5.7.7 1.1.4h.6s.2.2.3.7c0 .7 0 1 .2.8a.3.3 0 0 1 .3.3l.3.3q0 .8.4 0c.3-.5.6-.7.9-.6a14.4 14.4 0 0 1 2.1 1.6zm-52.4 23.3c-.6.5-.8.7-.5.7s.3-.1.5-.6zm42.2 1.4c0-.7 0-1-.3-.7a2.7 2.7 0 0 0-.2 1.3q.1.3 0 .4c-.1.1-.3.1-.4 0-.4 0-.6 0-.6.2s.2.4.6.7.4.1.5 0a5 5 0 0 0 .4-1.8zm.4-3a4.9 4.9 0 0 0 .3-1.1.1.1 0 0 0-.1-.1.1.1 0 0 0-.2.1 1.6 1.6 0 0 0-.3 1.1c.1.5.2.5.3 0zm.7-3.1a1.9 1.9 0 0 0 .3-1.3c0-.2-.1-.2-.4.2a1.2 1.2 0 0 1-.1.5v.6q0 .6.2 0zm9.4-17c.3 0 .4-.2.3-.6a.1.1 0 0 0-.2-.1v-.4c.1 0 0 .2-.4.5 0 .4.1.6.3.6zM487.4 2.9l-1.4 8.3a10.5 10.5 0 0 1-1.3 3.7 1.9 1.9 0 0 1-1 1c-.4.3-.5 0-.3-.4.2-.3.2-.3-.1 0-.8.7-1.4.6-1.7-.3 0-.3-.2-.3-.4 0s-.4.1-.6-.2-.6-.4-1.5-.3a4.7 4.7 0 0 1-1.8 0 22.5 22.5 0 0 1-2.6-.2 14.3 14.3 0 0 1-2.5-.4c-.8-.2-1.2-.5-1.3-.7q-1.2-2-.5-7.3 0-2 .6-5.8s-.2-.4 2-.2c.4 0 .8.4 1.3.5 1.5.2 3.6 0 5.6.3.7 0 .3.3 1 .4 1.7.4 4.4.6 5.5.9s1 .7 1 .7M175.3 0h16.3v16.4h-16.3z"/></g></svg>
\ No newline at end of file diff --git a/.github/assets/divriots.svg b/.github/assets/divriots.svg new file mode 100644 index 000000000..d9fb744a1 --- /dev/null +++ b/.github/assets/divriots.svg @@ -0,0 +1 @@ +<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 703.9 121.2"><path d="M297 103.5 341.4 59a6.2 6.2 0 0 0 0-8.8L297 5.9" fill="none" stroke="#000" stroke-width="13.1"/><path d="M55.8 9.9 11.4 54.3a6.2 6.2 0 0 0 0 8.8l44.4 44.4" fill="none" stroke="#000" stroke-width="11.1"/><g fill="#000"><rect height="20" rx="3" width="20" x="40" y="5.9"/><rect height="20" rx="3" width="20" y="48.9"/><rect height="20" rx="3" width="20" x="40" y="91.9"/><path d="M154 0V97h-15.7v-9a25.1 25.1 0 0 1-10 7.4 33.1 33.1 0 0 1-13 2.5A37.1 37.1 0 0 1 97 93.4a32 32 0 0 1-12.5-12.5A38 38 0 0 1 80 62a37.3 37.3 0 0 1 4.6-18.7A32.1 32.1 0 0 1 97 30.9a37.1 37.1 0 0 1 18.1-4.4 33 33 0 0 1 12.7 2.3 25.3 25.3 0 0 1 9.8 7V0zM117.2 84a21.3 21.3 0 0 0 10.5-2.6 19.8 19.8 0 0 0 7.5-7.7 23.3 23.3 0 0 0 2.7-11.5 23.3 23.3 0 0 0-2.7-11.5 18.9 18.9 0 0 0-7.5-7.6 21.8 21.8 0 0 0-21.1 0 18.9 18.9 0 0 0-7.4 7.6 23.3 23.3 0 0 0-2.8 11.5 23.3 23.3 0 0 0 2.8 11.5 19.8 19.8 0 0 0 7.4 7.7 21.3 21.3 0 0 0 10.6 2.6zm58.1-56.7h16.3V97h-16.3zm103 0L248.4 97h-16.8l-29.9-69.7h17l21.6 51.7 22.4-51.7zM398.8 91.1a.4.4 0 0 0-.2.3l-.1.1c-.1 0-.3-.1-.3-.4s.2-.3.4-.3.4.1.2.3zm.5 0q1.1-2 .9 1.3a40.2 40.2 0 0 1-.6 4.9q-.1 1.2-.4 1.2c-.4 0-.5-.5-.4-1.7a7.4 7.4 0 0 0 .1-1.4 10 10 0 0 1 .3-1.2c0-.9-.2-1.3-.6-1.4h-.5l.2.7c.2.4.2.5 0 .1a1 1 0 0 1-.8-1q0-.3.4-.4c.4-.2.7-.1.9.1a.4.4 0 0 1 .2.2h.5v-.3a1 1 0 0 1-.2-1zm1.7 6.6q.4-.2.4.4a.4.4 0 0 1-.4.4.3.3 0 0 1-.3-.3.8.8 0 0 1 .3-.5zm51.1 16.3c-.2-.3-.1-.4.2-.4a.4.4 0 0 1 .4.4.4.4 0 0 1-.1.3.5.5 0 0 1-.5-.3zM401.4 94c.3 0 .4.3.4 1s-.1.8-.4.8-.4-.2-.4-.8.1-1 .4-1zm50.6 10.6q6.4 8 6.2 8.5c0 .1-.3 0-.8-.4a12.6 12.6 0 0 1-1.2-1 12.8 12.8 0 0 1-1.1-1.4 2.2 2.2 0 0 1-.6-1 3.6 3.6 0 0 0-.7-1 18.6 18.6 0 0 0-1.5-1.6l-.9-.9a2 2 0 0 1-.4-.5c.6.7.7 1 .4 1 0 0 0 .2.3.5a10 10 0 0 1 .7.8l1.4 1.6a11.5 11.5 0 0 1 1.4 1.7l1.1 1.4a4.3 4.3 0 0 1 .6 1.8c0 .3 0 .5-.2.5s0 0-.4-.3a.8.8 0 0 0-1 0c-.2.1-.5 0-.7-.4l-.1.2a.6.6 0 0 1-.4.7c-.2 0-.3 0-.3-.3a54 54 0 0 0-4.2-5.3 3.7 3.7 0 0 1-1.3-1.4l-.4-.7c0-.2-.3-.4-.5-.4-.5 0 0 .8 1.5 2.5a9.7 9.7 0 0 1 1.4 2c0 .7.2 1 .6.8.1 0 .2.3.1.8q-.1.6.4.4c.3 0 .4 0 .4.2v.5l.6.9.7.7c.2.2.3.2.4.1s.2 0 0 .3c0 .2-.1.4-.4.5l-.8.6c-.7.5-1 .8-1 1s-.2.3-.6.3-.6.1-.6.4-.2.4-.5.7a9.5 9.5 0 0 1-1 .8 7.1 7.1 0 0 1-1.1.7c-.4.3-.6.4-.7.3l-.8-.2c-.2 0-.6-.3-1.1-1a28.6 28.6 0 0 1-2-2.2l-3.3-3.8-4-4.8q-2-2.3-4-4.3l-2.5-3a20.1 20.1 0 0 1-1.8-2.1l-2.1-2.6q-1.9-2-4-4.7l-6-8.1-3-4-1.8-2.5-1.2-1.6a8 8 0 0 0-.5-1c-.7-1-1.1-1.6-1.4-1.6s-.8-.1-1.4.2a2.7 2.7 0 0 0-.8 1.4l-.8 3.4a5.9 5.9 0 0 1 0 1.2 4.3 4.3 0 0 0-.2 1l-.4 2-.6 3.4-.6 3.3c-.2 1-.1 1.5-.1 1.6a.1.1 0 0 1-.1.1 5 5 0 0 1-.3-2.4 51.5 51.5 0 0 1 1-8c-.3-.3-.3-.5.1-.5.2 0 .3-.5.3-1.7.2-1.2 0-1.8-.3-1.8-.2 0-.3.3-.3.7s-.1.7-.4.7-.2.3 0 .7c.2.7.2 1 .1 1.1a7.3 7.3 0 0 0-.5 2.3 30.9 30.9 0 0 1-.4 3.3c0 1.2-.2 2-.6 2.1s-.4.4 0 .6.3.5.1 1-.4.6-.7.4a1.4 1.4 0 0 0-1 .3c0 .2 0 .2-.1.1a1.2 1.2 0 0 1 .1-.4c.1-.6 0-.8-.2-.8-.4.2-.5.5-.3 1 0 .4-.1.7-.3.7s-.4-.6-.3-1.7 0-1.6-.1-1.5-.1-.4.3-1a2 2 0 0 0 .4-2.1 6.4 6.4 0 0 1-.1-2.4 4.3 4.3 0 0 1 .6-2.2 4.4 4.4 0 0 0 .5-1.7.6.6 0 0 0-.7-.7c-.4 0-.6 0-.6.3s-.2.4-.7.4-.5.1-.3.4a1.4 1.4 0 0 1-.2 1q-.6.6 0 .3a.5.5 0 0 1 .7.1c.1.2 0 .5-.2.9a3.2 3.2 0 0 0-.7 1.2c0 .6 0 .8.2.6.3-.4.5-.4.5 0a.4.4 0 0 1-.4.4l-.6.7a1.3 1.3 0 0 1-.1.6 1.6 1.6 0 0 0-.3.4c0 .2.1.3.3.2.4-.2.4 0 0 .6a1 1 0 0 1-1 .7c-.3 0-.3.2 0 .6.5.2.6.9.3 2a9.6 9.6 0 0 1-.7 2c-.4.4-.5.4-.3 0s.2-.7 0-1c-.3 0-.4.3-.4.8s.1.8.4.8.3.2-.3.6c-.4.4-.4.5-.3.5.9 0 1.2.2 1 .7-.3 1-.7 1-1 0 0-.2-.1-.1-.2.3s.1.7.5.7.6.3.3.9a3.4 3.4 0 0 1-.1.8 4.3 4.3 0 0 0-.2 1 3 3 0 0 1-.1 1v.4c0 .1-.3.2-.7.2s-.7-.2-.6-.9a1.3 1.3 0 0 0 .2-.5.6.6 0 0 1 .2-.6c.6-.4.7-1.1.3-2.2s-.8-1.3-1.7-.4a1.6 1.6 0 0 0-.5 1h.7c.5-.1.6.1.5.8a12.1 12.1 0 0 0-.2 2.4 1 1 0 0 1-1.2 1 12.7 12.7 0 0 0-2.2.4 4 4 0 0 1-2.6-.5l-1.6-.5a3.4 3.4 0 0 1 0-1.4l.7-6.6a64.9 64.9 0 0 0 .7-4.9l.3-2c.5-3.1.8-5.7 1-7.9s.3-3.5.1-3.8c-.2-.5-.3-.8-.5-.8a1.7 1.7 0 0 1-.9-.4 11.9 11.9 0 0 1-1-1l-1-1.3a2.6 2.6 0 0 1-.5-1 1 1 0 0 1 .4-.8 14.5 14.5 0 0 1 2.1-.7c1.7-.7 2.6-1.2 2.7-1.7a8.7 8.7 0 0 0 .7-2.8l.8-5.7 1.5-8.1L394 39l1.7-8.2-1.1-.9a4.6 4.6 0 0 0-.7-.6c-.2-.1-.3-.3-.3-.4s-.3-.6-1-1.2a5.3 5.3 0 0 0-1.7-1.3 19 19 0 0 1-1.5-1.1l-2.5-2.4A36 36 0 0 1 384 20a1.7 1.7 0 0 1-.1-1.5A7.1 7.1 0 0 1 386 16a35.6 35.6 0 0 1 4.7-3 52 52 0 0 1 6-2.9 43.9 43.9 0 0 1 6.5-2.2q2.6-.7 5.7-1.3a72.6 72.6 0 0 1 12.3-1 23.5 23.5 0 0 1 4.6 0 20.3 20.3 0 0 1 5 1.7 19.3 19.3 0 0 1 4.9 2.8 36.3 36.3 0 0 1 3.2 3 87.1 87.1 0 0 1 8.1 8.5 26.3 26.3 0 0 1 2.4 2.8 13 13 0 0 1 2 3.9 17.4 17.4 0 0 1 .7 4q.3 6.3-4.2 12.6-4.4 6.2-14 12.9l-2.4 1.7-3 1.8c-1 .7-1.7 1.3-2.6 1.8l-1.8 1-2 1.1a1.3 1.3 0 0 0-.8.7 2.4 2.4 0 0 0 .5 1.1 12.7 12.7 0 0 1 1.3 1.8l2.1 3c.8 1.2 1.6 2 2.3 2.7s1.3 2 2.3 3.2l3 3.5 3.7 4.6 4.6 5.6L445 96a133 133 0 0 0 4.7 5.6 86 86 0 0 0 2.4 3zm-58.1-76.7.1-.3c0-.1-.1-.2-.4-.2s-.2 0 0 .2c0 .3.1.5.3.5zm-1.4 61.6c0-.3-.1-.4-.3-.4s-.3.1-.3.4a.4.4 0 0 0 .2.3s.2 0 .4-.3zm1.7 2.7a2.7 2.7 0 0 0 .1-1.6q0-.8-.3-.8a.4.4 0 0 0-.4.4v.6a4 4 0 0 1-.1.8c-.1.6 0 1 .1 1.1s.4 0 .5-.5zm0-3.8c.3 0 .5 0 .5-.3a.4.4 0 1 0-.8 0c-.1.2 0 .3.3.3zm6-3.9c.2-.2.1-.3-.2-.3s-.4.1-.4.3v.3a.1.1 0 0 0 .1.1q.2 0 .5-.4zm.7-3.4v-.7l-.3.5a2.8 2.8 0 0 0-.6 1.4c0 .4.1.6.3.4a5.4 5.4 0 0 0 .6-1.6zm.1-2.3c.3-.5.3-.8 0-1-.2-.5-.3-.4-.3.3s.1.9.3.7zm1.5-30.6c-.3.3-.5.6-.4.7a2.5 2.5 0 0 0 1-.4c.3-.3.4-.5.3-.6s-.3 0-.9.3zm.6 4.7.4-.1-.4-.4a.3.3 0 1 0 0 .5zm.6 23 .1-.5c-.2-.6-.3-.5-.3.1v.6c.1.1.2 0 .2-.1zm.7-28.6c0-.5 0-.6-.2-.4-.3 0-.4.2-.4.7s0 .5.1.5a2.7 2.7 0 0 0 .5-.8zm2.3 25.1c0-.2-.1-.2-.4-.2h-.6s0 .2.5.2zM426 56.4c0-.4 0-.5-.2-.4s-.3.2-.5.5 0 .5.3.5l.4-.5zm-11.6-5.7q13.5-8.5 19.4-15.1 6-6.6 6-13.1c0-1.3-.3-2.2-.8-2.6s-1.7-.8-3.7-1.2q-5.4-.9-14.4.7a29.9 29.9 0 0 0-4.7 1.1 1.2 1.2 0 0 0-1 1.3 17.8 17.8 0 0 1-.3 2L414 28l-1 5.2-1.2 5.3-1 5.3c-.4 1.7-.8 3.4-1 5s-.6 2.6-.8 3.6l-.3 1.4c0 .1.3.1.9-.2l4.7-2.9zm27 49.6c.5.3.6 0 .2-.6a7.2 7.2 0 0 1-.7-.8 2.3 2.3 0 0 0-.7-.7l-1-1 .9 1a2 2 0 0 1 .7 1.4c0 .5.2.7.5.7zm5.4 5.7a.4.4 0 0 1-.1-.3.4.4 0 0 1-.2-.3 1.2 1.2 0 0 0-.1-.4 14.8 14.8 0 0 1-1-1l-1.4-1.6a8.2 8.2 0 0 0-1.4-1.4l.4.7a8.2 8.2 0 0 0 .7 1.1 8.5 8.5 0 0 0 .7.8l.7.9c0 .2.3.6.7 1s.8.7 1 .6zm.8-5c.2 0 0-.3-.6-1a2.9 2.9 0 0 1-.7-.6l-.3-.2c-.2 0 0 .2.5.8s.8 1 1.1 1zm6.8 11.7a.8.8 0 0 0-.6-.5c-.2 0-.3.1-.3.4a.6.6 0 0 0 .7.7c.3 0 .3-.2.1-.5zm-5.4-9.7.9.8-.6-.8a4.3 4.3 0 0 0-.5-.7l-.3-.3c-.3 0-.1.3.5 1zm7.8-.6c-.2 0-.3-.3-.3-.8a3.2 3.2 0 0 0 .1-1 1.6 1.6 0 0 1 .2-.7c0-.5 0-.7.2-.7s.2.2 0 .7a2.4 2.4 0 0 0-.1.7v.7a1.6 1.6 0 0 1-.2 1.1zm10-9.8a.3.3 0 0 1-.4-.3c0-.1.1-.2.4-.2l.2.4-.2.1zm-7 14.7c.1 0 .2.1.2.4s-.1.3-.4.3l-.1-.3.1-.3a.1.1 0 0 1 .2 0zm24-81.7c0 .5 0 1.4-.2 2.6l-.3 4.2-.5 4.7c-.2 1.7-.3 3-.6 4.4l-1.5 10.2-.8 5.8-.8 5.2c-.4 2.2-.5 4.2-.8 6a16.7 16.7 0 0 0-.3 1.7 7 7 0 0 0-.2 1 3.7 3.7 0 0 0-.2 1 73.2 73.2 0 0 0-.8 5.2 1.2 1.2 0 0 1-.3.4v.3a1 1 0 0 0 0 .4 1 1 0 0 1 0 .7c0 .2-.2.2-.3.1-.3-.1-.4-.3-.2-.6s-.2-.4-.6-.4-.7.2-.7.5a1 1 0 0 0-.2.4l.2.1v.1c.1 0 .2.2.2.5s0 .5-.2.5c-.4 0-.4 0 0 .2q0 .5-.3.5a.5.5 0 0 0-.1.6c.2.1 0 .2-.2.2a.5.5 0 0 0-.5.3 2.7 2.7 0 0 0 0 1.1v1.3l-.4 1a1.9 1.9 0 0 1-.2 1.2c-.2 0-.4-.6-.4-1.9a3.5 3.5 0 0 0 0-1.4c0-.2-.2-.1-.4.1a4.4 4.4 0 0 0-.3 1.5c0 .6 0 .9-.3.9s-.3-.3-.3-1l.3-.8a1 1 0 0 0 .2-.7c0-.4 0-.5-.2-.3s-.3 0 0-.5l.2-.5.4.3c.2.3.4.3.7-.3a2.6 2.6 0 0 0-.1-1c-.1-.1-.2 0-.2.2s-.1.3-.4.3-.4-.2-.1-.5c.3-.8.2-1.1-.2-.9s-.4.1-.4-.1.1-.3.4-.3.3-.3 0-.8a1.2 1.2 0 0 1-.3-1.1q.5-.4.5 0c0 .2 0 .3.2.3s.3-.3.2-1a3.7 3.7 0 0 0-.3-1.3q-.4-.4-.1-.4l.7-.7c.4-.5.2-.8-.2-.8s-.4.2-.4.7l-.1.2a2 2 0 0 0-.2-.5c0-.7.2-1 .5-1s.4-.1.4-.3v-.3a1.2 1.2 0 0 0 0-.5c.2-.1.2-.2 0-.2a.1.1 0 0 0-.2 0c-.1.1-.2 0-.2-.5l.4-3.4c0-.6 0-.7-.3-.5a1.6 1.6 0 0 0-.3 1.2c0 .5-.1.7-.4.6s-.1.2 0 .6c0 .4 0 .6-.2.6s-.3.2-.1.7 0 .6-.3.4c-.1-.1-.3-.2-.3 0a.9.9 0 0 1 0 1c-.7.8-.7 1.1 0 .8.3-.1.4 0 .2.2s-.3.6-.5.4-.2 0-.2.6a1.3 1.3 0 0 0 .5 1c0 .3 0 .5-.3.6s-.4.6-.2 1.3c.2.8.1 1.1-.1 1a.4.4 0 0 0-.6 0c0 .2 0 .3.2.3s.2.2.4.5-.1.5-.4.2c-.1 0-.2.2 0 .9s0 .8-.2.8-.3-.1-.4.1a.8.8 0 0 0 0 .6q.2.3-.2.2a.8.8 0 0 1-.4-.4c-.1-.3-.2-.2-.2.2a1 1 0 0 0 .1.5.4.4 0 0 0 .4.2c.1.2 0 .2-.5.2a1.7 1.7 0 0 1-1-.3c-.3-.3-.3-.4 0-.5a.6.6 0 0 0 .4-.6c0-.3.1-.5.3-.5s.1 0 0-.2l-.3-.5c-.2-.3-.4-.4-.5-.3a9.5 9.5 0 0 1-.2 1 13.2 13.2 0 0 0-.2 2.5 6 6 0 0 1-.1 1.2 1.6 1.6 0 0 1-.2.7 1.3 1.3 0 0 0 0 1.2c0 .5 0 .7-.2.7s-.3.6-.5 1.4a23.7 23.7 0 0 0-.3 3.1l-.4 2.1c0 .3-.2.3-.5 0s-.6 0-.7.4q-.3.7.2.3a1.4 1.4 0 0 1 .7.1c.2.2 0 .3-.5.4a1.4 1.4 0 0 0-1 1l.2.3c0-.2.2-.5.6-.7s.4.2.4 1.3a6.5 6.5 0 0 1 0 1.3v.7c-.6.6-.9.4-1-.7 0-.6-.2-1-.4-1s-.3.2-.3.8v.9a2.6 2.6 0 0 1-.2.8 4.3 4.3 0 0 0 0 1 3 3 0 0 1-.2 1 2.9 2.9 0 0 1-.1.8 3.6 3.6 0 0 1-.3.7l-.2.6v.5c-.2 0-.3.3-.1.8s0 .6-.2.6-.4.2-.2.6q.2.4 0 .4h-1a2.6 2.6 0 0 0-1.7.3 1 1 0 0 1-.7.2 1.1 1.1 0 0 1-.8-.3c-.3-.3-.3-.5.1-.5s.4-.1.1-.5c-.4-.5-.2-.7.5-.5.3.2.3 0 .1-.4s-.2-.8 0-1 .2-.3 0-.2-.3-.3-.2-1.3a6 6 0 0 1 .1-1.2 3.7 3.7 0 0 0 .1-.7 4 4 0 0 0 0-3l-.2-1.2v-1.4a9 9 0 0 1 .2-1c0-.2.2-.3.4-.1a1 1 0 0 1 0 .7.2.2 0 0 0 .2.2c.2 0 .2-.3.2-.9-.1-.6-.3-1-.4-1v-.2a.3.3 0 0 0-.2-.3 1 1 0 0 1 .2-.4v-1.8c0-1 .4-2.1.6-3.3l.3-3c.1-.6.3-1 .5-1h.3c0-.3 0-.5-.3-.5a49.4 49.4 0 0 1 .3-5.6l.5-4 .2-2.5.5-3.3c.2-1.5.5-3 .6-4.6s.4-3 .6-4.3l.4-2.9.7-4.2 1-7 1.2-7.6 1-6.7.9-5.2c.2-1.4.4-2.6.6-3.1a3.4 3.4 0 0 1 .5-1.4 1.7 1.7 0 0 1 1-.4 5.9 5.9 0 0 1 2.3 0 7 7 0 0 1 2.6.7c.8.6 1.3.7 1.5.4s.5 0 1.3.5a3.8 3.8 0 0 0 1 .5c.1 0 .3-.1.4-.4s.4-.6.7-.5a13 13 0 0 1 2.9 1c.3 0 .6.4.8 1a6.3 6.3 0 0 1 .4 2.3zm-25.3 69.5v-.7l-.4.3-.3.6q-.1.1 0 .4l.3.6a4 4 0 0 0 .4-1.1zm1.1-8.9c.2-.4.1-.5-.3-.3-.3 0-.5.1-.5.3s.1.4.4.4a.4.4 0 0 0 .5-.4zm0-2.2c.1 0 .2-.1.2-.3s-.1-.4-.3-.4-.3.2-.2.4c0 .2.1.3.2.3zm3.8-2.7c.2-.2.1-.3-.1-.3s-.5.1-.5.3.1.4.3.4h.2v-.1zm1.7 2.2a.9.9 0 0 0 .5.3q.3-.1 0-.4c0-.3-.1-.4-.5-.4s-.3.2 0 .6zm1.5-10c.2 0 .3-.2.3-.4l-.1-.5-.5.5c0 .3.2.4.3.4zm0 1.9q.4-.5 0-.2a1.1 1.1 0 0 1-.8.2c0-.1-.1-.1-.1 0 .3.6.6.5 1 0zm1.7 0c0-.2.2-.4.4-.4s.3 0 .3-.2l-.2-.1h-.5c-.2 0-.3.2-.3.5q.1 1.3.3.3zm.6 1.1a.7.7 0 0 0 .4.3c.2 0 .3-.3.3-.6s-.2-.4-.5-.1-.4.3-.2.5zm3.9-10.5c-.2 1-.2 1.3 0 1.1l.3-.7a9.3 9.3 0 0 0 .1-1.6 7.8 7.8 0 0 0 .2-1.3c0-.3 0-.5-.2-.5s-.2.2-.2.8a6.9 6.9 0 0 1-.1 1 6.6 6.6 0 0 1-.1 1.2zm.8 12.4q.1 0 0 0c0-.2 0 0-.2 0l-.5.3.2.1c.4 0 .5-.1.5-.3zm.2-1.7q.1-.2 0-.2t-.2 0c-.3.1-.5.2-.5.4s.1.1.4.1.4-.1.4-.3zm-.2-14 .1-.3c0-.2-.1-.3-.3-.3s-.3.1-.2.3.3.3.4.3zm.1-1.5c.2 0 .2-.3.2-.6 0-.5 0-.7-.2-.7-.2-.2-.2 0-.2.6s0 .7.2.7zM476 72c-.2 0-.4 0-.4.2a.3.3 0 0 0 .4.4c.2 0 .3-.2.5-.4q0-.3-.5-.2zm-1.9-15.7c-.3.3-.3.5-.1.8s.3.3.3.2a1.2 1.2 0 0 0 .3-.8 1.8 1.8 0 0 1-.3-.7.1.1 0 0 0 0 .1.3.3 0 0 1-.2.2zm-.1 2.3a.7.7 0 0 0 .3.4l.4-.1-.4-.4c-.3-.2-.4 0-.3.1zm2 15.2c.2-.2.2-.2-.1-.2s-.6.3-.7 1c0 0 0 .3-.3.5s-.3.2 0 .2.4.3.3.9a2 2 0 0 1-.3 1 1 1 0 0 0-.3.6c0 .2.1.3.5.3a1 1 0 0 0 .8-.4 1.7 1.7 0 0 0 .2-.7 5.8 5.8 0 0 0 .1-1.2 5 5 0 0 0 0-1.2l-.4-.4a.1.1 0 0 1-.2-.2 1.5 1.5 0 0 1 .4-.2zm.1-.6c.3 0 .5-.1.5-.3s-.2-.2-.5 0a.3.3 0 0 0-.2 0h-.1l-.2.2h.5zm.5-2.2c.2 0 .3-.3.3-.7a1 1 0 0 0-.4-1q-.4 0 0 .2t.1.2c-.2 0-.4.3-.4.7q0 .5.4.5zm.6-2.8c.1-.3.1-.5-.1-.4s-.4.2-.6.6-.3.6.2.6a.8.8 0 0 0 .5-.8zm1.3-11c0-.3 0-.4-.3-.4s-.2.1 0 .4l.3.5zm-2.6 23c.1 0 .2.5.1 1.6a2.7 2.7 0 0 1-.5 2c-.1.2-.2.1-.2-.3a1.5 1.5 0 0 0-.1-1 1.2 1.2 0 0 1 .2-1.1l.2-1s0-.3.3-.3zm-9.5 13.3c0-.4.1-.6.4-.7s.4.1.5.5 0 .5-.4.5c-.3 0-.5 0-.5-.3zm5.7-5.2c0-.4.1-.4.4 0a2 2 0 0 1 .2.8q0 .4-.2.2a1.2 1.2 0 0 1-.4-1zm-5.6 2a.6.6 0 0 1 .5-.8c.3-.2.5 0 .6.4a.4.4 0 0 1-.5.4c-.4.1-.6.1-.6-.1zm-.2 4.3c.2-.2.4-.2.6 0q.1 0 0 .1h-.7q-.1-.2.1-.2zm8.8-9.6c0-.4 0-.5.2-.3s.2.2.1.4c-.2.7-.3.7-.3-.1zm-4.7 7.6q.3-.3.3-.1v.7c0 .7 0 1-.3 1s-.2-.1-.2-.4a3.8 3.8 0 0 1 .2-1.3zm1 5.3c.1-.2.3-.2.3-.1v.2c-.4.9-.7 1-1 .1q-.4-.3.1 0l.6-.2zm-.1-8.8q-.1.8-.4.2a3 3 0 0 1 .3-2l.2-1.1.1 1a7.6 7.6 0 0 1-.2 2zm1.2 1.1c.2 0 .2.4-.2 1.2l-.2 1.3-.2 1.3-.5 1 .1-1.2a5.3 5.3 0 0 0 .1-1.1 3.6 3.6 0 0 1 .3-.7.7.7 0 0 0 0-.5v-1.8q.2-.2.2 0l.4.5zm2-2.1c.2 0 .2 0 .2.2s-.3.4-.4.4a.1.1 0 0 1 0-.1v-.3q0-.3.3-.3zm-4 2.8q0-.3.2 0c.2 0 .3.2.3.3h-.3c-.3 0-.3 0-.3-.3zm-3-3.9c.2 0 .4.2.6.5s.2.6.1.7l-.5.4c-.3.2-.6 0-.7-.2a1 1 0 0 1 .1-.7q.2 0 .2-.4c-.1 0-.2 0-.2-.2a.5.5 0 0 1 .4-.1zm-3.3 12c.2-.3.4-.3.5-.1s.2.5 0 .8-.4.3-.5 0c-.3-.2-.3-.5 0-.7zm-.9 4.2c0-.5 0-.7.3-.4a1.2 1.2 0 0 1 .3 1.4c-.1.5-.3.7-.6.8s-.2 0-.2-.5c0-.3 0-.4.2-.4.4-.1.4-.4 0-1zm5-19.8c.1 0 .3 0 .3.2a3.4 3.4 0 0 1 0 1.2c0 1.7-.3 2.2-.8 1.7-.1-.5-.2-.6-.2-.2a.4.4 0 0 1-.5.5c-.2 0-.3 0-.3-.2a1 1 0 0 1 .1-.4l.2-.5c.4-.3.5-.5.5-.7 0-1.1.1-1.7.6-1.7zm-5 22.3c.2.1.3.4.2.9s-.3.7-.7.7a.3.3 0 0 1-.3-.3 2.9 2.9 0 0 1 .1-1c.2-.3.4-.4.6-.3zm.7-5.3a.4.4 0 0 1 .5.4c0 .2-.2.3-.5.3s-.4 0-.4-.3a.4.4 0 0 1 .4-.4zm102.2-74.8a36 36 0 0 1 6 15.8q.8 7.8-2.5 17.8a64 64 0 0 1-4.2 10.2 67.2 67.2 0 0 1-5.6 9 56 56 0 0 1-6.3 7.6 42.1 42.1 0 0 1-6.7 5.3 18.4 18.4 0 0 1-3.6 2 2.2 2.2 0 0 1-1.6 0c-.2-.3-.4-.2-.4.3s-.5.8-1.6 1.2a27.4 27.4 0 0 1-6.9 1.7 19 19 0 0 1-6.1-.1 26.9 26.9 0 0 0-3-.7c-1.4-.3-2.7-.6-4-.7l-6.8-1.4a46 46 0 0 1-4.5-1.4 29 29 0 0 1-3-1.4 23.3 23.3 0 0 1-2.3-2.1 22.5 22.5 0 0 1-2.5-3.1q-1.3-1.8-2.4-3.8l-1.8-4a22.5 22.5 0 0 1-1-3.5 6.1 6.1 0 0 0-.3-2c-.2-.7-.4-1.7-.5-3a44.1 44.1 0 0 1 0-5 66.2 66.2 0 0 1 2-14.5 77.7 77.7 0 0 1 4.8-14.2 66.7 66.7 0 0 1 7.3-12.3 42.2 42.2 0 0 1 9-9 35.3 35.3 0 0 1 8-4.6 20.5 20.5 0 0 1 7.6-1.4h2.2a8 8 0 0 1 1.6.2 4.6 4.6 0 0 1 1.4.5 15.9 15.9 0 0 1 2 .9 46.3 46.3 0 0 0 4.9 2l5.3 1.5a19.1 19.1 0 0 1 8.2 3.8 34.6 34.6 0 0 1 7.3 8.4zm-59.8 37.6c.3 0 .4-.2.4-.6 0-.1-.1-.2-.4-.2s-.3.2-.3.5.1.5.3.3zm.6-3.3c.3 0 .5 0 .5-.2s-.1-.3-.4-.4a.3.3 0 0 0-.4.1c-.2.3-.1.5.3.5zm3.7 1c.2 0 .3 0 .3-.4s0-.4-.1-.4-.3.2-.4.4 0 .5.2.5zm44.6-20.2v-3.3a10.1 10.1 0 0 0-.3-2.6 13 13 0 0 0-.4-2.2 11.8 11.8 0 0 0-.8-2l-.4-1-.6-1.6a23.4 23.4 0 0 0-2.2-4.2 32.6 32.6 0 0 0-3-4.5l-1.5-2-2 .2q-4.5.4-10 4.3a48.7 48.7 0 0 0-9.7 9.8 65.8 65.8 0 0 0-3.8 5.6 45.2 45.2 0 0 0-3 5.7 68 68 0 0 0-5.6 22.1q-.7 10.8 3 18.3l1 2c.4.8 1 1.5 1.5 2.1a19.6 19.6 0 0 1 1.4 1.6l.7.7a3.6 3.6 0 0 0 .8-.2 8.6 8.6 0 0 0 1.7-.5l1.8-.6a10.4 10.4 0 0 0 1.4-.7l1.4-.6a3.9 3.9 0 0 0 1-.5l2-1.3 2.6-1.6 2.2-1.7a49 49 0 0 0 8.4-8.5 67.1 67.1 0 0 0 6.9-12 70.3 70.3 0 0 0 4.2-11.2 34.6 34.6 0 0 0 1.3-9.6zm6.3 23.5c0-.3 0-.4-.3-.4a.6.6 0 0 0-.5.4l.1.3c.4 0 .6-.1.7-.3zm.6-1.3a1.1 1.1 0 0 0 .2-.8c0-.4 0-.5-.2-.3a1.7 1.7 0 0 0-.3.7c0 .3.1.4.3.4zm2.5-6.3a2.4 2.4 0 0 0 .2-1c0-.3-.1-.2-.2 0a2.5 2.5 0 0 0-.4 1.2c0 .3.1.2.4-.2zm1.4-5.1c.2-.8.2-1.1.1-1.1l-.3.4a4 4 0 0 0-.7 2c0 .7 0 1-.3 1-.1.5-.2.7 0 .8s.3 0 .6-.6a8.3 8.3 0 0 0 .6-2.5zm.7-2.8a9 9 0 0 0 .2-2.7 2.4 2.4 0 0 0 0-1v.2c-.3.6-.5 1-.7 1a4.4 4.4 0 0 1 0 .8 6.4 6.4 0 0 0 0 1c.1 1.3.3 1.5.5.7zm3.6 2.6.4-.8c.2-.5.2-.7-.1-.7-.1 0-.3.2-.4.7s-.2.8.1.8zm72-37.8.3.4-.3.1-.3-.1a.1.1 0 0 1-.1-.1c0-.2.1-.3.4-.3zm-8.4 2c.4 0 .6 0 .6.2s-.3.5-.7.5-.6-.2-.6-.5a1 1 0 0 1 .7-.3zm6.2-2.7a1.2 1.2 0 0 0 .1 1c.2.2.2.3 0 .3l-1.8.1a3.6 3.6 0 0 1-1.4 0c-.3 0-.4-.2-.3-.3a1.2 1.2 0 0 1 .8-.4c.6 0 .9-.3.9-.7s.3-.5.8-.5c.8 0 1 .1.9.5zm-2.8-3.2c0-.4.1-.6.4-.6a1.3 1.3 0 0 1 1 .2c.4.2.4.2.1.2a5.6 5.6 0 0 0-1 .3c-.3.2-.5.1-.5-.1zm.4 3c0 .2-.5.3-1.5.3s-1.4 0-1.3-.1a2.6 2.6 0 0 1 1.5-.3c.9-.1 1.3 0 1.3.1zM635 14c.5 0 .7 0 .8.3s.1.3-.2.4h-.7a6.4 6.4 0 0 0-1.2.1l-3 .3a3.3 3.3 0 0 0-1.7.4c-.5.2-.5.4-.2.6a8 8 0 0 0 2.1 0c1.3-.2 2-.1 2 .1s-.5.4-1.5.6a22.4 22.4 0 0 0-2.7.3 69.5 69.5 0 0 0-7.8 1 7.2 7.2 0 0 0-1.8.4 14.3 14.3 0 0 0-.6 2.6l-.7 5.7-.7 4c-.3 1.5-.4 2.8-.5 4.3s-.5 3-.7 4.3l-.5 3.7-1 6.7c-.2 2.2-.5 3.8-.7 4.9q0 .8-.4 2.7l-.7 4.5c-.3 1.8-.4 3.6-.8 5.7l-1 6.2q-.8 6.4-1.7 11.6l-.8 6.1-.7 3.4c-.3 1.6-.4 3.2-.6 4.9q-.8 4.9-1.4 7.2a8.3 8.3 0 0 1-1.2 3.3 1.7 1.7 0 0 1-1 1c-.4.1-.5 0-.3-.5.2-.2.1-.2-.2 0-.8.7-1.3.6-1.6-.2q-.2-.5-.4 0c-.2.1-.4.1-.6-.2s-.7-.4-1.5-.3a5.7 5.7 0 0 1-1.9 0l-2.6-.1a16.6 16.6 0 0 1-2.5-.4c-.8-.2-1.2-.4-1.3-.6q-1.2-1.8-.5-6.4c0-1.2.3-3 .7-5.5l1.2-8.5 1.7-10.6 2-11.6 1.1-6.4a33.8 33.8 0 0 1 .6-3.4l.4-3.5 1-6.1 1.2-7.7c.4-2.7 1-5.3 1.3-7.7l1-6.3.7-3.7c.2-.5.2-.8.1-.9h-1l-3 .6-5.5.8-6.1 1q-3.1.6-5.6.9l-5 .8a26.5 26.5 0 0 1-2.9.3c0-.2.1-.6.6-1 .3-.2.2-.3-.1-.2-.6.1-.9 0-.9-.4a1.5 1.5 0 0 1 .4-1.1l.3-.3-.4.2c-.5 0-.7-.2-.7-.7a3.2 3.2 0 0 0-.6-1.9 9.3 9.3 0 0 1-.6-1.4 50.4 50.4 0 0 1-1.6-4.1 4.5 4.5 0 0 1-.4-1.3c0-.5.4-.9 1.1-1.3a7.8 7.8 0 0 1 2.5-1l5-1 7.3-1.3 7.8-1.3 6-1a19.6 19.6 0 0 0 2.3-.2 170.4 170.4 0 0 1 8.7-1 14.4 14.4 0 0 0 2.9-.6 18 18 0 0 0 2-.1 16.6 16.6 0 0 0 2.6-.4q2.2-.3 6.8-.6t8.7-.7h2.7c.5 0 .8.1.8.3q0 .7.4 0a.4.4 0 0 1 .4-.3h.6c.3 0 .6.2 1 .7a2.1 2.1 0 0 1 .5 1.3c-.1.2 0 .4.2.4s.3.7.3 2.2c0 1.8 0 2.4-.5 1.8a4.3 4.3 0 0 0-2-.3c-.9 0-1.4.2-1.6.5q0 .4.2.4a.4.4 0 0 1 .5.4c0 .4-.5.6-1.4.6a2.9 2.9 0 0 0-1.7.2h-.4a.8.8 0 0 1-.6-.2 3.4 3.4 0 0 0-1.5.2 2 2 0 0 1-1.4.5c-.3-.3-.6-.3-1 .1-.3.2-.4.2-.4.1h-.4a.8.8 0 0 0-.6.2q-.8.3-.8 0c0-.4-.2-.4-.6 0a1.9 1.9 0 0 1-1.4 0 3.1 3.1 0 0 0-1-.3l-.4.4q0 .6.4.4c.3 0 .4 0 .4.2 0 .4-.5.4-1.5 0a1.2 1.2 0 0 0-1.1.3 1.1 1.1 0 0 1-.9.2.5.5 0 0 0-.7 0c-.4.2-.4.4 0 .6a4.6 4.6 0 0 0 2-.1c1.1 0 1.7 0 1.7.2s0 0 .1-.1c.4-.4 1-.4 1.8-.1 1 0 1.5-.1 1.7-.3 0-.3.2-.4.7-.4s.5.1.1.4l-.2.3h.7c.6 0 1-.1 1-.3s.3-.2 1-.2a1.5 1.5 0 0 1 .6.2h.6c.3 0 .2.2-.1.5s-.3.6.1.6a.5.5 0 0 0 .6-.6c0-.3.3-.5 1-.5s1 .2 1 .5 0 .6.5.6zm-4.5-4.8c-1 .1-1.4.4-1.2.7s.3.5.4.2a1.1 1.1 0 0 1 .7-.2l1.4-.2a4.3 4.3 0 0 1 1.5 0h1a.7.7 0 0 0 .9 0 1 1 0 0 0 .5-.9c0-.2-.3-.2-1-.1a32.6 32.6 0 0 0-4.2.5zm-24.7 65.2a1.8 1.8 0 0 0 0-1c-.4-.4-.6 0-.6 1.2 0 .9 0 1.2.2.8a1 1 0 0 0 .1-.4zm3-22c.2 0 .2 0 .2-.2a.6.6 0 0 0-.1-.4c-.2-.4-.3-.3-.3.1s0 .7.3.5zm.3-2.8a.8.8 0 0 0 .2-.6c-.2-.3-.3-.2-.3.2s0 .5.1.4zm13-32.9c.5 0 .7 0 .5-.2h-.3q-.1-.2-.4 0c-.4.1-.3.2.2.2zm1.3 0a.4.4 0 1 0-.4-.4.4.4 0 0 0 .4.4zm1.5-.4q.5-.4-.4-.4a.4.4 0 0 0-.4.4c0 .3.1.4.3.4s.3 0 .5-.4zm2-.1c1-.3 1.3-.5.8-.6a2.4 2.4 0 0 0-1.4-.1c-.4 0-.7.3-.7.5v.5a6.9 6.9 0 0 0 1.3-.3zm2.8-2c.3 0 .4-.1.4-.3a.1.1 0 0 0-.1-.1v-.3q-.3 0-.4.4c-.2.2-.2.3 0 .3zm3.6-.3c.4 0 .6 0 .6-.3h-.9c-.2.3 0 .4.3.4zM702.5 9a2.4 2.4 0 0 1 1.3 1.6 4.4 4.4 0 0 1-.4 2.6l-1.7 5-1.7 5.7-1.4 5.3a74.7 74.7 0 0 0-1.3 6 8.1 8.1 0 0 1-.4 1.5 7.7 7.7 0 0 0-.4 1.4c-.4 0-.4.1-.1.4a1.5 1.5 0 0 1 .1.9 6.8 6.8 0 0 1-.1 1.2L696 42a4.3 4.3 0 0 1-.3 1l-.4.6a5.6 5.6 0 0 0-.3-1 1 1 0 0 0-.5-.9q-.5-.2-.5.5c.1.4 0 .6-.4.5s-.4-.4-.5-.8a5.1 5.1 0 0 0-.5-1.4l-.2.4c-.4.7-.7.8-.9.4a22.1 22.1 0 0 1 0-3.6l.2-1.3-.5 1.4c-.2 1.7-.7 2.4-1.4 2h-.5a1 1 0 0 0-.4-.1 7.6 7.6 0 0 1-2.3-.7 5.2 5.2 0 0 1-1.8-1h-.3a.4.4 0 0 0-.2-.2 1.3 1.3 0 0 1-.7-.2l-1-.6c-.9-.6-1.3-.7-1.4-.6a18.4 18.4 0 0 1-.3-3.9 6.2 6.2 0 0 1 .1-1 9.5 9.5 0 0 1 .3-1.2 9.3 9.3 0 0 0 .3-1.5l.3-2.7.4-2.2a2.8 2.8 0 0 1 .3-1.1 1 1 0 0 0 .2-1c0-.3-.3-.4-.7-.3h-.8a2.1 2.1 0 0 0-.7-.2h-.4l-.2-.1h-.1c0 .3-.5.5-1.4.7a35.3 35.3 0 0 0-12 4.3l-4 2.4a68.8 68.8 0 0 0-7.5 6.4c-1.2 1.2-2.1 2.5-3.2 3.8a32 32 0 0 0-2.5 3.3 4.7 4.7 0 0 0-1 1.9 78.7 78.7 0 0 0 9.6 2.3c5.7.9 8.5 1.6 8.6 2.2 0 .1.2.2.7.2a4 4 0 0 1 2.4.7 21.8 21.8 0 0 1 3.5 2.3 38.8 38.8 0 0 1 3.8 3 20.7 20.7 0 0 1 3.2 3.1c.6.8 1.2 1.6 2 2.4l2 2a36.1 36.1 0 0 1 4.8 6.2 12.4 12.4 0 0 1 2 5.3 14 14 0 0 1-.9 6.6 32.4 32.4 0 0 1-3.3 7.1 39.2 39.2 0 0 1-5.3 6.9 35.4 35.4 0 0 1-6.7 5.7 34.3 34.3 0 0 1-7.9 4 46.3 46.3 0 0 1-8.5 2 27.2 27.2 0 0 1-3.9.3 48 48 0 0 1-3 .2 15.4 15.4 0 0 1-4.7-1 8.6 8.6 0 0 1-3.2-2.4l-2.6-2.4a27.4 27.4 0 0 0-3-2.8l-2.4-2.6a22.5 22.5 0 0 1-1.7-1.9c-1.4-1.5-1.7-3-.9-4.3l.6-.8 1.5 1.5a27.4 27.4 0 0 0 3.1 2.8 6.9 6.9 0 0 0 2.7.4h2.3l3.3-.3 3-.2a12.5 12.5 0 0 0 2.3-.6 1.9 1.9 0 0 1 1-.4l1.4-.6a9.2 9.2 0 0 1 1.4-.4 1.9 1.9 0 0 0 1-.4 17.8 17.8 0 0 0 3.4-1.5 83 83 0 0 0 4.5-2.7 44 44 0 0 0 5.5-4.5 31.6 31.6 0 0 0 4.3-5.1 23.7 23.7 0 0 0 2.2-3.7 22.8 22.8 0 0 0 1.7-3.9 14.7 14.7 0 0 0 .8-3.3 3.4 3.4 0 0 0 0-2.3 3 3 0 0 0-1.3-.8 14.5 14.5 0 0 0-2.3-.9 28 28 0 0 0-3-1l-2.9-.6-7.2-1.3a62.6 62.6 0 0 1-10-2.8l-2.6-1.3a17.2 17.2 0 0 1-2-1.5 61.7 61.7 0 0 1-4.7-5l-3-3.4a60 60 0 0 1-4.3-4.9 4.3 4.3 0 0 1-.8-2.9 17.3 17.3 0 0 1 .4-2.8 16.7 16.7 0 0 1 1.7-3 22.4 22.4 0 0 1 2.8-4l4-4.2a56.6 56.6 0 0 1 4.2-3.9 42 42 0 0 1 4.3-3.3 44.8 44.8 0 0 1 15.4-6.6 37.1 37.1 0 0 1 16-.4l2 .4h1a11.5 11.5 0 0 1 1.2-3 16.5 16.5 0 0 1 1.8-3.5c.6-.9 1-1.1 1.1-.7 0 .2.2.4.6.4a2.4 2.4 0 0 1 1 .4 12.5 12.5 0 0 1 1.5 1.1 9.6 9.6 0 0 1 1.4 1.1 11.8 11.8 0 0 1 1 .9c.3.5.7.7 1.1.4h.6s.2.2.3.7c0 .7 0 1 .2.8a.3.3 0 0 1 .3.3l.3.3q0 .8.4 0c.3-.5.6-.7.9-.6a14.4 14.4 0 0 1 2.1 1.6zm-52.4 23.3c-.6.5-.8.7-.5.7s.3-.1.5-.6zm42.2 1.4c0-.7 0-1-.3-.7a2.7 2.7 0 0 0-.2 1.3q.1.3 0 .4c-.1.1-.3.1-.4 0-.4 0-.6 0-.6.2s.2.4.6.7.4.1.5 0a5 5 0 0 0 .4-1.8zm.4-3a4.9 4.9 0 0 0 .3-1.1.1.1 0 0 0-.1-.1.1.1 0 0 0-.2.1 1.6 1.6 0 0 0-.3 1.1c.1.5.2.5.3 0zm.7-3.1a1.9 1.9 0 0 0 .3-1.3c0-.2-.1-.2-.4.2a1.2 1.2 0 0 1-.1.5v.6q0 .6.2 0zm9.4-17c.3 0 .4-.2.3-.6a.1.1 0 0 0-.2-.1v-.4c.1 0 0 .2-.4.5 0 .4.1.6.3.6zM487.4 2.9l-1.4 8.3a10.5 10.5 0 0 1-1.3 3.7 1.9 1.9 0 0 1-1 1c-.4.3-.5 0-.3-.4.2-.3.2-.3-.1 0-.8.7-1.4.6-1.7-.3 0-.3-.2-.3-.4 0s-.4.1-.6-.2-.6-.4-1.5-.3a4.7 4.7 0 0 1-1.8 0 22.5 22.5 0 0 1-2.6-.2 14.3 14.3 0 0 1-2.5-.4c-.8-.2-1.2-.5-1.3-.7q-1.2-2-.5-7.3 0-2 .6-5.8s-.2-.4 2-.2c.4 0 .8.4 1.3.5 1.5.2 3.6 0 5.6.3.7 0 .3.3 1 .4 1.7.4 4.4.6 5.5.9s1 .7 1 .7M175.3 0h16.3v16.4h-16.3z"/></g></svg>
\ No newline at end of file diff --git a/.github/assets/monogram-dark.svg b/.github/assets/monogram-dark.svg new file mode 100644 index 000000000..feccf6fe8 --- /dev/null +++ b/.github/assets/monogram-dark.svg @@ -0,0 +1 @@ +<svg fill="none" height="40" viewBox="0 0 240 40" width="240" xmlns="http://www.w3.org/2000/svg"><g fill="#fff"><path clip-rule="evenodd" d="m31 40-4-10.6-4 10.6h-2l5-13.2-4-10.5-9 23.7h-2l10-26.4-4.5-11.8-14.5 38.2h-2l15.2-40h2.6l4.2 11 4.2-11h2.6l3.7 9.7 3.7-9.7h2.6l4.2 11 4.2-11h2.6l15.2 40h-2l-14.5-38.2-4.5 11.8 10 26.4h-2l-9-23.7-4 10.5 5 13.2h-2l-4-10.6-4 10.6zm1.5-25-4.5 11.7 4.5 11.9 4.5-11.8zm-5-13.2-4.5 11.8 4 10.6 4.5-11.9zm10 0-4 10.5 4.5 11.9 4-10.6z" fill-rule="evenodd"/><path d="m97.7259 17.956v11.044h2.7061v-15.4h-2.8821l-4.686 7.282-4.686-7.282h-2.882v15.4h2.662v-11l4.818 7.216h.088z"/><path d="m121.687 21.278c0-1.0853-.198-2.112-.594-3.08s-.946-1.8113-1.65-2.53-1.547-1.2833-2.53-1.694c-.982-.4253-2.068-.638-3.256-.638s-2.273.2127-3.256.638c-.982.4253-1.833 1.0047-2.552 1.738-.718.7187-1.276 1.562-1.672 2.53s-.594 1.9947-.594 3.08.198 2.112.594 3.08.946 1.8113 1.65 2.53 1.548 1.2907 2.53 1.716c.983.4107 2.068.616 3.256.616s2.274-.2127 3.256-.638c.983-.4253 1.834-.9973 2.552-1.716.719-.7333 1.276-1.584 1.672-2.552s.594-1.9947.594-3.08zm-2.838.044c0 .748-.132 1.4593-.396 2.134-.249.66-.601 1.2393-1.056 1.738-.454.484-1.004.8727-1.65 1.166-.63.2787-1.327.418-2.09.418-.762 0-1.466-.1467-2.112-.44-.645-.2933-1.202-.6893-1.672-1.188-.454-.4987-.814-1.078-1.078-1.738-.249-.6747-.374-1.386-.374-2.134s.125-1.452.374-2.112c.264-.6747.624-1.254 1.078-1.738.455-.4987.998-.8873 1.628-1.166.646-.2933 1.35-.44 2.112-.44.763 0 1.467.1467 2.112.44.646.2933 1.196.6893 1.65 1.188.47.4987.829 1.0853 1.078 1.76.264.66.396 1.364.396 2.112z"/><path d="m137.585 24.248-8.25-10.648h-2.508v15.4h2.662v-10.956l8.492 10.956h2.266v-15.4h-2.662z"/><path d="m161.5 21.278c0-1.0853-.198-2.112-.594-3.08s-.946-1.8113-1.65-2.53-1.548-1.2833-2.53-1.694c-.983-.4253-2.068-.638-3.256-.638s-2.274.2127-3.256.638c-.983.4253-1.834 1.0047-2.552 1.738-.719.7187-1.276 1.562-1.672 2.53s-.594 1.9947-.594 3.08.198 2.112.594 3.08.946 1.8113 1.65 2.53 1.547 1.2907 2.53 1.716c.982.4107 2.068.616 3.256.616s2.273-.2127 3.256-.638c.982-.4253 1.833-.9973 2.552-1.716.718-.7333 1.276-1.584 1.672-2.552s.594-1.9947.594-3.08zm-2.838.044c0 .748-.132 1.4593-.396 2.134-.25.66-.602 1.2393-1.056 1.738-.455.484-1.005.8727-1.65 1.166-.631.2787-1.328.418-2.09.418-.763 0-1.467-.1467-2.112-.44-.646-.2933-1.203-.6893-1.672-1.188-.455-.4987-.814-1.078-1.078-1.738-.25-.6747-.374-1.386-.374-2.134s.124-1.452.374-2.112c.264-.6747.623-1.254 1.078-1.738.454-.4987.997-.8873 1.628-1.166.645-.2933 1.349-.44 2.112-.44.762 0 1.466.1467 2.112.44.645.2933 1.195.6893 1.65 1.188.469.4987.828 1.0853 1.078 1.76.264.66.396 1.364.396 2.112z"/><path d="m180.367 26.866v-6.468h-6.556v2.354h3.938v2.882c-.469.352-1.027.638-1.672.858-.631.2053-1.313.308-2.046.308-.792 0-1.511-.1393-2.156-.418-.631-.2787-1.181-.66-1.65-1.144-.455-.4987-.807-1.0853-1.056-1.76s-.374-1.408-.374-2.2c0-.748.125-1.452.374-2.112.264-.66.616-1.2393 1.056-1.738.455-.4987.983-.8873 1.584-1.166.616-.2933 1.276-.44 1.98-.44.484 0 .924.044 1.32.132.411.0733.785.1833 1.122.33.337.132.66.3007.968.506s.609.4327.902.682l1.716-2.046c-.396-.3373-.807-.6307-1.232-.88-.411-.264-.851-.484-1.32-.66s-.983-.308-1.54-.396c-.543-.1027-1.151-.154-1.826-.154-1.159 0-2.229.2127-3.212.638-.968.4253-1.804 1.0047-2.508 1.738-.704.7187-1.254 1.562-1.65 2.53-.381.968-.572 1.9947-.572 3.08 0 1.1293.191 2.178.572 3.146s.917 1.8113 1.606 2.53c.704.704 1.547 1.2613 2.53 1.672.983.396 2.075.594 3.278.594.675 0 1.32-.066 1.936-.198.616-.1173 1.188-.286 1.716-.506.543-.22 1.041-.4767 1.496-.77.469-.2933.895-.6013 1.276-.924z"/><path d="m198.829 29-4.158-5.83c.543-.1467 1.034-.352 1.474-.616.455-.2787.843-.6087 1.166-.99.323-.396.572-.8433.748-1.342.191-.5133.286-1.0927.286-1.738 0-.748-.132-1.4227-.396-2.024-.264-.616-.645-1.1293-1.144-1.54-.484-.4253-1.085-.748-1.804-.968-.704-.2347-1.496-.352-2.376-.352h-6.864v15.4h2.706v-5.368h3.388l3.784 5.368zm-3.234-10.362c0 .792-.286 1.4227-.858 1.892s-1.342.704-2.31.704h-3.96v-5.17h3.938c1.012 0 1.797.22 2.354.66.557.4253.836 1.0633.836 1.914z"/><path d="m211.934 13.49h-2.508l-6.776 15.51h2.772l1.584-3.718h7.282l1.562 3.718h2.86zm1.364 9.394h-5.302l2.64-6.16z"/><path d="m236.31 17.956v11.044h2.706v-15.4h-2.882l-4.686 7.282-4.686-7.282h-2.882v15.4h2.662v-11l4.818 7.216h.088z"/></g></svg>
\ No newline at end of file diff --git a/.github/assets/monogram.svg b/.github/assets/monogram.svg new file mode 100644 index 000000000..e60aa428e --- /dev/null +++ b/.github/assets/monogram.svg @@ -0,0 +1 @@ +<svg fill="none" height="40" viewBox="0 0 240 40" width="240" xmlns="http://www.w3.org/2000/svg"><g fill="#000"><path clip-rule="evenodd" d="m31 40-4-10.6-4 10.6h-2l5-13.2-4-10.5-9 23.7h-2l10-26.4-4.5-11.8-14.5 38.2h-2l15.2-40h2.6l4.2 11 4.2-11h2.6l3.7 9.7 3.7-9.7h2.6l4.2 11 4.2-11h2.6l15.2 40h-2l-14.5-38.2-4.5 11.8 10 26.4h-2l-9-23.7-4 10.5 5 13.2h-2l-4-10.6-4 10.6zm1.5-25-4.5 11.7 4.5 11.9 4.5-11.8zm-5-13.2-4.5 11.8 4 10.6 4.5-11.9zm10 0-4 10.5 4.5 11.9 4-10.6z" fill-rule="evenodd"/><path d="m97.7259 17.956v11.044h2.7061v-15.4h-2.8821l-4.686 7.282-4.686-7.282h-2.882v15.4h2.662v-11l4.818 7.216h.088z"/><path d="m121.687 21.278c0-1.0853-.198-2.112-.594-3.08s-.946-1.8113-1.65-2.53-1.547-1.2833-2.53-1.694c-.982-.4253-2.068-.638-3.256-.638s-2.273.2127-3.256.638c-.982.4253-1.833 1.0047-2.552 1.738-.718.7187-1.276 1.562-1.672 2.53s-.594 1.9947-.594 3.08.198 2.112.594 3.08.946 1.8113 1.65 2.53 1.548 1.2907 2.53 1.716c.983.4107 2.068.616 3.256.616s2.274-.2127 3.256-.638c.983-.4253 1.834-.9973 2.552-1.716.719-.7333 1.276-1.584 1.672-2.552s.594-1.9947.594-3.08zm-2.838.044c0 .748-.132 1.4593-.396 2.134-.249.66-.601 1.2393-1.056 1.738-.454.484-1.004.8727-1.65 1.166-.63.2787-1.327.418-2.09.418-.762 0-1.466-.1467-2.112-.44-.645-.2933-1.202-.6893-1.672-1.188-.454-.4987-.814-1.078-1.078-1.738-.249-.6747-.374-1.386-.374-2.134s.125-1.452.374-2.112c.264-.6747.624-1.254 1.078-1.738.455-.4987.998-.8873 1.628-1.166.646-.2933 1.35-.44 2.112-.44.763 0 1.467.1467 2.112.44.646.2933 1.196.6893 1.65 1.188.47.4987.829 1.0853 1.078 1.76.264.66.396 1.364.396 2.112z"/><path d="m137.585 24.248-8.25-10.648h-2.508v15.4h2.662v-10.956l8.492 10.956h2.266v-15.4h-2.662z"/><path d="m161.5 21.278c0-1.0853-.198-2.112-.594-3.08s-.946-1.8113-1.65-2.53-1.548-1.2833-2.53-1.694c-.983-.4253-2.068-.638-3.256-.638s-2.274.2127-3.256.638c-.983.4253-1.834 1.0047-2.552 1.738-.719.7187-1.276 1.562-1.672 2.53s-.594 1.9947-.594 3.08.198 2.112.594 3.08.946 1.8113 1.65 2.53 1.547 1.2907 2.53 1.716c.982.4107 2.068.616 3.256.616s2.273-.2127 3.256-.638c.982-.4253 1.833-.9973 2.552-1.716.718-.7333 1.276-1.584 1.672-2.552s.594-1.9947.594-3.08zm-2.838.044c0 .748-.132 1.4593-.396 2.134-.25.66-.602 1.2393-1.056 1.738-.455.484-1.005.8727-1.65 1.166-.631.2787-1.328.418-2.09.418-.763 0-1.467-.1467-2.112-.44-.646-.2933-1.203-.6893-1.672-1.188-.455-.4987-.814-1.078-1.078-1.738-.25-.6747-.374-1.386-.374-2.134s.124-1.452.374-2.112c.264-.6747.623-1.254 1.078-1.738.454-.4987.997-.8873 1.628-1.166.645-.2933 1.349-.44 2.112-.44.762 0 1.466.1467 2.112.44.645.2933 1.195.6893 1.65 1.188.469.4987.828 1.0853 1.078 1.76.264.66.396 1.364.396 2.112z"/><path d="m180.367 26.866v-6.468h-6.556v2.354h3.938v2.882c-.469.352-1.027.638-1.672.858-.631.2053-1.313.308-2.046.308-.792 0-1.511-.1393-2.156-.418-.631-.2787-1.181-.66-1.65-1.144-.455-.4987-.807-1.0853-1.056-1.76s-.374-1.408-.374-2.2c0-.748.125-1.452.374-2.112.264-.66.616-1.2393 1.056-1.738.455-.4987.983-.8873 1.584-1.166.616-.2933 1.276-.44 1.98-.44.484 0 .924.044 1.32.132.411.0733.785.1833 1.122.33.337.132.66.3007.968.506s.609.4327.902.682l1.716-2.046c-.396-.3373-.807-.6307-1.232-.88-.411-.264-.851-.484-1.32-.66s-.983-.308-1.54-.396c-.543-.1027-1.151-.154-1.826-.154-1.159 0-2.229.2127-3.212.638-.968.4253-1.804 1.0047-2.508 1.738-.704.7187-1.254 1.562-1.65 2.53-.381.968-.572 1.9947-.572 3.08 0 1.1293.191 2.178.572 3.146s.917 1.8113 1.606 2.53c.704.704 1.547 1.2613 2.53 1.672.983.396 2.075.594 3.278.594.675 0 1.32-.066 1.936-.198.616-.1173 1.188-.286 1.716-.506.543-.22 1.041-.4767 1.496-.77.469-.2933.895-.6013 1.276-.924z"/><path d="m198.829 29-4.158-5.83c.543-.1467 1.034-.352 1.474-.616.455-.2787.843-.6087 1.166-.99.323-.396.572-.8433.748-1.342.191-.5133.286-1.0927.286-1.738 0-.748-.132-1.4227-.396-2.024-.264-.616-.645-1.1293-1.144-1.54-.484-.4253-1.085-.748-1.804-.968-.704-.2347-1.496-.352-2.376-.352h-6.864v15.4h2.706v-5.368h3.388l3.784 5.368zm-3.234-10.362c0 .792-.286 1.4227-.858 1.892s-1.342.704-2.31.704h-3.96v-5.17h3.938c1.012 0 1.797.22 2.354.66.557.4253.836 1.0633.836 1.914z"/><path d="m211.934 13.49h-2.508l-6.776 15.51h2.772l1.584-3.718h7.282l1.562 3.718h2.86zm1.364 9.394h-5.302l2.64-6.16z"/><path d="m236.31 17.956v11.044h2.706v-15.4h-2.882l-4.686 7.282-4.686-7.282h-2.882v15.4h2.662v-11l4.818 7.216h.088z"/></g></svg>
\ No newline at end of file diff --git a/.github/assets/netlify-dark.svg b/.github/assets/netlify-dark.svg new file mode 100644 index 000000000..2fcff1dde --- /dev/null +++ b/.github/assets/netlify-dark.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 147 40" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><radialGradient id="a" cx="-779.0521" cy="1839.7205" gradientTransform="matrix(0 38.301 44.1228 0 -81154.2578 29839.2441)" gradientUnits="userSpaceOnUse" r="1.0011"><stop offset="0" stop-color="#20c6b7"/><stop offset="1" stop-color="#4d9abf"/></radialGradient><path clip-rule="evenodd" d="m53.37 12.98.12 2.2c1.4-1.7 3.24-2.55 5.53-2.55 3.95 0 5.96 2.27 6.03 6.8v12.57h-4.26v-12.32c0-1.21-.26-2.1-.78-2.68s-1.37-.87-2.55-.87c-1.72 0-3 .78-3.84 2.34v13.53h-4.26v-19.02zm24.38 19.37c-2.7 0-4.89-.85-6.57-2.56-1.68-1.7-2.52-3.98-2.52-6.81v-.53c0-1.9.36-3.59 1.1-5.09.73-1.49 1.76-2.66 3.08-3.49s2.79-1.25 4.42-1.25c2.58 0 4.58.83 5.99 2.48s2.11 3.99 2.11 7.01v1.72h-12.4c.13 1.57.65 2.81 1.57 3.73s2.07 1.37 3.46 1.37c1.95 0 3.54-.79 4.77-2.37l2.3 2.2c-.76 1.14-1.77 2.02-3.04 2.65s-2.69.94-4.27.94zm-.51-16.29c-1.17 0-2.11.41-2.83 1.23s-1.18 1.96-1.38 3.43h8.12v-.32c-.09-1.43-.47-2.51-1.14-3.24-.67-.74-1.59-1.1-2.77-1.1zm16.76-7.7v4.62h3.35v3.16h-3.35v10.62c0 .73.14 1.25.43 1.57s.8.48 1.54.48c.5 0 1-.06 1.49-.18v3.31c-.97.27-1.9.4-2.81.4-3.27 0-4.91-1.81-4.91-5.43v-10.77h-3.12v-3.16h3.12v-4.63zm11.14 23.64h-4.26v-27h4.26zm9.17 0h-4.26v-19.02h4.26zm-4.52-23.96c0-.65.21-1.2.62-1.63.42-.43 1.01-.65 1.78-.65s1.37.22 1.79.65.63.98.63 1.64c0 .64-.21 1.18-.63 1.61s-1.02.64-1.79.64-1.36-.21-1.78-.64c-.41-.44-.62-.98-.62-1.62zm10.66 23.96v-15.86h-2.89v-3.16h2.89v-1.74c0-2.11.58-3.74 1.75-4.89s2.81-1.72 4.91-1.72c.75 0 1.54.11 2.39.32l-.1 3.34c-.54-.1-1.08-.15-1.63-.14-2.04 0-3.05 1.05-3.05 3.15v1.69h3.86v3.16h-3.86v15.85zm17.87-6.12 3.86-12.9h4.54l-7.54 21.9c-1.16 3.2-3.12 4.8-5.89 4.8-.62 0-1.3-.11-2.05-.32v-3.31l.81.05c1.07 0 1.88-.2 2.43-.59.54-.39.97-1.05 1.29-1.98l.61-1.64-6.66-18.93h4.6z" fill="#fff" fill-rule="evenodd"/><path d="m27.89 14.14-.01-.01c-.01 0-.02-.01-.02-.01-.02-.02-.03-.06-.03-.09l.77-4.73 3.62 3.63-3.77 1.6c-.01 0-.02.01-.03.01h-.02s-.01-.01-.02-.02c-.14-.16-.31-.29-.49-.38zm5.26-.29 3.88 3.88c.81.81 1.21 1.21 1.35 1.67.02.07.04.14.05.21l-9.26-3.92s-.01 0-.01-.01c-.04-.02-.08-.03-.08-.07s.04-.06.08-.07l.01-.01zm5.12 7c-.2.38-.59.77-1.25 1.43l-4.37 4.37-5.65-1.18-.03-.01c-.05-.01-.1-.02-.1-.06-.04-.47-.28-.9-.66-1.19-.02-.02-.02-.06-.01-.09v-.01l1.06-6.53v-.02c.01-.05.01-.11.06-.11.46-.06.88-.3 1.16-.67.01-.01.01-.02.03-.03.03-.01.07 0 .1.01zm-6.62 6.8-7.19 7.19 1.23-7.56v-.01c0-.01 0-.02.01-.03.01-.02.04-.03.06-.04h.01c.27-.11.51-.29.69-.52.02-.03.05-.06.09-.06h.03zm-8.71 8.71-.81.81-8.95-12.94s-.01-.01-.01-.01c-.01-.02-.03-.04-.03-.06s.01-.03.02-.04l.01-.01c.03-.04.05-.08.07-.12l.02-.03c.01-.02.03-.05.05-.06s.05-.01.07 0l9.92 2.05c.03 0 .05.02.08.03.01.01.02.03.02.04.14.53.52.97 1.03 1.17.03.01.02.05 0 .08-.01.01-.01.03-.01.05-.12.74-1.19 7.27-1.48 9.04zm-1.69 1.69c-.6.59-.95.9-1.35 1.03-.39.12-.81.12-1.21 0-.47-.15-.87-.55-1.67-1.36l-8.99-8.99 2.35-3.64c.01-.02.02-.03.04-.05s.06-.01.09 0c.54.16 1.12.13 1.64-.08.03-.01.05-.02.07 0l.03.03zm-14.09-10.19-2.06-2.06 4.07-1.74c.01 0 .02-.01.03-.01.03 0 .05.03.07.07.04.06.08.12.13.18l.01.02c.01.02 0 .03-.01.05zm-2.98-2.97-2.61-2.61c-.44-.44-.77-.77-.99-1.04l7.94 1.65h.03c.05.01.1.02.1.06 0 .05-.06.07-.11.09l-.02.01zm-4.05-5c.01-.17.04-.33.09-.5.15-.47.55-.87 1.36-1.67l3.34-3.34c1.54 2.23 3.08 4.46 4.63 6.69.03.04.06.08.03.11-.15.16-.29.34-.4.53-.01.02-.03.05-.05.06-.01.01-.03 0-.04 0zm5.68-6.4 4.49-4.49c.42.19 1.96.83 3.33 1.41 1.04.44 1.99.84 2.29.97.03.01.06.02.07.05.01.02 0 .04 0 .06-.14.66.05 1.35.52 1.83.03.03 0 .07-.03.11l-.01.02-4.56 7.06c-.01.02-.02.04-.04.05s-.06.01-.09 0c-.18-.05-.36-.07-.54-.07-.16 0-.34.03-.52.06-.02 0-.04.01-.05 0-.02-.01-.03-.03-.05-.05zm5.4-5.4 5.81-5.81c.81-.81 1.21-1.21 1.67-1.36.39-.12.81-.12 1.21 0 .47.15.87.55 1.67 1.36l1.26 1.26-4.14 6.4c-.01.02-.02.03-.04.05s-.06.01-.09 0c-.66-.2-1.38-.06-1.92.37-.03.03-.07.01-.1 0-.53-.24-4.73-2.01-5.33-2.27zm12.5-3.67 3.82 3.82-.92 5.7v.02c0 .01 0 .03-.01.04-.01.02-.03.02-.05.03-.2.06-.38.15-.55.27-.01.01-.01.01-.02.02s-.02.02-.04.02c-.01 0-.03 0-.04-.01l-5.82-2.47-.01-.01c-.04-.02-.08-.03-.08-.07-.03-.32-.14-.64-.31-.91-.03-.05-.06-.09-.03-.14zm-3.93 8.6 5.45 2.31c.03.01.06.03.08.06.01.02.01.04 0 .06-.02.08-.03.17-.03.26v.15c0 .04-.04.05-.08.07h-.01c-.86.37-12.13 5.17-12.15 5.17s-.03 0-.05-.02c-.03-.03 0-.07.03-.11 0-.01.01-.01.01-.02l4.48-6.94.01-.01c.03-.04.06-.09.1-.09l.05.01c.1.01.19.03.28.03.68 0 1.31-.33 1.69-.9.01-.02.02-.03.03-.04.04-.01.08 0 .11.01zm-6.25 9.19 12.28-5.24s.02 0 .03.02c.07.07.12.11.18.15l.03.02c.02.01.05.03.05.06v.02l-1.05 6.46v.03c-.01.05-.01.11-.06.11-.57.04-1.08.36-1.37.85v.01c-.01.02-.03.05-.05.06s-.05.01-.07 0l-9.79-2.02c-.02-.02-.16-.53-.18-.53z" fill="url(#a)"/></svg>
\ No newline at end of file diff --git a/.github/assets/netlify.svg b/.github/assets/netlify.svg new file mode 100644 index 000000000..aa07cbcab --- /dev/null +++ b/.github/assets/netlify.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 147 40" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><radialGradient id="a" cx="-779.0521" cy="1839.7205" gradientTransform="matrix(0 38.301 44.1228 0 -81154.2578 29839.2441)" gradientUnits="userSpaceOnUse" r="1.0011"><stop offset="0" stop-color="#20c6b7"/><stop offset="1" stop-color="#4d9abf"/></radialGradient><path clip-rule="evenodd" d="m53.37 12.98.12 2.2c1.4-1.7 3.24-2.55 5.53-2.55 3.95 0 5.96 2.27 6.03 6.8v12.57h-4.26v-12.32c0-1.21-.26-2.1-.78-2.68s-1.37-.87-2.55-.87c-1.72 0-3 .78-3.84 2.34v13.53h-4.26v-19.02zm24.38 19.37c-2.7 0-4.89-.85-6.57-2.56-1.68-1.7-2.52-3.98-2.52-6.81v-.53c0-1.9.36-3.59 1.1-5.09.73-1.49 1.76-2.66 3.08-3.49s2.79-1.25 4.42-1.25c2.58 0 4.58.83 5.99 2.48s2.11 3.99 2.11 7.01v1.72h-12.4c.13 1.57.65 2.81 1.57 3.73s2.07 1.37 3.46 1.37c1.95 0 3.54-.79 4.77-2.37l2.3 2.2c-.76 1.14-1.77 2.02-3.04 2.65s-2.69.94-4.27.94zm-.51-16.29c-1.17 0-2.11.41-2.83 1.23s-1.18 1.96-1.38 3.43h8.12v-.32c-.09-1.43-.47-2.51-1.14-3.24-.67-.74-1.59-1.1-2.77-1.1zm16.76-7.7v4.62h3.35v3.16h-3.35v10.62c0 .73.14 1.25.43 1.57s.8.48 1.54.48c.5 0 1-.06 1.49-.18v3.31c-.97.27-1.9.4-2.81.4-3.27 0-4.91-1.81-4.91-5.43v-10.77h-3.12v-3.16h3.12v-4.63zm11.14 23.64h-4.26v-27h4.26zm9.17 0h-4.26v-19.02h4.26zm-4.52-23.96c0-.65.21-1.2.62-1.63.42-.43 1.01-.65 1.78-.65s1.37.22 1.79.65.63.98.63 1.64c0 .64-.21 1.18-.63 1.61s-1.02.64-1.79.64-1.36-.21-1.78-.64c-.41-.44-.62-.98-.62-1.62zm10.66 23.96v-15.86h-2.89v-3.16h2.89v-1.74c0-2.11.58-3.74 1.75-4.89s2.81-1.72 4.91-1.72c.75 0 1.54.11 2.39.32l-.1 3.34c-.54-.1-1.08-.15-1.63-.14-2.04 0-3.05 1.05-3.05 3.15v1.69h3.86v3.16h-3.86v15.85zm17.87-6.12 3.86-12.9h4.54l-7.54 21.9c-1.16 3.2-3.12 4.8-5.89 4.8-.62 0-1.3-.11-2.05-.32v-3.31l.81.05c1.07 0 1.88-.2 2.43-.59.54-.39.97-1.05 1.29-1.98l.61-1.64-6.66-18.93h4.6z" fill="#0e1e25" fill-rule="evenodd"/><path d="m27.89 14.14-.01-.01c-.01 0-.02-.01-.02-.01-.02-.02-.03-.06-.03-.09l.77-4.73 3.62 3.63-3.77 1.6c-.01 0-.02.01-.03.01h-.02s-.01-.01-.02-.02c-.14-.16-.31-.29-.49-.38zm5.26-.29 3.88 3.88c.81.81 1.21 1.21 1.35 1.67.02.07.04.14.05.21l-9.26-3.92s-.01 0-.01-.01c-.04-.02-.08-.03-.08-.07s.04-.06.08-.07l.01-.01zm5.12 7c-.2.38-.59.77-1.25 1.43l-4.37 4.37-5.65-1.18-.03-.01c-.05-.01-.1-.02-.1-.06-.04-.47-.28-.9-.66-1.19-.02-.02-.02-.06-.01-.09v-.01l1.06-6.53v-.02c.01-.05.01-.11.06-.11.46-.06.88-.3 1.16-.67.01-.01.01-.02.03-.03.03-.01.07 0 .1.01zm-6.62 6.8-7.19 7.19 1.23-7.56v-.01c0-.01 0-.02.01-.03.01-.02.04-.03.06-.04h.01c.27-.11.51-.29.69-.52.02-.03.05-.06.09-.06h.03zm-8.71 8.71-.81.81-8.95-12.94s-.01-.01-.01-.01c-.01-.02-.03-.04-.03-.06s.01-.03.02-.04l.01-.01c.03-.04.05-.08.07-.12l.02-.03c.01-.02.03-.05.05-.06s.05-.01.07 0l9.92 2.05c.03 0 .05.02.08.03.01.01.02.03.02.04.14.53.52.97 1.03 1.17.03.01.02.05 0 .08-.01.01-.01.03-.01.05-.12.74-1.19 7.27-1.48 9.04zm-1.69 1.69c-.6.59-.95.9-1.35 1.03-.39.12-.81.12-1.21 0-.47-.15-.87-.55-1.67-1.36l-8.99-8.99 2.35-3.64c.01-.02.02-.03.04-.05s.06-.01.09 0c.54.16 1.12.13 1.64-.08.03-.01.05-.02.07 0l.03.03zm-14.09-10.19-2.06-2.06 4.07-1.74c.01 0 .02-.01.03-.01.03 0 .05.03.07.07.04.06.08.12.13.18l.01.02c.01.02 0 .03-.01.05zm-2.98-2.97-2.61-2.61c-.44-.44-.77-.77-.99-1.04l7.94 1.65h.03c.05.01.1.02.1.06 0 .05-.06.07-.11.09l-.02.01zm-4.05-5c.01-.17.04-.33.09-.5.15-.47.55-.87 1.36-1.67l3.34-3.34c1.54 2.23 3.08 4.46 4.63 6.69.03.04.06.08.03.11-.15.16-.29.34-.4.53-.01.02-.03.05-.05.06-.01.01-.03 0-.04 0zm5.68-6.4 4.49-4.49c.42.19 1.96.83 3.33 1.41 1.04.44 1.99.84 2.29.97.03.01.06.02.07.05.01.02 0 .04 0 .06-.14.66.05 1.35.52 1.83.03.03 0 .07-.03.11l-.01.02-4.56 7.06c-.01.02-.02.04-.04.05s-.06.01-.09 0c-.18-.05-.36-.07-.54-.07-.16 0-.34.03-.52.06-.02 0-.04.01-.05 0-.02-.01-.03-.03-.05-.05zm5.4-5.4 5.81-5.81c.81-.81 1.21-1.21 1.67-1.36.39-.12.81-.12 1.21 0 .47.15.87.55 1.67 1.36l1.26 1.26-4.14 6.4c-.01.02-.02.03-.04.05s-.06.01-.09 0c-.66-.2-1.38-.06-1.92.37-.03.03-.07.01-.1 0-.53-.24-4.73-2.01-5.33-2.27zm12.5-3.67 3.82 3.82-.92 5.7v.02c0 .01 0 .03-.01.04-.01.02-.03.02-.05.03-.2.06-.38.15-.55.27-.01.01-.01.01-.02.02s-.02.02-.04.02c-.01 0-.03 0-.04-.01l-5.82-2.47-.01-.01c-.04-.02-.08-.03-.08-.07-.03-.32-.14-.64-.31-.91-.03-.05-.06-.09-.03-.14zm-3.93 8.6 5.45 2.31c.03.01.06.03.08.06.01.02.01.04 0 .06-.02.08-.03.17-.03.26v.15c0 .04-.04.05-.08.07h-.01c-.86.37-12.13 5.17-12.15 5.17s-.03 0-.05-.02c-.03-.03 0-.07.03-.11 0-.01.01-.01.01-.02l4.48-6.94.01-.01c.03-.04.06-.09.1-.09l.05.01c.1.01.19.03.28.03.68 0 1.31-.33 1.69-.9.01-.02.02-.03.03-.04.04-.01.08 0 .11.01zm-6.25 9.19 12.28-5.24s.02 0 .03.02c.07.07.12.11.18.15l.03.02c.02.01.05.03.05.06v.02l-1.05 6.46v.03c-.01.05-.01.11-.06.11-.57.04-1.08.36-1.37.85v.01c-.01.02-.03.05-.05.06s-.05.01-.07 0l-9.79-2.02c-.02-.02-.16-.53-.18-.53z" fill="url(#a)"/></svg>
\ No newline at end of file diff --git a/.github/assets/qoddi-dark.png b/.github/assets/qoddi-dark.png Binary files differnew file mode 100644 index 000000000..b666799d9 --- /dev/null +++ b/.github/assets/qoddi-dark.png diff --git a/.github/assets/qoddi.png b/.github/assets/qoddi.png Binary files differnew file mode 100644 index 000000000..e7a1c3c43 --- /dev/null +++ b/.github/assets/qoddi.png diff --git a/.github/assets/sentry-dark.svg b/.github/assets/sentry-dark.svg new file mode 100644 index 000000000..1e09e141b --- /dev/null +++ b/.github/assets/sentry-dark.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 360.27 79.35" xmlns="http://www.w3.org/2000/svg"><g fill="#fff"><path d="m52.16 4.07c-2.4-3.98-7.57-5.26-11.55-2.86-1.17.71-2.16 1.69-2.86 2.86l-11.86 20.31c18.43 9.2 30.6 27.48 31.98 48.04h-8.32c-1.38-17.62-11.98-33.19-27.86-40.94l-10.97 18.97c8.92 4 15.18 12.26 16.63 21.93h-19.12c-.75-.05-1.32-.71-1.27-1.46.01-.19.07-.37.15-.54l5.3-9.01c-1.79-1.5-3.85-2.66-6.05-3.42l-5.24 9.01c-2.28 3.9-.96 8.91 2.95 11.19.03.02.07.04.1.06 1.24.7 2.64 1.07 4.07 1.08h26.18c.98-12.21-4.49-24.04-14.42-31.2l4.16-7.21c12.54 8.61 19.6 23.22 18.56 38.4h22.18c1.05-23-10.21-44.83-29.57-57.3l8.41-14.41c.39-.65 1.23-.87 1.89-.49.96.52 36.57 62.65 37.23 63.37.37.66.13 1.49-.53 1.86-.21.12-.45.18-.7.17h-8.58c.11 2.29.11 4.58 0 6.86h8.61c4.57.03 8.29-3.65 8.32-8.22 0-.03 0-.06 0-.09 0-1.44-.38-2.86-1.12-4.11z"/><path d="m223.91 50.96-26.59-34.34h-6.63v46.04h6.72v-35.29l27.35 35.28h5.87v-46.04h-6.72zm-66.98-8.54h23.84v-5.98h-23.86v-13.86h26.9v-5.98h-33.75v46.05h34.09v-5.98h-27.24zm-28.03-5.84c-9.28-2.23-11.87-4-11.87-8.29 0-3.86 3.41-6.47 8.49-6.47 4.63.14 9.09 1.75 12.74 4.59l3.6-5.1c-4.62-3.62-10.35-5.53-16.22-5.41-9.12 0-15.48 5.41-15.48 13.1 0 8.29 5.41 11.15 15.24 13.55 8.76 2.02 11.44 3.89 11.44 8.09s-3.6 6.79-9.17 6.79c-5.54-.03-10.88-2.12-14.95-5.87l-4.05 4.85c5.22 4.49 11.89 6.95 18.77 6.94 9.87 0 16.22-5.32 16.22-13.53-.06-6.95-4.17-10.68-14.76-13.24zm223.62-19.97-13.86 21.62-13.76-21.62h-8.04l18.18 27.84v18.22h6.92v-18.43l18.31-27.62zm-116.45 6.24h15.08v39.82h6.92v-39.82h15.08v-6.23h-37.06zm69.08 21.84c6.95-1.93 10.81-6.79 10.81-13.75 0-8.85-6.47-14.41-16.9-14.41h-20.47v46.11h6.85v-16.55h11.62l11.68 16.58h8l-12.61-17.69zm-19.73-4.51v-17.48h12.92c6.74 0 10.59 3.19 10.59 8.72s-4.13 8.76-10.52 8.76z"/></g></svg>
\ No newline at end of file diff --git a/.github/assets/sentry.svg b/.github/assets/sentry.svg new file mode 100644 index 000000000..56e122e04 --- /dev/null +++ b/.github/assets/sentry.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 360.27 79.35" xmlns="http://www.w3.org/2000/svg"><g fill="#362d59"><path d="m52.16 4.07c-2.4-3.98-7.57-5.26-11.55-2.86-1.17.71-2.16 1.69-2.86 2.86l-11.86 20.31c18.43 9.2 30.6 27.48 31.98 48.04h-8.32c-1.38-17.62-11.98-33.19-27.86-40.94l-10.97 18.97c8.92 4 15.18 12.26 16.63 21.93h-19.12c-.75-.05-1.32-.71-1.27-1.46.01-.19.07-.37.15-.54l5.3-9.01c-1.79-1.5-3.85-2.66-6.05-3.42l-5.24 9.01c-2.28 3.9-.96 8.91 2.95 11.19.03.02.07.04.1.06 1.24.7 2.64 1.07 4.07 1.08h26.18c.98-12.21-4.49-24.04-14.42-31.2l4.16-7.21c12.54 8.61 19.6 23.22 18.56 38.4h22.18c1.05-23-10.21-44.83-29.57-57.3l8.41-14.41c.39-.65 1.23-.87 1.89-.49.96.52 36.57 62.65 37.23 63.37.37.66.13 1.49-.53 1.86-.21.12-.45.18-.7.17h-8.58c.11 2.29.11 4.58 0 6.86h8.61c4.57.03 8.29-3.65 8.32-8.22 0-.03 0-.06 0-.09 0-1.44-.38-2.86-1.12-4.11z"/><path d="m223.91 50.96-26.59-34.34h-6.63v46.04h6.72v-35.29l27.35 35.28h5.87v-46.04h-6.72zm-66.98-8.54h23.84v-5.98h-23.86v-13.86h26.9v-5.98h-33.75v46.05h34.09v-5.98h-27.24zm-28.03-5.84c-9.28-2.23-11.87-4-11.87-8.29 0-3.86 3.41-6.47 8.49-6.47 4.63.14 9.09 1.75 12.74 4.59l3.6-5.1c-4.62-3.62-10.35-5.53-16.22-5.41-9.12 0-15.48 5.41-15.48 13.1 0 8.29 5.41 11.15 15.24 13.55 8.76 2.02 11.44 3.89 11.44 8.09s-3.6 6.79-9.17 6.79c-5.54-.03-10.88-2.12-14.95-5.87l-4.05 4.85c5.22 4.49 11.89 6.95 18.77 6.94 9.87 0 16.22-5.32 16.22-13.53-.06-6.95-4.17-10.68-14.76-13.24zm223.62-19.97-13.86 21.62-13.76-21.62h-8.04l18.18 27.84v18.22h6.92v-18.43l18.31-27.62zm-116.45 6.24h15.08v39.82h6.92v-39.82h15.08v-6.23h-37.06zm69.08 21.84c6.95-1.93 10.81-6.79 10.81-13.75 0-8.85-6.47-14.41-16.9-14.41h-20.47v46.11h6.85v-16.55h11.62l11.68 16.58h8l-12.61-17.69zm-19.73-4.51v-17.48h12.92c6.74 0 10.59 3.19 10.59 8.72s-4.13 8.76-10.52 8.76z"/></g></svg>
\ No newline at end of file diff --git a/.github/assets/shipshape-dark.svg b/.github/assets/shipshape-dark.svg new file mode 100644 index 000000000..038534ec9 --- /dev/null +++ b/.github/assets/shipshape-dark.svg @@ -0,0 +1 @@ +<svg height="127" viewBox="0 0 479 127" width="479" xmlns="http://www.w3.org/2000/svg"><g fill="#fff" fill-rule="evenodd"><path d="m37.823915 111.138766.161085-.556766.0236064.080573c1.3124277 4.436265 3.351416 7.965105 6.0682315 10.508064 5.6924994 5.328221 13.7701886 5.359822 18.7448512.342492l.3961224-.412256c2.9877311-3.201649 3.8673729-6.968801 3.0341273-10.467332l-.0979388-.376541.2015432-.138309c6.6847597-4.764174 5.6087905-16.3367176-.1880354-20.5266526l-.1585078-.1110384.0548432-.0236829c5.3070157-2.4590044 5.6239066-12.3608441 3.1016089-18.4119919l-.284516-.6686883c-.2188965-.5364536-.4273526-1.1258175-.6230739-1.7527504l-.1598622-.5308865.0278918-.057448c1.2626663-2.7291114 2.6509523-6.1057095 3.9690561-9.9388606 2.6397173-7.6765088 4.2974388-15.2523603 4.5204789-22.3925961.6646338-21.277087-11.6353398-34.84333083-38.3106615-34.84333083-25.510564 0-37.98900047 12.46218863-38.29892741 32.43999903l-.00632043.7393687c-.01595679 10.8503677 3.28479687 22.2102829 7.77682372 32.2887069l.36365882.8081609-.02866036.1151948c-.29775102 1.1333905-.64056811 2.2042218-1.01865723 3.1293175l-.27752578.6516753c-2.52778469 6.0500354-2.21402191 15.9634803 3.09654363 18.4241295l.05329974.0236829-.15696434.1110384c-5.85948999 4.2352285-6.89550597 16.0135416.03147735 20.6787516l.28148699.18221-.0212341.089528c-.8150352 3.525463.0899316 7.316796 3.0725313 10.528786l.1928018.202931c4.9645817 5.268681 13.1262529 5.321555 18.7892579-.180885 2.5116695-2.440455 4.4137205-5.779532 5.6695581-9.954594zm.4808503-104.27800153c52.7213966 0 25.6361625 56.21233443 23.4360155 60.61099463.3485822 1.5154252.876036 3.4474894 1.6092528 5.2311138l.20509.4823381c1.656977 3.7659265 1.1002621 10.4274493 0 10.8223997-1.0809593.3880215-1.0137813-5.8456277-3.7042265-10.5707571l-.1467912-.2516426c-.4231617-.7080548-.7568427-1.3492155-1.0183137-1.9276969l.1148674.7322755c.5767733 3.8740759.8546932 9.0790256-1.0201535 12.1627536-2.3820601 4.0747063 1.9729255 17.2327888 3.2656119 17.4110008 1.0743526.148113.8677464-2.7958485.8527986-4.9751959l-.0001044-.4112257.0100648-.4737638c.0379242-1.0008715.1907145-1.6263054.6813025-1.292458 2.2951637 1.5618693 4.1241092 9.6412054-.8538076 11.4030124-4.5372022 1.605828-13.0186671-11.4030122-10.4665877-21.6613698 1.3773683-4.1579205-1.0382708-12.9013999-1.7505972-16.4084772l.134931.8580179c.6120003 4.0862737 1.3733608 12.0712383-.2350866 22.6623824l-.0935921.6022735c-2.5548233 16.0754952 2.5883785 21.7455312 4.2636272 21.0967962 2.3222729-.912345.9324378-4.869791.9324378-5.555212 1.0512876-1.86746 9.5296917 3.937594 4.3422916 9.563714l-.1780037.18746c-4.8630908 5.160974-17.722084 1.854108-16.314787-24.0000054.8376674-8.2278114-1.8637629-16.5275291-4.2781535-21.5096393l-.313945.6344671c-2.4208692 4.9810612-5.1077952 12.6192605-4.2672668 20.8751722 1.4072969 25.8541134-10.9166596 29.1609794-15.7797503 24.0000054-5.5547297-5.683632 2.7269295-11.639384 3.7898981-9.751174l-.0969477.318816c-.3029292 1.064041-1.0996547 4.469197.8531657 5.236396 1.6584962.642247 6.6962898-4.236751 4.3179373-19.9324322l-.0743524-.4789431c-1.9802001-12.4598427-.6757727-21.4116026.0111769-24.8080947l-.1184339.5097725c-.9013408 3.7826922-3.2402401 11.9297806-1.9254795 15.8987047 2.5520794 10.2583576-5.7124803 23.2671978-10.2496825 21.6613698-4.97791682-1.761807-3.1489713-9.8411431-.8538076-11.4030124 1.5440613-1.0507407-.2580784 7.4010904 1.5440615 7.1526434 1.2926864-.178212 5.647672-13.3362945 3.2656119-17.4110008-1.9958046-3.2826781-1.5521057-8.9691134-.9052861-12.8950291-.2178925.4820679-.4859309 1.007663-.8141096 1.5792245l-.2042041.3484724c-2.8400018 4.7520302-2.7507556 11.2173501-3.8510177 10.8223997-1.0791033-.3873552-1.6353639-6.8025783-.0931507-10.6019873l.0931507-.2204124c1.0227951-2.3245771 1.6790398-5.0009215 2.0315505-6.709061l-.4212603-.8972047c-5.01063815-10.8423134-24.3811629-58.71818083 24.2740552-58.71818083z" fill-rule="nonzero"/><circle cx="20.967125" cy="56.968095" r="4.989042"/><circle cx="55.239671" cy="56.968095" r="4.989042"/><g fill-rule="nonzero" transform="translate(94.752 35.424)"><path d="m23.76 22.464c2.544.768 4.752 1.56 6.624 2.376s3.78 1.884 5.724 3.204 3.444 2.964 4.5 4.932 1.584 4.2 1.584 6.696c0 5.088-1.932 8.952-5.796 11.592s-8.868 3.96-15.012 3.96c-4.464 0-8.364-.852-11.7-2.556s-6.564-4.236-9.684-7.596l8.064-7.992c1.008 2.112 2.832 4.068 5.472 5.868s5.256 2.7 7.848 2.7c6.144-.096 9.216-2.088 9.216-5.976 0-2.112-.9-3.756-2.7-4.932s-4.188-2.22-7.164-3.132c-2.448-.72-4.572-1.476-6.372-2.268s-3.66-1.836-5.58-3.132-3.408-2.892-4.464-4.788-1.584-4.068-1.584-6.516c0-4.656 1.836-8.304 5.508-10.944s8.052-3.96 13.14-3.96c8.016 0 15.12 3.408 21.312 10.224l-7.776 7.776c-1.632-2.16-3.624-4.104-5.976-5.832s-4.872-2.592-7.56-2.592c-1.968 0-3.648.444-5.04 1.332s-2.088 2.244-2.088 4.068c0 1.056.276 1.992.828 2.808s1.38 1.524 2.484 2.124 2.076 1.068 2.916 1.404 1.932.72 3.276 1.152z"/><path d="m84.6 34.272v20.304h-10.656v-20.304c0-2.784-.42-4.776-1.26-5.976s-2.292-1.8-4.356-1.8c-4.56 0-6.84 2.592-6.84 7.776v20.304h-10.656v-52.272h10.656v20.664c1.008-2.976 4.224-4.464 9.648-4.464 4.896 0 8.364 1.236 10.404 3.708s3.06 6.492 3.06 12.06z"/><path d="m103.464 19.008v35.568h-10.656v-35.568zm.288-10.224c0 1.536-.54 2.82-1.62 3.852s-2.436 1.548-4.068 1.548c-1.536 0-2.856-.528-3.96-1.584s-1.656-2.328-1.656-3.816.552-2.736 1.656-3.744 2.424-1.512 3.96-1.512c1.632 0 2.988.504 4.068 1.512s1.62 2.256 1.62 3.744z"/><path d="m148.248 36.864c0 5.328-1.608 9.708-4.824 13.14s-7.416 5.148-12.6 5.148c-1.152 0-2.592-.3-4.32-.9s-2.976-1.284-3.744-2.052v19.08h-10.656v-52.272h10.656v2.52c1.68-2.016 4.128-3.024 7.344-3.024 5.232 0 9.564 1.74 12.996 5.22s5.148 7.86 5.148 13.14zm-10.728 0c0-2.832-.792-5.256-2.376-7.272s-3.504-3.024-5.76-3.024c-1.344 0-2.64.456-3.888 1.368s-2.232 2.088-2.952 3.528c-.768 1.728-1.152 3.528-1.152 5.4 0 1.92.384 3.696 1.152 5.328 1.68 3.264 3.96 4.896 6.84 4.896 2.256 0 4.176-1.008 5.76-3.024s2.376-4.416 2.376-7.2z"/><path d="m198.36 22.464c2.544.768 4.752 1.56 6.624 2.376s3.78 1.884 5.724 3.204 3.444 2.964 4.5 4.932 1.584 4.2 1.584 6.696c0 5.088-1.932 8.952-5.796 11.592s-8.868 3.96-15.012 3.96c-4.464 0-8.364-.852-11.7-2.556s-6.564-4.236-9.684-7.596l8.064-7.992c1.008 2.112 2.832 4.068 5.472 5.868s5.256 2.7 7.848 2.7c6.144-.096 9.216-2.088 9.216-5.976 0-2.112-.9-3.756-2.7-4.932s-4.188-2.22-7.164-3.132c-2.448-.72-4.572-1.476-6.372-2.268s-3.66-1.836-5.58-3.132-3.408-2.892-4.464-4.788-1.584-4.068-1.584-6.516c0-4.656 1.836-8.304 5.508-10.944s8.052-3.96 13.14-3.96c8.016 0 15.12 3.408 21.312 10.224l-7.776 7.776c-1.632-2.16-3.624-4.104-5.976-5.832s-4.872-2.592-7.56-2.592c-1.968 0-3.648.444-5.04 1.332s-2.088 2.244-2.088 4.068c0 1.056.276 1.992.828 2.808s1.38 1.524 2.484 2.124 2.076 1.068 2.916 1.404 1.932.72 3.276 1.152z"/><path d="m259.2 34.272v20.304h-10.656v-20.304c0-2.784-.42-4.776-1.26-5.976s-2.292-1.8-4.356-1.8c-4.56 0-6.84 2.592-6.84 7.776v20.304h-10.656v-52.272h10.656v20.664c1.008-2.976 4.224-4.464 9.648-4.464 4.896 0 8.364 1.236 10.404 3.708s3.06 6.492 3.06 12.06z"/><path d="m275.76 29.52-7.92-4.536c3.888-4.368 8.832-6.552 14.832-6.552 4.944 0 8.676 1.116 11.196 3.348s3.78 4.884 3.78 7.956v24.84h-10.656v-2.52c-1.92 2.016-4.56 3.024-7.92 3.024-8.976 0-13.464-3.648-13.464-10.944 0-3.792 1.428-6.828 4.284-9.108s6.708-3.42 11.556-3.42h5.544c0-1.344-.456-2.412-1.368-3.204s-2.136-1.188-3.672-1.188c-2.736 0-4.8.768-6.192 2.304zm11.232 13.32v-3.168h-6.264c-1.44 0-2.592.444-3.456 1.332s-1.2 2.004-1.008 3.348c.288 1.824 1.776 2.736 4.464 2.736 2.112 0 3.684-.456 4.716-1.368s1.548-1.872 1.548-2.88z"/><path d="m342.792 36.864c0 5.328-1.608 9.708-4.824 13.14s-7.416 5.148-12.6 5.148c-1.152 0-2.592-.3-4.32-.9s-2.976-1.284-3.744-2.052v19.08h-10.656v-52.272h10.656v2.52c1.68-2.016 4.128-3.024 7.344-3.024 5.232 0 9.564 1.74 12.996 5.22s5.148 7.86 5.148 13.14zm-10.728 0c0-2.832-.792-5.256-2.376-7.272s-3.504-3.024-5.76-3.024c-1.344 0-2.64.456-3.888 1.368s-2.232 2.088-2.952 3.528c-.768 1.728-1.152 3.528-1.152 5.4 0 1.92.384 3.696 1.152 5.328 1.68 3.264 3.96 4.896 6.84 4.896 2.256 0 4.176-1.008 5.76-3.024s2.376-4.416 2.376-7.2z"/><path d="m384.984 36.864v2.376h-25.344c0 1.968.828 3.648 2.484 5.04s3.42 2.088 5.292 2.088c3.936 0 6.696-1.464 8.28-4.392l7.128 6.552c-3.264 4.416-8.4 6.624-15.408 6.624-5.712 0-10.272-1.704-13.68-5.112s-5.112-7.8-5.112-13.176 1.644-9.78 4.932-13.212 7.692-5.148 13.212-5.148 9.936 1.704 13.248 5.112 4.968 7.824 4.968 13.248zm-25.128-4.392h13.968c-.576-3.456-2.928-5.184-7.056-5.184-1.872 0-3.408.468-4.608 1.404s-1.968 2.196-2.304 3.78z"/></g></g></svg>
\ No newline at end of file diff --git a/.github/assets/shipshape.svg b/.github/assets/shipshape.svg new file mode 100644 index 000000000..6c2e2ee70 --- /dev/null +++ b/.github/assets/shipshape.svg @@ -0,0 +1 @@ +<svg height="127" viewBox="0 0 479 127" width="479" xmlns="http://www.w3.org/2000/svg"><g fill="#3c434c" fill-rule="evenodd"><path d="m37.823915 111.138766.161085-.556766.0236064.080573c1.3124277 4.436265 3.351416 7.965105 6.0682315 10.508064 5.6924994 5.328221 13.7701886 5.359822 18.7448512.342492l.3961224-.412256c2.9877311-3.201649 3.8673729-6.968801 3.0341273-10.467332l-.0979388-.376541.2015432-.138309c6.6847597-4.764174 5.6087905-16.3367176-.1880354-20.5266526l-.1585078-.1110384.0548432-.0236829c5.3070157-2.4590044 5.6239066-12.3608441 3.1016089-18.4119919l-.284516-.6686883c-.2188965-.5364536-.4273526-1.1258175-.6230739-1.7527504l-.1598622-.5308865.0278918-.057448c1.2626663-2.7291114 2.6509523-6.1057095 3.9690561-9.9388606 2.6397173-7.6765088 4.2974388-15.2523603 4.5204789-22.3925961.6646338-21.277087-11.6353398-34.84333083-38.3106615-34.84333083-25.510564 0-37.98900047 12.46218863-38.29892741 32.43999903l-.00632043.7393687c-.01595679 10.8503677 3.28479687 22.2102829 7.77682372 32.2887069l.36365882.8081609-.02866036.1151948c-.29775102 1.1333905-.64056811 2.2042218-1.01865723 3.1293175l-.27752578.6516753c-2.52778469 6.0500354-2.21402191 15.9634803 3.09654363 18.4241295l.05329974.0236829-.15696434.1110384c-5.85948999 4.2352285-6.89550597 16.0135416.03147735 20.6787516l.28148699.18221-.0212341.089528c-.8150352 3.525463.0899316 7.316796 3.0725313 10.528786l.1928018.202931c4.9645817 5.268681 13.1262529 5.321555 18.7892579-.180885 2.5116695-2.440455 4.4137205-5.779532 5.6695581-9.954594zm.4808503-104.27800153c52.7213966 0 25.6361625 56.21233443 23.4360155 60.61099463.3485822 1.5154252.876036 3.4474894 1.6092528 5.2311138l.20509.4823381c1.656977 3.7659265 1.1002621 10.4274493 0 10.8223997-1.0809593.3880215-1.0137813-5.8456277-3.7042265-10.5707571l-.1467912-.2516426c-.4231617-.7080548-.7568427-1.3492155-1.0183137-1.9276969l.1148674.7322755c.5767733 3.8740759.8546932 9.0790256-1.0201535 12.1627536-2.3820601 4.0747063 1.9729255 17.2327888 3.2656119 17.4110008 1.0743526.148113.8677464-2.7958485.8527986-4.9751959l-.0001044-.4112257.0100648-.4737638c.0379242-1.0008715.1907145-1.6263054.6813025-1.292458 2.2951637 1.5618693 4.1241092 9.6412054-.8538076 11.4030124-4.5372022 1.605828-13.0186671-11.4030122-10.4665877-21.6613698 1.3773683-4.1579205-1.0382708-12.9013999-1.7505972-16.4084772l.134931.8580179c.6120003 4.0862737 1.3733608 12.0712383-.2350866 22.6623824l-.0935921.6022735c-2.5548233 16.0754952 2.5883785 21.7455312 4.2636272 21.0967962 2.3222729-.912345.9324378-4.869791.9324378-5.555212 1.0512876-1.86746 9.5296917 3.937594 4.3422916 9.563714l-.1780037.18746c-4.8630908 5.160974-17.722084 1.854108-16.314787-24.0000054.8376674-8.2278114-1.8637629-16.5275291-4.2781535-21.5096393l-.313945.6344671c-2.4208692 4.9810612-5.1077952 12.6192605-4.2672668 20.8751722 1.4072969 25.8541134-10.9166596 29.1609794-15.7797503 24.0000054-5.5547297-5.683632 2.7269295-11.639384 3.7898981-9.751174l-.0969477.318816c-.3029292 1.064041-1.0996547 4.469197.8531657 5.236396 1.6584962.642247 6.6962898-4.236751 4.3179373-19.9324322l-.0743524-.4789431c-1.9802001-12.4598427-.6757727-21.4116026.0111769-24.8080947l-.1184339.5097725c-.9013408 3.7826922-3.2402401 11.9297806-1.9254795 15.8987047 2.5520794 10.2583576-5.7124803 23.2671978-10.2496825 21.6613698-4.97791682-1.761807-3.1489713-9.8411431-.8538076-11.4030124 1.5440613-1.0507407-.2580784 7.4010904 1.5440615 7.1526434 1.2926864-.178212 5.647672-13.3362945 3.2656119-17.4110008-1.9958046-3.2826781-1.5521057-8.9691134-.9052861-12.8950291-.2178925.4820679-.4859309 1.007663-.8141096 1.5792245l-.2042041.3484724c-2.8400018 4.7520302-2.7507556 11.2173501-3.8510177 10.8223997-1.0791033-.3873552-1.6353639-6.8025783-.0931507-10.6019873l.0931507-.2204124c1.0227951-2.3245771 1.6790398-5.0009215 2.0315505-6.709061l-.4212603-.8972047c-5.01063815-10.8423134-24.3811629-58.71818083 24.2740552-58.71818083z" fill-rule="nonzero"/><circle cx="20.967125" cy="56.968095" r="4.989042"/><circle cx="55.239671" cy="56.968095" r="4.989042"/><g fill-rule="nonzero" transform="translate(94.752 35.424)"><path d="m23.76 22.464c2.544.768 4.752 1.56 6.624 2.376s3.78 1.884 5.724 3.204 3.444 2.964 4.5 4.932 1.584 4.2 1.584 6.696c0 5.088-1.932 8.952-5.796 11.592s-8.868 3.96-15.012 3.96c-4.464 0-8.364-.852-11.7-2.556s-6.564-4.236-9.684-7.596l8.064-7.992c1.008 2.112 2.832 4.068 5.472 5.868s5.256 2.7 7.848 2.7c6.144-.096 9.216-2.088 9.216-5.976 0-2.112-.9-3.756-2.7-4.932s-4.188-2.22-7.164-3.132c-2.448-.72-4.572-1.476-6.372-2.268s-3.66-1.836-5.58-3.132-3.408-2.892-4.464-4.788-1.584-4.068-1.584-6.516c0-4.656 1.836-8.304 5.508-10.944s8.052-3.96 13.14-3.96c8.016 0 15.12 3.408 21.312 10.224l-7.776 7.776c-1.632-2.16-3.624-4.104-5.976-5.832s-4.872-2.592-7.56-2.592c-1.968 0-3.648.444-5.04 1.332s-2.088 2.244-2.088 4.068c0 1.056.276 1.992.828 2.808s1.38 1.524 2.484 2.124 2.076 1.068 2.916 1.404 1.932.72 3.276 1.152z"/><path d="m84.6 34.272v20.304h-10.656v-20.304c0-2.784-.42-4.776-1.26-5.976s-2.292-1.8-4.356-1.8c-4.56 0-6.84 2.592-6.84 7.776v20.304h-10.656v-52.272h10.656v20.664c1.008-2.976 4.224-4.464 9.648-4.464 4.896 0 8.364 1.236 10.404 3.708s3.06 6.492 3.06 12.06z"/><path d="m103.464 19.008v35.568h-10.656v-35.568zm.288-10.224c0 1.536-.54 2.82-1.62 3.852s-2.436 1.548-4.068 1.548c-1.536 0-2.856-.528-3.96-1.584s-1.656-2.328-1.656-3.816.552-2.736 1.656-3.744 2.424-1.512 3.96-1.512c1.632 0 2.988.504 4.068 1.512s1.62 2.256 1.62 3.744z"/><path d="m148.248 36.864c0 5.328-1.608 9.708-4.824 13.14s-7.416 5.148-12.6 5.148c-1.152 0-2.592-.3-4.32-.9s-2.976-1.284-3.744-2.052v19.08h-10.656v-52.272h10.656v2.52c1.68-2.016 4.128-3.024 7.344-3.024 5.232 0 9.564 1.74 12.996 5.22s5.148 7.86 5.148 13.14zm-10.728 0c0-2.832-.792-5.256-2.376-7.272s-3.504-3.024-5.76-3.024c-1.344 0-2.64.456-3.888 1.368s-2.232 2.088-2.952 3.528c-.768 1.728-1.152 3.528-1.152 5.4 0 1.92.384 3.696 1.152 5.328 1.68 3.264 3.96 4.896 6.84 4.896 2.256 0 4.176-1.008 5.76-3.024s2.376-4.416 2.376-7.2z"/><path d="m198.36 22.464c2.544.768 4.752 1.56 6.624 2.376s3.78 1.884 5.724 3.204 3.444 2.964 4.5 4.932 1.584 4.2 1.584 6.696c0 5.088-1.932 8.952-5.796 11.592s-8.868 3.96-15.012 3.96c-4.464 0-8.364-.852-11.7-2.556s-6.564-4.236-9.684-7.596l8.064-7.992c1.008 2.112 2.832 4.068 5.472 5.868s5.256 2.7 7.848 2.7c6.144-.096 9.216-2.088 9.216-5.976 0-2.112-.9-3.756-2.7-4.932s-4.188-2.22-7.164-3.132c-2.448-.72-4.572-1.476-6.372-2.268s-3.66-1.836-5.58-3.132-3.408-2.892-4.464-4.788-1.584-4.068-1.584-6.516c0-4.656 1.836-8.304 5.508-10.944s8.052-3.96 13.14-3.96c8.016 0 15.12 3.408 21.312 10.224l-7.776 7.776c-1.632-2.16-3.624-4.104-5.976-5.832s-4.872-2.592-7.56-2.592c-1.968 0-3.648.444-5.04 1.332s-2.088 2.244-2.088 4.068c0 1.056.276 1.992.828 2.808s1.38 1.524 2.484 2.124 2.076 1.068 2.916 1.404 1.932.72 3.276 1.152z"/><path d="m259.2 34.272v20.304h-10.656v-20.304c0-2.784-.42-4.776-1.26-5.976s-2.292-1.8-4.356-1.8c-4.56 0-6.84 2.592-6.84 7.776v20.304h-10.656v-52.272h10.656v20.664c1.008-2.976 4.224-4.464 9.648-4.464 4.896 0 8.364 1.236 10.404 3.708s3.06 6.492 3.06 12.06z"/><path d="m275.76 29.52-7.92-4.536c3.888-4.368 8.832-6.552 14.832-6.552 4.944 0 8.676 1.116 11.196 3.348s3.78 4.884 3.78 7.956v24.84h-10.656v-2.52c-1.92 2.016-4.56 3.024-7.92 3.024-8.976 0-13.464-3.648-13.464-10.944 0-3.792 1.428-6.828 4.284-9.108s6.708-3.42 11.556-3.42h5.544c0-1.344-.456-2.412-1.368-3.204s-2.136-1.188-3.672-1.188c-2.736 0-4.8.768-6.192 2.304zm11.232 13.32v-3.168h-6.264c-1.44 0-2.592.444-3.456 1.332s-1.2 2.004-1.008 3.348c.288 1.824 1.776 2.736 4.464 2.736 2.112 0 3.684-.456 4.716-1.368s1.548-1.872 1.548-2.88z"/><path d="m342.792 36.864c0 5.328-1.608 9.708-4.824 13.14s-7.416 5.148-12.6 5.148c-1.152 0-2.592-.3-4.32-.9s-2.976-1.284-3.744-2.052v19.08h-10.656v-52.272h10.656v2.52c1.68-2.016 4.128-3.024 7.344-3.024 5.232 0 9.564 1.74 12.996 5.22s5.148 7.86 5.148 13.14zm-10.728 0c0-2.832-.792-5.256-2.376-7.272s-3.504-3.024-5.76-3.024c-1.344 0-2.64.456-3.888 1.368s-2.232 2.088-2.952 3.528c-.768 1.728-1.152 3.528-1.152 5.4 0 1.92.384 3.696 1.152 5.328 1.68 3.264 3.96 4.896 6.84 4.896 2.256 0 4.176-1.008 5.76-3.024s2.376-4.416 2.376-7.2z"/><path d="m384.984 36.864v2.376h-25.344c0 1.968.828 3.648 2.484 5.04s3.42 2.088 5.292 2.088c3.936 0 6.696-1.464 8.28-4.392l7.128 6.552c-3.264 4.416-8.4 6.624-15.408 6.624-5.712 0-10.272-1.704-13.68-5.112s-5.112-7.8-5.112-13.176 1.644-9.78 4.932-13.212 7.692-5.148 13.212-5.148 9.936 1.704 13.248 5.112 4.968 7.824 4.968 13.248zm-25.128-4.392h13.968c-.576-3.456-2.928-5.184-7.056-5.184-1.872 0-3.408.468-4.608 1.404s-1.968 2.196-2.304 3.78z"/></g></g></svg>
\ No newline at end of file diff --git a/.github/assets/stackup-dark.svg b/.github/assets/stackup-dark.svg new file mode 100644 index 000000000..b7a458410 --- /dev/null +++ b/.github/assets/stackup-dark.svg @@ -0,0 +1 @@ +<svg height="72" viewBox="0 0 293 72" width="293" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><mask id="a" fill="#fff"><path d="m.06949893.00531099h274.23677607v60.17524291h-274.23677607z" fill="#fff" fill-rule="evenodd"/></mask><g fill="#fff" fill-rule="evenodd" transform="translate(3.329545 3.329545)"><path d="m92.7877382 28.3462335c-4.2259219-1.3607959-7.8769423-2.5353869-7.8769423-5.7458767 0-2.6465803 2.3867654-4.3559588 6.0800451-4.3559588 3.5497744 0 5.7956758 1.0872247 7.4367421 1.8814636 1.0239057.495958 1.8329939.8869 2.6359189.8869 1.366381 0 2.318975-.9098447 2.318975-2.2132789 0-3.0304624-5.5377189-5.6893975-11.8510702-5.6893975-7.3469413 0-12.2833463 3.9005952-12.2833463 9.706481 0 6.7183781 6.0087327 8.6775005 11.3096235 10.4062937 4.4821184 1.4613995 8.3514781 2.7242392 8.3514781 6.3706779 0 3.0745868-2.6191911 5.0601839-6.6743153 5.0601839-4.0480811 0-6.6223718-1.4666944-8.5020267-2.5380343-1.024786-.5833243-1.8329936-1.0448653-2.5469983-1.0448653-1.3426106 0-2.3172138.9310244-2.3172138 2.2150438 0 3.3146234 6.2860588 6.4492193 12.9348426 6.4492193 7.6911778 0 12.6610384-4.1309244 12.6610384-10.5218995 0-7.1084376-6.2033015-9.1046245-11.6767508-10.8669522"/><path d="m124.36917 43.7917787c-.517276 0-1.004641.1877669-1.521037.3878752-.647475.2503559-1.382042.53421-2.376127.53421-2.001365 0-2.93387-1.0375663-2.93387-3.2660858v-14.0578329h5.586229c1.395237 0 2.369089-.9767404 2.369089-2.3748544 0-1.4298492-.973852-2.4295094-2.369089-2.4295094h-5.641651v-3.8611218c0-1.5647239-1.132201-2.7010221-2.692826-2.7010221-1.529835 0-2.640043 1.1362982-2.640043 2.7010221v3.8611218h-2.609253c-1.396117 0-2.370848.9767403-2.370848 2.3748543 0 1.4307307.974731 2.4295095 2.370848 2.4295095h2.609253v13.6249994c0 5.6224279 2.878447 8.7201406 8.106629 8.7201406 4.07047 0 6.266253-2.0063728 6.266253-3.8937385 0-1.0181725-.739845-2.049568-2.153557-2.049568"/><path d="m134.160916 35.7660869c0-5.0621924 3.526984-8.8802792 8.204052-8.8802792 4.647081 0 8.151134 3.8180868 8.151134 8.8802792 0 5.0931403-3.504053 8.9324485-8.151134 8.9324485-4.600337 0-8.204052-3.9233097-8.204052-8.9324485zm19.056649-13.3712618c-1.591067 0-2.701463 1.0911346-2.701463 2.6535615v.8621201c-2.140533-2.624382-5.254756-4.0603647-8.855825-4.0603647-7.324731 0-12.848487 5.9826715-12.848487 13.9159449 0 7.963337 5.523756 13.9689983 12.848487 13.9689983 3.572846 0 6.687952-1.4890361 8.855825-4.210683v1.0124385c0 1.5624269 1.110396 2.6544457 2.701463 2.6544457 1.558435 0 2.646782-1.0920188 2.646782-2.6544457v-21.4884541c0-1.5624269-1.088347-2.6535615-2.646782-2.6535615z"/><path d="m176.502903 26.8858077c2.46941 0 3.926361.6401794 5.096685 1.1530304.785802.344848 1.464007.6428321 2.226879.6428321 1.262044 0 2.211885-.9302055 2.211885-2.1645847 0-2.5730969-4.107157-4.6669435-9.1571-4.6669435-8.19844 0-14.149718 5.8526903-14.149718 13.9159449 0 8.0933182 5.905417 13.9689983 14.040358 13.9689983 5.023485 0 9.26646-2.1132995 9.26646-4.6130057 0-1.2856642-.930438-2.2194066-2.211885-2.2194066-.762872 0-1.441077.2988683-2.226879.6437163-1.170324.5137352-2.627275 1.1521462-5.096685 1.1521462-4.880612 0-8.422451-3.7570752-8.422451-8.9324485 0-5.1453097 3.541839-8.8802792 8.422451-8.8802792"/><g transform="translate(11.861506)"><path d="m236.018725 13.6136217c-1.566578 0-2.703981 1.1381496-2.703981 2.70664v18.9182028c0 5.5555486-3.310654 9.1449615-8.433381 9.1449615-5.04325 0-8.432498-3.6751276-8.432498-9.1449615v-18.9182028c0-1.5684904-1.160363-2.70664-2.759614-2.70664-1.565695 0-2.703098 1.1381496-2.703098 2.70664v18.9182028c0 8.6748562 5.563383 14.5043384 13.842226 14.5043384 8.343307 0 13.949077-5.8294822 13.949077-14.5043384v-18.9182028c0-1.5684904-1.160363-2.70664-2.758731-2.70664" mask="url(#a)"/><path d="m268.952182 35.890603c0 5.027122-3.50758 8.8188923-8.160511 8.8188923-4.684721 0-8.217027-3.7917703-8.217027-8.8188923 0-5.0368423 3.610017-8.9823687 8.217027-8.9823687 4.652931 0 8.160511 3.8624627 8.160511 8.9823687zm-7.509683-14.0147927c-3.603836 0-6.723745 1.4350582-8.867855 4.0586345v-.8624488c0-1.5614211-1.088833-2.6518533-2.650113-2.6518533-1.592187 0-2.70398 1.0904322-2.70398 2.6518533v32.4019179c0 1.5941164 1.111793 2.70664 2.70398 2.70664 1.53567 0 2.650113-1.1390333 2.650113-2.70664v-11.8957843c2.184731 2.6925015 5.305524 4.1646733 8.867855 4.1646733 7.333951 0 12.864659-5.9797038 12.864659-13.9069866 0-7.9582108-5.530708-13.960006-12.864659-13.960006z" mask="url(#a)"/><path d="m17.0166212 33.9235835c1.407624 0 2.5520912-1.1452188 2.5520912-2.5537673 0-1.4076649-1.1444672-2.5528838-2.5520912-2.5528838-6.5303512 0-11.84470592-5.3169614-11.84470592-11.8524851 0-6.5346401 5.31435472-11.85160152 11.84470592-11.85160152 1.407624 0 2.5520912-1.14610253 2.5520912-2.5537674 0-1.40766486-1.1444672-2.55376739-2.5520912-2.55376739-9.34471618 0-16.94712227 7.60739913-16.94712227 16.95913631 0 9.3508535 7.60240609 16.9591362 16.94712227 16.9591362" mask="url(#a)"/></g><path d="m26.2201705 16.912543c0 1.4077259 1.1480983 2.5538782 2.5593025 2.5538782 6.5519561 0 11.883172 5.3163084 11.883172 11.8521157 0 6.5349237-5.3312159 11.8521158-11.883172 11.8521158-1.4112042 0-2.5593025 1.1461522-2.5593025 2.5547619 0 1.4068422 1.1480983 2.5529945 2.5593025 2.5529945 9.3752504 0 17.001777-7.6077292 17.001777-16.9598722 0-9.3512592-7.6265266-16.9598721-17.001777-16.9598721-1.4112042 0-2.5593025 1.1461522-2.5593025 2.5538782"/><path d="m58.8332192 31.6306818c-1.4084959 0-2.5543909 1.147478-2.5543909 2.5579197 0 14.1274371-11.4775175 25.6208102-25.5845811 25.6208102-14.108832 0-25.58458122-11.4933731-25.58458122-25.6208102 0-1.4104417-1.14589499-2.5579197-2.55527508-2.5579197-1.40849592 0-2.5543909 1.147478-2.5543909 2.5579197 0 16.9492058 13.7693075 30.7375349 30.6942472 30.7375349 16.9240554 0 30.6942471-13.7883291 30.6942471-30.7375349 0-1.4104417-1.145895-2.5579197-2.5552751-2.5579197"/><path d="m216.004261 24.7143226c0-1.403746-1.143018-2.5450603-2.54886-2.5450603-1.40496 0-2.547978 1.1413143-2.547978 2.5450603 0 4.6216183-3.765963 8.3802056-8.393599 8.3802056h-5.300571v-19.4217165c0-1.5314394-1.136844-2.6436924-2.701439-2.6436924-1.559302 0-2.646757 1.087595-2.646757 2.6436924v32.7247205c0 1.5560974 1.111268 2.6436924 2.701439 2.6436924 1.533726 0 2.646757-1.112253 2.646757-2.6436924v-8.213764h5.300571c4.627636 0 8.393599 3.7603487 8.393599 8.3810863 0 1.4037461 1.143018 2.545941 2.547978 2.545941 1.405842 0 2.54886-1.1421949 2.54886-2.545941 0-4.3318865-2.091123-8.3881314-5.61102-10.9252659 3.519897-2.5371346 5.61102-6.5933795 5.61102-10.925266"/></g></svg>
\ No newline at end of file diff --git a/.github/assets/stackup.svg b/.github/assets/stackup.svg new file mode 100644 index 000000000..6faa178f5 --- /dev/null +++ b/.github/assets/stackup.svg @@ -0,0 +1 @@ +<svg height="72" viewBox="0 0 293 72" width="293" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><mask id="a" fill="#fff"><path d="m.06949893.00531099h274.23677607v60.17524291h-274.23677607z" fill="#fff" fill-rule="evenodd"/></mask><g fill="#000" fill-rule="evenodd" transform="translate(3.329545 3.329545)"><path d="m92.7877382 28.3462335c-4.2259219-1.3607959-7.8769423-2.5353869-7.8769423-5.7458767 0-2.6465803 2.3867654-4.3559588 6.0800451-4.3559588 3.5497744 0 5.7956758 1.0872247 7.4367421 1.8814636 1.0239057.495958 1.8329939.8869 2.6359189.8869 1.366381 0 2.318975-.9098447 2.318975-2.2132789 0-3.0304624-5.5377189-5.6893975-11.8510702-5.6893975-7.3469413 0-12.2833463 3.9005952-12.2833463 9.706481 0 6.7183781 6.0087327 8.6775005 11.3096235 10.4062937 4.4821184 1.4613995 8.3514781 2.7242392 8.3514781 6.3706779 0 3.0745868-2.6191911 5.0601839-6.6743153 5.0601839-4.0480811 0-6.6223718-1.4666944-8.5020267-2.5380343-1.024786-.5833243-1.8329936-1.0448653-2.5469983-1.0448653-1.3426106 0-2.3172138.9310244-2.3172138 2.2150438 0 3.3146234 6.2860588 6.4492193 12.9348426 6.4492193 7.6911778 0 12.6610384-4.1309244 12.6610384-10.5218995 0-7.1084376-6.2033015-9.1046245-11.6767508-10.8669522"/><path d="m124.36917 43.7917787c-.517276 0-1.004641.1877669-1.521037.3878752-.647475.2503559-1.382042.53421-2.376127.53421-2.001365 0-2.93387-1.0375663-2.93387-3.2660858v-14.0578329h5.586229c1.395237 0 2.369089-.9767404 2.369089-2.3748544 0-1.4298492-.973852-2.4295094-2.369089-2.4295094h-5.641651v-3.8611218c0-1.5647239-1.132201-2.7010221-2.692826-2.7010221-1.529835 0-2.640043 1.1362982-2.640043 2.7010221v3.8611218h-2.609253c-1.396117 0-2.370848.9767403-2.370848 2.3748543 0 1.4307307.974731 2.4295095 2.370848 2.4295095h2.609253v13.6249994c0 5.6224279 2.878447 8.7201406 8.106629 8.7201406 4.07047 0 6.266253-2.0063728 6.266253-3.8937385 0-1.0181725-.739845-2.049568-2.153557-2.049568"/><path d="m134.160916 35.7660869c0-5.0621924 3.526984-8.8802792 8.204052-8.8802792 4.647081 0 8.151134 3.8180868 8.151134 8.8802792 0 5.0931403-3.504053 8.9324485-8.151134 8.9324485-4.600337 0-8.204052-3.9233097-8.204052-8.9324485zm19.056649-13.3712618c-1.591067 0-2.701463 1.0911346-2.701463 2.6535615v.8621201c-2.140533-2.624382-5.254756-4.0603647-8.855825-4.0603647-7.324731 0-12.848487 5.9826715-12.848487 13.9159449 0 7.963337 5.523756 13.9689983 12.848487 13.9689983 3.572846 0 6.687952-1.4890361 8.855825-4.210683v1.0124385c0 1.5624269 1.110396 2.6544457 2.701463 2.6544457 1.558435 0 2.646782-1.0920188 2.646782-2.6544457v-21.4884541c0-1.5624269-1.088347-2.6535615-2.646782-2.6535615z"/><path d="m176.502903 26.8858077c2.46941 0 3.926361.6401794 5.096685 1.1530304.785802.344848 1.464007.6428321 2.226879.6428321 1.262044 0 2.211885-.9302055 2.211885-2.1645847 0-2.5730969-4.107157-4.6669435-9.1571-4.6669435-8.19844 0-14.149718 5.8526903-14.149718 13.9159449 0 8.0933182 5.905417 13.9689983 14.040358 13.9689983 5.023485 0 9.26646-2.1132995 9.26646-4.6130057 0-1.2856642-.930438-2.2194066-2.211885-2.2194066-.762872 0-1.441077.2988683-2.226879.6437163-1.170324.5137352-2.627275 1.1521462-5.096685 1.1521462-4.880612 0-8.422451-3.7570752-8.422451-8.9324485 0-5.1453097 3.541839-8.8802792 8.422451-8.8802792"/><g transform="translate(11.861506)"><path d="m236.018725 13.6136217c-1.566578 0-2.703981 1.1381496-2.703981 2.70664v18.9182028c0 5.5555486-3.310654 9.1449615-8.433381 9.1449615-5.04325 0-8.432498-3.6751276-8.432498-9.1449615v-18.9182028c0-1.5684904-1.160363-2.70664-2.759614-2.70664-1.565695 0-2.703098 1.1381496-2.703098 2.70664v18.9182028c0 8.6748562 5.563383 14.5043384 13.842226 14.5043384 8.343307 0 13.949077-5.8294822 13.949077-14.5043384v-18.9182028c0-1.5684904-1.160363-2.70664-2.758731-2.70664" mask="url(#a)"/><path d="m268.952182 35.890603c0 5.027122-3.50758 8.8188923-8.160511 8.8188923-4.684721 0-8.217027-3.7917703-8.217027-8.8188923 0-5.0368423 3.610017-8.9823687 8.217027-8.9823687 4.652931 0 8.160511 3.8624627 8.160511 8.9823687zm-7.509683-14.0147927c-3.603836 0-6.723745 1.4350582-8.867855 4.0586345v-.8624488c0-1.5614211-1.088833-2.6518533-2.650113-2.6518533-1.592187 0-2.70398 1.0904322-2.70398 2.6518533v32.4019179c0 1.5941164 1.111793 2.70664 2.70398 2.70664 1.53567 0 2.650113-1.1390333 2.650113-2.70664v-11.8957843c2.184731 2.6925015 5.305524 4.1646733 8.867855 4.1646733 7.333951 0 12.864659-5.9797038 12.864659-13.9069866 0-7.9582108-5.530708-13.960006-12.864659-13.960006z" mask="url(#a)"/><path d="m17.0166212 33.9235835c1.407624 0 2.5520912-1.1452188 2.5520912-2.5537673 0-1.4076649-1.1444672-2.5528838-2.5520912-2.5528838-6.5303512 0-11.84470592-5.3169614-11.84470592-11.8524851 0-6.5346401 5.31435472-11.85160152 11.84470592-11.85160152 1.407624 0 2.5520912-1.14610253 2.5520912-2.5537674 0-1.40766486-1.1444672-2.55376739-2.5520912-2.55376739-9.34471618 0-16.94712227 7.60739913-16.94712227 16.95913631 0 9.3508535 7.60240609 16.9591362 16.94712227 16.9591362" mask="url(#a)"/></g><path d="m26.2201705 16.912543c0 1.4077259 1.1480983 2.5538782 2.5593025 2.5538782 6.5519561 0 11.883172 5.3163084 11.883172 11.8521157 0 6.5349237-5.3312159 11.8521158-11.883172 11.8521158-1.4112042 0-2.5593025 1.1461522-2.5593025 2.5547619 0 1.4068422 1.1480983 2.5529945 2.5593025 2.5529945 9.3752504 0 17.001777-7.6077292 17.001777-16.9598722 0-9.3512592-7.6265266-16.9598721-17.001777-16.9598721-1.4112042 0-2.5593025 1.1461522-2.5593025 2.5538782"/><path d="m58.8332192 31.6306818c-1.4084959 0-2.5543909 1.147478-2.5543909 2.5579197 0 14.1274371-11.4775175 25.6208102-25.5845811 25.6208102-14.108832 0-25.58458122-11.4933731-25.58458122-25.6208102 0-1.4104417-1.14589499-2.5579197-2.55527508-2.5579197-1.40849592 0-2.5543909 1.147478-2.5543909 2.5579197 0 16.9492058 13.7693075 30.7375349 30.6942472 30.7375349 16.9240554 0 30.6942471-13.7883291 30.6942471-30.7375349 0-1.4104417-1.145895-2.5579197-2.5552751-2.5579197"/><path d="m216.004261 24.7143226c0-1.403746-1.143018-2.5450603-2.54886-2.5450603-1.40496 0-2.547978 1.1413143-2.547978 2.5450603 0 4.6216183-3.765963 8.3802056-8.393599 8.3802056h-5.300571v-19.4217165c0-1.5314394-1.136844-2.6436924-2.701439-2.6436924-1.559302 0-2.646757 1.087595-2.646757 2.6436924v32.7247205c0 1.5560974 1.111268 2.6436924 2.701439 2.6436924 1.533726 0 2.646757-1.112253 2.646757-2.6436924v-8.213764h5.300571c4.627636 0 8.393599 3.7603487 8.393599 8.3810863 0 1.4037461 1.143018 2.545941 2.547978 2.545941 1.405842 0 2.54886-1.1421949 2.54886-2.545941 0-4.3318865-2.091123-8.3881314-5.61102-10.9252659 3.519897-2.5371346 5.61102-6.5933795 5.61102-10.925266"/></g></svg>
\ No newline at end of file diff --git a/.github/assets/storyblok-dark.svg b/.github/assets/storyblok-dark.svg new file mode 100644 index 000000000..9df58c4bb --- /dev/null +++ b/.github/assets/storyblok-dark.svg @@ -0,0 +1 @@ +<svg height="53" viewBox="0 0 251 53" width="251" xmlns="http://www.w3.org/2000/svg"><g fill="none"><path d="m72.9131069 37.088562c-1.830018 0-3.6077497-.2618565-5.3854815-.8379406-1.668257-.5414509-3.2014763-1.4343074-4.4966156-2.6185645l2.3528803-3.9802178c1.3071557.8903117 2.5620251 1.5711385 3.8168946 2.0948515 1.2025833.5237127 2.4051665.7331979 3.5554635.7331979.8365797 0 1.5163006-.1571138 1.9868767-.4713417.470576-.2618562.679721-.7331979.679721-1.309282 0-.523713-.2614312-1.0474257-.8888659-1.3616536-.9826681-.4717195-2.0183968-.8233851-3.0848875-1.0474257l-3.660036-1.2045396c-.9934383-.4189703-1.7777317-.8379406-2.4051664-1.3092822-.6274348-.4189704-1.0980108-.9950545-1.359442-1.5711387-.2845857-.6611663-.4271026-1.37491-.4182898-2.0948515-.0306075-2.0614667.8730502-4.0257866 2.4574527-5.3418714.7320072-.6284555 1.6731593-1.0997971 2.7188839-1.4663961 1.0457245-.366599 2.1960216-.5237129 3.3986048-.5237129 1.6208731 0 3.1371737.2094852 4.5489018.6284555 1.4117282.4713416 2.7711701 1.2569109 4.0783259 2.4090793l-2.5620252 3.9278466c-1.0120787-.7252798-2.0988707-1.3397895-3.2417462-1.8329951-.9934383-.4189703-1.8823042-.5760842-2.8234563-.5760842-.679721 0-1.3071557.1047426-1.7777317.4189703-.5228623.2618565-.7320072.7331981-.7320072 1.3616535 0 .6284555.2614311 1.0474258.7842934 1.3616535s1.5685868.6284555 2.980315.9950545c1.3106573.330664 2.6023076.732776 3.8691809 1.2045396 1.0457245.4189703 1.8823042.8903119 2.5620252 1.3616535 1.2854303.948133 1.9959321 2.4900579 1.8823042 4.0849604 0 2.1472228-.7842935 3.823104-2.4051665 5.0800149-1.5685869 1.2569111-3.660036 1.8853666-6.4312061 1.8853666zm25.8816829-1.5187674c-.8888658.366599-1.9345903.7331979-3.0848873 1.0474258-1.1502971.3142276-2.3005941.5237127-3.5031775.5237127-.8365796 0-1.5685868-.1047424-2.300594-.3142276-.7117047-.2078242-1.371152-.5648622-1.9345903-1.0474257-.5228624-.4189703-.9411522-1.0474258-1.2548696-1.7282526-.3137173-.7331981-.5228623-1.6235098-.5228623-2.6709358v-11.2598269h-2.7188837v-4.9229011h2.77117v-6.86063871h6.4834923v6.80826741h4.3920431v4.9752724h-4.3920431v9.0078616c0 .6808268.1568587 1.2045395.5228622 1.5711387.3660036.2618563.8365796.4189703 1.359442.4189703s1.0457245-.0523713 1.5163005-.2618565c.5228624-.1571138.9934384-.3142278 1.359442-.523713l1.2548696 5.237129zm12.2349772 1.5187674c-1.663775.0290947-3.316712-.2735467-4.862619-.890312-2.720923-1.0781188-4.851972-3.2698089-5.856057-6.0226982-1.0272539-2.7344616-1.0272539-5.749687 0-8.4841486 1.004085-2.7528892 3.135134-4.9445793 5.856057-6.0226982 1.411728-.5760841 3.032601-.8903119 4.862619-.8903119 3.182838-.1500642 6.273786 1.0921486 8.470369 3.4041338.993439.9950544 1.725446 2.1995941 2.248308 3.5088763 1.070304 2.7445333 1.070304 5.7919865 0 8.53652-1.01047 2.7189338-3.11716 4.8860806-5.803771 5.9703268-1.562191.6236407-3.233594.9264074-4.914906.890312zm-4.70576-11.1027132c0 1.6758812.418289 3.0375348 1.307155 4.0325892.941153 1.0474258 2.09145 1.5711385 3.450891 1.5711385 1.313343.0254158 2.565843-.5536017 3.398605-1.5711385.41829-.523713.732007-1.0474257.993439-1.7806239.261431-.6808267.366003-1.466396.366003-2.2519653 0-1.7282525-.470576-3.089906-1.359442-4.0849605-.888866-1.0474257-2.039163-1.5711614-3.398605-1.5711614-1.308546-.0029441-2.551899.5718445-3.398604 1.5711614-.41829.5237129-.784294 1.0474258-1.045725 1.7806238-.235746.7444051-.341866 1.5238874-.313717 2.3043367zm33.097182-5.1847575c-1.568587 0-3.032601.2618564-4.339757.7855693-1.150711.388622-2.13049 1.1663134-2.77117 2.1995941v12.9357081h-6.535778v-21.5245994h6.012916v4.2944457c.732007-1.4663961 1.673159-2.6185644 2.875742-3.4041338 1.150297-.8379406 2.352881-1.2569109 3.660036-1.3092822h.679721l.41829.0523713v5.9179556zm2.875743 19.1155201c.909288.3166112 1.861275.4931919 2.823456.523713.784293 0 1.411728-.2618565 1.882304-.7855695.41829-.5237127.784294-1.5711385 1.150297-2.9327921l-8.156651-21.5245994h6.744923l4.967192 15.8685004 4.339757-15.8685004h6.117488l-8.208938 24.9811045c-1.287643 4.2430365-5.604515 6.7918589-9.934383 5.8655842-.522862-.1047425-1.150297-.2618563-1.725445-.5237128zm35.34549-2.8277346c-1.620873 0-3.084887-.3145426-4.287471-1.0477408-1.221834-.6722497-2.234966-1.6689094-2.928029-2.8804207v3.5612475h-5.699199v-29.95637675h6.588065v11.94065375c1.430165-2.5067144 4.125286-4.0176316 7.006355-3.9278467 1.359442 0 2.614311.2618565 3.764608.8903119 1.150297.5237129 2.09145 1.3616535 2.980315 2.356708 2.573782 3.5775766 3.274119 8.176142 1.882305 12.359624-.522863 1.3616536-1.25487 2.5661931-2.143736 3.5612475-1.83587 2.0160281-4.438998 3.1579388-7.163213 3.1425923zm-1.830018-5.499278c2.122416.0044567 4.013186-1.3422778 4.70576-3.3517847.766676-2.1097322.391002-4.4664649-.993438-6.2321832-.817411-1.078175-2.09951-1.7008098-3.450891-1.6758812-.993438 0-1.93459.366599-2.823456 1.0474258-.83658.733198-1.516301 1.6235099-1.986877 2.7233069v4.5039309c.843797 1.7818523 2.632288 2.9218348 4.601188 2.9327921zm15.058434-24.82401275h6.535778v22.25779755c0 1.6758812.679721 2.4614505 2.091449 2.4614505.746411.0021764 1.482145-.1775627 2.143736-.523713l.888865 4.8705298c-1.831258.8033448-3.804748 1.2307395-5.803771 1.2569111-1.882304 0-3.346319-.523713-4.339757-1.4663963-1.045724-1.0474257-1.568587-2.4090791-1.568587-4.2944454v-24.56213425zm23.999378 30.32297595c-1.663775.0290947-3.316712-.2735467-4.862619-.890312-2.737001-1.0714791-4.886783-3.2628697-5.908344-6.0226982-1.511977-4.1161516-.670789-8.7301502 2.196022-12.0453962 1.045725-1.0474258 2.196022-1.8329951 3.660036-2.4614506 1.411728-.5760841 3.032601-.8903119 4.862619-.8903119 3.182838-.1500642 6.273786 1.0921486 8.470369 3.4041338 1.045725.9950544 1.725446 2.1995941 2.248308 3.5088763 1.571667 4.1108007.724739 8.7562865-2.196022 12.0453962-.993438 1.0474257-2.196021 1.8853663-3.660036 2.4614506-1.545906.6167653-3.198844.9194067-4.862619.890312zm-4.758046-11.1027132c0 1.6758812.418289 3.0375348 1.307155 4.0325892.941152 1.0474258 2.091449 1.5711385 3.450891 1.5711385 1.31172.0177129 2.561044-.5598363 3.398605-1.5711385.41829-.523713.732007-1.0474257.993438-1.7806239.261432-.6808267.366004-1.466396.366004-2.2519653 0-1.7282525-.470576-3.089906-1.359442-4.0849605-.888866-1.0474257-2.039163-1.5711614-3.398605-1.5711614-1.308547-.0029441-2.551899.5718445-3.398605 1.5711614-.418289.5237129-.784293 1.0474258-1.045724 1.7806238-.261431.7331981-.313717 1.4663961-.313717 2.3043367zm33.933762 10.736114-5.594627-8.6936338-2.300594 2.4090793v6.2845545h-6.535778v-29.95637675h6.535778v17.33489635l7.267786-8.903119h6.954068l-7.738361 9.269718 8.365796 12.2548814z" fill="#fff"/><path d="m2.32662261 0c-1.29256812 0-2.32662261 1.0331384-2.32662261 2.27290448v40.60233922c0 1.239766 1.03405449 2.0146198 2.27491989 2.0146198h5.99751607v8.1101365l7.44519234-8.0584795h27.1956332c1.2408654 0 2.0164063-.7748538 2.0164063-2.0662768v-40.5506823c0-1.23976608-.7238382-2.3245614-2.0164063-2.3245614z" fill="#0ab3af"/><path d="m29.1016723 8.11483254c1.0334336 0 1.9118522.2064935 2.738599.67110389.7750752.41298701 1.4984787.98084416 2.0668672 1.65194807 1.157623 1.4103546 1.7797863 3.1836908 1.756837 5.0074675 0 1.3422078-.3617017 2.6327922-1.0334335 3.8717533-.6964172 1.2461943-1.7867273 2.2265561-3.1003008 2.7876623 1.6534938.4646104 2.9452857 1.2905844 3.9270476 2.4779221.9300902 1.238961 1.3951353 2.8392857 1.3951353 4.8525974 0 1.2905844-.2355416 2.4404127-.7234035 3.3038961-.5167167.9292208-1.2917919 1.7035714-2.2218821 2.2714286-.9817619.6194805-2.0668672 1.1873376-3.3069875 1.4454545-1.2401203.3097403-2.5835839.5678571-3.9787192.5678571h-18.29177429v-28.90909086zm-2.9675908 16.15701846h-10.3559515v4.8833518h10.1070104c.5974587 0 1.1451292-.2441676 1.5932233-.6348357.3983058-.3906682.647247-.9766704.647247-1.7091731.0144403-.6284528-.1775697-1.2447995-.5476706-1.7580067-.3983058-.4883351-.8463998-.7813363-1.4438586-.7813363zm-.8463999-9.7667035h-9.5095516v4.3950166h9.3103987c.4978823 0 .9957646-.2441676 1.3940704-.5371687.4480941-.2930011.647247-.9278368.647247-1.7580066 0-.7325028-.1991529-1.2696715-.5476705-1.6115061-.3485176-.2930011-.7966117-.4883352-1.294494-.4883352z" fill="#fff"/></g></svg>
\ No newline at end of file diff --git a/.github/assets/storyblok.svg b/.github/assets/storyblok.svg new file mode 100644 index 000000000..ec7759356 --- /dev/null +++ b/.github/assets/storyblok.svg @@ -0,0 +1 @@ +<svg height="53" viewBox="0 0 251 53" width="251" xmlns="http://www.w3.org/2000/svg"><g fill="none"><path d="m72.9131069 37.088562c-1.830018 0-3.6077497-.2618565-5.3854815-.8379406-1.668257-.5414509-3.2014763-1.4343074-4.4966156-2.6185645l2.3528803-3.9802178c1.3071557.8903117 2.5620251 1.5711385 3.8168946 2.0948515 1.2025833.5237127 2.4051665.7331979 3.5554635.7331979.8365797 0 1.5163006-.1571138 1.9868767-.4713417.470576-.2618562.679721-.7331979.679721-1.309282 0-.523713-.2614312-1.0474257-.8888659-1.3616536-.9826681-.4717195-2.0183968-.8233851-3.0848875-1.0474257l-3.660036-1.2045396c-.9934383-.4189703-1.7777317-.8379406-2.4051664-1.3092822-.6274348-.4189704-1.0980108-.9950545-1.359442-1.5711387-.2845857-.6611663-.4271026-1.37491-.4182898-2.0948515-.0306075-2.0614667.8730502-4.0257866 2.4574527-5.3418714.7320072-.6284555 1.6731593-1.0997971 2.7188839-1.4663961 1.0457245-.366599 2.1960216-.5237129 3.3986048-.5237129 1.6208731 0 3.1371737.2094852 4.5489018.6284555 1.4117282.4713416 2.7711701 1.2569109 4.0783259 2.4090793l-2.5620252 3.9278466c-1.0120787-.7252798-2.0988707-1.3397895-3.2417462-1.8329951-.9934383-.4189703-1.8823042-.5760842-2.8234563-.5760842-.679721 0-1.3071557.1047426-1.7777317.4189703-.5228623.2618565-.7320072.7331981-.7320072 1.3616535 0 .6284555.2614311 1.0474258.7842934 1.3616535s1.5685868.6284555 2.980315.9950545c1.3106573.330664 2.6023076.732776 3.8691809 1.2045396 1.0457245.4189703 1.8823042.8903119 2.5620252 1.3616535 1.2854303.948133 1.9959321 2.4900579 1.8823042 4.0849604 0 2.1472228-.7842935 3.823104-2.4051665 5.0800149-1.5685869 1.2569111-3.660036 1.8853666-6.4312061 1.8853666zm25.8816829-1.5187674c-.8888658.366599-1.9345903.7331979-3.0848873 1.0474258-1.1502971.3142276-2.3005941.5237127-3.5031775.5237127-.8365796 0-1.5685868-.1047424-2.300594-.3142276-.7117047-.2078242-1.371152-.5648622-1.9345903-1.0474257-.5228624-.4189703-.9411522-1.0474258-1.2548696-1.7282526-.3137173-.7331981-.5228623-1.6235098-.5228623-2.6709358v-11.2598269h-2.7188837v-4.9229011h2.77117v-6.86063871h6.4834923v6.80826741h4.3920431v4.9752724h-4.3920431v9.0078616c0 .6808268.1568587 1.2045395.5228622 1.5711387.3660036.2618563.8365796.4189703 1.359442.4189703s1.0457245-.0523713 1.5163005-.2618565c.5228624-.1571138.9934384-.3142278 1.359442-.523713l1.2548696 5.237129zm12.2349772 1.5187674c-1.663775.0290947-3.316712-.2735467-4.862619-.890312-2.720923-1.0781188-4.851972-3.2698089-5.856057-6.0226982-1.0272539-2.7344616-1.0272539-5.749687 0-8.4841486 1.004085-2.7528892 3.135134-4.9445793 5.856057-6.0226982 1.411728-.5760841 3.032601-.8903119 4.862619-.8903119 3.182838-.1500642 6.273786 1.0921486 8.470369 3.4041338.993439.9950544 1.725446 2.1995941 2.248308 3.5088763 1.070304 2.7445333 1.070304 5.7919865 0 8.53652-1.01047 2.7189338-3.11716 4.8860806-5.803771 5.9703268-1.562191.6236407-3.233594.9264074-4.914906.890312zm-4.70576-11.1027132c0 1.6758812.418289 3.0375348 1.307155 4.0325892.941153 1.0474258 2.09145 1.5711385 3.450891 1.5711385 1.313343.0254158 2.565843-.5536017 3.398605-1.5711385.41829-.523713.732007-1.0474257.993439-1.7806239.261431-.6808267.366003-1.466396.366003-2.2519653 0-1.7282525-.470576-3.089906-1.359442-4.0849605-.888866-1.0474257-2.039163-1.5711614-3.398605-1.5711614-1.308546-.0029441-2.551899.5718445-3.398604 1.5711614-.41829.5237129-.784294 1.0474258-1.045725 1.7806238-.235746.7444051-.341866 1.5238874-.313717 2.3043367zm33.097182-5.1847575c-1.568587 0-3.032601.2618564-4.339757.7855693-1.150711.388622-2.13049 1.1663134-2.77117 2.1995941v12.9357081h-6.535778v-21.5245994h6.012916v4.2944457c.732007-1.4663961 1.673159-2.6185644 2.875742-3.4041338 1.150297-.8379406 2.352881-1.2569109 3.660036-1.3092822h.679721l.41829.0523713v5.9179556zm2.875743 19.1155201c.909288.3166112 1.861275.4931919 2.823456.523713.784293 0 1.411728-.2618565 1.882304-.7855695.41829-.5237127.784294-1.5711385 1.150297-2.9327921l-8.156651-21.5245994h6.744923l4.967192 15.8685004 4.339757-15.8685004h6.117488l-8.208938 24.9811045c-1.287643 4.2430365-5.604515 6.7918589-9.934383 5.8655842-.522862-.1047425-1.150297-.2618563-1.725445-.5237128zm35.34549-2.8277346c-1.620873 0-3.084887-.3145426-4.287471-1.0477408-1.221834-.6722497-2.234966-1.6689094-2.928029-2.8804207v3.5612475h-5.699199v-29.95637675h6.588065v11.94065375c1.430165-2.5067144 4.125286-4.0176316 7.006355-3.9278467 1.359442 0 2.614311.2618565 3.764608.8903119 1.150297.5237129 2.09145 1.3616535 2.980315 2.356708 2.573782 3.5775766 3.274119 8.176142 1.882305 12.359624-.522863 1.3616536-1.25487 2.5661931-2.143736 3.5612475-1.83587 2.0160281-4.438998 3.1579388-7.163213 3.1425923zm-1.830018-5.499278c2.122416.0044567 4.013186-1.3422778 4.70576-3.3517847.766676-2.1097322.391002-4.4664649-.993438-6.2321832-.817411-1.078175-2.09951-1.7008098-3.450891-1.6758812-.993438 0-1.93459.366599-2.823456 1.0474258-.83658.733198-1.516301 1.6235099-1.986877 2.7233069v4.5039309c.843797 1.7818523 2.632288 2.9218348 4.601188 2.9327921zm15.058434-24.82401275h6.535778v22.25779755c0 1.6758812.679721 2.4614505 2.091449 2.4614505.746411.0021764 1.482145-.1775627 2.143736-.523713l.888865 4.8705298c-1.831258.8033448-3.804748 1.2307395-5.803771 1.2569111-1.882304 0-3.346319-.523713-4.339757-1.4663963-1.045724-1.0474257-1.568587-2.4090791-1.568587-4.2944454v-24.56213425zm23.999378 30.32297595c-1.663775.0290947-3.316712-.2735467-4.862619-.890312-2.737001-1.0714791-4.886783-3.2628697-5.908344-6.0226982-1.511977-4.1161516-.670789-8.7301502 2.196022-12.0453962 1.045725-1.0474258 2.196022-1.8329951 3.660036-2.4614506 1.411728-.5760841 3.032601-.8903119 4.862619-.8903119 3.182838-.1500642 6.273786 1.0921486 8.470369 3.4041338 1.045725.9950544 1.725446 2.1995941 2.248308 3.5088763 1.571667 4.1108007.724739 8.7562865-2.196022 12.0453962-.993438 1.0474257-2.196021 1.8853663-3.660036 2.4614506-1.545906.6167653-3.198844.9194067-4.862619.890312zm-4.758046-11.1027132c0 1.6758812.418289 3.0375348 1.307155 4.0325892.941152 1.0474258 2.091449 1.5711385 3.450891 1.5711385 1.31172.0177129 2.561044-.5598363 3.398605-1.5711385.41829-.523713.732007-1.0474257.993438-1.7806239.261432-.6808267.366004-1.466396.366004-2.2519653 0-1.7282525-.470576-3.089906-1.359442-4.0849605-.888866-1.0474257-2.039163-1.5711614-3.398605-1.5711614-1.308547-.0029441-2.551899.5718445-3.398605 1.5711614-.418289.5237129-.784293 1.0474258-1.045724 1.7806238-.261431.7331981-.313717 1.4663961-.313717 2.3043367zm33.933762 10.736114-5.594627-8.6936338-2.300594 2.4090793v6.2845545h-6.535778v-29.95637675h6.535778v17.33489635l7.267786-8.903119h6.954068l-7.738361 9.269718 8.365796 12.2548814z" fill="#1b243f"/><path d="m2.32662261 0c-1.29256812 0-2.32662261 1.0331384-2.32662261 2.27290448v40.60233922c0 1.239766 1.03405449 2.0146198 2.27491989 2.0146198h5.99751607v8.1101365l7.44519234-8.0584795h27.1956332c1.2408654 0 2.0164063-.7748538 2.0164063-2.0662768v-40.5506823c0-1.23976608-.7238382-2.3245614-2.0164063-2.3245614z" fill="#0ab3af"/><path d="m29.1016723 8.11483254c1.0334336 0 1.9118522.2064935 2.738599.67110389.7750752.41298701 1.4984787.98084416 2.0668672 1.65194807 1.157623 1.4103546 1.7797863 3.1836908 1.756837 5.0074675 0 1.3422078-.3617017 2.6327922-1.0334335 3.8717533-.6964172 1.2461943-1.7867273 2.2265561-3.1003008 2.7876623 1.6534938.4646104 2.9452857 1.2905844 3.9270476 2.4779221.9300902 1.238961 1.3951353 2.8392857 1.3951353 4.8525974 0 1.2905844-.2355416 2.4404127-.7234035 3.3038961-.5167167.9292208-1.2917919 1.7035714-2.2218821 2.2714286-.9817619.6194805-2.0668672 1.1873376-3.3069875 1.4454545-1.2401203.3097403-2.5835839.5678571-3.9787192.5678571h-18.29177429v-28.90909086zm-2.9675908 16.15701846h-10.3559515v4.8833518h10.1070104c.5974587 0 1.1451292-.2441676 1.5932233-.6348357.3983058-.3906682.647247-.9766704.647247-1.7091731.0144403-.6284528-.1775697-1.2447995-.5476706-1.7580067-.3983058-.4883351-.8463998-.7813363-1.4438586-.7813363zm-.8463999-9.7667035h-9.5095516v4.3950166h9.3103987c.4978823 0 .9957646-.2441676 1.3940704-.5371687.4480941-.2930011.647247-.9278368.647247-1.7580066 0-.7325028-.1991529-1.2696715-.5476705-1.6115061-.3485176-.2930011-.7966117-.4883352-1.294494-.4883352z" fill="#fff"/></g></svg>
\ No newline at end of file diff --git a/.github/assets/vercel-dark.svg b/.github/assets/vercel-dark.svg new file mode 100644 index 000000000..1fbf0317d --- /dev/null +++ b/.github/assets/vercel-dark.svg @@ -0,0 +1 @@ +<svg fill="#fff" viewBox="0 0 284 65" xmlns="http://www.w3.org/2000/svg"><path d="m37.59.25 36.95 64h-73.9z"/><path d="m129.97 5.25-27.71 48-27.71-48h10.39l17.32 30 17.32-30z"/><path d="m188.88 17.25v9.69c-1-.29-2.06-.49-3.2-.49-5.81 0-10 4-10 10v14.8h-9v-34h9v9.2c0-5.08 5.91-9.2 13.2-9.2z"/><path d="m200.88 34.25c0 6 3.92 10 10 10 4.12 0 7.21-1.87 8.8-4.92l7.68 4.43c-3.18 5.3-9.14 8.49-16.48 8.49-11.05 0-19-7.2-19-18s7.96-18 19-18c7.34 0 13.29 3.19 16.48 8.49l-7.68 4.43c-1.59-3.05-4.68-4.92-8.8-4.92-6.07 0-10 4-10 10z"/><path d="m274.36 5.25h9v46h-9z"/><path d="m268.36 34.24c0-10.79-7.96-17.99-19-17.99s-19 7.2-19 18 8.96 18 20 18c6.67 0 12.55-2.64 16.19-7.09l-7.65-4.42c-2.02 2.21-5.09 3.5-8.54 3.5-4.79 0-8.86-2.5-10.37-6.5h28.02c.22-1.12.35-2.28.35-3.5zm-28.45-3.49c1.25-3.99 4.67-6.5 9.45-6.5 4.79 0 8.21 2.51 9.45 6.5z"/><path d="m141.68 16.25c-11.04 0-19 7.2-19 18s8.96 18 20 18c6.67 0 12.55-2.64 16.19-7.09l-7.65-4.42c-2.02 2.21-5.09 3.5-8.54 3.5-4.79 0-8.86-2.5-10.37-6.5h28.02c.22-1.12.35-2.28.35-3.5 0-10.79-7.96-17.99-19-17.99zm-9.46 14.5c1.25-3.99 4.67-6.5 9.45-6.5 4.79 0 8.21 2.51 9.45 6.5z"/></svg>
\ No newline at end of file diff --git a/.github/assets/vercel.svg b/.github/assets/vercel.svg new file mode 100644 index 000000000..6711aa56f --- /dev/null +++ b/.github/assets/vercel.svg @@ -0,0 +1 @@ +<svg viewBox="0 0 284 65" xmlns="http://www.w3.org/2000/svg"><path d="m37.59.25 36.95 64h-73.9z"/><path d="m129.97 5.25-27.71 48-27.71-48h10.39l17.32 30 17.32-30z"/><path d="m188.88 17.25v9.69c-1-.29-2.06-.49-3.2-.49-5.81 0-10 4-10 10v14.8h-9v-34h9v9.2c0-5.08 5.91-9.2 13.2-9.2z"/><path d="m200.88 34.25c0 6 3.92 10 10 10 4.12 0 7.21-1.87 8.8-4.92l7.68 4.43c-3.18 5.3-9.14 8.49-16.48 8.49-11.05 0-19-7.2-19-18s7.96-18 19-18c7.34 0 13.29 3.19 16.48 8.49l-7.68 4.43c-1.59-3.05-4.68-4.92-8.8-4.92-6.07 0-10 4-10 10z"/><path d="m274.36 5.25h9v46h-9z"/><path d="m268.36 34.24c0-10.79-7.96-17.99-19-17.99s-19 7.2-19 18 8.96 18 20 18c6.67 0 12.55-2.64 16.19-7.09l-7.65-4.42c-2.02 2.21-5.09 3.5-8.54 3.5-4.79 0-8.86-2.5-10.37-6.5h28.02c.22-1.12.35-2.28.35-3.5zm-28.45-3.49c1.25-3.99 4.67-6.5 9.45-6.5 4.79 0 8.21 2.51 9.45 6.5z"/><path d="m141.68 16.25c-11.04 0-19 7.2-19 18s8.96 18 20 18c6.67 0 12.55-2.64 16.19-7.09l-7.65-4.42c-2.02 2.21-5.09 3.5-8.54 3.5-4.79 0-8.86-2.5-10.37-6.5h28.02c.22-1.12.35-2.28.35-3.5 0-10.79-7.96-17.99-19-17.99zm-9.46 14.5c1.25-3.99 4.67-6.5 9.45-6.5 4.79 0 8.21 2.51 9.45 6.5z"/></svg>
\ No newline at end of file diff --git a/.github/labeler.yml b/.github/labeler.yml new file mode 100644 index 000000000..b0d27800b --- /dev/null +++ b/.github/labeler.yml @@ -0,0 +1,44 @@ +# See https://github.com/actions/labeler + +'pkg: example': +- examples/**/* + +'π¨ action': +- .github/workflows/** + +'pkg: astro': +- packages/astro/** + +'pkg: create-astro': +- packages/create-astro/** + +'pkg: db': +- packages/integrations/db/** + +'feat: markdown': +- packages/markdown/** + +'pkg: integration': +- packages/integrations/** + +'pkg: lit': +- packages/integrations/lit/** + +'pkg: preact': +- packages/integrations/preact/** + +'pkg: react': +- packages/integrations/react/** + +'pkg: solid': +- packages/integrations/solid/** + +'pkg: svelte': +- packages/integrations/svelte/** + +'pkg: vue': +- packages/integrations/vue/** + +'docs pr': +- packages/astro/src/types/public/** +- packages/astro/src/core/errors/errors-data.ts diff --git a/.github/renovate.json5 b/.github/renovate.json5 new file mode 100644 index 000000000..92227fff4 --- /dev/null +++ b/.github/renovate.json5 @@ -0,0 +1,89 @@ +{ + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": [ + "config:recommended", + "schedule:weekly", + "group:allNonMajor", + ":disablePeerDependencies", + "regexManagers:biomeVersions", + "helpers:pinGitHubActionDigestsToSemver" + ], + "labels": [ + "dependencies" + ], + "rangeStrategy": "bump", + "postUpdateOptions": [ + "pnpmDedupe" + ], + "ignorePaths": [ + "**/node_modules/**" + ], + "packageRules": [ + { + "groupName": "github-actions", + "matchManagers": [ + "github-actions" + ] + }, + { + "groupName": "astro dependencies", + "matchManagers": [ + "npm" + ], + "matchFileNames": [ + "packages/astro/**", + "packages/integrations/mdx/**", + "packages/integrations/remark/**", + ] + }, + { + "groupName": "astro adapters", + "matchManagers": [ + "npm" + ], + "matchFileNames": [ + "packages/integrations/node/**", + "packages/integrations/netlify/**", + "packages/integrations/cloudflare/**", + "packages/integrations/vercel/**", + ] + }, + { + "groupName": "astro client runtimes", + "matchManagers": [ + "npm" + ], + "matchFileNames": [ + "packages/integrations/react/**", + "packages/integrations/solid/**", + "packages/integrations/preact/**", + "packages/integrations/svelte/**", + "packages/integrations/vue/**", + ] + } + ], + "ignoreDeps": [ + // manually bumping deps + "@biomejs/biome", + "knip", + "@types/node", + + // TODO: investigate upgrade (zod import issues with atproto) + "astro-embed", + + // TODO: investigate upgrade (has type issues) + "drizzle-orm", + "sharp", + // manually bumping workflow actions + "actions/labeler", + // ignore "engines" update + "node", + "npm", + "pnpm", + // follow vite deps version + "postcss-load-config", + "esbuild", + // TODO: follow https://github.com/withastro/astro/pull/13478 + "@vitejs/plugin-vue" + ], +} diff --git a/.github/scripts/announce.mjs b/.github/scripts/announce.mjs new file mode 100755 index 000000000..9a50dbd1d --- /dev/null +++ b/.github/scripts/announce.mjs @@ -0,0 +1,168 @@ +import { readFile } from 'node:fs/promises'; +import { fileURLToPath } from 'node:url'; +import { glob } from 'tinyglobby'; +import { setOutput } from './utils.mjs'; + +const { GITHUB_REF = 'main' } = process.env; +const baseUrl = new URL(`https://github.com/withastro/astro/blob/${GITHUB_REF}/`); + +const emojis = ['π', 'π₯³', 'π', 'π§', 'π', 'π', 'β
', 'π€©', 'π€', 'π']; +const descriptors = [ + 'new releases', + 'hot and fresh updates', + 'shiny updates', + 'exciting changes', + 'package updates', + 'awesome updates', + 'bug fixes and features', + 'updates', +]; +const verbs = [ + 'just went out!', + 'just launched!', + 'now available!', + 'in the wild!', + 'now live!', + 'hit the registry!', + 'to share!', + 'for you!', + 'for yβall! π€ ', + 'cominβ your way!', + 'cominβ atcha!', + 'cominβ in hot!', + 'freshly minted on the blockchain! (jk)', + '[is] out (now with 100% more reticulated splines!)', + '(as seen on TV!)', + 'just dropped!', + 'β artisanally hand-crafted just for you.', + 'β oh happy day!', + 'β enjoy!', + 'now out. Be the first on your block to download!', + 'made with love π', + '[is] out! Our best [version] yet!', + '[is] here. DOWNLOAD! DOWNLOAD! DOWNLOAD!', + '... HUZZAH!', + '[has] landed!', + 'landed! The internet just got a little more fun.', + 'β from our family to yours.', + 'β go forth and build!', +]; +const extraVerbs = [ + 'new', + 'here', + 'released', + 'freshly made', + 'going out', + 'hitting the registry', + 'available', + 'live now', + 'hot and fresh', + 'for you', + "comin' atcha", +]; + +function item(items) { + return items[Math.floor(Math.random() * items.length)]; +} + +const plurals = new Map([ + ['is', 'are'], + ['has', 'have'], +]); + +function pluralize(text) { + return text.replace(/(\[([^\]]+)\])/gm, (_, _full, match) => + plurals.has(match) ? plurals.get(match) : `${match}s`, + ); +} + +function singularlize(text) { + return text.replace(/(\[([^\]]+)\])/gm, (_, _full, match) => `${match}`); +} + +const packageMap = new Map(); +async function generatePackageMap() { + const packageRoot = new URL('../../packages/', import.meta.url); + const packages = await glob(['*/package.json', '*/*/package.json'], { + cwd: fileURLToPath(packageRoot), + expandDirectories: false, + ignore: ['**/node_modules/**'], + }); + await Promise.all( + packages.map(async (pkg) => { + const pkgFile = fileURLToPath(new URL(pkg, packageRoot)); + const content = await readFile(pkgFile).then((res) => JSON.parse(res.toString())); + packageMap.set(content.name, `./packages/${pkg.replace('/package.json', '')}`); + }), + ); +} + +async function generateMessage() { + await generatePackageMap(); + const releases = process.argv.slice(2)[0]; + const data = JSON.parse(releases); + const packages = await Promise.all( + data.map(({ name, version }) => { + const p = packageMap.get(name); + if (!p) { + throw new Error(`Unable to find entrypoint for "${name}"!`); + } + return { + name, + version, + url: new URL(`${p}/CHANGELOG.md#${version.replace(/\./g, '')}`, baseUrl).toString(), + }; + }), + ); + + const emoji = item(emojis); + const descriptor = item(descriptors); + const verb = item(verbs); + + let message = ''; + + if (packages.length === 1) { + const { name, version, url } = packages[0]; + message += `${emoji} \`${name}@${version}\` ${singularlize( + verb, + )}\nRead the [release notes β](<${url}>)\n`; + } else { + message += `${emoji} Some ${descriptor} ${pluralize(verb)}\n\n`; + for (const { name, version, url } of packages) { + message += `β’ \`${name}@${version}\` Read the [release notes β](<${url}>)\n`; + } + } + + if (message.length < 2000) { + return message; + } else { + const { name, version, url } = packages.find((pkg) => pkg.name === 'astro') ?? packages[0]; + message = `${emoji} Some ${descriptor} ${pluralize(verb)}\n\n`; + message += `β’ \`${name}@${version}\` Read the [release notes β](<${url}>)\n`; + + message += `\nAlso ${item(extraVerbs)}:`; + + const remainingPackages = packages.filter((p) => p.name !== name); + for (const { name, version, _url } of remainingPackages) { + message += `\nβ’ \`${name}@${version}\``; + } + + if (message.length < 2000) { + return message; + } else { + message = `${emoji} Some ${descriptor} ${pluralize(verb)}\n\n`; + message += `β’ \`${name}@${version}\` Read the [release notes β](<${url}>)\n`; + + message += `\n\nAlso ${item(extraVerbs)}: ${remainingPackages.length} other packages!`; + return message; + } + } +} + +async function run() { + const content = await generateMessage(); + console.info(content); + setOutput('DISCORD_MESSAGE', content); +} + +run(); diff --git a/.github/scripts/bundle-size.mjs b/.github/scripts/bundle-size.mjs new file mode 100644 index 000000000..76d6b3f29 --- /dev/null +++ b/.github/scripts/bundle-size.mjs @@ -0,0 +1,102 @@ +import { existsSync } from 'node:fs'; +import { build } from 'esbuild'; + +const CLIENT_RUNTIME_PATH = 'packages/astro/src/runtime/client/'; + +function formatBytes(bytes, decimals = 2) { + if (bytes === 0) return '0 B'; + + const k = 1024; + const dm = decimals < 0 ? 0 : decimals; + const sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; + + const i = Math.floor(Math.log(bytes) / Math.log(k)); + + return parseFloat((bytes / Math.pow(k, i)).toFixed(dm)) + ' ' + sizes[i]; +} + +export default async function checkBundleSize({ github, context }) { + const PR_NUM = context.payload.pull_request.number; + const SHA = context.payload.pull_request.head.sha; + + const { data: files } = await github.rest.pulls.listFiles({ + ...context.repo, + pull_number: PR_NUM, + }); + const clientRuntimeFiles = files.filter((file) => { + return file.filename.startsWith(CLIENT_RUNTIME_PATH) && file.status !== 'removed'; + }); + if (clientRuntimeFiles.length === 0) return; + + const table = [ + '| File | Old Size | New Size | Change |', + '| ---- | -------- | -------- | ------ |', + ]; + const output = await bundle(clientRuntimeFiles); + + for (let [filename, { oldSize, newSize, sourceFile }] of Object.entries(output)) { + filename = ['idle', 'load', 'media', 'only', 'visible'].includes(filename) + ? `client:${filename}` + : filename; + const prefix = newSize - oldSize === 0 ? '' : newSize - oldSize > 0 ? '+ ' : '- '; + const change = `${prefix}${formatBytes(newSize - oldSize)}`; + table.push( + `| [\`${filename}\`](https://github.com/${context.repo.owner}/${context.repo.repo}/tree/${context.payload.pull_request.head.ref}/${sourceFile}) | ${formatBytes(oldSize)} | ${formatBytes(newSize)} | ${change} |`, + ); + } + + const { data: comments } = await github.rest.issues.listComments({ + ...context.repo, + issue_number: PR_NUM, + }); + const comment = comments.find( + (comment) => + comment.user.login === 'github-actions[bot]' && comment.body.includes('Bundle Size Check'), + ); + const method = comment ? 'updateComment' : 'createComment'; + const payload = comment ? { comment_id: comment.id } : { issue_number: PR_NUM }; + await github.rest.issues[method]({ + ...context.repo, + ...payload, + body: `### βοΈ Bundle Size Check + +Latest commit: ${SHA} + +${table.join('\n')}`, + }); +} + +async function bundle(files) { + const { metafile } = await build({ + entryPoints: [ + ...files.map(({ filename }) => filename), + ...files.map(({ filename }) => `main/${filename}`).filter((f) => existsSync(f)), + ], + bundle: true, + minify: true, + sourcemap: false, + target: ['es2018'], + outdir: 'out', + external: ['astro:*', 'aria-query', 'axobject-query'], + metafile: true, + }); + + return Object.entries(metafile.outputs).reduce((acc, [filename, info]) => { + filename = filename.slice('out/'.length); + if (filename.startsWith('main/')) { + filename = filename.slice('main/'.length).replace(CLIENT_RUNTIME_PATH, '').replace('.js', ''); + const oldSize = info.bytes; + return Object.assign(acc, { + [filename]: Object.assign(acc[filename] ?? { oldSize: 0, newSize: 0 }, { oldSize }), + }); + } + filename = filename.replace(CLIENT_RUNTIME_PATH, '').replace('.js', ''); + const newSize = info.bytes; + return Object.assign(acc, { + [filename]: Object.assign(acc[filename] ?? { oldSize: 0, newSize: 0 }, { + newSize, + sourceFile: Object.keys(info.inputs).find((src) => src.endsWith('.ts')), + }), + }); + }, {}); +} diff --git a/.github/scripts/utils.mjs b/.github/scripts/utils.mjs new file mode 100644 index 000000000..768302230 --- /dev/null +++ b/.github/scripts/utils.mjs @@ -0,0 +1,53 @@ +import * as crypto from 'node:crypto'; +import * as fs from 'node:fs'; +import * as os from 'node:os'; + +/** Based on https://github.com/actions/toolkit/blob/4e3b068ce116d28cb840033c02f912100b4592b0/packages/core/src/file-command.ts */ +export function setOutput(key, value) { + const filePath = process.env['GITHUB_OUTPUT'] || ''; + if (filePath) { + return issueFileCommand('OUTPUT', prepareKeyValueMessage(key, value)); + } + process.stdout.write(os.EOL); +} + +function issueFileCommand(command, message) { + const filePath = process.env[`GITHUB_${command}`]; + if (!filePath) { + throw new Error(`Unable to find environment variable for file command ${command}`); + } + if (!fs.existsSync(filePath)) { + throw new Error(`Missing file at path: ${filePath}`); + } + + fs.appendFileSync(filePath, `${toCommandValue(message)}${os.EOL}`, { + encoding: 'utf8', + }); +} + +function prepareKeyValueMessage(key, value) { + const delimiter = `gh-delimiter-${crypto.randomUUID()}`; + const convertedValue = toCommandValue(value); + + // These should realistically never happen, but just in case someone finds a + // way to exploit uuid generation let's not allow keys or values that contain + // the delimiter. + if (key.includes(delimiter)) { + throw new Error(`Unexpected input: name should not contain the delimiter "${delimiter}"`); + } + + if (convertedValue.includes(delimiter)) { + throw new Error(`Unexpected input: value should not contain the delimiter "${delimiter}"`); + } + + return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`; +} + +function toCommandValue(input) { + if (input === null || input === undefined) { + return ''; + } else if (typeof input === 'string' || input instanceof String) { + return input; + } + return JSON.stringify(input); +} diff --git a/.github/workflows/benchmark.yml b/.github/workflows/benchmark.yml new file mode 100644 index 000000000..fdb19edf4 --- /dev/null +++ b/.github/workflows/benchmark.yml @@ -0,0 +1,112 @@ +name: Benchmark + +on: + issue_comment: + types: [created] + workflow_dispatch: + +env: + TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} + TURBO_TEAM: ${{ secrets.TURBO_TEAM }} + FORCE_COLOR: true + +jobs: + benchmark: + if: ${{ github.repository_owner == 'withastro' && github.event.issue.pull_request && startsWith(github.event.comment.body, '!bench') }} + runs-on: ubuntu-latest + permissions: + contents: read + outputs: + PR-BENCH: ${{ steps.benchmark-pr.outputs.BENCH_RESULT }} + MAIN-BENCH: ${{ steps.benchmark-main.outputs.BENCH_RESULT }} + steps: + - name: Check if user has write access + uses: lannonbr/repo-permission-check-action@2bb8c89ba8bf115c4bfab344d6a6f442b24c9a1f # 2.0.2 + with: + permission: write + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + + # https://github.com/actions/checkout/issues/331#issuecomment-1438220926 + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false + ref: refs/pull/${{ github.event.issue.number }}/head + + - name: Setup PNPM + uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + + - name: Setup Node + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + node-version: 22 + cache: "pnpm" + + - name: Install dependencies + run: pnpm install + + - name: Build Packages + run: pnpm run build + + - name: Get bench command + id: bench-command + env: + # protects from untrusted user input and command injection + COMMENT: ${{ github.event.comment.body }} + run: | + benchcmd=$(echo "$COMMENT" | grep '!bench' | awk -F ' ' '{print $2}') + echo "bench=$benchcmd" >> $GITHUB_OUTPUT + shell: bash + + - name: Run benchmark + id: benchmark-pr + run: | + result=$(pnpm run --silent benchmark ${{ steps.bench-command.outputs.bench }}) + processed=$(node ./benchmark/ci-helper.js "$result") + echo "BENCH_RESULT<<BENCHEOF" >> $GITHUB_OUTPUT + echo "### PR Benchmark" >> $GITHUB_OUTPUT + echo "$processed" >> $GITHUB_OUTPUT + echo "BENCHEOF" >> $GITHUB_OUTPUT + shell: bash + + # main benchmark + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + persist-credentials: false + ref: "main" + + - name: Install + run: | + pnpm install + + - name: Build Packages + run: pnpm run build + + - name: Run benchmark + id: benchmark-main + run: | + result=$(pnpm run --silent benchmark ${{ steps.bench-command.outputs.bench }}) + processed=$(node ./benchmark/ci-helper.js "$result") + echo "BENCH_RESULT<<BENCHEOF" >> $GITHUB_OUTPUT + echo "### Main Benchmark" >> $GITHUB_OUTPUT + echo "$processed" >> $GITHUB_OUTPUT + echo "BENCHEOF" >> $GITHUB_OUTPUT + shell: bash + + output-benchmark: + if: ${{ github.repository_owner == 'withastro' && github.event.issue.pull_request && startsWith(github.event.comment.body, '!bench') }} + needs: [benchmark] + runs-on: ubuntu-latest + permissions: + pull-requests: write + steps: + - name: Comment PR + uses: peter-evans/create-or-update-comment@71345be0265236311c031f5c7866368bd1eff043 # v4 + continue-on-error: true + with: + issue-number: ${{ github.event.issue.number }} + body: | + ${{ needs.benchmark.outputs.PR-BENCH }} + + ${{ needs.benchmark.outputs.MAIN-BENCH }} + edit-mode: replace diff --git a/.github/workflows/check-merge.yml b/.github/workflows/check-merge.yml new file mode 100644 index 000000000..d4d659ea1 --- /dev/null +++ b/.github/workflows/check-merge.yml @@ -0,0 +1,96 @@ +name: Check mergeability + +on: pull_request_target + +permissions: + pull-requests: write + checks: write + statuses: write + +jobs: + check: + runs-on: ubuntu-latest + steps: + - name: Check if there is already a block on this PR + id: blocked + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + env: + issue_number: ${{ github.event.number }} + with: + script: | + const { data: reviews } = await github.rest.pulls.listReviews({ + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: process.env.issue_number, + }); + + for (const review of reviews) { + if (review.user.login === 'github-actions[bot]' && review.state === 'CHANGES_REQUESTED') { + return 'true' + } + } + return 'false' + result-encoding: string + + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + if: steps.blocked.outputs.result != 'true' + with: + repository: ${{ github.event.pull_request.head.repo.full_name }} + ref: ${{ github.event.pull_request.head.sha }} + fetch-depth: 0 + + - name: Get changed files in the .changeset folder + id: changed-files + uses: tj-actions/changed-files@ed68ef82c095e0d48ec87eccea555d944a631a4c # v46.0.5 + if: steps.blocked.outputs.result != 'true' + with: + files: | + .changeset/**/*.md + + - name: Check if any changesets contain minor or major changes + id: check + if: steps.blocked.outputs.result != 'true' + env: + ALL_CHANGED_FILES: ${{ steps.changed-files.outputs.all_changed_files }} + run: | + echo "Checking for changesets marked as minor or major" + echo "found=false" >> $GITHUB_OUTPUT + + regex="[\"']astro[\"']: (minor|major)" + for file in ${ALL_CHANGED_FILES}; do + if [[ $(cat $file) =~ $regex ]]; then + version="${BASH_REMATCH[1]}" + echo "version=$version" >> $GITHUB_OUTPUT + echo "found=true" >> $GITHUB_OUTPUT + echo "$file has a $version release tag" + fi + done + + - name: Add label + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + if: steps.check.outputs.found == 'true' + env: + issue_number: ${{ github.event.number }} + with: + script: | + github.rest.issues.addLabels({ + issue_number: process.env.issue_number, + owner: context.repo.owner, + repo: context.repo.repo, + labels: ['semver: ${{ steps.check.outputs.version }}'] + }); + + - name: Change PR Status + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + if: steps.check.outputs.found == 'true' + env: + issue_number: ${{ github.event.number }} + with: + script: | + github.rest.pulls.createReview({ + owner: context.repo.owner, + repo: context.repo.repo, + pull_number: process.env.issue_number, + event: 'REQUEST_CHANGES', + body: 'This PR is blocked because it contains a `${{ steps.check.outputs.version }}` changeset. A reviewer will merge this at the next release if approved.' + }); diff --git a/.github/workflows/check.yml b/.github/workflows/check.yml new file mode 100644 index 000000000..aebb3a4fd --- /dev/null +++ b/.github/workflows/check.yml @@ -0,0 +1,52 @@ +name: Examples astro check + +on: + workflow_dispatch: + push: + branches: + - main + merge_group: + pull_request: + paths: + - "examples/**" + - ".github/workflows/check.yml" + - "scripts/smoke/check.js" + - "packages/astro/src/types/public/**" + - "pnpm-lock.yaml" + - "packages/astro/types.d.ts" + +env: + ASTRO_TELEMETRY_DISABLED: true + TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} + TURBO_TEAM: ${{ secrets.TURBO_TEAM }} + FORCE_COLOR: true + +jobs: + check: + name: astro check + runs-on: ubuntu-latest + timeout-minutes: 7 + steps: + - name: Check out repository + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Setup PNPM + uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + + - name: Setup Node + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + node-version: 22 + cache: "pnpm" + + - name: Install dependencies + run: pnpm install + + - name: Build + run: pnpm run build + + - name: Status + run: git status + + - name: astro check + run: pnpm run test:check-examples diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 000000000..7abb53acb --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,256 @@ +name: CI + +on: + workflow_dispatch: + push: + branches: + - main + merge_group: + pull_request: + paths-ignore: + - ".vscode/**" + - "**/*.md" + - ".github/ISSUE_TEMPLATE/**" + +# Automatically cancel older in-progress jobs on the same branch +concurrency: + group: ${{ github.workflow }}-${{ github.event_name == 'pull_request_target' && github.head_ref || github.ref }} + cancel-in-progress: true +defaults: + run: + shell: bash + +env: + TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} + TURBO_TEAM: ${{ secrets.TURBO_TEAM }} + FORCE_COLOR: true + ASTRO_TELEMETRY_DISABLED: true + # 7 GiB by default on GitHub, setting to 6 GiB + # https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources + NODE_OPTIONS: --max-old-space-size=6144 + +jobs: + # Build primes out Turbo build cache and pnpm cache + build: + name: "Build: ${{ matrix.os }}" + runs-on: ${{ matrix.os }} + timeout-minutes: 3 + strategy: + matrix: + OS: [ubuntu-latest, windows-latest] + NODE_VERSION: [22] + fail-fast: true + steps: + # Disable crlf so all OS can share the same Turbo cache + # https://github.com/actions/checkout/issues/135 + - name: Disable git crlf + run: git config --global core.autocrlf false + + - name: Checkout + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Setup PNPM + uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + + - name: Setup node@${{ matrix.NODE_VERSION }} + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + node-version: ${{ matrix.NODE_VERSION }} + cache: "pnpm" + + - name: Install dependencies + run: pnpm install + + # Only build in ubuntu as windows can share the build cache. + # Also only build in core repo as forks don't have access to the Turbo cache. + - name: Build Packages + if: ${{ matrix.os == 'ubuntu-latest' && github.repository_owner == 'withastro' }} + run: pnpm run build + + lint: + name: Lint + runs-on: ubuntu-latest + timeout-minutes: 5 + needs: build + steps: + - name: Disable git crlf + run: git config --global core.autocrlf false + + - name: Checkout + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Setup PNPM + uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + + - name: Setup Node + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + node-version: 22 + cache: "pnpm" + + - name: Install dependencies + run: pnpm install + + - name: Build Packages + # The cache doesn't contain prebuild files and causes knip to fail + run: pnpm run build --force + + - name: Lint source code + run: pnpm run lint:ci + + - name: Lint publish code + run: pnpm run publint + + test: + name: "Test: ${{ matrix.os }} (node@${{ matrix.NODE_VERSION }})" + runs-on: ${{ matrix.os }} + timeout-minutes: 25 + needs: build + strategy: + matrix: + OS: [ubuntu-latest] + NODE_VERSION: [18, 20, 22] + include: + - os: macos-14 + NODE_VERSION: 22 + - os: windows-latest + NODE_VERSION: 22 + fail-fast: false + env: + NODE_VERSION: ${{ matrix.NODE_VERSION }} + steps: + - name: Disable git crlf + run: git config --global core.autocrlf false + + - name: Checkout + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Setup PNPM + uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + + - name: Setup node@${{ matrix.NODE_VERSION }} + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + node-version: ${{ matrix.NODE_VERSION }} + cache: "pnpm" + + - name: Install dependencies + run: pnpm install + + - name: Build Packages + run: pnpm run build + + - name: Test + run: pnpm run test + + e2e: + name: "Test (E2E): ${{ matrix.os }} (node@${{ matrix.NODE_VERSION }})" + runs-on: ${{ matrix.os }} + timeout-minutes: 25 + needs: build + strategy: + matrix: + OS: [ubuntu-latest, windows-latest] + NODE_VERSION: [22] + fail-fast: false + env: + NODE_VERSION: ${{ matrix.NODE_VERSION }} + steps: + - name: Disable git crlf + run: git config --global core.autocrlf false + + - name: Checkout + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Setup PNPM + uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + + - name: Setup node@${{ matrix.NODE_VERSION }} + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + node-version: ${{ matrix.NODE_VERSION }} + cache: "pnpm" + + - name: Install dependencies + run: pnpm install + + - name: Build Packages + run: pnpm run build + + - name: Test + run: pnpm run test:e2e + + smoke: + name: "Test (Smoke): ${{ matrix.os }} (node@${{ matrix.NODE_VERSION }})" + runs-on: ${{ matrix.os }} + timeout-minutes: 25 + needs: build + strategy: + matrix: + OS: [ubuntu-latest, windows-latest] + NODE_VERSION: [22] + env: + NODE_VERSION: ${{ matrix.NODE_VERSION }} + steps: + - name: Disable git crlf + run: git config --global core.autocrlf false + + - name: Checkout + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Setup PNPM + uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + + - name: Setup node@${{ matrix.NODE_VERSION }} + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + node-version: ${{ matrix.NODE_VERSION }} + cache: "pnpm" + + - name: Checkout docs + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + repository: withastro/docs + path: smoke/docs + # For a commit event on the `next` branch (`ref_name`), use the `5.0.0-beta` branch. + # For a pull_request event merging into the `next` branch (`base_ref`), use the `5.0.0-beta` branch. + # NOTE: For a pull_request event, the `ref_name` is something like `<pr-number>/merge` than the branch name. + # NOTE: Perhaps docs repo should use a consistent `next` branch in the future. + ref: ${{ (github.ref_name == 'next' || github.base_ref == 'next') && '5.0.0-beta' || 'main' }} + + - name: Install dependencies + run: pnpm install --no-frozen-lockfile + + # Reset lockfile changes so that Turbo can reuse the old build cache + - name: Reset lockfile changes + run: git reset --hard + + - name: Build Packages + run: pnpm run build + + - name: Remove docs translations except for English and Korean + run: find smoke/docs/src/content/docs ! -name 'en' ! -name 'ko' -type d -mindepth 1 -maxdepth 1 -exec rm -rf {} + + + - name: Check if docs changed + id: changes + uses: dorny/paths-filter@de90cc6fb38fc0963ad72b210f1f284cd68cea36 # v3.0.2 + with: + filters: | + docs: + - 'packages/integrations/*/README.md' + - "packages/astro/src/types/public/**" + - 'packages/astro/src/core/errors/errors-data.ts' + + - name: Build autogenerated docs pages from current astro branch + if: ${{ steps.changes.outputs.docs == 'true' }} + run: cd smoke/docs && pnpm docgen && pnpm docgen:errors + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + SOURCE_REPO: ${{ github.event.pull_request.head.repo.full_name || github.event.repository.full_name }} + SOURCE_BRANCH: ${{ github.head_ref || github.ref_name }} + + - name: Test + run: pnpm run test:smoke + env: + SKIP_OG: true + PUBLIC_TWO_LANG: true diff --git a/.github/workflows/cleanup-cache.yml b/.github/workflows/cleanup-cache.yml new file mode 100644 index 000000000..57429c444 --- /dev/null +++ b/.github/workflows/cleanup-cache.yml @@ -0,0 +1,44 @@ +name: Cleanup cache + +on: + schedule: + - cron: "0 11 * * *" + pull_request: + types: + - closed + +jobs: + cleanup: + runs-on: ubuntu-latest + steps: + - name: Check out code + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Cleanup caches older than 5 days + if: github.event_name == 'schedule' + uses: MyAlbum/purge-cache@881eb5957687193fa612bf74c0042adc78ea5e54 # v2.2.0 + with: + max-age: 432000 + + # https://docs.github.com/en/actions/using-workflows/caching-dependencies-to-speed-up-workflows#force-deleting-cache-entries + - name: Cleanup on PR close + if: github.event_name == 'pull_request' + run: | + gh extension install actions/gh-actions-cache + + REPO=${{ github.repository }} + BRANCH="refs/pull/${{ github.event.pull_request.number }}/merge" + + echo "Fetching list of cache key" + cacheKeysForPR=$(gh actions-cache list -R $REPO -B $BRANCH -L 100 | cut -f 1 ) + + ## Setting this to not fail the workflow while deleting cache keys. + set +e + echo "Deleting caches..." + for cacheKey in $cacheKeysForPR + do + gh actions-cache delete $cacheKey -R $REPO -B $BRANCH --confirm + done + echo "Done" + env: + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/congrats.yml b/.github/workflows/congrats.yml new file mode 100644 index 000000000..4052bdac8 --- /dev/null +++ b/.github/workflows/congrats.yml @@ -0,0 +1,16 @@ +name: Congratsbot + +on: + push: + branches: + - main + +jobs: + congrats: + name: congratsbot + if: ${{ github.repository_owner == 'withastro' && github.event.head_commit.message != '[ci] format' }} + uses: withastro/automation/.github/workflows/congratsbot.yml@main + with: + EMOJIS: 'π,π,π§βπ,π₯³,π,π,π,<:houston_golden:1068575433647456447>,<:astrocoin:894990669515489301>,<:astro_pride:1130501345326157854>' + secrets: + DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK_CONGRATS }} diff --git a/.github/workflows/continuous_benchmark.yml b/.github/workflows/continuous_benchmark.yml new file mode 100644 index 000000000..9a5a3fef9 --- /dev/null +++ b/.github/workflows/continuous_benchmark.yml @@ -0,0 +1,56 @@ +name: Continuous benchmark + +on: + workflow_dispatch: + pull_request: + branches: + - main + paths: + - 'packages/astro/src/**/*.ts' + - 'benchmark/**' + push: + branches: + - main + paths: + - 'packages/astro/src/**/*.ts' + - 'benchmark/**' + +env: + TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} + TURBO_TEAM: ${{ secrets.TURBO_TEAM }} + FORCE_COLOR: true + CODSPEED: true + +jobs: + codspeed: + runs-on: ubuntu-latest + permissions: + contents: read + pull-requests: write + steps: + - name: Check out repository + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Setup PNPM + uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + + - name: Setup Node + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + node-version: 22 + cache: "pnpm" + + - name: Install dependencies + run: pnpm install + + - name: Build + run: pnpm run build + + - name: Run the benchmarks + uses: CodSpeedHQ/action@0010eb0ca6e89b80c88e8edaaa07cfe5f3e6664d # v3.5.0 + timeout-minutes: 30 + with: + working-directory: ./benchmark + run: pnpm bench + token: ${{ secrets.CODSPEED_TOKEN }} + diff --git a/.github/workflows/examples-deploy.yml b/.github/workflows/examples-deploy.yml new file mode 100644 index 000000000..06cecbe1e --- /dev/null +++ b/.github/workflows/examples-deploy.yml @@ -0,0 +1,22 @@ +# This workflow runs when changes to examples are pushed to main. +# It calls a build hook on Netlify that will redeploy preview.astro.new with the latest changes. + +name: Redeploy preview.astro.new + +on: + push: + branches: + - main + paths: + - 'examples/**' + workflow_dispatch: + +jobs: + deploy: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - name: Send a POST request to Netlify to rebuild preview.astro.new + run: 'curl -X POST -d {} ${{ env.BUILD_HOOK }}' + env: + BUILD_HOOK: ${{ secrets.NETLIFY_PREVIEWS_BUILD_HOOK }} diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml new file mode 100644 index 000000000..9faaa1886 --- /dev/null +++ b/.github/workflows/format.yml @@ -0,0 +1,15 @@ +name: Format + +on: + workflow_dispatch: + push: + branches: + - main + +jobs: + prettier: + if: github.repository_owner == 'withastro' + uses: withastro/automation/.github/workflows/format.yml@main + with: + command: "format" + secrets: inherit diff --git a/.github/workflows/issue-labeled.yml b/.github/workflows/issue-labeled.yml new file mode 100644 index 000000000..24e5ea152 --- /dev/null +++ b/.github/workflows/issue-labeled.yml @@ -0,0 +1,47 @@ +name: Issue Labeled + +on: + issues: + types: [labeled] + +jobs: + reply-labeled: + if: github.repository == 'withastro/astro' + runs-on: ubuntu-latest + steps: + - name: remove triage + if: contains(github.event.label.description, '(priority)') && contains(github.event.issue.labels.*.name, 'needs triage') + uses: actions-cool/issues-helper@a610082f8ac0cf03e357eb8dd0d5e2ba075e017e # v3.6.0 + with: + actions: "remove-labels" + token: ${{ secrets.GITHUB_TOKEN }} + issue-number: ${{ github.event.issue.number }} + labels: "needs triage" + + - name: needs repro + if: github.event.label.name == 'needs repro' + uses: actions-cool/issues-helper@a610082f8ac0cf03e357eb8dd0d5e2ba075e017e # v3.6.0 + with: + actions: "create-comment, remove-labels" + token: ${{ secrets.GITHUB_TOKEN }} + issue-number: ${{ github.event.issue.number }} + body: | + Hello @${{ github.event.issue.user.login }}. Please provide a [minimal reproduction](https://stackoverflow.com/help/minimal-reproducible-example) using a GitHub repository or [StackBlitz](https://astro.new/repro). Issues marked with `needs repro` will be closed if they have no activity within 3 days. + labels: "needs triage" + - name: wontfix + if: github.event.label.name == 'wontfix' + uses: actions-cool/issues-helper@a610082f8ac0cf03e357eb8dd0d5e2ba075e017e # v3.6.0 + with: + actions: "create-comment, close-issue" + token: ${{ secrets.GITHUB_TOKEN }} + issue-number: ${{ github.event.issue.number }} + body: | + Hello! + + This is an automated message to let you know that we've triaged this issue and unfortunately, we will be closing it as "not planned". + + We sometimes have to close good ideas (even great ones!) because our limited resources simply do not allow us to pursue all possible features and improvements, and when fixing bugs we have to balance the impact of the bug against the effort required for the fix. Before closing this we considered several factors such as the amount of work involved, the severity of the problem, the number of people affected, whether a workaround is available, and the ongoing cost of maintenance. + + If you're seeing this message and believe you can contribute to this issue, please consider submitting a PR yourself. Astro encourages [community contributions](https://docs.astro.build/en/contribute/)! + + If you have more questions, come and say hi in the [Astro Discord](https://astro.build/chat). diff --git a/.github/workflows/issue-needs-repro.yml b/.github/workflows/issue-needs-repro.yml new file mode 100644 index 000000000..6a6842864 --- /dev/null +++ b/.github/workflows/issue-needs-repro.yml @@ -0,0 +1,18 @@ +name: Close Issues (needs repro) + +on: + schedule: + - cron: "0 0 * * *" + +jobs: + close-issues: + if: github.repository == 'withastro/astro' + runs-on: ubuntu-latest + steps: + - name: needs repro + uses: actions-cool/issues-helper@a610082f8ac0cf03e357eb8dd0d5e2ba075e017e # v3.6.0 + with: + actions: "close-issues" + token: ${{ secrets.GITHUB_TOKEN }} + labels: "needs repro" + inactive-day: 3 diff --git a/.github/workflows/issue-opened.yml b/.github/workflows/issue-opened.yml new file mode 100644 index 000000000..4e6de6fed --- /dev/null +++ b/.github/workflows/issue-opened.yml @@ -0,0 +1,23 @@ +name: Label issues +on: + issues: + types: + - reopened + - opened + +jobs: + label_issues: + runs-on: ubuntu-latest + if: github.repository == 'withastro/astro' + permissions: + issues: write + steps: + - uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + with: + script: | + github.rest.issues.addLabels({ + issue_number: context.issue.number, + owner: context.repo.owner, + repo: context.repo.repo, + labels: ["needs triage"] + }) diff --git a/.github/workflows/label.yml b/.github/workflows/label.yml new file mode 100644 index 000000000..616463c27 --- /dev/null +++ b/.github/workflows/label.yml @@ -0,0 +1,16 @@ +# Automatically labels PRs based on the configuration file +# you are probably looking for π `.github/labeler.yml` +name: Label PRs + +on: + - pull_request_target + +jobs: + triage: + runs-on: ubuntu-latest + if: github.repository_owner == 'withastro' + steps: + - uses: actions/labeler@v4 + with: + repo-token: "${{ secrets.GITHUB_TOKEN }}" + sync-labels: true diff --git a/.github/workflows/preview-release.yml b/.github/workflows/preview-release.yml new file mode 100644 index 000000000..2fbf8d665 --- /dev/null +++ b/.github/workflows/preview-release.yml @@ -0,0 +1,64 @@ +name: Preview release + +on: + pull_request: + branches: [main] + types: [labeled] + +concurrency: + group: ${{ github.workflow }}-${{ github.event.number }} + cancel-in-progress: true + +permissions: + contents: read + actions: write + +env: + TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} + TURBO_TEAM: ${{ secrets.TURBO_TEAM }} + FORCE_COLOR: true + ASTRO_TELEMETRY_DISABLED: true + # 7 GiB by default on GitHub, setting to 6 GiB + # https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#supported-runners-and-hardware-resources + NODE_OPTIONS: --max-old-space-size=6144 + +jobs: + preview: + if: ${{ github.repository_owner == 'withastro' && github.event.label.name == 'pr preview' }} + runs-on: ubuntu-latest + permissions: + contents: read + id-token: write + issues: write + pull-requests: write + name: Publish preview release + timeout-minutes: 5 + steps: + - name: Disable git crlf + run: git config --global core.autocrlf false + + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Setup PNPM + uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + + - name: Setup Node + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + node-version: 22 + cache: "pnpm" + + - name: Install dependencies + run: pnpm install + + - name: Build Packages + run: pnpm run build + + - name: Remove Preview Label + uses: actions-ecosystem/action-remove-labels@2ce5d41b4b6aa8503e285553f75ed56e0a40bae0 # v1.3.0 + with: + labels: "pr preview" + + - name: Publish packages + run: | + pnpm dlx pkg-pr-new publish --pnpm --compact --no-template 'packages/astro' 'packages/integrations/node' 'packages/integrations/cloudflare' 'packages/integrations/netlify' 'packages/integrations/vercel' diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 000000000..112613008 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,75 @@ +name: Release + +on: + push: + branches: + - main + - "1-legacy" + - "2-legacy" + - "3-legacy" + - "4-legacy" + +defaults: + run: + shell: bash + +env: + TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} + TURBO_TEAM: ${{ secrets.TURBO_TEAM }} + FORCE_COLOR: true + +jobs: + changelog: + name: Changelog PR or Release + if: ${{ github.repository_owner == 'withastro' }} + runs-on: ubuntu-latest + permissions: + contents: write + id-token: write + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Setup PNPM + uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + + - name: Setup Node + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + node-version: 22 + cache: "pnpm" + + - name: Install dependencies + run: pnpm install + + - name: Build Packages + run: pnpm run build + + - name: Create Release Pull Request or Publish + id: changesets + uses: changesets/action@e0145edc7d9d8679003495b11f87bd8ef63c0cba # v1.5.3 + with: + # Note: pnpm install after versioning is necessary to refresh lockfile + version: pnpm run version + publish: pnpm exec changeset publish + commit: "[ci] release" + title: "[ci] release" + env: + # Needs access to push to main + GITHUB_TOKEN: ${{ secrets.FREDKBOT_GITHUB_TOKEN }} + # Needs access to publish to npm + NPM_TOKEN: ${{ secrets.NPM_TOKEN }} + + - name: Generate Announcement + id: message + if: steps.changesets.outputs.published == 'true' + env: + DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} + run: node .github/scripts/announce.mjs '${{ steps.changesets.outputs.publishedPackages }}' + + - name: Send message on Discord + if: steps.changesets.outputs.published == 'true' + env: + DISCORD_WEBHOOK: ${{ secrets.DISCORD_WEBHOOK }} + uses: Ilshidur/action-discord@0c4b27844ba47cb1c7bee539c8eead5284ce9fa9 # 0.3.2 + with: + args: "${{ steps.message.outputs.DISCORD_MESSAGE }}" diff --git a/.github/workflows/scripts.yml b/.github/workflows/scripts.yml new file mode 100644 index 000000000..f031bbddb --- /dev/null +++ b/.github/workflows/scripts.yml @@ -0,0 +1,52 @@ +name: Scripts + +on: + workflow_dispatch: + pull_request: + branches: + - "main" + paths: + - "packages/astro/src/runtime/client/**/*" + - "!packages/astro/src/runtime/client/dev-toolbar/**/*" + +# Automatically cancel in-progress actions on the same branch +concurrency: + group: ${{ github.workflow }}-${{ github.event_name == 'pull_request_target' && github.head_ref || github.ref }} + cancel-in-progress: true + +defaults: + run: + shell: bash + +jobs: + bundle: + name: Bundle Size + runs-on: ubuntu-latest + steps: + - name: Checkout Repo + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Checkout Main into tmp + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + ref: main + path: main + + - name: Setup PNPM + uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + + - name: Setup Node + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + node-version: 22 + cache: "pnpm" + + - name: Install dependencies + run: pnpm install + + - name: Check Bundle Size + uses: actions/github-script@60a0d83039c74a4aee543508d2ffcb1c3799cdea # v7.0.1 + with: + script: | + const { default: script } = await import('${{ github.workspace }}/.github/scripts/bundle-size.mjs') + await script({ github, context }) diff --git a/.github/workflows/sync-examples.yml b/.github/workflows/sync-examples.yml new file mode 100644 index 000000000..45d127447 --- /dev/null +++ b/.github/workflows/sync-examples.yml @@ -0,0 +1,86 @@ +name: Sync examples + +on: + workflow_dispatch: + inputs: + checkout-ref: + type: string + required: false + skip-unchanged-check: + type: boolean + default: false + dry-run: + type: boolean + default: false + push: + branches: + - main + +# Automatically cancel in-progress actions on the same branch +concurrency: + group: ${{ github.workflow }}-${{ github.event_name == 'pull_request' && github.head_ref || github.ref }} + cancel-in-progress: true + +permissions: + # Allow auto-branch-sync-action to git push + contents: write + +jobs: + sync: + name: Sync branches + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + fetch-depth: 2 # fetch 2 to compare with previous commit for changes + ref: ${{ inputs.checkout-ref }} + + - name: Detect changesets + uses: bluwy/detect-changesets-action@41d6432bd7bc24b3539228091f88879a18cee39b # v1 + id: detect + + - name: Get pre mode of changesets + id: pre + run: | + if [ -f ./.changeset/pre.json ]; then + pre_value=$(jq -r '.tag' ./.changeset/pre.json) + echo "value=$pre_value" >> $GITHUB_OUTPUT + fi + + # We only do sync if there are no changesets, so we don't accidentally allow users + # to clone examples that may rely on unreleased code + + - name: Sync stable to latest and examples/* branches + if: steps.detect.outputs.has-changesets == 'false' && github.ref == 'refs/heads/main' && steps.pre.outputs.value == '' + uses: bluwy/auto-branch-sync-action@a72b09dc60911f56a1e7093a069f24480ca3d2ab # v1.0.1 + with: + map: | + / -> latest + /examples/* -> examples/* + skip-unchanged-check: ${{ inputs.skip-unchanged-check == true }} + dry-run: ${{ inputs.dry-run == true }} + + - name: Sync prerelease to alpha branch + if: steps.detect.outputs.has-changesets == 'false' && steps.pre.outputs.value == 'alpha' + uses: bluwy/auto-branch-sync-action@a72b09dc60911f56a1e7093a069f24480ca3d2ab # v1.0.1 + with: + map: / -> alpha + skip-unchanged-check: ${{ inputs.skip-unchanged-check == true }} + dry-run: ${{ inputs.dry-run == true }} + + - name: Sync prerelease to beta branch + if: steps.detect.outputs.has-changesets == 'false' && steps.pre.outputs.value == 'beta' + uses: bluwy/auto-branch-sync-action@a72b09dc60911f56a1e7093a069f24480ca3d2ab # v1.0.1 + with: + map: / -> beta + skip-unchanged-check: ${{ inputs.skip-unchanged-check == true }} + dry-run: ${{ inputs.dry-run == true }} + + - name: Sync prerelease to rc branch + if: steps.detect.outputs.has-changesets == 'false' && steps.pre.outputs.value == 'rc' + uses: bluwy/auto-branch-sync-action@a72b09dc60911f56a1e7093a069f24480ca3d2ab # v1.0.1 + with: + map: / -> rc + skip-unchanged-check: ${{ inputs.skip-unchanged-check == true }} + dry-run: ${{ inputs.dry-run == true }} diff --git a/.github/workflows/test-hosts.yml b/.github/workflows/test-hosts.yml new file mode 100644 index 000000000..f12ed9b40 --- /dev/null +++ b/.github/workflows/test-hosts.yml @@ -0,0 +1,48 @@ +name: Hosted tests + +on: + schedule: + - cron: '0 0 * * 0' + +env: + ASTRO_TELEMETRY_DISABLED: true + TURBO_TOKEN: ${{ secrets.TURBO_TOKEN }} + TURBO_TEAM: ${{ secrets.TURBO_TEAM }} + VERCEL_ORG_ID: ${{ secrets.VERCEL_TEST_ORG_ID }} + VERCEL_PROJECT_ID: ${{ secrets.VERCEL_TEST_PROJECT_ID }} + VERCEL_TOKEN: ${{ secrets.VERCEL_TEST_TOKEN }} + FORCE_COLOR: true + +jobs: + test: + name: Run tests + runs-on: ubuntu-latest + steps: + - name: Check out repository + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + + - name: Setup PNPM + uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0 + + - name: Setup Node + uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0 + with: + node-version: 22 + cache: 'pnpm' + + - name: Install dependencies + run: pnpm install + + - name: Build Astro + run: pnpm turbo build --filter astro --filter @astrojs/vercel + + - name: Build test project + working-directory: ./packages/integrations/vercel/test/hosted/hosted-astro-project + run: pnpm run build + + - name: Deploy to Vercel + working-directory: ./packages/integrations/vercel/test/hosted/hosted-astro-project + run: pnpm dlx vercel --prod --prebuilt + + - name: Test + run: pnpm run test:e2e:hosts |