pepr 0.14.2 → 0.15.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/cli.js +51 -18
  2. package/dist/controller.js +1 -1
  3. package/dist/lib/assets/deploy.d.ts.map +1 -1
  4. package/dist/lib/assets/index.d.ts +1 -1
  5. package/dist/lib/assets/index.d.ts.map +1 -1
  6. package/dist/lib/assets/rbac.d.ts +2 -1
  7. package/dist/lib/assets/rbac.d.ts.map +1 -1
  8. package/dist/lib/assets/yaml.d.ts +1 -1
  9. package/dist/lib/assets/yaml.d.ts.map +1 -1
  10. package/dist/lib/helpers.d.ts +11 -0
  11. package/dist/lib/helpers.d.ts.map +1 -0
  12. package/package.json +9 -9
  13. package/src/lib/assets/deploy.ts +4 -3
  14. package/src/lib/assets/index.ts +2 -2
  15. package/src/lib/assets/rbac.ts +27 -11
  16. package/src/lib/assets/yaml.ts +2 -2
  17. package/src/lib/helpers.ts +39 -0
  18. package/src/templates/capabilities/hello-pepr.ts +16 -11
  19. package/website/.linkinator.config.json +8 -0
  20. package/website/.markdownlint.json +6 -0
  21. package/website/.prettierignore +12 -0
  22. package/website/LICENSE +201 -0
  23. package/website/README.md +50 -0
  24. package/website/archetypes/default.md +6 -0
  25. package/website/assets/img/doug.svg +345 -0
  26. package/website/assets/img/pepr.svg +212 -0
  27. package/website/assets/scss/_styles_project.scss +3 -0
  28. package/website/assets/scss/_variables_project.scss +1 -0
  29. package/website/content/en/docs/_index.md +9 -0
  30. package/website/content/en/docs/cli.md +64 -0
  31. package/website/content/en/docs/codeSample.txt +31 -0
  32. package/website/content/en/docs/concepts.md +238 -0
  33. package/website/content/en/docs/customresources.md +167 -0
  34. package/website/content/en/docs/diagrams.txt +18 -0
  35. package/website/content/en/docs/metrics.md +74 -0
  36. package/website/content/en/docs/rbac.md +153 -0
  37. package/website/content/en/docs/webassembly.md +189 -0
  38. package/website/go.mod +8 -0
  39. package/website/go.sum +4 -0
  40. package/website/package-lock.json +3907 -0
  41. package/website/package.json +30 -0
  42. package/website/renovate.json +16 -0
  43. package/website/static/favicons/android-144x144.png +0 -0
  44. package/website/static/favicons/android-192x192.png +0 -0
  45. package/website/static/favicons/android-36x36.png +0 -0
  46. package/website/static/favicons/android-48x48.png +0 -0
  47. package/website/static/favicons/android-72x72.png +0 -0
  48. package/website/static/favicons/android-96x96.png +0 -0
  49. package/website/static/favicons/android-chrome-192x192.png +0 -0
  50. package/website/static/favicons/android-chrome-512x512.png +0 -0
  51. package/website/static/favicons/android-chrome-maskable-192x192.png +0 -0
  52. package/website/static/favicons/android-chrome-maskable-512x512.png +0 -0
  53. package/website/static/favicons/apple-touch-icon-180x180.png +0 -0
  54. package/website/static/favicons/apple-touch-icon.png +0 -0
  55. package/website/static/favicons/favicon-16x16.png +0 -0
  56. package/website/static/favicons/favicon-32x32.png +0 -0
  57. package/website/static/favicons/favicon.ico +0 -0
  58. package/website/static/img/how-to-use.png +0 -0
@@ -0,0 +1,212 @@
1
+ <?xml version="1.0" encoding="UTF-8"?>
2
+ <svg id="Layer_2" data-name="Layer 2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 501.51 471.38">
3
+ <defs>
4
+ <style>
5
+ .cls-1 {
6
+ fill: #fff;
7
+ }
8
+
9
+ .cls-2 {
10
+ fill: #efca81;
11
+ }
12
+
13
+ .cls-3 {
14
+ fill: #6aa4b4;
15
+ }
16
+
17
+ .cls-4 {
18
+ fill: #871a41;
19
+ }
20
+
21
+ .cls-5 {
22
+ fill: #a5eeef;
23
+ }
24
+
25
+ .cls-6 {
26
+ fill: #be9853;
27
+ }
28
+
29
+ .cls-7 {
30
+ fill: #d14667;
31
+ }
32
+ </style>
33
+ </defs>
34
+ <g id="Capa_3" data-name="Capa 3">
35
+ <g>
36
+ <polyline class="cls-7" points="187.28 26.43 187.28 26.43 203.64 24.12 213.37 22.15 213.37 22.15 226.37 23.34 237.82 23.57 245.29 26.53 245.29 26.53 259.6 29.64 269.32 34.54 280.82 37.73 290.86 45.78 314.4 23.03 345.89 9.91 364.25 7.28 368.19 11.66 363.82 18.65 355.51 51.46 348.07 72.45 332.76 87.32 309.98 100.98 313.52 105.25 332.76 101.75 349.82 104.38 339.76 122.75 326.2 131.05 343.26 137.62 331.02 151.17 305.65 159.48 296.35 194.71 284.12 212.27 263.74 228.89 232.17 241.27 222.99 241.71 201.12 247.39 188 247.39 175.75 245.21 147.81 247.35 122.83 236.9 110.59 222.46 100.76 216.09 99.21 212.4 61.16 221.15 21.36 237.77 4.74 248.27 23.11 225.09 56.35 205.41 93.97 196.66 98.57 182.92 92.22 166.04 90.87 144.3 94.74 138.67 82.59 133.68 78.22 114.87 93.09 76.82 87.84 76.82 73.41 63.7 68.6 39.21 65.54 2.47 90.47 29.15 110.03 53.94 113.07 50.57 123.15 47.26 133.15 41.11 144.84 36.04 152.51 30.7 167.14 27.03 167.14 27.03 167.14 27.03 167.14 27.03 187.28 26.43"/>
37
+ <polygon class="cls-7" points="157.38 253.52 151.26 285.01 131.81 303.74 121.52 323.06 121.08 343.61 128.08 354.11 135.95 358.92 134.61 346.32 136.83 340.11 143.94 339.83 146.89 334.86 152.57 332.24 155.68 333.43 161.76 330.05 168.48 329.6 168.32 319.99 173.57 289.82 176.63 246.96 167.88 243.89 156.07 250.02 157.38 253.52"/>
38
+ <polygon class="cls-7" points="232.17 241.27 232.17 264.89 238.73 295.94 240.04 302.94 235.67 307.31 213.37 312.56 205.93 312.12 193.68 317.81 188.87 321.74 187.12 330.49 194.12 330.05 200.68 333.55 209.87 332.68 215.11 341.43 219.05 334.86 227.36 334.86 233.48 337.93 235.09 350.04 254.48 343.17 272.85 326.12 258.03 344.32 260.6 354.55 260.6 359.5 256.66 373.79 254.91 386.47 260.16 403.09 266.72 417.96 268.47 425.84 265.85 429.33 255.54 438.39 268.04 441.14 275.47 438.96 282.03 445.52 288.15 438.96 293.4 439.39 300.84 446.83 308.27 440.27 318.69 442.92 319.58 434.28 327.08 429.33 339.33 432.4 376.17 440.24 408.28 435.01 441.61 423.9 458.29 407.9 465.28 386.04 464.41 367.23 460.47 351.92 450.85 342.74 442.1 340.11 436.86 347.99 437.29 359.79 429.86 377.29 422.86 384.29 398.81 390.85 380.87 388.22 361.63 382.1 343.7 369.85 326.64 345.8 299.96 318.68 278.97 281.07 275.71 272.39 282.47 268.39 298.65 260.08 321.39 243.02 333.64 224.21 343.7 196.22 345.45 183.1 368.63 181.35 395.31 184.85 438.61 200.6 464.41 215.03 480.59 225.52 491.72 238.13 489.78 223.34 487.59 219.84 484.97 215.9 441.99 183.58 390.1 165.84 349.38 161.23 332.33 163.42 327.52 173.04 326.64 181.35 320.03 207.51 309.71 225.45 296.9 237.33 285.09 246.96 272.41 250.02 269.35 249.58 265.41 241.71 264.1 232.52 263.25 230.51 250.1 234.27 232.17 241.27"/>
39
+ <polyline class="cls-7" points="131.2 244.61 138.14 257.45 147.32 269.26 153.88 273.2 155.63 263.14 157.38 253.52 154.76 248.27 147.81 247.35 131.2 244.61"/>
40
+ <polygon class="cls-7" points="162.63 361.98 162.63 384.72 172.25 407.47 181 422.77 192.35 434.41 191.06 440.71 188.29 450.77 178.38 455.14 153.56 456.28 150.39 444.2 146.45 439.39 143.39 437.64 127.64 435.02 118.46 436.77 112.77 433.71 107.1 432.8 114.08 427.15 117.15 424.96 108.4 407.47 103.59 375.98 114.52 355.42 123.71 347.99 132.89 358.48 141.02 362.75 145.13 368.52 151.5 360.25 159.13 359.36 163.07 354.98 162.63 361.98"/>
41
+ <g>
42
+ <g>
43
+ <path class="cls-5" d="m462.98,328.02s-3.31,3.45-9.21-.92c-2.34-1.74-4.77-3.39-5.47-6.18-.67-2.66-1.43-7.11-.71-12.36,0,0,4.99-19.96-14.26-29.23-.55-.05-1,1.35-.71,1.9,3.84,7.3,1.22,16.91,1.22,16.91-4.34,6.24-4.26,10.67-3.45,13.68,10.5,7.38,7.86,17.77,7.86,17.77-2.02-10.57-7.09-13.07-12.33-13.28,0,0,1.75,16.94-1.44,31.03,0,0,5.49,5.27,9.23,4.87.01-.03.03-.05.04-.07.62-3.02,1.51-5.97,2.88-8.83.9-1.89,2.71-2.2,4.21-1.6.19-.12.39-.25.6-.35,3.3-1.64,6.18.24,7.65,3.08,1.25-.3,2.63.03,3.56,1.4.53.79,1.09,1.56,1.66,2.34.86-1.24,1.73-2.54,2.08-2.67,3.48-2.87,8.38-9.08,6.58-17.5Z"/>
44
+ <path class="cls-3" d="m470.58,318.66c-.13-.71-1.11-.9-1.48-.27-3.89,6.71-9.63,5.05-9.63,5.05-3.54-.66-4.88-3.66-5.38-6.04-.24-1.14-.22-2.32-.05-3.47,3.22-22.42-10.75-28.41-17.62-31.56-.09-.04-.17-.06-.25-.07,13.66,7.55,10.1,26.01,10.1,26.01-.62,4.57-.31,8.21.23,10.84.68,3.35,2.47,6.45,5.14,8.66,5.2,4.32,9.17,2.14,9.17,2.14.74,8.59-4.66,14.48-9.89,15.43.21.3,2.8,1.97,3.02,2.27,16.56-7.52,17.77-23.03,16.64-29.01Z"/>
45
+ </g>
46
+ <path d="m471.23,305.7c-1.29-1.52-3.78-.62-3.77,1.35.02,4.22-3.22,8.64-3.93,9.57,0,0-2.23,2.9-3.68.9-.6-.84-.69-1.93-.36-2.9,1.36-4.09,2.44-21.21-8.64-29.74,0,0-7.08-5.53-20.87-9.07l-1.54.14c-1.23-.14-2.59.24-1.79,1.17,3.17,3.68,8.86,8.53,1.41,19.89,0,0-4.34,6.54-2.64,13.65-1.8-.12-5.06-.19-9.26.34-1.13.14-1.39,1.64-.37,2.14.19.09.4.21.6.31-.12,0-.19,0-.19,0,1.35.65,2.46,1.38,3.41,2.15,1.82,1.55,3.44,3.64,4.09,6.47l.13.66c.78,4.79-1.48,9.11-1.48,9.11-3.27,10.39-1.32,15.41,1.62,19.06,2.54,3.31,4.41,4.2,7.83,5.58.58-1.5,1.23-2.97,1.97-4.35.1-.5.96-.88,1.07-1.38-2.1-.78-4.5-1.77-5.76-2.69.03-.04.05-.08.07-.11-4.94-4.07-2.98-10.21-1.83-12.69.69-1.49,1.44-2.97,1.82-4.57,1.53-6.56-.07-12.09-3.22-14.39,5.24.21,10.31,2.72,12.33,13.28,0,0,3.56-11.75-7.73-18.49-.81-3.01-.48-7.12,2.76-12.05,0,0,4.66-5.83,2.2-15.65-.15-.61.13-1.15.69-1.1.08,0,.17.03.25.07,6.74,3.09,20.33,8.93,17.78,30.36-.18,1.48-.44,2.95-.16,4.41.46,2.41,1.76,5.61,5.43,6.3,0,0,5.73,1.66,9.62-5.04.37-.63,1.35-.46,1.48.26,1.18,6.21-2.22,21.52-16.91,28.63,1.53,2.14,3.17,4.26,4.48,6.53,2.07-1.16,1.98-3.19,3.65-4.36,7.6-5.36,12.7-14.51,14.89-23.96,2.24-9.65-1.83-15.23-5.46-19.8Z"/>
47
+ <path d="m477.21,319.67c-.18-15.04-10.46-21.61-10.46-21.61,1.77,8.78-.73,15.31-2.93,17.76-1.01,1.12-2.68.18-2.56-1.32.3-3.73.15-6.02-.04-8.3-.85-10.25-5.93-20.17-15.16-25.48-13.21-7.6-25.73-5.75-25.73-5.75,15.1,5.05,8.11,20.01,8.11,20.01-4.28,8.68-3.64,15.52-3.64,15.52-6.74-.39-12.51,1.53-12.51,1.53,14.47,3.93,10.27,17.63,10.27,17.63-2.38,9.09-2.64,11.84-2.25,15.02.19,1.53.55,3.03,1.21,4.42,3.08,6.49,10.15,8.96,12.92,9.84.47-1.32-.98-3.21-.4-4.5l-5.91-2.63-3.65-4.45,1.43-15.23-.35-11.26-2.63-7.6,5.2.19-.37-6.3,2.16-8.63,3.89-10.91.26-7.14,5.79,2.08,10.15,6.21,6.28,9.7,1.9,11.82-.72,5.27,2.23,4.03,6.59-1.49,6.32-8.69,1.45,13.46-4.18,11.14-10.29,14.38-3.38,2.4c1.07,1.53.29,1.82,1.08,3.49,6.01-3.37,10.41-7.47,13.35-11.79,4.66-6.87,6.74-12.18,6.61-22.81Z"/>
48
+ </g>
49
+ <g>
50
+ <path class="cls-5" d="m296.31,308.93c2.87,4.67,5.75,9.28,9.03,13.65l.85-1.99,7.93-16.32-18.95-4.51-5.19.32c2.08,3.01,4.5,5.87,6.33,8.85Z"/>
51
+ <path class="cls-3" d="m298.44,311.05c1.61,2.57,3.59,5.43,5.32,7.91l3.3-4.79,5.21-10.2s-6.93,5.46-13.84,7.09Z"/>
52
+ <path d="m316.86,301.19c-12.07-3.65-23.33-4.69-29.23-4.99.35.69.74,1.36,1.15,2.03,0,0,0,0,0,0,1.14,1.84,1.34,2.41,2.66,4.17,5.16.42,14.35,1.63,19.24,2.79-1.74,2.76-6.06,8.14-9.2,11.89.47.71.97,1.39,1.45,2.09l-.02.02c.47.68.95,1.35,1.43,2.02,0,0,0,0,0,0,.04.06.08.12.12.17.1-.12.21-.25.31-.37.44-.12.54.19,1.22-.18,2.86-3.69,9.18-12.48,11.98-16.47.81-1.15.22-2.76-1.12-3.17Z"/>
53
+ </g>
54
+ <g>
55
+ <path class="cls-5" d="m312.9,329.49c3.86,3.89,7.72,7.72,11.91,11.22l.37-2.13,3.99-17.7-19.48-.07-4.98,1.5c2.71,2.46,5.72,4.69,8.19,7.17Z"/>
56
+ <path class="cls-3" d="m314.63,331.84c2.15,2.14,5.12,4.43,7.37,6.45l2.12-5.42,2.75-11.12s-5.88,6.93-12.23,10.1Z"/>
57
+ <path d="m331.13,317.27c-12.58-.79-23.78.75-29.6,1.81.5.59,1.04,1.16,1.59,1.72,0,0,0,0,0,0,1.53,1.53,1.86,2.04,3.54,3.45,5.12-.77,14.35-1.69,19.37-1.67-1.07,3.08-4.04,9.31-6.24,13.67.62.58,1.26,1.14,1.89,1.71v.03c.6.55,1.22,1.1,1.84,1.64,0,0,0,0,0,0,.05.05.1.09.16.14.07-.14.15-.29.22-.43.4-.22.57.07,1.15-.45,1.94-4.25,6.09-14.25,7.91-18.77.52-1.31-.41-2.74-1.82-2.83Z"/>
58
+ </g>
59
+ <g>
60
+ <path class="cls-5" d="m330.2,347.91c3.32,4.36,6.65,8.67,10.34,12.68l.65-2.06,6.27-17.03-19.31-2.61-5.13.84c2.37,2.79,5.06,5.4,7.18,8.18Z"/>
61
+ <path class="cls-3" d="m331.02,350.22c1.85,2.4,5.1,5.29,7.07,7.59l2.81-5.1,4.17-10.67s-6.86,5.53-14.05,8.18Z"/>
62
+ <path d="m349.88,338.17c-12.37-2.43-23.68-2.35-29.59-2.07.42.65.87,1.28,1.35,1.91,0,0,0,0,0,0,1.31,1.72,1.57,2.27,3.06,3.88,5.18-.09,14.44.2,19.42.87-1.46,2.92-5.23,8.71-7.97,12.74.54.66,1.1,1.29,1.65,1.94l-.02.02c.53.63,1.08,1.25,1.62,1.87,0,0,0,0,0,0,.05.05.09.11.14.16.09-.13.18-.27.27-.4.43-.16.55.14,1.2-.3,2.48-3.96,7.9-13.33,10.29-17.58.69-1.23-.05-2.77-1.43-3.04Z"/>
63
+ </g>
64
+ <g>
65
+ <path class="cls-5" d="m346.71,367.83c4.2,3.15,8.39,6.25,12.84,8.99l.06-2.07,1.33-17.33-18.47,2.64-4.51,2.11c2.91,1.95,6.07,3.65,8.75,5.66Z"/>
66
+ <path class="cls-3" d="m348.6,369.6c2.34,1.73,5.54,3.69,7.96,5.29l1.26-5.43,1.06-10.92s-4.34,6.74-10.27,11.06Z"/>
67
+ <path d="m362.56,354.24c-12.04.99-22.43,4.01-27.8,5.82.56.49,1.14.96,1.74,1.41,0,0,0,0,0,0,1.66,1.24,2.04,1.68,3.83,2.78,4.75-1.44,13.36-3.59,18.13-4.27-.59,3.07-2.54,9.39-4.02,13.82.67.47,1.35.9,2.03,1.35v.03c.65.44,1.31.87,1.98,1.3,0,0,0,0,0,0,.06.04.11.08.17.11.05-.14.1-.29.15-.44.35-.26.55-.02,1.02-.59,1.25-4.3,3.8-14.35,4.89-18.89.31-1.31-.77-2.54-2.11-2.43Z"/>
68
+ </g>
69
+ <g>
70
+ <path class="cls-5" d="m366.74,382.04c4.37,1.51,8.71,2.97,13.14,4.06l-.64-1.73-4.68-14.67-13.76,7.02-2.87,2.93c2.95.85,6.02,1.43,8.81,2.39Z"/>
71
+ <path class="cls-3" d="m367.59,383.19c2.79.82,7.05,2.89,9.87,3.57l-.69-5.53-2.76-10.62s-2.33,6.49-6.41,12.58Z"/>
72
+ <path d="m375.14,386.47c.18-.01.37,0,.55.07.16.07.32.11.48.17.41.1.83.2,1.24.3v.03c.12.03.2.11.27.2.71.22,1.43.4,2.15.55.04-.1.07-.18.08-.18,0,.02,0,.1,0,.19.32.07.64.14.96.2-.42-5.28-1.61-16.9-2.11-21.18-.16-1.34-1.6-2.12-2.82-1.55-7.7,3.56-14.28,7.78-19.06,11.21,1.25.86,2.54,1.92,2.97,3.36.1.33.02.62-.14.84.23.08.45.16.68.24,4.11-2.97,10.02-6.91,13.66-8.86.51,3.08.84,9.69.98,14.36.03,0,.07.02.1.02Z"/>
73
+ </g>
74
+ <g>
75
+ <path class="cls-5" d="m391.1,388.63c4.28-.69,8.52-1.4,12.69-2.47l-1.24-1.19-9.87-10.46-8.71,12.26-1.23,3.81c2.82-.61,5.63-1.51,8.36-1.95Z"/>
76
+ <path class="cls-3" d="m394.4,390.23c2.86-.53,6.42-.53,9.24-1.2l-3.11-4.63-7.26-8.23s2.02,6.78,1.12,14.06Z"/>
77
+ <path d="m394.82,370.35c-.74-1.12-2.38-1.17-3.22-.11-5.75,7.27-9.07,12.42-11.36,16.76,2.06.35,4.1.75,6.11,1.28,2.16-3.98,4.75-8.44,6.63-11.13,1.84,2.52,5.12,8.27,7.36,12.37.8-.17,1.58-.37,2.38-.56v.02c.78-.18,1.25,1.71,2.02,1.51,0,0,.79.13.79.13.06-.02-.36-2.24-.29-2.26-.07-.13.92,1.96.85,1.82.05-.44.89-.13.8-.87-2.29-3.85-9.49-15.08-12.06-18.98Z"/>
78
+ </g>
79
+ <g>
80
+ <path class="cls-5" d="m416.12,384.03c4.08-2.53,8.12-5.08,11.93-7.97l-1.74-.75-14.27-7-3.95,16.73.28,4.58c2.63-1.84,5.13-3.98,7.74-5.59Z"/>
81
+ <path class="cls-3" d="m418.74,381.98c2.1-1.65,4.99-3.18,6.99-4.93l-4.5-2.43-9.41-3.58s4.54,4.64,6.92,10.93Z"/>
82
+ <path d="m428.94,375.94c-3.5-2.15-14.15-8.19-17.9-10.25-1.08-.6-2.43.07-2.66,1.28-1.79,9.57-1.88,18.4-1.68,23.92,1.69-.63,3.39-1.22,5.1-1.77.02-.02.03-.03.05-.05-.12-4.55.06-12.69.61-17.08,2.57,1.26,7.69,4.52,11.26,6.9.57-.48,1.13-.98,1.69-1.47h.02c.55-.46,1.74.87,2.27.39,0,0,.7-.23.7-.23.05-.04-1.25-1.67-1.2-1.71-.11-.08,1.58,1.2,1.47,1.12-.15-.38.67-.49.28-1.05Z"/>
83
+ </g>
84
+ <g>
85
+ <path d="m270.53,225.57c-.32.36-.64.71-.97,1.05-.08.2-.17.41-.29.61-.6,1.01-1.28,2-2.06,2.88"/>
86
+ <path d="m270.64,245.64c.33.67.22,1.93.56,2.59l-.24,1.92c.34.64,1-.64,1.35,0,0,0,0,0,0,0,.03.05-.03-.05,0,0,.1-.09.93-1.18,1.03-1.27.4-.06.32.76.96.51"/>
87
+ </g>
88
+ <path class="cls-1" d="m153.04,457.41c0-.76-1.91-10.51-1.91-10.51l-1.91-5.92-4.01-2.1-5.16,1.15-2.48-.96-4.78-3.06-5.15-.99s-2.11.42-3.64,1.38-3.06,1.72-3.06,1.72l-5.54-3.63s1.15-.19-4.58-.96-2.99-2.51-8.85-.68c-5.86,1.83-6.43.49-8.15,2.78s-4.97.38-4.97,5.92-1.15,7.64.19,10.32c1.34,2.67,7.45,5.16,7.45,5.16l16.24,2.29s12.23.57,15.86.57,7.61,1.01,13.56-1.53c5.95-2.54,10.89-.96,10.89-.96Z"/>
89
+ <path class="cls-1" d="m245.89,462.38s.96-11.08,2.1-12.61,4.78-6.88,4.78-6.88l4.01-2.87s3.25-1.15,4.97-.96,1.72-.19,4.39,1.15c2.67,1.34,2.67,1.15,3.44,1.34s5.9-2.6,5.9-2.6c0,0-.74-1.41,1.94.88,2.67,2.29,3.44,3.06,4.97,3.82s1.91-.96,1.91-.96l3.87-3.74s-1.77-.84,2.62.3c4.39,1.15,3.06,0,5.73,2.1s3.82,2.1,4.58,2.67c.76.57,2.1-.38,2.1-.38l5.92-3.25s2.1-.76,3.44-.19,1.15-1.34,3.25,1.15c2.1,2.48,2.29,1.34,3.63,7.07,1.34,5.73,1.91,9.36,1.91,9.36,0,0,1.15,4.58-5.54,6.3-6.69,1.72-8.79,1.53-12.42,2.29s4.01.57-10.32,1.72c-14.33,1.15-11.84,1.34-21.2.76-9.56-.59-13.44-1.34-14.52-1.34-1.15,0-8.02-2.1-8.02-2.1l-3.44-3.06Z"/>
90
+ <path class="cls-1" d="m183.04,338.01l1.72,11.65,5.54,7.07,2.48.76,2.1-3.82,6.11,3.63,2.48,2.48,3.14.86,1.63-4.87,3.02-3.98s-.73-4.61,1.56.54c2.29,5.16,1.34,6.69,3.63,8.02,2.29,1.34.38,1.72,4.01,2.48s6.25,2.1,6.25,2.1c1.2-3.05,3.72-8.74,3.72-8.74l3.6-5.58s0-5.54-.19-6.3-2.29-5.16-2.29-5.16l-4.2-4.3s-2.3-1.24-5.35.47c-3.06,1.72-4.39,2.1-5.16,2.48-.76.38-2.1,1.15-2.67.57s-3.82-4.39-3.82-4.39c0,0-1.53-.96-3.44-.96s-4.58.19-4.97.76-4.39-1.72-4.39-1.72l-4.2-1.72s-2.67-1.15-4.58,0c-1.91,1.15-4.97,3.82-4.97,3.82l-.76,3.82Z"/>
91
+ <path class="cls-1" d="m136.04,356.54l9.62,11.02,6.61-10.82,6.11,3.63,5.73-12.04,5.35,5.92,4.58-7.48.19-8.69-3.63-5.22-4.78-3.82-7.45,1.72-.38,1.72-1.15,2.29-3.25-.38-5.92-.76s-1.15-.19-2.29,1.53-2.1,4.01-2.1,4.01c-2.67.57-3.25-.19-5.16.57s-5.35,3.63-5.35,3.63l.76,5.16s1.34,3.25,1.53,4.2.96,3.82.96,3.82Z"/>
92
+ <polygon class="cls-2" points="268.47 425.84 257.51 394.33 256.66 373.79 263.5 356.91 258.63 343.06 232.47 353.91 227.58 366.64 218.22 360.28 212.14 349.79 206.62 360.65 199.58 352.95 194.3 356.69 186.41 349.8 184.92 340.44 187.16 332.59 190.9 320.61 205.93 312.12 225.33 311.26 240.67 304.15 230.19 241.65 218.59 241.65 193.52 249.89 177.51 250.12 175.94 257 170.7 305.64 167.33 328.47 175.56 337.45 175.19 349.05 170.7 354.66 164.78 351.21 162.46 383.48 177.43 420.52 202.13 441.1 224.58 447.09 249.28 447.09 257.89 434.37 265.85 429.33 268.47 425.84"/>
93
+ <polygon class="cls-5" points="275.47 270.47 308.78 255.87 330.86 228.56 340.21 206.11 345.82 180.29 376.88 181.41 419.54 191.51 453.22 206.48 471.53 220.53 452.85 227.06 452.85 236.79 451.72 252.51 429.27 256.25 415.43 263.73 403.08 282.44 383.99 279.07 360.79 279.45 345.45 292.17 337.34 303.48 319.72 284.1 285.95 279.07 278.97 281.07 275.47 270.47"/>
94
+ <path class="cls-3" d="m323.91,290.24s22.72-39.19,24.52-58.68l-1.74,30.01-4.71,22-1.18,16.11-.79,2.36-5.11.39-11-12.18Z"/>
95
+ <path class="cls-3" d="m353.36,201.04s5.51,23.6,19.65,47.96c0,0,8.25,13.75,8.25,29.46l20.43,6.68-3.93-14.14-6.68-16.11-14.14-18.07-14.93-20.03-8.65-15.75Z"/>
96
+ <path class="cls-4" d="m98.01,184.56s-.66,16.61,15.59,17.79l4.56-8.74-11.91-5.56-8.47-5.29.23,1.8Z"/>
97
+ <path class="cls-4" d="m212.98,219.16s4.73,19.55-16.45,27.15l-12.39-1.21,6.09-5.82,7.94-3.97,7.67-4.5s2.38-1.85,2.91-2.65,4.23-9,4.23-9Z"/>
98
+ <path class="cls-3" d="m392.25,211.29s27.1,15.32,38.89,42.82l16.89,1.18-.39-6.28-7.46-9.03-27.1-23.96-20.82-4.71Z"/>
99
+ <path class="cls-4" d="m159.93,256.86s9.53.26,16.14-1.32l.53-7.94-14.44.08-4.35.45,2.12,8.73Z"/>
100
+ <path class="cls-4" d="m230.9,250.24s21.96-1.59,34.93-9.53l-1.59-11.64-33.34,9.26v11.91Z"/>
101
+ <path d="m129.06,163.86s-3.1-30.7-24.22-30.98l14.52,15.36,3.79,24.35v7.6l1.06.47,3.16-3.29,1.69-13.52Z"/>
102
+ <path class="cls-4" d="m290.86,111.63s4.07,24.09-18.71,23.54l-1.67-7.78s14.63,1.81,20.37-15.76Z"/>
103
+ <path class="cls-4" d="m71.33,47.26s9.58,19.71,28.73,18.02l-7.89,13.52-9.58-6.48-5.63-6.2-2.82-7.04-2.82-11.83Z"/>
104
+ <path class="cls-4" d="m302.98,116.3s23.13-8.6,39.09.24l4.69-7.6,2.21-4.27s-12.07-1.93-12.91-1.93-14.93.84-14.93.84l-4.79.56-6.48,1.41-6.89,10.74Z"/>
105
+ <path class="cls-4" d="m302.73,134.71s22.95-.49,32.01,12.24l7.24-9.28-10.98-5.63h-4.22l-7.89-1.41-6.48.28-9.68,3.8Z"/>
106
+ <path class="cls-4" d="m238.69,295.07s8.39-1.4,13.62-9.21c0,0,1.28,12.24-12.85,18.82l-.77-9.61Z"/>
107
+ <path class="cls-4" d="m148.49,364.95s0,.39,0,1.13c.05,7.79,1.52,53.75,29.58,71.25,0,0,3.94,12.67-5.91,14.93l14.28-.1,4.31-6.66.32-4.79,2.49-2.54,1.69-3.66-8.45-6.76-19.71-22.53-3.38-25.63-.56-21.12-7.01,3.13-2.74-3.62-3.38,3.49"/>
108
+ <path class="cls-4" d="m432.33,422.07c-22.16,8.96-41.56,8.69-57.03,5.58-14.18-2.86-22.26-14.97-21.95-28.89.08-3.45-.16-21.19-2.63-23.82l-9.95-8.11.05,21.56-2.16,20.88-13,20.15,1.24,1.55,10.52,2.08.84,1.69s.29-.26.79-.78l3.44,1.91s11.27,2.82,21.4,4.22c10.14,1.41,7.89.28,10.7.28s16.05-.84,16.05-.84l14.36-3.66,11.55-3.66,11.17-2.84,11.91-10.21-7.3,2.9Z"/>
109
+ <path class="cls-4" d="m315.78,75.14s19.03,1.5,33.82-15.49l3.08-3.1,4.22-22.81-14.93,17.46-20.56,13.52-2.25,7.32-3.38,3.1Z"/>
110
+ <path class="cls-4" d="m138.14,339.73s-14.54-16.09.25-37.85l-15.3,12.01-1.92,23.72,3.94,12.67,5.63,4.51,4.5,1.91s2.16,2.35.79-.17-2.19-5.96-2.19-5.96l-.84-5.35,1.48-1.73,3.66-3.77Z"/>
111
+ <path class="cls-4" d="m242.89,345.42s2.4-16.79-19.12-13.46l7.95,4.49,2.42,5.02s.19,4.55.74,5.57l.56,1.02,7.46-2.64Z"/>
112
+ <path class="cls-4" d="m142.27,311.85s13.11-10.23,26.06-2.99l-1.25,12.43-6.48-6.2s-7.91-3.53-18.33-3.25Z"/>
113
+ <polygon class="cls-5" points="130.84 241.45 140.88 261.75 153.88 273.2 148.62 287.77 136.66 296.91 107.84 284.25 84.99 288.35 68.46 269.48 55.8 264.56 39.89 267.51 41.04 249.8 35.26 235.91 29.79 236.44 46.66 227.3 76.19 216.75 99.21 212.4 116.27 229.14 122.83 236.9 130.84 241.45"/>
114
+ <path class="cls-3" d="m145.96,285.13s-14.03-12.47-18.85-31.42l2.75,17.28,2.75,20.03,1.57,6.28,6.28-2.75,5.5-9.43Z"/>
115
+ <path class="cls-3" d="m97.65,285.13s-2.64-18.97,8.64-36.92l-13.75,17.28-6.68,14.93-2.62,12.23,14.41-7.52Z"/>
116
+ <path class="cls-3" d="m57.58,265.49s-1.96-18.46,29.46-33l-25.93,8.64-24.35,22.78,6.68,2.36,14.14-.79Z"/>
117
+ <g>
118
+ <path class="cls-6" d="m175.33,408.9s22.9,29.79,59.93,23.14c9.91-1.78,16.08-11.79,13.18-21.44l-4.14-13.79s-8.5-26.48,16.02-41.19l-4.9,22.23,3.6,17.65,1.5,13.68,6.4,12.14,1.59,5.56-6.86,5.56-8.28,7.72-2.18,4.37s-4.58.65-6.21.98-15.04,1.96-15.04,1.96c0,0-4.58.98-11.11-.98-6.54-1.96-7.19-1.63-10.46-3.27-3.27-1.63-6.12-2.7-11.06-5.76-4.94-3.06-13.78-8.3-13.78-8.3l-11.11-16.34,2.94-3.92Z"/>
119
+ <path class="cls-6" d="m175.94,257s26.53,6.11,53.01-5.99l4.48-12.07-16.9,1.94-27.46,7.19-12.44-1.11-.97,5.69.27,4.35Z"/>
120
+ <path d="m90.87,144.3s-8.18,50.61,26.97,52.43l4.85-7.88,1.52-8.18-1.82-20-3.03-12.43-6.06-7.58-6.97-2.12-6.36,1.21-9.09,4.55Z"/>
121
+ <ellipse class="cls-1" cx="114.08" cy="157.3" rx="5.49" ry="6.2"/>
122
+ <path d="m156.32,225.85s-.36-6.93,7.3-12.04c0,0,5.84-2.55,7.3,1.46,0,0,1.46,4.38-7.66,6.57,0,0-5.11.73-6.93,4.01Z"/>
123
+ <path d="m141.31,226.27s.32-5.99-6.3-10.4c0,0-5.04-2.21-6.3,1.26,0,0-1.26,3.78,6.62,5.67,0,0,4.41.63,5.99,3.47Z"/>
124
+ <path d="m290.86,111.63c-10.38,15.3-24.64,9.3-24.64,9.3,20.81-6.56,14.53-25.96,14.53-25.96-2.11,12.08-10.11,16.93-17.52,18.22-1.97.34-3.97.33-5.94.03-18.78-2.82-30.15,7.21-30.15,7.21-24.55,16.53-21.04,67.38-21.04,67.38,0,0,14.61,3.48,33.25.58,13.24-2.06,25.62-9.34,31.51-21.37,4.37-8.94,5.53-20.32,2.51-37.62,15.3-1.91,17.48-17.75,17.48-17.75Z"/>
125
+ <ellipse class="cls-1" cx="230.64" cy="143.37" rx="7.02" ry="7.36"/>
126
+ <path class="cls-1" d="m259.86,121.7c-2.25-.94-6.24-2-11.9-1.3,0,0,4.46.82,8.23,2.93,1.31.73,2.33,1.89,2.91,3.28,1.66,4.01,4.97,13.85,3.63,25.86-1.42,12.81-8.52,20.04-20.6,25.91-2.89,1.4-6.26,2.33-9.95,2.64,0,0,6.51.75,16.7-3.24,10.22-4,16.98-13.5,18.24-24.14l.1-.04s1.77-15.08-4.26-28.81c-.61-1.38-1.7-2.51-3.09-3.1Z"/>
127
+ <path d="m212.62,217.61c-1.75,5.26-5.59,8.41-5.59,8.41,0,0-12.5,12.86-38.68,16.32-9.3,1.23-18.77.84-27.82-1.61-7.22-1.95-15.27-5.43-20-11.61,0,0-13.55-15.14,1.65-32.39,2.49-2.82,4.57-5.99,5.88-9.52,2.1-5.65,3.65-14.25.64-25.16,0,0,.28,8.74-2.82,14.65,0,0,1.54-15.31-5.88-31.72-1.6-3.53-4.95-7.46-8.19-9.59-3.14-2.05-7.47-3.63-12.67-2.31-2.23.57-4.57.89-6.8.36-6.19-1.46-11.99-9.58-8.64-25.62,0,0,11.3-58.1,80.93-73.47l8.78-10.01s-84.48,11.71-97.95,84.19c0,0-5.27,28.32,14.82,31.7-3.45,2.81-17.27,7.32-22.15-6.38,0,0,.75,21.78,23.15,14.63,0,0,3.46-.35,11.02-5.39h8.07l6.56,4.79,2.52,5.04,1.51,8.83.5,7.57-.25,7.31,1.01,8.32-.82,1.69c-1.83,3.77-4.14,7.28-6.74,10.56-3.39,4.26-7.84,12.4-5.23,23.77,2.23,9.69,9.03,17.76,18.06,21.91,6.54,3.01,15.99,5.63,29.03,5.63,0,0,33.68.94,51.43-16.52,1.63-1.6,2.97-3.48,3.88-5.57,2.3-5.3.8-8.82.8-8.82Z"/>
128
+ <g>
129
+ <path d="m66.37,36.98c0-.08,0,.08,0,0h0Z"/>
130
+ <path d="m112.72,54.56c-.7-1.46-17.47-36-45.96-54.01-1.19-.75-2.71-.73-3.88.06-1.17.79-1.76,2.19-1.51,3.58.03.19,3.75,15.41,3.42,31.16-.1,4.97.22,9.93,1.21,14.8,2.28,11.24,8.17,27.98,23.26,31.95.32.09.65.13.97.13,1.74,0,3.32-1.3,3.53-3.2.19-1.75-1.04-3.33-2.73-3.82-9.99-2.89-14.84-13.48-17.18-22.39-1.45-5.52-2.06-11.21-2.1-16.92-.05-6.96-.78-14.56-1.55-20.71-.18-1.41,1.47-2.31,2.56-1.39,20.9,17.8,33.42,43.53,33.56,43.83.85,1.77,2.97,2.51,4.74,1.67,1.77-.85,2.51-2.97,1.67-4.74Z"/>
131
+ </g>
132
+ <path d="m68.92,30.66l2.82,5.24s-.61,18.86,18.63,28.37c0,0-15.92,0-20.34-17.69l-2.43-15.48,1.33-.44Z"/>
133
+ <path d="m118.89,191.93s-13.9,11.51-9.47,29.05c0,0,3.24,27.95,47.56,30.11,3.97.19,7.96.09,11.92-.25l8.61-.73-5.02-6.44-24.17,1.86-17.48-4.09-8.55-6.69-7.06-8.92-1.49-12.27,2.23-11.15,1.88-5.68,1.05-4.79Z"/>
134
+ <path d="m113.86,221.44s-19.98-8.99-13.04-36.75l-3.97-10.41s-18.84,40.16,20.33,58l-3.32-10.84Z"/>
135
+ <path d="m285.3,55c-1.87,2.54-2.66,4.1-2.66,4.1l2.66-4.1Z"/>
136
+ <path d="m302.41,153.79c-6.68,79.12-79.36,82.09-79.36,82.09-20.82,11.15-39.41,6.69-39.41,6.69l-18.22,1.86-.05,2.8c31.11,9.49,58.43-3.23,58.43-3.23,73.42-7.4,85.75-67.16,86.35-88.17-2.76.5-4.93-2.16-7.74-2.04Z"/>
137
+ <g>
138
+ <path d="m357.49,3.89c.21-.05-.22.01,0,0h0Z"/>
139
+ <path d="m360.75,4.78c-3.26.04-6.57.22-9.71,1.07-63.89,17.27-68.38,53.25-68.38,53.25,3.46-5.08,11.41-12.71,15.53-16.8,8.37-7.75,27.5-22.36,58.98-30.21,4.1-1.02,5.35,2.3,4.22,5.06-1.99,4.85-6.52,14.02-7.48,22.09,0,0-3.06,36.36-48.59,57.42,0,0-.52,9.5-1.3,17.55,2.11-.36,5.16-6.07,7.26-6.48,1.2-.31-.43-.77.78-1.04l-1.75-3.28s34.54-7.48,49.76-56.62c.71-2.31,1.32-4.64,1.9-6.99,1.01-4.08,3.64-13.61,8.35-24,3.52-7.77-2.57-11.13-9.58-11.04Z"/>
140
+ </g>
141
+ <path d="m363.76,12.4s-8.3,16.61-18.1,28.77c-.49.61-.98,1.23-1.46,1.85-3.02,3.97-18.93,22.99-46.02,22.39,0,0,29.56,8.83,51.99-20.05,0,0,7.48-9.51,11.55-17.67l2.38-6.46,1.7-7.82-2.04-1.02Z"/>
142
+ <path d="m319.25,63.37s-6.12,16.99-21.75,17.33c0,0,20.05,6.46,28.54-17.67l2.04-2.72-8.83,3.06Z"/>
143
+ <path d="m164.61,34.36s88.92-20.02,122.02,16.77l5.1-6.46s-19.27-25.95-90.12-23.6l-28.21,3.27-8.78,10.01Z"/>
144
+ <path d="m356.31,102.95c-29.49-10.53-47.45,1.08-47.45,1.08l-2.7-.59-3.17,12.86c17.89-15.04,42.54-8.82,42.54-8.82-5.87,11.26-15.87,16.87-21.14,19.38-1.85.88-3.82,1.48-5.84,1.86-9.28,1.75-15.82,6-15.82,6,22.18-5.46,35.55,4.79,35.55,4.79-14.26,15.56-35.86,14.29-35.86,14.29l3,8.04c30.63-2.16,44.43-24.37,44.43-24.37-5.61-3.88-10.53-6.1-16.57-8.04,15.56-7.59,23.04-26.46,23.04-26.46Z"/>
145
+ <path d="m231.9,333.99c-2.38-1.61-5.28-2.23-8.14-2.02-9.95.73-11.4,11.32-11.4,11.32-.5,4.57-.6,8.38.61,10.97,4.74,12.04,15.88,12.94,15.88,12.94-.38-7.15,3.16-11.59,3.16-11.59l1.96-2.18,1.13-3.39.34-1.97,1.06-.91c1.28-7.42-1.75-11.25-4.59-13.17Zm-2.15,17.18c-4.18,5.43-4.21,11.29-4.21,11.29-3.19-1.4-5.31-3.44-6.72-5.45-1.87-2.67-2.73-5.93-2.66-9.19.04-2.03.37-3.4.37-3.4,1.86-8.89,10.07-7.09,10.07-7.09,4.61.89,5.32,5.95,5.38,8.55-.3,2.7-2.22,5.3-2.22,5.3Z"/>
146
+ <path d="m133.6,353.59l1.08.43.88,1.5,1.92,2.41,2.14,1.19s4.04,2.55,6.04,8.44c0,0,7.94-3.99,7.6-15.11.07-2.45-1.23-5.5-3.06-9.05,0,0-4.47-8.14-12.05-5.82-2.18.67-4.13,2.02-5.37,4.02-1.48,2.38-2.5,6.37.82,11.99Zm2.93-2.36c-.79-2.11-1.88-6.42,1.24-8.49,0,0,5.49-3.86,9.71,2.78,0,0,.68,1.01,1.36,2.64,1.09,2.62,1.5,5.5.98,8.21-.4,2.04-1.31,4.31-3.23,6.38,0,0-1.9-4.72-6.73-7.89,0,0-2.25-1.53-3.34-3.63Z"/>
147
+ <path d="m161.16,337.54s-4.29-8.23-11.93-6.07c-2.2.62-4.17,1.93-5.45,3.9-.69,1.06-1.29,2.45-1.45,4.18.51-.02,1.05.05,1.6.28.99.4,1.87.95,2.65,1.6-.08-1.8.38-3.68,2.17-4.81,0,0,5.57-3.74,9.65,2.99,0,0,.66,1.02,1.3,2.67,1.04,2.64,1.39,5.53.8,8.23-.44,2.03-1.4,4.28-3.36,6.31,0,0-1.69-4.46-6.12-7.71.44,1.73.66,3.51.71,5.2,1.33,1.32,3.24,3.7,4.38,7.29,0,0,8.03-3.82,7.91-14.95.12-2.44-1.11-5.53-2.87-9.11Z"/>
148
+ <path d="m173.22,333.32s-4.09-7.83-11.35-5.77c-2.09.59-3.97,1.84-5.19,3.71-.39.61-.75,1.33-1.01,2.16,1.52.89,2.73,2.05,3.67,3.41-.03-1.65.43-3.35,2.07-4.39,0,0,5.29-3.56,9.18,2.84,0,0,.63.97,1.24,2.54.99,2.51,1.32,5.26.77,7.83-.42,1.94-1.34,4.07-3.2,6,0,0-1.71-4.53-6.24-7.64,0,0-.58-.42-1.27-1.09.37,1.64.58,3.32.68,4.97l.27.16s3.79,2.51,5.58,8.15c0,0,7.64-3.64,7.53-14.22.11-2.33-1.06-5.26-2.73-8.67Z"/>
149
+ <path d="m212.75,332.99c-1.78-1.56-4.06-2.29-6.36-2.3-8.01-.03-10.21,9.18-10.21,9.18-.73,3.94-.81,7.16-.03,9.49,2.92,10.78,11.77,12.3,11.77,12.3.21-6.24,3.36-9.87,3.36-9.87l1.72-1.77,1.15-2.87.41-1.69.92-.72c1.56-6.36-.59-9.9-2.72-11.75Zm-1.07,6.58c.67,2.77-.03,5.71-1.72,8-.1.14-.16.21-.16.21-3.55,4.6-4.25,9.07-4.25,9.07-2.27-1.65-3.22-2.67-4.33-4.67-1.35-2.42-1.75-5.34-1.46-8.17.18-1.76.54-2.93.54-2.93,1.56-4.91,4.94-5.64,6.76-5.66.77,0,1.54.15,2.2.53,1.37.78,2.08,2.17,2.43,3.61Z"/>
150
+ <path d="m198.05,344.34c-.12.18-.22.36-.35.53-.1.14-.16.21-.16.21-3.55,4.6-4.25,9.07-4.25,9.07-2.27-1.65-3.22-2.67-4.33-4.67-1.35-2.42-1.75-5.34-1.46-8.17.18-1.76.54-2.93.54-2.93,1.56-4.91,4.94-5.64,6.76-5.66.77,0,1.54.15,2.2.53,1.37.78,2.08,2.17,2.43,3.61.03.14.05.29.08.44.82-1.41,2.03-2.48,3.69-2.96-.62-1.84-1.66-3.15-2.7-4.06-1.78-1.56-4.06-2.29-6.36-2.3-8.01-.03-10.21,9.18-10.21,9.18-.73,3.94-.81,7.16-.03,9.49,2.92,10.78,11.77,12.3,11.77,12.3.18-5.27,2.45-8.66,3.15-9.6-.43-1.58-.7-3.31-.76-5.02Z"/>
151
+ <path d="m189.97,331.62s.37-12.28,14.43-15.85c1.93-.49,3.92-.7,5.91-.76,5.32-.15,21.4-1.15,31.61-7.71,0,0,10.83-7.52,10.39-21.45,0,0-.64,21.46-40.64,22.93-3.53.13-6.96.95-10.37,1.86-7.21,1.92-20.34,11.71-17.21,28.33l5.88-7.36Z"/>
152
+ <path d="m161.02,247.19l-2.41,1.26-4.3-5.37-.22,4.96s1.29,30.65-18.79,48.55c-1.05.94-.63.61-1.7,1.54-3.23,2.83-20.95,21.89-14.89,46.02,0,0,.71,3.3,3.58,7.47,4.27,6.19,10.89,10.37,18.26,11.87,1.63.33,2.82.53,2.82.53l-4.79-7.39c-.33-.1-.65-.2-.97-.31-5.79-1.97-10.14-6.83-11.82-12.71-5.58-19.56,6.9-35.01,12.01-40.68.83-.92,1.72-1.77,2.65-2.58,23.71-20.87,20.56-53.16,20.56-53.16Z"/>
153
+ <path d="m134.48,343.5l-1.7-1.9s-4.59,6.77,2.47,15.11l2.95,3.21s5.52,2.44,6.93,8.6c0,0,6.67-2.82,8.08-13.22l-3.21,6.16-3.59,2.57-2.57-3.59-3.08-3.21-2.31-1.8-2.95-4.62-.9-4.49-.13-2.82Z"/>
154
+ <polygon points="141.02 362.75 143.08 363 141.28 360.18 139.23 359.54 137.56 359.54 137.43 361.34 141.02 362.75"/>
155
+ <path d="m164.59,328.61s-1.8-18.06-22.31-16.77c0,0,26.06-9.15,28.68,21.67l-6.36-4.9Z"/>
156
+ <path d="m169.8,327.07s8.3,8.11,7.15,17.77c0,0-1.55,9.46-9.08,12.94,0,0,0-3.67-3.09-6.57,0,0-1.93,8.69-8.88,12.36,0,0-.97-3.86-2.51-5.6,0,0-.39,8.69-9.46,12.55,0,0,.39-5.21-4.44-8.69l-.25-2.29,6.63,3.45.56,1.04,1.95-3.16,2.51-5.02.87-1.54,1.25-.77,2.12,1.93s.77.97,1.16,1.55.97.97.97.97l2.12-1.55,1.93-3.86,1.27-4.66,1.62-.36h1.55l2.32,3.28,1.16,1.74,2.7-2.9,2.12-2.9-.19-4.25.39-4.44-2.12-4.64-2.32-3.09v-3.28Z"/>
157
+ <path d="m184.96,333.23s-.04.07-.11.21c-.66,1.33-4.02,8.81-.42,16.96,0,0,3.97,8.47,11.92,9.52,0,0-.52-2.47.97-6,0,0,2.62,7.42,11.85,9.22,0,0-.67-5.4,2.25-9.9,0,0,3.3,13.57,18.3,14.7,0,0-.67-6.37,3.07-12l.67-.9-2.25-.67-2.55,2.32s-.9,3.52-1.05,4.2-.9,4.05-.9,4.05l-3.37-1.5-3.52-2.92-3.52-4.2-2.4-7.12-1.8-1.05-2.25,2.4s-1.42,1.42-2.1,2.92-1.05,1.57-1.2,3.07-.45,2.7-.45,2.7c0,0-.75-.3-1.87-1.05s-2.55-2.02-2.55-2.02l-2.1-3.22-1.57-3.15s-1.12-.52-1.5.67-.45,1.05-1.05,2.32c-.6,1.27-.75.97-.9,1.87l-.15.9-1.35.07s-2.55-1.5-2.7-1.72-.6-.3-1.05-1.2-1.65-2.85-1.65-2.85l-.97-3.75-.37-2.55.82-5.17.75-4.57-2.92-.6Z"/>
158
+ <path d="m154.15,447.06c0-.46-.01-.93-.04-1.43l-.5-.45c-2.73-13.43-12.69-11.53-16.03-9.66-3.72-3.66-7.63-3.78-7.63-3.78-3.63-.1-6.54,1.37-8.86,3.66-4.42-6.42-10.63-3.9-10.63-3.9-1.16.36-2.18.9-3.14,1.52-.07-.07-.14-.14-.22-.22-1.01,1.16-1.82,1.04-2.77,2.23-.14.19-.78,1.22-1.39,2.14-2.04,3.11-3.55,6.54-4.4,10.16-.55,2.33-.85,4.43-1.03,5.78.13,1.58.33,2.71.43,3.93h.29v1.79h17.72v1.39h34.85l-.8-.14c.6-.19,2.14-.66,2.73-.87,1.75-.61,1.84.25,2.17-1.57.05-.28.08-.55.11-.83l.15-4.65c-.36-.53-.71-3.88-1.03-5.1Zm-41.49,8.05c-5.46.53-8.56-.94-10.03-2.05,1.27-8.5,3.77-12.8,5.89-14.97,2.74-2.81,7.55-1.93,8.98,1.73.04.09.07.18.1.26-3.01,5.32-4.39,11.79-4.93,15.03Zm20.93-15.91c-.44,1.37-.89,2.73-1.33,4.1-.17.51-.42.93-.71,1.28-1.02,3.9-2.35,7.87-2.53,11.91-6.71,1.12-10.07.48-11.56,0,2.77-19.53,11.73-19.82,11.73-19.82,1.81.11,3.33.84,4.55,1.78.07.08.15.19.22.29-.12.15-.24.31-.35.46,0,0,0,0,0-.01Zm14.88,14.76s-.11,1.19-.12,1.21c-2.78.97-7.77,1.66-14.09,1.75-.28,0-.5-.23-.49-.5.1-2.17.12-4.14,1.98-9.62,1.33-2.94,2.96-4.62,4.41-5.63,2.69-1.87,5.51-.84,6.72,2.09.36.87.67,1.76.94,2.62.48,1.82.91,4.54.65,8.07Z"/>
159
+ <path d="m318.96,438.77l-2.12.14c-4.33-3.17-9.49-1.38-11.61.13-.81.58-1.64,1.13-2.23,1.94-.56.76-1.05,1.54-1.52,2.33-4.68-6.81-10.55-6.6-10.55-6.6-3.73.12-6.62,1.94-8.86,4.62-4.92-6.81-11.13-3.62-11.13-3.62-1.16.47-2.18,1.14-3.13,1.89-1.47-1.45-4.07-3.28-7.47-2.97-.84-.02-1.64.03-2.4.14-3.62.55-6.82,2.67-9,5.61l-1.92,2.59c-3.56,7.68-2.4,12.61-2.4,12.61-.31,2.43.93,6.28,3.13,7.36,2.3,1.12,6.13,2.08,12.48,1.98,0,0,5.46,2.85,17.56,2.85,0,0,9.59,3.06,22.38-.77,1.26-.38,2.57-.55,3.88-.51,3.38.1,9.52-1.47,17.2-5.05,1.86-.87,1.66-.12,2.03-1.25,0,0,.48-11.82-4.3-23.4Zm-59.68,22.22c-1.59.22-4.47.31-8.42-.89-.41-.13-.68-.53-.64-.96.26-2.77,1.16-9.29,4.2-13.66,1.47-2.11,3.76-3.59,6.33-3.74,1.31-.08,2.75.18,3.91,1.23-4.04,5.81-5.11,14.11-5.37,18.02Zm15.33,2.66c-5.56.95-8.84-.49-10.41-1.61,1.53-18.34,8.73-19.59,8.73-19.59,3.85,0,5.38,3.09,5.83,4.27-2.77,6.08-3.79,13.32-4.15,16.93Zm21.83-.36c-8.78,2.14-14.68.94-16.56.42,2.15-22.9,10.54-21.51,10.54-21.51,1.87,0,3.46.71,4.78,1.68.92,1.07,2.25,3.24,2.96,7.26-1.48,5.16-1.71,9.88-1.72,12.15Zm21.16-4.6c-1.33.7-7.31,3.3-14.91,4.17,0-2.65-.25-4.67,1.45-11.32,1.18-3.34,2.75-5.3,4.18-6.51,2.65-2.24,5.6-1.29,7.01,1.88.42.94.79,1.9,1.12,2.84.6,1.99,1.22,4.98,1.15,8.92,0,0,0,.01-.01.02Z"/>
160
+ <path d="m345.46,392.73c1.04-21.6-6.93-36.46-13.08-45.21-2.62-3.73-5.78-7.04-9.19-10.07-3.26-2.89-5.83-5.82-8.18-8.4-3.41-3.76-8.54-10.28-11.34-14.51-43.02-65.06-31.36-90.47-31.36-90.47l-7.69,4.53c-1.31,12.47,2.74,32.54,5.9,42.15,4.26,12.96,5.93,23.6,3.81,35.98-.09.51-.18,1.01-.27,1.5-2.59,13.43-10.66,25.5-22.72,31.94-10.43,5.57-17.41,5.57-17.41,5.57l-2.12,8.33c27.99-3.4,40.05-24.12,40.05-24.12,11.6-16.55,9.74-39.28,9.74-39.28,3.59,7.18,10.83,19.94,13.3,24.12,5.41,9.18,7.85,11.04,14.69,18.56.91.99,2.7,2.92,3.6,3.67,12.64,10.55,21.31,22.52,25.01,41.64,1.16,6,.77,12.37.77,12.37-.93,30.46-24.39,40.75-24.39,40.75,0,0,1.6,4.93,1.2,10.12l6.76,7.88s-.35-8.2-1.29-14.37c23.44-11.91,24.22-42.68,24.22-42.68Z"/>
161
+ <path d="m258.95,439.09s5-9.69,19.7-11.1c0,0-18.63-4.87-27.48,12.68,0,0-.66,1.71-.66,2.17s8.44-3.75,8.44-3.75Z"/>
162
+ <path d="m85.73,446.23s-.68,4.81-.17,9.82h10.08v.2h.4v.8h2.19v1.79h4.07l-.88-3.89-1.18-1.7,1.05-.92s-7.18,1.97-11.77-.78c0,0,.63-20.57,17.53-14.55l1.44-.92.2-3.33s-16.76-5.98-22.96,13.48Z"/>
163
+ <path d="m128.76,458.81s.26-16.07,5.94-21.05l.52,2.27s-1.66,8.03-1.83,8.3-2.45,9.17-2.45,9.17l-.09,2.53-2.1-1.22Z"/>
164
+ <path d="m147.36,435.23s7.16,1.75,8.65,19.82l.09,2.36-1.57.44-.96-1.57-1.4-5.85-3.67-8.65-1.14-6.55Z"/>
165
+ <path d="m108.69,432.75s7.4-9.4,26.72-6.34c-4.89-2.57-20.58-9.2-38.49,6.99,0,0,4.42-.55,5.05-.55s5.12-.05,5.12-.05l1.34,1.09.26-1.14Z"/>
166
+ <path d="m121.56,425.68s-3.79-6.32-7.78-17.28c-2.23-6.13-4.62-13.61-5.41-20.08-1.49-12.32,1.31-29.27,14.81-37.86l-.63-9.79s-38.15,20.71-15.96,71.31c0,0,2.47,6.32,6.93,16.18l8.04-2.48Z"/>
167
+ <path d="m271.25,428.68s-.56-5.56-6.7-20.94c0,0-6.07-11.75-6.33-25.95-.23-12.53,6.38-25.03,16.6-32.3,6.69-4.77,13.02-7.6,23.12-8.82,0,0-35.46-3.4-45.81,29.68,0,0-4.75,19.09,6.5,40.78,2,3.85,3.71,7.85,4.93,12.02.96,3.28,1.21,7.03,1.5,9.41l6.18-3.88Z"/>
168
+ <path d="m462.59,366.38s.07-.03.2-.08l.11-.9-.31.98Z"/>
169
+ <g>
170
+ <path d="m142.65,259.38c-3.47-4.91-5.66-10.61-6.49-16.58-1.94-.98-3.83-2.05-5.66-3.16.23,1.76.46,3.42.7,4.97.71,4.54,2.22,8.92,4.51,12.89,5.68,9.86,12.23,16.8,18.04,21.59.91-1.78,1.69-3.6,2.4-5.46-6.03-4.75-10.46-9.94-13.5-14.24Z"/>
171
+ <path d="m158.89,249.29c-.12-.17-.24-.33-.35-.5-3.57.04-7.17-.49-10.73-1.44.95,2.08,2.04,4.1,3.31,6.01,1.89,2.83,4.49,6.15,7.77,9.33v-13.4Z"/>
172
+ <path d="m137.64,301.89s-.87-11.49-5.64-25.55c0,0-4.75-16.67-5.42-31.27,0,0-1.56,18.98,2.34,36.38,0,0,3.2,12.89,2.88,22.29l1.19,3.12,4.64-4.97Z"/>
173
+ <path d="m116.27,229.14c-3.99,6.08-9.75,13.77-16.7,19.91-1.27,1.12-2.43,2.36-3.48,3.69-4.47,5.71-14.96,20.51-16.37,35.24l1.78,4.72,1.75-.05,3.09-2.37s1.49-18.12,17.4-38.25c0,0,8.13-10.88,13.84-21.78-.44-.37-.87-.74-1.3-1.11Z"/>
174
+ <path d="m77.71,232.19c-4.3.93-5.91,1.65-13.6,4.15-9.58,3.12-21.18,11.85-23.9,24.06l-3.05,5.17,2.73,1.94,6.59-2s.06-14.68,28.72-27.8c0,0,12.21-4.95,22.35-11.06-5.2,2.01-11.41,3.73-19.85,5.55Z"/>
175
+ </g>
176
+ <path d="m278.43,274.72s39.54-7.12,58.28,22.31l-3.04-.53-19.45-11.67-17.89-3.11-15.36-.75-2.53-6.25Z"/>
177
+ <g>
178
+ <path d="m165.07,319.76c2.03,1.62,2.6,5.75,3.72,8.05,9.4-36.67,9.31-79.87,9.29-80.24l-5.9-.5c.02.34,1.39,33.75-7.11,72.69Z"/>
179
+ <path d="m177.63,412.14c-12.62-16.62-13.06-43.74-11.58-61.91-1.21-.89-2.36-1.91-3.4-3.01-.22,2.94-.77,5.81-2.28,8.65-.26.48-.57.85-.93,1.14-.75,17.2.82,39.18,10.78,55.14h7.4Z"/>
180
+ </g>
181
+ <g>
182
+ <path d="m244.26,304.04c-10.3-33.95-10.83-64.69-10.84-65.11l-6.09.07c.02,1.76.55,32.81,11.22,67.4,1.89-.83,3.8-1.6,5.71-2.37Z"/>
183
+ <path d="m254.69,344.48c1.21,3.05,4.39,10.97,5.91,15.02l5.7-2.14c-1.52-4.06-5.58-12.24-6.81-15.35-1.8.95-2.79,1.99-4.79,2.47Z"/>
184
+ </g>
185
+ <path d="m211.77,417.04c-26.12,0-40.01-5.66-40.86-6.02l2.36-5.61-1.18,2.8,1.18-2.81c4.47,1.86,26.52,13.3,86.52-.16l1.33,5.94c-19.55,4.38-36.03,5.85-49.34,5.85Z"/>
186
+ <path d="m205.63,374.01c-26.96,0-42.42-5.22-43.39-5.56l2-5.75c.35.12,35.57,11.93,92.63-.64l1.31,5.94c-20.49,4.51-38.17,6-52.56,6Z"/>
187
+ <path d="m192.38,307.14c-12.46,0-19.87-1.56-20.43-1.68l1.29-5.95c.25.05,25.62,5.32,62.38-4.27l1.54,5.89c-18.16,4.74-33.52,6.01-44.77,6.01Z"/>
188
+ <path d="m229.02,448.72s.08-.02.13-.02c.24,0,.47.01.71.02,6.08.03,12.19-.03,18.14-1.36.46-.1.83.09,1.06.39l4.3-7.6s-10.14,3.38-20.77,3.07c-16.18-.47-29.28-5.09-41.71-16.17-13.76-12.27-19.43-25.55-19.43-25.55l-3.11-4.67-1.3,5.7,3.21,9.59c8.16,14.06,19.05,23.03,26.2,27.2.83-.63,1.81-.84,2.86-.28.57.3,1.06.73,1.6,1.07.66.42,1.34.82,2.03,1.2,2.94,1.6,6.07,2.82,9.16,4.1.23.09.37.24.45.4,1.55.43,3.12.8,4.7,1.15,3.03.6,6.06,1.16,9.1,1.74.89,0,1.79,0,2.68.01Z"/>
189
+ <path d="m154.48,452.88s34.68,2.11,31.51-12.82c0,0,2.59-1.65,6.35-5.65l4.71,1.41.24,1.65-4,4.47s-3.47,1.3-3.88,5.35l-.75,3.6-7.61,3.28s-10.12,1.65-11.06,1.65-16.63,1.53-16.63,1.53l-5.26-1.53,5.41-4.47.96,1.53Z"/>
190
+ <path d="m137.56,359.54s7.32,5.06,5.65,12.19c0,0,8.63-2.31,10.67-11.24,0,0,1.19,2.85,1.43,4.76,0,0,6.43-3.67,8.09-9.85l.47-2.99s3.33,1.43,3.57,6.42c0,0,15.84-7.59,7.37-25.47l-1.66-1.16-.48,2.62,1.19,7.71s.15,2.89.19,4.25-.67,3.26-1.62,4.45-1.66,2.14-1.66,2.14l-2.62-.95-2.85-2.62-2.14-.71-.71,2.85s-1.27,1.3-1.66,2.62c-.39,1.32-.26,1.58-1.32,2.45s-2.01,1.83-2.01,1.83l-.71.95-1.43-2.62-.95-1.66-1.14-.19-.76,2.57s-.48,1.66-.95,2.38-.38-.91-1.5,1.21c-1.12,2.12-3.59,2.57-3.59,2.57l-.14.74-1.19-2.38-2.62-2.14-4.91-.71Z"/>
191
+ <path d="m183.84,332.43s-6.66,12.84,2.14,22.35c0,0,4.28,4.52,11.18,5.94,0,0-.48-2.38.24-4.04,0,0,3.8,6.66,13.08,7.61,0,0-.24-4.76.95-8.08,0,0,4.02,11.1,18.3,11.73,0,0,.12-10.1,4.71-13.38,0,0,14.97-3.83,22.57-9.77l1.02-.47-25.92,5.71-5.94,13.79-7.61-5.47-6.42-8.56-5.71,7.61-4.75-1.23-4.52-6.62-2.85,7.13-3.8-3.8-3.8-4.76-.39-4.55-.09-4.72.71-4.56-3.08-1.86Z"/>
192
+ <path d="m90.01,134.95s-6.05,21.72,2.75,47.83c0,0-3.21,13.53,1.44,22.27,4.64,8.74,0,0,0,0l4.37-22.12-3.55-15.57-1.91-11.2,1.64-17.48-4.73-3.73Z"/>
193
+ <path d="m105.75,429.37s-23.27-4.43-22.35,27.23c0,0,5.83,4.18,15.4,3.65,0,0,5.48,3.39,15.31,2.61,0,0,6.26,1.91,17.05.43,0,0,11.94.46,22.35-3.04,0,0,22.19-.65,32.45-5.83,2.71-1.37,5.1-3.41,6.52-6.09.9-1.69,1.07-3.85.78-6.09l6.87-5.22-4.16-2.36-7.45,5.36.52,5.14-2.49,3.23-6.34,4.72-15.82,2.4-9.87.93-7.7.86-12.81,1.79h-10.13l-9.83-.89-7.74-2.09-8.04-2.09-5.52-.16-3.81-1.57-.2-4.52,2.09-8.64,6.26-5.96,5.96-1.79,2.71-2.02Z"/>
194
+ <path d="m192.56,437.03s24.62,19.14,58.71,10.09l-1.39-2.12h-18.77l-17.28-3.28-16.08-6.85-5.2,2.15Z"/>
195
+ <g>
196
+ <polygon points="322.6 432.44 322.82 432.03 322.74 432.06 322.6 432.44"/>
197
+ <path d="m390.5,442.89s0,0,0,0c-.12,0-.05,0,0,0Z"/>
198
+ <path d="m322.82,432.03l.31-.09c-.07-.04-.13-.07-.2-.11l-.11.19Z"/>
199
+ <path d="m324.28,429.35s-1.38,1.59-1.6,2.35c.08.04.16.09.25.14l1.35-2.49Z"/>
200
+ <path d="m322.68,431.7c-.68-.38-1.02-.6-1.02-.6l1.07.96c-.1-.06-.11-.19-.06-.36Z"/>
201
+ </g>
202
+ </g>
203
+ <path d="m423.9,190.97s0,0,.01,0c-.03-.01-.08-.03-.01,0Z"/>
204
+ <path d="m89.57,139.44s-16.05,46.68,24.5,56.82l3.38-2.32-5.28-14.57-7.18-13.52-5.07-19.43-1.27-5.28-9.08-1.69Z"/>
205
+ <path class="cls-1" d="m96.45,141.08s-5.04,10.85-2.13,24.89c0,0-1.91-21.41,12.78-25.47,0,0-3.49-2.03-10.65.58Z"/>
206
+ <path d="m428.96,175.51s0,0,0,0c-.34-.15-.7-.29-1.05-.44-.58-.24-1.15-.49-1.73-.73h0c-11.68-4.28-21.63-7.19-32.75-9.82-14.01-3.02-25.42-4.01-33.84-4.97-5.61-.64-11.26-.79-16.89-.39-1.27.09-2.43.18-3.38.25-7.32.57-13.01,7.77-13.75,15.08-6.43,64.08-51.79,74.4-59.87,75.17l1.86,8.28s46.63-5.07,62.34-63.74c.45-1.67.79-3.36,1.09-5.06l2.36-13.44c.49-2.77,2.06-5.3,4.46-6.76.2-.12.39-.23.58-.33,2.16-1.11,4.58-1.68,7.02-1.8,0,0,37.77-2,80.14,15.31,35.77,15.29,51.22,31.07,59.43,43.83,1.33,2.06,2.62,3.93,3.64,5.74-16.65-17.08-38.07-28.83-53.93-36.07.05-.01.1-.03.15-.05-3.42-1.54-7.08-3.09-10.95-4.59.02,0,.03.01-.01,0l-.36-.14c-21.28-8.25-48.71-15.18-76.93-12.27-3.25.33-5.74,2.95-5.91,6.1,0,.03,0,.05,0,.08l-.22,3.26s-6.42,68.82-67.1,78.16l.74,6.39s61.07-4.5,72.67-83.51c.68-2.11,2.58-3.7,4.95-3.93,4.76-.45,12.45-.91,21.08-.3,1.58.11,3.16.28,4.72.52,16.76,2.57,32.73,6.27,48.76,12.95,9.48,4.26,24.25,11.49,36.42,19.8-8.73,1.35-14.31,9.28-14.52,23.8-10.95-13.96-27.75-24.93-37.35-29.17-4.01-1.77-8.19-3.12-12.46-4.16-21.64-5.23-36.53-14.05-36.53-14.05,12.71,10.94,36.71,20.06,36.71,20.06,26.91,11.63,40.33,29.24,45.04,36.64-11.81-2.01-21.19,2.24-22.36,2.8-8.88,4.02-14.44,10.58-17.91,17.08-4.39-13.44-13.51-25.54-17.9-30.85-1.28-1.55-2.69-2.98-4.24-4.28-16.65-13.94-27.83-34.93-27.83-34.93,4.33,15.03,22.81,38.45,22.81,38.45,14.38,17.26,19.19,33.28,20.72,40.46-6.88-4.71-13.94-6.13-17.43-6.54-9.76-1.17-23.1.74-30.87,7.66-1.93,1.72-3.59,3.49-5.07,5.26.99-6.81,2.37-12.37,2.37-12.37,4.58-20.3,2.53-42.39,2.53-42.39-.68,17.02-6.29,36.47-6.29,36.47-3.91,11.37-5.56,22.29-6.21,27.94-7-9.33-15.58-14.57-23.54-17.48-10.31,2.42-21.78-.31-32.2-.66-1.19.11-2.41.2-3.65.26.3.67.66,1.5,1.04,2.38.16-.03.3-.06.47-.07,7.56-.38,16.32-1.15,23.75.45.9.19-.12.54.31,1.1,17.66,4.06,28.59,16.56,33.38,23.33,1.15,1.62,3.65,1.27,4.32-.6,7.33-20.5,25.72-23.7,25.72-23.7,17.09-3.42,28.45,3.86,33.75,8.56,1.57,1.39,4.03.65,4.58-1.37,5.7-20.7,19.41-26.96,19.41-26.96,10.55-5.11,20.72-3.66,27.54-1.46,3.54,1.14,7-1.91,6.34-5.57-4.59-25.15,4.97-28.75,4.97-28.75,3.35-1.72,7.31-.81,10.71,1.54,6.3,4.33,15.01,12.25,22.2,23.58l2.58,3.78c1.18,1.72,3.87.89,3.88-1.19l.02-4.58c0-1.68-4.53-43.9-72.54-73.04Z"/>
207
+ <path d="m136.65,301.2c-1.89-4.15-4.96-9.13-9.91-13.64-6.46-5.89-17.48-7.46-25.53-6.4-3.2.42-10.04,1.92-16.23,7.18-2.02-7.54-6.85-18.24-18.38-23.58-1.11-.54-11.17-5.19-22.89-1.1.57-2.17,1-4.58,1.15-7.19.49-8.23-2.36-17.26-9.61-20.56,31.12-15.94,65.05-19.77,65.5-19.82l-.25-6.13c-2.21.24-47.56,5.56-83.73,28.6,1.36-1.58,2.91-3.23,4.7-4.92,10.82-10.25,32.34-24.1,73.46-31.83l-.17-7.46C11.49,210.14,1.21,250.86.87,252.57l-.83,4.23c-.42,2.13,2.16,3.52,3.71,2l.94-1.19c2.89-3.52,10.52-12.81,21.34-15.38,1.7-.41,3.51-.4,5.15.23,0,0,10.63,1.23,5.14,25.74-.5,2.24,1.68,4.11,3.82,3.27,5.12-2,13.25-3.99,21.25-1.03,0,0,14.81,3.9,18.86,23.89.39,1.91,2.66,2.71,4.18,1.5,4.96-3.92,14.91-9.85,27.75-7.62,0,0,12.56,1.26,19.63,15.52l-1.22,2.99c.22.6.41,1.15.57,1.66,3.71-5.07,7.97-9.71,12.67-13.9.88-1.21,1.74-2.44,2.6-3.67-3.47,2.62-6.81,6.01-9.76,10.39Z"/>
208
+ <path d="m250.13,446.2l-3.12-1.25s-4.27,7.03-3.51,18.95c.05.8.55,1.5,1.29,1.82,2.07.91,6.79,2.77,13.52,2.77.62,0,1.25.08,1.84.28,1.86.63,7.27,2.18,15.17,1.65.81-.05,1.61.09,2.4.27,2.68.61,10.36,1.58,21.82-1.06.58-.13,1.18-.23,1.77-.26,2.88-.19,13.31-.87,21.41-5.39.76-.42,1.26-1.2,1.35-2.07.37-3.24.6-12.03-2.96-18.35l-1.78,17.22-11.93,4.27-29.26,2.01-12.43-.88-14.32-2.14-5.02-2.89,2.89-11.43.88-3.52Z"/>
209
+ <path d="m466.98,366.8c-.7-5.46-3.38-13.92-6.53-18.44-9.41-13.53-19.52-10.17-19.52-10.17-10.07,2.14-8.42,19.05-8.42,19.05,1.94,25.4-29.23,28.78-29.23,28.78-35.95,5.69-65.75-29.3-65.75-29.3l2.37,4.43c-1.27-1.55-2.53-3.17-3.74-4.9l-4.92-3.92,4.94,13.33s.55.85,1.66,2.26l-2.39-5.76s19.57,28.25,59.09,30.45c0,0,21.03.4,34.36-11.74,3.75-3.42,6.37-7.91,7.7-12.81,1.1-4.06,2.13-9.92,2.02-17.49-.02-1.5.48-3,1.55-4.04.27-.26.58-.49.93-.69,1.76-1.61,4.84-2.05,6.84-.56,5.87,4.37,9.43,10.68,11.04,17.32,1.41,5.8,2.54,18.26,1.49,24.13-.22,1.25-.49,2.46-.78,3.64-3.24,12.02-21.43,48.25-88.65,44.64,0,0-23.33-.83-40.27-8.75l-6.96,5.49-2.16-.66c33.77,15.86,81.02,8.73,81.02,8.73,63.94-9.69,65.15-56.58,65.21-58.55.11-4.9-.35-10.1-.91-14.48Z"/>
210
+ </g>
211
+ </g>
212
+ </svg>
@@ -0,0 +1,3 @@
1
+ code {
2
+ --bs-code-color: #{$secondary};
3
+ }
@@ -0,0 +1 @@
1
+ $secondary: #EFCA81;
@@ -0,0 +1,9 @@
1
+ ---
2
+ title: Overview
3
+ linkTitle: Documentation
4
+ menu: {main: {weight: 1}}
5
+ ---
6
+
7
+ ## What is Pepr?
8
+
9
+ Pepr functions as both a Mutating and Validating Admission Webhook, offering a fluent API that facilitates real-time resource alterations and the establishment and enforcement of policies on Kubernetes resources. Its design is not only lightweight but also includes an integrated Kubernetes client, ensuring a straightforward and effective user experience for additional interactions with Kubernetes.
@@ -0,0 +1,64 @@
1
+ ---
2
+ title: CLI
3
+ linkTitle: CLI
4
+ ---
5
+ # Pepr CLI
6
+
7
+ ## pepr init
8
+
9
+ Initialize a new Pepr Module.
10
+
11
+ **Options:**
12
+
13
+ - `-l, --log-level [level]` - Log level: debug, info, warn, error (default: "info")
14
+ - `--skip-post-init` - Skip npm install, git init and VSCode launch
15
+
16
+ ---
17
+
18
+ ## pepr update
19
+
20
+ Update the current Pepr Module to the latest SDK version and update the global Pepr CLI to the same version.
21
+
22
+ **Options:**
23
+
24
+ - `-l, --log-level [level]` - Log level: debug, info, warn, error (default: "info")
25
+ - `--skip-template-update` - Skip updating the template files
26
+
27
+ ---
28
+
29
+ ## pepr dev
30
+
31
+ Connect a local cluster to a local version of the Pepr Controller to do real-time debugging of your module. Note
32
+ the `pepr dev` assumes a K3d cluster is running by default. If you are working with Kind or another docker-based
33
+ K8s distro, you will need to pass the `--host host.docker.internal` option to `pepr dev`. If working with a remote
34
+ cluster you will have to give Pepr a host path to your machine that is reachable from the K8s cluster.
35
+
36
+ **Options:**
37
+
38
+ - `-l, --log-level [level]` - Log level: debug, info, warn, error (default: "info")
39
+ - `-h, --host [host]` - Host to listen on (default: "host.k3d.internal")
40
+ - `--confirm` - Skip confirmation prompt
41
+
42
+ ---
43
+
44
+ ## pepr deploy
45
+
46
+ Deploy the current module into a Kubernetes cluster, useful for CI systems. Not recommended for production use.
47
+
48
+ **Options:**
49
+
50
+ - `-l, --log-level [level]` - Log level: debug, info, warn, error (default: "info")
51
+ - `-i, --image [image]` - Override the image tag
52
+ - `--confirm` - Skip confirmation prompt
53
+
54
+ ---
55
+
56
+ ## pepr build
57
+
58
+ Create a [zarf.yaml](https://zarf.dev) and K8s manifest for the current module. This includes everything needed to deploy Pepr and the current module into production environments.
59
+
60
+ **Options:**
61
+
62
+ - `-r, --registry-info [<registry>/<username>]` - Registry Info: Image registry and username. Note: You must be signed into the registry
63
+ - `--rbac-mode [admin|scoped]` - Rbac Mode: admin, scoped (default: admin)
64
+ - `-l, --log-level [level]` - Log level: debug, info, warn, error (default: "info")
@@ -0,0 +1,31 @@
1
+ ---
2
+ title: Code Sample
3
+ description: Samples of code
4
+ ---
5
+ <!--
6
+ In certain instances a markdown viewer may not display due to
7
+ the '---' frontmatter block above. If you're one of those edge
8
+ cases enclose the frontmatter at the top of this file entirely
9
+ within a comment block just like this comment.
10
+ -->
11
+
12
+ ```bash
13
+ echo "This is bash"
14
+ ```
15
+
16
+ ```javascript
17
+ console.log('This is JS')
18
+ ```
19
+
20
+ ```go
21
+ func main() {
22
+ fmt.Println("Go with language defined")
23
+ }
24
+ ```
25
+
26
+ ```gherkin
27
+ Scenario: Document a product
28
+ Given there is documentation to publish
29
+ When I review the documentation
30
+ Then it will meet the Unicorn style
31
+ ```
@@ -0,0 +1,238 @@
1
+ ---
2
+ title: Concepts
3
+ linkTitle: Concepts
4
+ ---
5
+
6
+ # Pepr Module
7
+
8
+ Each Pepr Module is it's own Typescript project, produced by [`pepr init`](./cli.md#pepr-init). Typically a module is maintained by a unique group or system. For example, a module for internal [Zarf](https://zarf.dev/) mutations would be different from a module for [Big Bang](https://p1.dso.mil/products/big-bang). An important idea with modules is that they are _wholly independent of one another_. This means that 2 different modules can be on completely different versions of Pepr and any other dependencies; their only interaction is through the standard K8s interfaces like any other webhook or controller.
9
+
10
+ ## Module development lifecycle
11
+
12
+ 1. **Create the module**:
13
+
14
+ Use [`pepr init`](./cli.md#pepr-init) to generate a new module.
15
+
16
+ 1. **Quickly validate system setup**:
17
+
18
+ Every new module includes a sample Pepr Capability called `HelloPepr`. By default,
19
+ this capability is deployed and monitoring the `pepr-demo` namespace. There is a sample
20
+ yaml also included you can use to see Pepr in your cluster. Here's the quick steps to do
21
+ that after `pepr init`:
22
+
23
+ ```bash
24
+ # cd to the newly-created Pepr module folder
25
+ cd my-module-name
26
+
27
+ # If you don't already have a local K8s cluster, you can set one up with k3d
28
+ npm run k3d-setup
29
+
30
+ # Launch pepr dev mode
31
+ # If using another local K8s distro instead of k3d, use `pepr dev --host host.docker.internal`
32
+ pepr dev
33
+
34
+ # From another terminal, apply the sample yaml
35
+ kubectl apply -f capabilities/hello-pepr.samples.yaml
36
+
37
+ # Verify the configmaps were transformed using kubectl, k9s or another tool
38
+ ```
39
+
40
+ 1. **Create your custom Pepr Capabilities**
41
+
42
+ Now that you have confirmed Pepr is working, you can now create new [capabilities](./capabilities.md). You'll also want to disable the `HelloPepr` capability in your module (`pepr.ts`) before pushing to production. You can disable by commenting out or deleting the `HelloPepr` variable below:
43
+
44
+ ```typescript
45
+ new PeprModule(cfg, [
46
+ // Remove or comment the line below to disable the HelloPepr capability
47
+ HelloPepr,
48
+
49
+ // Your additional capabilities go here
50
+ ]);
51
+ ```
52
+
53
+ _Note: if you also delete the `capabilities/hello-pepr.ts` file, it will be added again on the next [`pepr update`](./cli.md#pepr-update) so you have the latest examples usages from the Pepr SDK. Therefore, it is sufficient to remove the entry from your `pepr.ts` module
54
+ config._
55
+
56
+ 1. **Build and deploy the Pepr Module**
57
+
58
+ Most of the time, you'll likely be iterating on a module with `pepr dev` for real-time feedback and validation Once you are ready to move beyond the local dev environment, Pepr provides deployment and build tools you can use.
59
+
60
+ `pepr deploy` - you can use this command to build your module and deploy it into any K8s cluster your current `kubecontext` has access to. This setup is ideal for CI systems during testing, but is not recommended for production use. See [`pepr deploy`](./cli.md#pepr-deploy) for more info.
61
+
62
+ ## Advanced Module Configuration
63
+
64
+ By default, when you run `pepr init`, the module is not configured with any additional options. Currently, there are 3 options you can configure:
65
+
66
+ - `deferStart` - if set to `true`, the module will not start automatically. You will need to call `start()` manually. This is useful if you want to do some additional setup before the module controller starts. You can also use this to change the default port that the controller listens on.
67
+
68
+ - `beforeHook` - an optional callback that will be called before every request is processed. This is useful if you want to do some additional logging or validation before the request is processed.
69
+
70
+ - `afterHook` - an optional callback that will be called after every request is processed. This is useful if you want to do some additional logging or validation after the request is processed.
71
+
72
+ You can configure each of these by modifying the `pepr.ts` file in your module. Here's an example of how you would configure each of these options:
73
+
74
+ ```typescript
75
+ const module = new PeprModule(
76
+ cfg,
77
+ [
78
+ // Your capabilities go here
79
+ ],
80
+ {
81
+ deferStart: true,
82
+
83
+ beforeHook: req => {
84
+ // Any actions you want to perform before the request is processed, including modifying the request.
85
+ },
86
+
87
+ afterHook: res => {
88
+ // Any actions you want to perform after the request is processed, including modifying the response.
89
+ },
90
+ }
91
+ );
92
+
93
+ // Do any additional setup before starting the controller
94
+ module.start();
95
+ ```
96
+
97
+ # Capabilities
98
+
99
+ A capability is set of related [actions](./actions.md) that work together to achieve a specific transformation or operation on Kubernetes resources. Capabilities are user-defined and can include one or more actions. They are defined within a Pepr module and can be used in both MutatingWebhookConfigurations and ValidatingWebhookConfigurations. A Capability can have a specific scope, such as mutating or validating, and can be reused in multiple Pepr modules.
100
+
101
+ When you [`pepr init`](./cli.md#pepr-init), a `capabilities` directory is created for you. This directory is where you will define your capabilities. You can create as many capabilities as you need, and each capability can contain one or more actions. Pepr also automatically creates a `HelloPepr` capability with a number of example actions to help you get started.
102
+
103
+ ## Creating a Capability
104
+
105
+ Define a new capability can be done via a [VSCode Snippet](https://code.visualstudio.com/docs/editor/userdefinedsnippets) generated during [`pepr init`](./cli.md#pepr-init).
106
+
107
+ 1. Create a new file in the `capabilities` directory with the name of your capability. For example, `capabilities/my-capability.ts`.
108
+
109
+ 1. Open the new file in VSCode and type `create` in the file. A suggestion should prompt you to generate the content from there.
110
+
111
+ https://user-images.githubusercontent.com/882485/230897379-0bb57dff-9832-479f-8733-79e103703135.mp4
112
+
113
+ _If you prefer not to use VSCode, you can also modify or copy the `HelloPepr` capability to meet your needs instead._
114
+
115
+
116
+ ## Reusable Capabilities
117
+
118
+ Pepr has an NPM org managed by Defense Unicorns, `@pepr`, where capabilities are published for reuse in other Pepr Modules. You can find a list of published capabilities [here](https://www.npmjs.com/search?q=@pepr). You can also publish your own Pepr capabilities to NPM and import them. A couple of things you'll want to be aware of:
119
+
120
+ - Reuseable capability versions should use the format `0.x.x` or `0.12.x` as examples to determine compatibility with other reusable capabilities. Before `1.x.x`, we recommend binding to `0.x.x` if you can for maximum compatibility.
121
+
122
+ - `pepr.ts` will still be used for local development, but you'll need to also publish an `index.ts` that exports your capabilities. When you build & publish the capability to NPM, you can use `npx pepr build -e index.ts` to generate the code needed for reuse by other Pepr modules.
123
+
124
+ - See [Pepr Istio](https://github.com/defenseunicorns/pepr-istio) for an example of a reusable capability.
125
+
126
+
127
+ # Actions
128
+
129
+ An action is a discrete set of behaviors defined in a single function that acts on a given Kubernetes GroupVersionKind (GVK) passed in during the admission controller lifecycle. Actions are the atomic operations that are performed on Kubernetes resources by Pepr.
130
+
131
+ For example, an action could be responsible for adding a specific label to a Kubernetes resource, or for modifying a specific field in a resource's metadata. Actions can be grouped together within a Capability to provide a more comprehensive set of operations that can be performed on Kubernetes resources.
132
+
133
+ Actions are `Mutate()`, `Validate()`, or `Watch()`. Both Mutate and Validate actions run during the admission controller lifecycle, while Watch actions run in a separate controller that tracks changes to resources, including existing resources.
134
+
135
+ Let's look at some example actions that are included in the `HelloPepr` capability that is created for you when you [`pepr init`](./cli.md#pepr-init):
136
+
137
+ ---
138
+
139
+ In this first example, Pepr is adding a label and annotation to a ConfigMap with tne name `example-1` when it is created. Comments are added to each line to explain in more detail what is happening.
140
+
141
+ ```ts
142
+ // When(a.<Kind>) filters which GroupVersionKind (GVK) this action should act on.
143
+ When(a.ConfigMap)
144
+ // This limits the action to only act on new resources.
145
+ .IsCreated()
146
+ // This limits the action to only act on resources with the name "example-1".
147
+ .WithName("example-1")
148
+ // Mutate() is where we define the actual behavior of this action.
149
+ .Mutate(request => {
150
+ // The request object is a wrapper around the K8s resource that Pepr is acting on.
151
+ request
152
+ // Here we are adding a label to the ConfigMap.
153
+ .SetLabel("pepr", "was-here")
154
+ // And here we are adding an annotation.
155
+ .SetAnnotation("pepr.dev", "annotations-work-too");
156
+
157
+ // Note that we are not returning anything here. This is because Pepr is tracking the changes in each action automatically.
158
+ });
159
+ ```
160
+
161
+ ---
162
+
163
+ In this example, a Validate action rejects any ConfigMap in the `pepr-demo` namespace that has no data.
164
+
165
+ ```ts
166
+ When(a.ConfigMap)
167
+ .IsCreated()
168
+ .InNamespace("pepr-demo")
169
+ // Validate() is where we define the actual behavior of this action.
170
+ .Validate(request => {
171
+ // If data exists, approve the request.
172
+ if (request.Raw.data) {
173
+ return request.Approve();
174
+ }
175
+
176
+ // Otherwise, reject the request with a message and optional code.
177
+ return request.Deny("ConfigMap must have data");
178
+ });
179
+ ```
180
+
181
+ ---
182
+
183
+ In this example, a Watch action on the name and phase of any ConfigMap.Watch actions run in a separate controller that tracks changes to resources, including existing resources so that you can react to changes in real-time. It is important to note that Watch actions are not run during the admission controller lifecycle, so they cannot be used to modify or validate resources. They also may run multiple times for the same resource, so it is important to make sure that your Watch actions are idempotent. In a future release, Pepr will provide a better way to control when a Watch action is run to avoid this issue.
184
+
185
+ ```ts
186
+ When(a.ConfigMap)
187
+ // Watch() is where we define the actual behavior of this action.
188
+ .Watch((cm, phase) => {
189
+ Log.info(cm, `ConfigMap ${cm.metadata.name} was ${phase}`);
190
+ });
191
+ ```
192
+
193
+ ```
194
+ There are many more examples in the `HelloPepr` capability that you can use as a reference when creating your own actions. Note that each time you run [`pepr update`](./cli.md#pepr-update), Pepr will automatically update the `HelloPepr` capability with the latest examples and best practices for you to reference and test directly in your Pepr Module.
195
+ ```
196
+
197
+ # Pepr Store: A Lightweight Key-Value Store for Pepr Modules
198
+
199
+ The nature of admission controllers and general watch operations (the `Mutate`, `Validate` and `Watch` actions in Pepr) make some types of complex and long-running operations difficult. There are also times when you need to share data between different actions. While you could manually create your own K8s resources and manage their cleanup, this can be very hard to track and keep performant at scale.
200
+
201
+ The Pepr Store solves this by exposing a simple, [Web Storage API](https://developer.mozilla.org/en-US/docs/Web/API/Storage)-compatible mechanism for use within capabilities. Additionally, as Pepr runs multiple replicas of the admission controller along with a watch controller, the Pepr Store provides a unique way to share data between these different instances automatically.
202
+
203
+ Each Pepr Capability has a `Store` instance that can be used to get, set and delete data as well as subscribe to any changes to the Store. Behind the scenes, all capability store instances in a single Pepr Module are stored within a single CRD in the cluster. This CRD is automatically created when the Pepr Module is deployed. Care is taken to make the read and write operations as efficient as possible by using K8s watches, batch processing and patch operations for writes.
204
+
205
+ ## Key Features
206
+
207
+ - **Asynchronous Key-Value Store**: Provides an asynchronous interface for storing small amounts of data, making it ideal for sharing information between various actions and capabilities.
208
+ - **Web Storage API Compatibility**: The store's API is aligned with the standard [Web Storage API](https://developer.mozilla.org/en-US/docs/Web/API/Storage), simplifying the learning curve.
209
+ - **Real-time Updates**: The `.subscribe()` and `onReady()` methods enable real-time updates, allowing you to react to changes in the data store instantaneously.
210
+
211
+ - **Automatic CRD Management**: Each Pepr Module has its data stored within a single Custom Resource Definition (CRD) that is automatically created upon deployment.
212
+ - **Efficient Operations**: Pepr Store uses Kubernetes watches, batch processing, and patch operations to make read and write operations as efficient as possible.
213
+
214
+ ## Quick Start
215
+
216
+ ```typescript
217
+ // Example usage for Pepr Store
218
+ Store.setItem("example-1", "was-here");
219
+ Store.setItem("example-1-data", JSON.stringify(request.Raw.data));
220
+ Store.onReady(data => {
221
+ Log.info(data, "Pepr Store Ready");
222
+ });
223
+ const unsubscribe = Store.subscribe(data => {
224
+ Log.info(data, "Pepr Store Updated");
225
+ unsubscribe();
226
+ });
227
+ ```
228
+
229
+ ## API Reference
230
+
231
+ ### Methods
232
+
233
+ - `getItem(key: string)`: Retrieves a value by its key. Returns `null` if the key doesn't exist.
234
+ - `setItem(key: string, value: string)`: Sets a value for a given key. Creates a new key-value pair if the key doesn't exist.
235
+ - `removeItem(key: string)`: Deletes a key-value pair by its key.
236
+ - `clear()`: Clears all key-value pairs from the store.
237
+ - `subscribe(listener: DataReceiver)`: Subscribes to store updates.
238
+ - `onReady(callback: DataReceiver)`: Executes a callback when the store is ready.