@nockchain/rose 0.1.4-nightly.5

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 (205) hide show
  1. package/.github/workflows/artifacts.yml +33 -0
  2. package/.github/workflows/ci.yml +68 -0
  3. package/.github/workflows/publish-sdk.yml +35 -0
  4. package/.nvmrc +1 -0
  5. package/.prettierignore +5 -0
  6. package/.prettierrc +8 -0
  7. package/LICENSE +22 -0
  8. package/README.md +117 -0
  9. package/extension/background/index.ts +1500 -0
  10. package/extension/content/index.ts +59 -0
  11. package/extension/icons/rose.svg +27 -0
  12. package/extension/icons/rose128.png +0 -0
  13. package/extension/icons/rose16.png +0 -0
  14. package/extension/icons/rose256.png +0 -0
  15. package/extension/icons/rose32.png +0 -0
  16. package/extension/icons/rose48.png +0 -0
  17. package/extension/icons/rose512.png +0 -0
  18. package/extension/inpage/index.ts +86 -0
  19. package/extension/manifest.json +48 -0
  20. package/extension/popup/Popup.tsx +94 -0
  21. package/extension/popup/Router.tsx +121 -0
  22. package/extension/popup/assets/arrow-down-icon.svg +3 -0
  23. package/extension/popup/assets/arrow-left-icon.svg +3 -0
  24. package/extension/popup/assets/arrow-right-icon.svg +3 -0
  25. package/extension/popup/assets/arrow-up-icon.svg +3 -0
  26. package/extension/popup/assets/arrow-up-right-icon.svg +3 -0
  27. package/extension/popup/assets/checkmark-icon.svg +3 -0
  28. package/extension/popup/assets/checkmark-pencil-icon.svg +3 -0
  29. package/extension/popup/assets/checkmark-success-icon.svg +3 -0
  30. package/extension/popup/assets/clock-icon.svg +3 -0
  31. package/extension/popup/assets/close-x-icon.svg +3 -0
  32. package/extension/popup/assets/copy-icon.svg +6 -0
  33. package/extension/popup/assets/explorer-icon.svg +3 -0
  34. package/extension/popup/assets/eye-off-icon.svg +3 -0
  35. package/extension/popup/assets/eye-open-icon.svg +4 -0
  36. package/extension/popup/assets/feedback-icon.svg +3 -0
  37. package/extension/popup/assets/green-status-dot.svg +3 -0
  38. package/extension/popup/assets/info-icon.svg +3 -0
  39. package/extension/popup/assets/iris-logo-40.svg +27 -0
  40. package/extension/popup/assets/iris-logo-96.svg +27 -0
  41. package/extension/popup/assets/iris-logo-blue.svg +27 -0
  42. package/extension/popup/assets/iris-logo-no-eye.svg +27 -0
  43. package/extension/popup/assets/iris-logo-orange.svg +27 -0
  44. package/extension/popup/assets/iris-logo.svg +27 -0
  45. package/extension/popup/assets/key-icon.svg +3 -0
  46. package/extension/popup/assets/lock-icon-yellow.svg +3 -0
  47. package/extension/popup/assets/lock-icon.svg +3 -0
  48. package/extension/popup/assets/pencil-edit-icon.svg +3 -0
  49. package/extension/popup/assets/permissions-icon.svg +3 -0
  50. package/extension/popup/assets/receipt-icon.svg +5 -0
  51. package/extension/popup/assets/refresh-icon.svg +3 -0
  52. package/extension/popup/assets/settings-gear-icon.svg +8 -0
  53. package/extension/popup/assets/settings-icon.svg +3 -0
  54. package/extension/popup/assets/theme-icon.svg +3 -0
  55. package/extension/popup/assets/trash-bin-icon.svg +3 -0
  56. package/extension/popup/assets/trend-down-arrow.svg +5 -0
  57. package/extension/popup/assets/trend-up-arrow.svg +5 -0
  58. package/extension/popup/assets/user-account-icon.svg +3 -0
  59. package/extension/popup/assets/vector-bottom-left.svg +9 -0
  60. package/extension/popup/assets/vector-left.svg +9 -0
  61. package/extension/popup/assets/vector-right.svg +9 -0
  62. package/extension/popup/assets/vector-top-right-rotated.svg +8 -0
  63. package/extension/popup/assets/vector-top-right.svg +9 -0
  64. package/extension/popup/assets/wallet-dropdown-arrow.svg +5 -0
  65. package/extension/popup/assets/wallet-icon-style-1.svg +6 -0
  66. package/extension/popup/assets/wallet-icon-style-10.svg +8 -0
  67. package/extension/popup/assets/wallet-icon-style-11.svg +8 -0
  68. package/extension/popup/assets/wallet-icon-style-12.svg +8 -0
  69. package/extension/popup/assets/wallet-icon-style-13.svg +8 -0
  70. package/extension/popup/assets/wallet-icon-style-14.svg +8 -0
  71. package/extension/popup/assets/wallet-icon-style-15.svg +8 -0
  72. package/extension/popup/assets/wallet-icon-style-2.svg +8 -0
  73. package/extension/popup/assets/wallet-icon-style-3.svg +8 -0
  74. package/extension/popup/assets/wallet-icon-style-4.svg +8 -0
  75. package/extension/popup/assets/wallet-icon-style-5.svg +8 -0
  76. package/extension/popup/assets/wallet-icon-style-6.svg +8 -0
  77. package/extension/popup/assets/wallet-icon-style-7.svg +8 -0
  78. package/extension/popup/assets/wallet-icon-style-8.svg +8 -0
  79. package/extension/popup/assets/wallet-icon-style-9.svg +8 -0
  80. package/extension/popup/components/AccountIcon.tsx +78 -0
  81. package/extension/popup/components/AccountSelector.tsx +246 -0
  82. package/extension/popup/components/Alert.tsx +48 -0
  83. package/extension/popup/components/ConfirmModal.tsx +81 -0
  84. package/extension/popup/components/PasswordInput.tsx +49 -0
  85. package/extension/popup/components/ScreenContainer.tsx +17 -0
  86. package/extension/popup/components/SiteIcon.tsx +60 -0
  87. package/extension/popup/components/ThemeToggle.tsx +44 -0
  88. package/extension/popup/components/icons/ArrowDownLeftIcon.tsx +20 -0
  89. package/extension/popup/components/icons/ArrowUpRightIcon.tsx +20 -0
  90. package/extension/popup/components/icons/CheckIcon.tsx +20 -0
  91. package/extension/popup/components/icons/ChevronDownIcon.tsx +15 -0
  92. package/extension/popup/components/icons/ChevronLeftIcon.tsx +15 -0
  93. package/extension/popup/components/icons/ChevronRightIcon.tsx +15 -0
  94. package/extension/popup/components/icons/ChevronUpIcon.tsx +15 -0
  95. package/extension/popup/components/icons/CloseIcon.tsx +26 -0
  96. package/extension/popup/components/icons/CopyIcon.tsx +20 -0
  97. package/extension/popup/components/icons/EditIcon.tsx +20 -0
  98. package/extension/popup/components/icons/EyeIcon.tsx +13 -0
  99. package/extension/popup/components/icons/EyeOffIcon.tsx +13 -0
  100. package/extension/popup/components/icons/InfoIcon.tsx +20 -0
  101. package/extension/popup/components/icons/LockIcon.tsx +20 -0
  102. package/extension/popup/components/icons/PlusIcon.tsx +15 -0
  103. package/extension/popup/components/icons/ReceiveArrowIcon.tsx +14 -0
  104. package/extension/popup/components/icons/ReceiveCircleIcon.tsx +20 -0
  105. package/extension/popup/components/icons/SendPaperPlaneIcon.tsx +18 -0
  106. package/extension/popup/components/icons/SentArrowIcon.tsx +21 -0
  107. package/extension/popup/components/icons/SettingsIcon.tsx +26 -0
  108. package/extension/popup/components/icons/ShieldIcon.tsx +20 -0
  109. package/extension/popup/components/icons/UploadIcon.tsx +20 -0
  110. package/extension/popup/components/icons/WalletIcon.tsx +20 -0
  111. package/extension/popup/contexts/ThemeContext.tsx +105 -0
  112. package/extension/popup/hooks/useApprovalDetection.ts +128 -0
  113. package/extension/popup/hooks/useAutoFocus.ts +36 -0
  114. package/extension/popup/hooks/useAutoRejectOnClose.ts +25 -0
  115. package/extension/popup/hooks/useClickOutside.ts +33 -0
  116. package/extension/popup/hooks/useCopyToClipboard.ts +33 -0
  117. package/extension/popup/hooks/useFavicon.ts +64 -0
  118. package/extension/popup/hooks/useNumericInput.ts +93 -0
  119. package/extension/popup/index.html +13 -0
  120. package/extension/popup/index.tsx +24 -0
  121. package/extension/popup/screens/AboutScreen.tsx +118 -0
  122. package/extension/popup/screens/HomeScreen.tailwind.css +85 -0
  123. package/extension/popup/screens/HomeScreen.tsx +902 -0
  124. package/extension/popup/screens/KeySettingsPasswordScreen.tsx +164 -0
  125. package/extension/popup/screens/LockTimeScreen.tsx +155 -0
  126. package/extension/popup/screens/ReceiveScreen.tsx +149 -0
  127. package/extension/popup/screens/RecoveryPhraseScreen.tsx +183 -0
  128. package/extension/popup/screens/SendReviewScreen.tsx +308 -0
  129. package/extension/popup/screens/SendScreen.tsx +825 -0
  130. package/extension/popup/screens/SendSubmittedScreen.tsx +193 -0
  131. package/extension/popup/screens/SettingsScreen.tsx +116 -0
  132. package/extension/popup/screens/ThemeSettingsScreen.tsx +107 -0
  133. package/extension/popup/screens/TransactionDetailsScreen.tsx +346 -0
  134. package/extension/popup/screens/ViewSecretPhraseScreen.tsx +212 -0
  135. package/extension/popup/screens/WalletPermissionsScreen.tsx +123 -0
  136. package/extension/popup/screens/WalletSettingsScreen.tsx +381 -0
  137. package/extension/popup/screens/WalletStylingScreen.tsx +306 -0
  138. package/extension/popup/screens/approvals/ConnectApprovalScreen.tsx +136 -0
  139. package/extension/popup/screens/approvals/SignMessageScreen.tsx +140 -0
  140. package/extension/popup/screens/approvals/SignRawTxScreen.tsx +320 -0
  141. package/extension/popup/screens/approvals/TransactionApprovalScreen.tsx +167 -0
  142. package/extension/popup/screens/onboarding/BackupScreen.tsx +254 -0
  143. package/extension/popup/screens/onboarding/CreateScreen.tsx +273 -0
  144. package/extension/popup/screens/onboarding/ImportScreen.tsx +676 -0
  145. package/extension/popup/screens/onboarding/ImportScreenV0.tsx +678 -0
  146. package/extension/popup/screens/onboarding/ImportSuccessScreen.tsx +236 -0
  147. package/extension/popup/screens/onboarding/ResumeBackupScreen.tsx +166 -0
  148. package/extension/popup/screens/onboarding/StartScreen.tsx +142 -0
  149. package/extension/popup/screens/onboarding/SuccessScreen.tsx +193 -0
  150. package/extension/popup/screens/onboarding/VerifyScreen.tsx +220 -0
  151. package/extension/popup/screens/system/LockedScreen.tsx +288 -0
  152. package/extension/popup/screens/transactions/ReceiveScreen.tsx +84 -0
  153. package/extension/popup/screens/transactions/SentScreen.tsx +138 -0
  154. package/extension/popup/store.ts +482 -0
  155. package/extension/popup/styles.css +246 -0
  156. package/extension/popup/utils/format.ts +58 -0
  157. package/extension/popup/utils/formatWalletError.ts +36 -0
  158. package/extension/popup/utils/memo.ts +299 -0
  159. package/extension/popup/utils/messaging.ts +16 -0
  160. package/extension/shared/address-encoding.ts +69 -0
  161. package/extension/shared/balance-query.ts +123 -0
  162. package/extension/shared/constants.ts +386 -0
  163. package/extension/shared/currency.ts +128 -0
  164. package/extension/shared/first-name-derivation.ts +128 -0
  165. package/extension/shared/keyfile.ts +58 -0
  166. package/extension/shared/onboarding.ts +78 -0
  167. package/extension/shared/price-api.ts +79 -0
  168. package/extension/shared/rpc-client-browser.ts +315 -0
  169. package/extension/shared/transaction-builder.ts +443 -0
  170. package/extension/shared/types.ts +450 -0
  171. package/extension/shared/utxo-diff.ts +212 -0
  172. package/extension/shared/utxo-store.ts +548 -0
  173. package/extension/shared/utxo-sync.ts +343 -0
  174. package/extension/shared/validators.ts +26 -0
  175. package/extension/shared/vault.ts +1580 -0
  176. package/extension/shared/wallet-crypto.ts +77 -0
  177. package/extension/shared/wasm-utils.ts +76 -0
  178. package/extension/shared/webcrypto.ts +67 -0
  179. package/extension/types/wasm.d.ts +13 -0
  180. package/package.json +39 -0
  181. package/postcss.config.js +6 -0
  182. package/rose-extension-dist.zip +0 -0
  183. package/sdk/README.md +88 -0
  184. package/sdk/examples/app.ts +166 -0
  185. package/sdk/examples/index.html +51 -0
  186. package/sdk/examples/tsconfig.json +15 -0
  187. package/sdk/examples/tx-builder.html +532 -0
  188. package/sdk/examples/tx-builder.ts +1766 -0
  189. package/sdk/package-lock.json +424 -0
  190. package/sdk/package.json +68 -0
  191. package/sdk/src/constants.ts +28 -0
  192. package/sdk/src/errors.ts +74 -0
  193. package/sdk/src/hooks/index.ts +1 -0
  194. package/sdk/src/hooks/use-rose.ts +94 -0
  195. package/sdk/src/index.ts +12 -0
  196. package/sdk/src/provider.ts +396 -0
  197. package/sdk/src/transaction.ts +163 -0
  198. package/sdk/src/types/rose-wasm.d.ts +14 -0
  199. package/sdk/src/types.ts +97 -0
  200. package/sdk/src/wasm.ts +13 -0
  201. package/sdk/tsconfig.json +20 -0
  202. package/sdk/vite.config.examples.ts +32 -0
  203. package/tailwind.config.ts +38 -0
  204. package/tsconfig.json +20 -0
  205. package/vite.config.ts +60 -0
@@ -0,0 +1,59 @@
1
+ /**
2
+ * Content Script: Bridge between page and service worker
3
+ * Relays messages between the inpage provider (running in MAIN world) and the service worker
4
+ *
5
+ * Note: The inpage provider is injected separately via manifest.json with "world": "MAIN"
6
+ */
7
+
8
+ import { MESSAGE_TARGETS } from '../shared/constants';
9
+
10
+ /**
11
+ * Bridge page <-> Service Worker
12
+ * Listens for messages from the injected provider and forwards to SW
13
+ */
14
+ window.addEventListener('message', async (evt: MessageEvent) => {
15
+ const data = evt.data;
16
+
17
+ // Filter messages: must be for us and from the page
18
+ if (!data || data.target !== MESSAGE_TARGETS.WALLET_BRIDGE || evt.source !== window) {
19
+ return;
20
+ }
21
+
22
+ // Only forward request messages (with payload), not reply messages
23
+ if (!data.payload || data.reply !== undefined) {
24
+ return;
25
+ }
26
+
27
+ // Forward to service worker and relay response back to page
28
+ const reply = await chrome.runtime.sendMessage(data);
29
+
30
+ const responseMessage = {
31
+ target: MESSAGE_TARGETS.WALLET_BRIDGE,
32
+ id: data.id,
33
+ reply,
34
+ };
35
+
36
+ window.postMessage(responseMessage, '*');
37
+ });
38
+
39
+ /**
40
+ * Listen for wallet events from background script and relay to page
41
+ * These are emitted when wallet state changes (account switch, lock, etc.)
42
+ */
43
+ chrome.runtime.onMessage.addListener((message, _sender, _sendResponse) => {
44
+ // Only handle wallet events
45
+ if (message.type !== 'WALLET_EVENT') {
46
+ return;
47
+ }
48
+
49
+ // Relay to page with __rose brand for security
50
+ // This prevents malicious scripts from forging wallet events
51
+ window.postMessage(
52
+ {
53
+ __rose: true,
54
+ type: `nockchain_${message.eventType}`,
55
+ data: message.data,
56
+ },
57
+ '*'
58
+ );
59
+ });
@@ -0,0 +1,27 @@
1
+ <svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2120 2120" width="32" height="32">
2
+ <style>
3
+ .s0 { fill: #ec1e24 }
4
+ .s1 { fill: #e51d25 }
5
+ .s2 { fill: #0f8945 }
6
+ .s3 { fill: #0a7e40 }
7
+ </style>
8
+ <g id="_Artboards_">
9
+ </g>
10
+ <g id="Layer 1">
11
+ <g id="&lt;Group&gt;">
12
+ <path id="&lt;Path&gt;" class="s0" d="m1141.12 574.61l-85.01 53.22c-20.3 10.36-40.1 22.84-60.16 30.45-49.08 18.59-96.03 40.49-147.89 59.18-54.93 18.09-54.19 13.65-66.34 49.66-6.4 17.8-18.35 39.63-17.9 58.38-12.06 66.85-20.4 114.97 3.28 189.1 2.69 8.89 3.96 14.2 8.36 19.43 2.58 6.12 7.4 14.5 10.07 19.59l14.59 23.44c4.02 5.55 3.11 4.08 6.38 10.26 2.99 5.45 4.22 7.29 8.61 12.53 25.19 33.02 7.94 56.12 129.82 68.81 61.46 6.39 80.86 6.35 136.09-7.21 8.64-3.75 15.56-7.65 25.89-10.91 9.99-3.29 16.25-7.59 25.64-11.97 40.4-18.31 72.77-51.87 100.64-85.47 22.49-27.49 69.69-96.14 83.16-127.53 3.94-9.36 3.95-13.51 8.57-22.81 40.75-82.03 73.22-220.2 71.51-315.97-0.38-35.37-1.11-62.81-4.49-95.67-1.3-12.93-4.7-29.51-7.89-44.68l-0.38-3.5q-0.68-4.22-1.53-6.37c-1.46-7.06-9.65-40.34-7.8-45.72-1.49-6.71-0.26-20.81-16.5-9.4-9.48 5.41-71.09 72.45-90.28 89.84-45.75 40.01-84.95 68.47-126.44 103.32z"/>
13
+ <path id="&lt;Path&gt;" class="s0" d="m1098.99 218.94c0.76 3.19 5.08 13.27 7.01 18.98 2.46 7.49 3.07 12.39 11.58 14.17 26.3 4.37 53.01 19.86 70.35 35.57 11.57 10.37 37.67 44.86 24.14 68.97-2.86 4.95-45.47 40.73-75.22 64.13-29.76 23.39-63.1 40.23-92.59 64.69-0.38 0.31-1.13 0.94-1.5 1.25l-48.74 34.56c-23.67 13.19-67.49 58.91-99.45 83.85-14.12 10.89-39.7 46.08-53.13 65.01-6.65 8.77-13.34 17.89-8.73 20.72 14.72 9.94 119.11-42.99 135.73-50.89 92.55-44.26 157.09-89.22 237.84-153.21 22.74-18.46 45.15-41.11 66-57.66 20.46-16.23 31.74-34.3 53.84-57.32 23.96-24.59 47.84-64.09 62-95.42 11.22-25.35 20.03-50.92 14.37-85.36-17.92-108.62-139.96-139.34-234.27-130.57-39.45 3.49-100.28 21.76-139.75 45.34-5.49 3.34-36.59 26.26-30.6 33.02 10.36 12.34 39.77 20.79 53.78 31.01 19.95 13.52 41.49 24.75 47.34 49.16z"/>
14
+ <path id="&lt;Path&gt;" class="s1" d="m439.19 941.01l30.52 23.44c74.07 44.56 58.38 41.81 128.59 90.88 8.81 6.31 28.69 16.7 41.95 19.59 12.23 2.8 5.87 0.17 15.08 5.82 28.94 17.76 78.14 29.67 114.33 31.78l-25.27-47.93c-9.61-12.97-1.61-5.34-11.69-24.93l-17.57-52.8c-9.67-20.24-6.17-76.41-3.66-97.32 3.84-36.05 21.13-123.23 42.07-152.94 4.33-5.86 10.5-17.1 13.07-22.76l13.34-25.87c18.92-30.22 49.31-57.02 63.52-92.86 12.01-30.48-182.26-127.07-214.23-145.8-26.4-15.11-88.44-34.72-121.84-25.15-14.23 12.27 34.44 81.98 32.68 145.92 4.39 29.14-2.94 65.57-2.13 96.13 0.41 19.09 10.22 117.3 15.07 133.31 3.51 11.39 4.85 27.79 9.11 38.56 10.48 26.89 35.39 78.95 52.17 101.2 8.69 11.49 17.96 24.43 27.6 37.05 11.21 14.48 80.59 81.15 79.56 97-41.1-25.41-67.26-51.24-97.02-87.44-40.43-48.9-65.43-64.24-91.12-123.3-22.82-52.22-29.51-102.69-32.92-159.11l3.76-130.63c-26.92 6.66-49.76-1.56-78.75 17.05-30.05 18.86-21.34 42.14-24.75 73.37-2.54 21.25-12.86 20.36-29.98 37.92-6.81 6.68-9.21 10.28-15.02 17.4-25.11 29.69-35.21 50.29-18.33 95.06 29.24 78.08 48.72 81.16 101.86 127.36z"/>
15
+ <path id="&lt;Path&gt;" class="s1" d="m1268.75 1062.43c-4.75 6.86-14.98 12.9-9.37 24.13 8.85 17.75 119.97 26.73 177.21 1.92 37.41-15.8 92.47-63.32 107.31-106.37 9.97-23.04 70.14-117.23 81.68-130.43 22.34-25.77 61.14-61.54 100.8-67.44 16.21-3.1 24.63-8.25 44.06-8.64 19.06-0.07 28.69 0.76 45.93-2.24-2.54-10.61-6.97-15.5-11.71-20.76l-60.83-81.17c-3.53-7.24-11.77-20.08-16.42-26.38-37.6-53.51-42.4-74.02-99.23-121.58-10.98-9.27-42.29-27.59-55.97-33.63-27.67-12.45-105.8-38.31-140.26-36.46-8.68 0.28-8.4 1-10.78 8.41-3.77 11.46-1.41 32.1 0.9 45.47 7.36 46.72 5.92 111.03 1.25 156.7-4.34 41.89-28.75 163.1-47.32 193.36-1.99 18.88-26.23 70.47-36.6 90.01-6.63 12.58-14.59 24.36-21.35 38.32-18.57 38.23-27.57 46.11-49.3 76.78z"/>
16
+ <path id="&lt;Path&gt;" class="s0" d="m377.2 272.16c-3.82 20.11 22.96 78.57 54.08 103.1 23.67 18.69 27.82 18.71 63.48 11.07 28.57-5.83 44.25 1.08 73.34 1.19 34.76 2.68 29.96 14.04 66.27 14.78 10.36-11.57 23.33-21.18 21.35-38.33-2.71-24.49-28.8-63.14 0.67-95.22 28.29-30.45 38.5-40.3 72.07-63.7 42.76-29.54 82.64-42 130.95-51.66 19.4-8.01 51.7-12.82 72.03-15.55 8.06-1.03 13.99-1.55 21.45-3.68 14.55-3.93-9.85-26.15-13.39-29.22-26.25-24.81-54.71-40.11-95.18-40.86-38.41 7.4-7.07-2.35-56.86 12.37-62.58 18.46-71.18 41.62-183.42 33.58-85.05-6.02-165.72 5.31-212.06 79.92-5.29 21.02-29.86 60.46-14.78 82.21z"/>
17
+ <path id="&lt;Path&gt;" class="s0" d="m970.39 307.18l-27.13 29.16c-9 15.85 5.6 27.17 5.63 26.82 0.4-0.65 1.29 1.16 1.91 1.9 9.48 2.56 25.91 16.81 33.55 20.59 22.72 9.6 52.84 49.64 75.4 49.18 14.22-0.15 57.28-33.12 66.56-48.25l22.68-17.77c29.72-23.05 42.03-25.1 22.43-50.71-22.05-29.29-48.13-36.06-94.89-40.14-35.76-3.11-79.52 2.09-106.14 29.22z"/>
18
+ <path id="&lt;Path&gt;" class="s2" d="m1113.77 1171.23l-24.83 10.66c-1.68 19.26 8.4 22.9 21.15 31.64 3.26 2.36 33.95 19.93 36.3 20.83 11.39 4.45 37.71 8.48 51.06 10.33 38.19-0.83 113.88 1.25 147.03 10.38 3.38 0.98 29.68 13.32 32.28 15.28 3.29 2.02 17.7 19.56 30.35 9.57 17.75-48.69-51.06-113.92-76.47-132.42-36.48-26.73-82.55-54.65-107.35-44.34-14.36 5.68-76.04 53.67-109.52 68.07z"/>
19
+ <path id="&lt;Path&gt;" class="s2" d="m697.4 1254.16l-14.22 16.08c-18.18 17.82-27.57 46.11-29.6 73.3-3.03 22.95 40.74-2.34 62.84-9.43 45.22-22.04 85.17-19.26 134.3-26.41 38.49-0.46 58.36-33.72 69.37-48.7 56.61-77.18 18.36-67.69-33.79-77.43-52.51-9.77-24.83-13.25-66.22-15.47-9.74 0.54-7.34 0.75-14.6 4.62-4.34 2.05-10.8 4.6-15.88 7.28-33.37 17.19-34.85 14.29-56.74 34.9-1.15 1.29-33.1 38-35.46 41.26z"/>
20
+ <path id="&lt;Path&gt;" class="s0" d="m954.89 282.27l14.21-11.93c29.48-20.3 99.85-12.78 109.04-18.91-6.1-77.1-114.98-95.93-173.69-86.15-23.23 4.22-46.12 16.43-65.8 19.57-68.6 20.01-117.63 53.85-154.24 96.39-19.63 14.57-8.53 34.25-4.3 45.36 0.26 1.06 0.85 2.15 1.11 3.21 8.58 28.81 15.93 23.91 42.72 10.65 15.99-12.47 57.99-17.47 88.78-16.87 25.9 0.87 74.88 19.34 96.51 5.63 14.31-9.14 11.77-27.73 45.66-46.95z"/>
21
+ <path id="&lt;Path&gt;" class="s0" d="m771.29 489.05c7.52 5.16 17.19 9.47 22.76 13.07l84.66 58.3c14.37-1.87 61.52-34.14 75.23-44.38l52.79-37.32c18.68-11.54 24.45-14.16 11.26-29.86-5.33-6.35-44.24-32.95-54.14-38.66-24.77-13.94-27.24-29.4-67.45-45.02-25.79-10.22-32.14-12.85-63.77-15.6-47.14-3.76-92.6 13.07-129.98 36.49-17.58 10.94-30.62 33.36-9.84 49.38 25.32 19.53 50.28 35.21 78.48 53.6z"/>
22
+ <path id="&lt;Path&gt;" class="s2" d="m955.62 1973c-106.1-273.57-315.02-189.91-404.23-263.5-48.89 223.36 215.85 429.68 374.1 366.89-11.75-16.26-12.68-29.51-28.08-43.67-32.67-30.56-36.47-18.76-80.89-29.91-33.59-8.12-64.44-19.81-93.31-34.45 31.34 6.19 65.45 20.25 98.91 17.96 20.03 0.71 9.52-9.91-8.82-18.09-33.28-15.71-85.27-55.23-129.47-108.62 31.63 26.66 99.11 79.3 127.06 84.51 2.89-29.2 1.82-24.79-23.5-60.25 35.09 26.61 37.83 46.95 47.11 63.69 6.7 18.6 19.48 34.96 32.09 33.28 3.95 2.43 14.97-8.74 4.03-50.23 18.78 15.15 16.39 70.37 19.65 72.73 22.62 14.79 32.17 28.44 50.27 55.31 16.75-17.25 17.86-53.88 15.08-85.65z"/>
23
+ <path id="&lt;Path&gt;" class="s3" d="m985.44 1204.75q31.91-2.42 63.82-4.83c152.67 562.41-158.23 1208.49-279.97 1584.18-47.44-16.26-63.24-21.79-110.67-38.04 147.3-327.05 482.61-955.06 326.82-1541.31z"/>
24
+ <path id="&lt;Path&gt;" class="s2" d="m1093.24 1677.69c64.2-92.81 162.31-69.71 305.86-94.98 61.58-10.92 93.27-44.54 79.19 17.64-10.87 49.29-15.12 82.17-48.76 118.39-42.45 45.85-86.83 93.95-144.62 113.17-84.23 28.35-172.3 25.19-229.12-18.56 15.61-12.15 20.15-24.57 38.65-34.05 39.88-20.43 40.56-8.25 86.12-6.36 34.54 1.27 67.37-1.76 99.06-7.66-31.63-2.75-68.37 1.33-99.97-9.74-19.3-5.15-6.2-12.32 13.47-15.46 36.51-5.48 97.14-29.3 154.26-68.68-37.87 17.15-116.89 49.42-145.4 46.59 5.29-28.99 5.25-24.49 39.14-51.68-40.9 16.19-49.11 34.87-62.41 48.27-11.78 15.95-28.45 28.35-40.47 23.15-4.27 1.36-11.73-12.46 10.19-49.35-22.31 9.49-34.98 63.47-38.88 64.52-25.65 8.16-19.19 5.6-25.55 10.94-11.33-21.08-2.34-56.67 9.24-86.15z"/>
25
+ </g>
26
+ </g>
27
+ </svg>
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,86 @@
1
+ /**
2
+ * Inpage Provider: Injected into web pages
3
+ * Exposes window.nockchain with EIP-1193-style API
4
+ *
5
+ * NOTE: This file runs in the MAIN world and cannot use any imports or Chrome APIs
6
+ */
7
+
8
+ import { InjectedNockchain, RpcRequest } from '@nockchain/sdk';
9
+ import { version } from '../../package.json';
10
+
11
+ // Inline constant to avoid imports
12
+ const MESSAGE_TARGET = 'ROSE';
13
+
14
+ class NockchainProvider implements InjectedNockchain {
15
+ name: string = 'rose';
16
+ version: string = version;
17
+
18
+ /**
19
+ * Make a request to the wallet
20
+ * @param args - Request arguments with method and params
21
+ */
22
+ request<T = unknown>(args: RpcRequest): Promise<T> {
23
+ const id = Math.random().toString(36).slice(2);
24
+
25
+ // Post message to content script
26
+ window.postMessage(
27
+ {
28
+ target: MESSAGE_TARGET,
29
+ id,
30
+ payload: args,
31
+ },
32
+ '*'
33
+ );
34
+
35
+ // Wait for response with timeout
36
+ return new Promise((resolve, reject) => {
37
+ let timeoutId: number | undefined;
38
+
39
+ const handler = (evt: MessageEvent) => {
40
+ const data = evt.data;
41
+
42
+ // Check if this is our response (must have a reply field, not just the request)
43
+ if (data?.target === MESSAGE_TARGET && data.id === id && data.reply !== undefined) {
44
+ window.removeEventListener('message', handler);
45
+ if (timeoutId) {
46
+ clearTimeout(timeoutId);
47
+ }
48
+
49
+ if (data.reply?.error) {
50
+ reject(new Error(data.reply.error));
51
+ } else {
52
+ resolve(data.reply);
53
+ }
54
+ }
55
+ };
56
+
57
+ if (args.timeout) {
58
+ timeoutId = window.setTimeout(() => {
59
+ window.removeEventListener('message', handler);
60
+ reject(
61
+ new Error(
62
+ 'Extension is not responding.' +
63
+ 'If you just reloaded the extension, you need to refresh this page.'
64
+ )
65
+ );
66
+ }, args.timeout);
67
+ }
68
+ window.addEventListener('message', handler);
69
+ });
70
+ }
71
+ }
72
+
73
+ // Inject provider into window
74
+ const provider = new NockchainProvider();
75
+ const globalNockchain = (window as any).nockchain ?? {};
76
+ globalNockchain.providers = Array.isArray(globalNockchain.providers)
77
+ ? globalNockchain.providers
78
+ : [];
79
+ if (!globalNockchain.providers.some((p: { name: string }) => p.name === provider.name)) {
80
+ globalNockchain.providers.push(provider);
81
+ }
82
+ // Preserve existing global while registering this provider
83
+ (window as any).nockchain = globalNockchain;
84
+
85
+ // Announce provider availability
86
+ window.dispatchEvent(new Event(`nockchain_${provider.name}#initialized`));
@@ -0,0 +1,48 @@
1
+ {
2
+ "manifest_version": 3,
3
+ "name": "Rose Wallet",
4
+ "homepage_url": "https://nockchain.net",
5
+ "version": "0.1.4.5",
6
+ "description": "Rose Wallet - Browser Wallet for Nockchain",
7
+ "icons": {
8
+ "16": "icons/rose16.png",
9
+ "32": "icons/rose32.png",
10
+ "48": "icons/rose48.png",
11
+ "128": "icons/rose128.png",
12
+ "256": "icons/rose256.png",
13
+ "512": "icons/rose512.png"
14
+ },
15
+ "action": {
16
+ "default_popup": "popup/index.html",
17
+ "default_title": "Rose Wallet",
18
+ "default_icon": {
19
+ "16": "icons/rose16.png",
20
+ "32": "icons/rose32.png",
21
+ "48": "icons/rose48.png",
22
+ "128": "icons/rose128.png",
23
+ "256": "icons/rose256.png",
24
+ "512": "icons/rose512.png"
25
+ }
26
+ },
27
+ "background": {
28
+ "service_worker": "background/index.ts",
29
+ "type": "module"
30
+ },
31
+ "permissions": ["storage", "alarms"],
32
+ "content_security_policy": {
33
+ "extension_pages": "script-src 'self' 'wasm-unsafe-eval'; object-src 'self'"
34
+ },
35
+ "content_scripts": [
36
+ {
37
+ "matches": ["http://*/*", "https://*/*"],
38
+ "js": ["content/index.ts"],
39
+ "run_at": "document_start"
40
+ },
41
+ {
42
+ "matches": ["http://*/*", "https://*/*"],
43
+ "js": ["inpage/index.ts"],
44
+ "run_at": "document_start",
45
+ "world": "MAIN"
46
+ }
47
+ ]
48
+ }
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Popup UI: App initialization and lifecycle management
3
+ */
4
+
5
+ import { useEffect } from 'react';
6
+ import { useStore } from './store';
7
+ import { send } from './utils/messaging';
8
+ import { INTERNAL_METHODS, UI_CONSTANTS } from '../shared/constants';
9
+ import { Account } from '../shared/types';
10
+ import { Router } from './Router';
11
+ import { useApprovalDetection } from './hooks/useApprovalDetection';
12
+
13
+ export function Popup() {
14
+ const {
15
+ currentScreen,
16
+ initialize,
17
+ wallet,
18
+ syncWallet,
19
+ navigate,
20
+ setPendingConnectRequest,
21
+ setPendingTransactionRequest,
22
+ setPendingSignRequest,
23
+ setPendingSignRawTxRequest,
24
+ } = useStore();
25
+
26
+ // Initialize app on mount
27
+ useEffect(() => {
28
+ initialize();
29
+ }, [initialize]);
30
+
31
+ // Report activity when popup opens (resets auto-lock timer)
32
+ useEffect(() => {
33
+ send(INTERNAL_METHODS.REPORT_ACTIVITY);
34
+ }, []);
35
+
36
+ // Handle approval requests from URL hash
37
+ useApprovalDetection({
38
+ walletAddress: wallet.address,
39
+ walletLocked: wallet.locked,
40
+ setPendingConnectRequest,
41
+ setPendingTransactionRequest,
42
+ setPendingSignRequest,
43
+ setPendingSignRawTxRequest,
44
+ navigate,
45
+ });
46
+
47
+ // Listen for wallet events (e.g., auto-lock)
48
+ useEffect(() => {
49
+ const handleMessage = (message: any) => {
50
+ if (message.type === 'WALLET_EVENT' && message.eventType === 'LOCKED') {
51
+ syncWallet({
52
+ ...wallet,
53
+ locked: true,
54
+ });
55
+ navigate('locked');
56
+ }
57
+ };
58
+
59
+ chrome.runtime.onMessage.addListener(handleMessage);
60
+ return () => chrome.runtime.onMessage.removeListener(handleMessage);
61
+ }, [wallet, syncWallet, navigate]);
62
+
63
+ // Poll for vault state changes (e.g., auto-lock)
64
+ useEffect(() => {
65
+ const interval = setInterval(async () => {
66
+ // Only poll if we're not already on the locked screen
67
+ if (currentScreen === 'locked') return;
68
+
69
+ const state = await send<{
70
+ locked: boolean;
71
+ address: string;
72
+ accounts: Account[];
73
+ currentAccount: Account | null;
74
+ }>(INTERNAL_METHODS.GET_STATE);
75
+
76
+ // If vault became locked, navigate to locked screen
77
+ if (state.locked && !wallet.locked) {
78
+ syncWallet({
79
+ ...wallet, // Preserve existing state including new balance fields
80
+ locked: true,
81
+ address: state.address || null,
82
+ accounts: state.accounts || [],
83
+ currentAccount: state.currentAccount || null,
84
+ });
85
+ navigate('locked');
86
+ }
87
+ }, UI_CONSTANTS.STATE_POLL_INTERVAL);
88
+
89
+ return () => clearInterval(interval);
90
+ }, [currentScreen, wallet.locked, wallet.balance, syncWallet, navigate]);
91
+
92
+ // Render current screen via router
93
+ return <Router />;
94
+ }
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Router - Screen routing based on navigation state
3
+ */
4
+
5
+ import { useStore } from './store';
6
+
7
+ // Screen components
8
+ import { LockedScreen } from './screens/system/LockedScreen';
9
+ import { StartScreen } from './screens/onboarding/StartScreen';
10
+ import { CreateScreen } from './screens/onboarding/CreateScreen';
11
+ import { BackupScreen } from './screens/onboarding/BackupScreen';
12
+ import { VerifyScreen } from './screens/onboarding/VerifyScreen';
13
+ import { SuccessScreen } from './screens/onboarding/SuccessScreen';
14
+ import { ImportScreen } from './screens/onboarding/ImportScreen';
15
+ import { ImportScreenV0 } from './screens/onboarding/ImportScreenV0';
16
+ import { ImportSuccessScreen } from './screens/onboarding/ImportSuccessScreen';
17
+ import { ResumeBackupScreen } from './screens/onboarding/ResumeBackupScreen';
18
+ import { HomeScreen } from './screens/HomeScreen';
19
+ import { SendScreen } from './screens/SendScreen';
20
+ import { SendReviewScreen } from './screens/SendReviewScreen';
21
+ import { SendSubmittedScreen } from './screens/SendSubmittedScreen';
22
+ import { SentScreen } from './screens/transactions/SentScreen';
23
+ import { TransactionDetailsScreen } from './screens/TransactionDetailsScreen';
24
+ import { ReceiveScreen } from './screens/ReceiveScreen';
25
+ import { ConnectApprovalScreen } from './screens/approvals/ConnectApprovalScreen';
26
+ import { SignMessageScreen } from './screens/approvals/SignMessageScreen';
27
+ import { TransactionApprovalScreen } from './screens/approvals/TransactionApprovalScreen';
28
+ import { SignRawTxScreen } from './screens/approvals/SignRawTxScreen';
29
+ import { SettingsScreen } from './screens/SettingsScreen';
30
+ import { ThemeSettingsScreen } from './screens/ThemeSettingsScreen';
31
+ import { LockTimeScreen } from './screens/LockTimeScreen';
32
+ import { KeySettingsPasswordScreen } from './screens/KeySettingsPasswordScreen';
33
+ import { ViewSecretPhraseScreen } from './screens/ViewSecretPhraseScreen';
34
+ import { WalletPermissionsScreen } from './screens/WalletPermissionsScreen';
35
+ import { WalletSettingsScreen } from './screens/WalletSettingsScreen';
36
+ import { WalletStylingScreen } from './screens/WalletStylingScreen';
37
+ import { AboutScreen } from './screens/AboutScreen';
38
+ import { RecoveryPhraseScreen } from './screens/RecoveryPhraseScreen';
39
+
40
+ export function Router() {
41
+ const { currentScreen } = useStore();
42
+
43
+ // Route to appropriate screen based on current state
44
+ switch (currentScreen) {
45
+ // Onboarding
46
+ case 'onboarding-start':
47
+ return <StartScreen />;
48
+ case 'onboarding-create':
49
+ return <CreateScreen />;
50
+ case 'onboarding-backup':
51
+ return <BackupScreen />;
52
+ case 'onboarding-verify':
53
+ return <VerifyScreen />;
54
+ case 'onboarding-success':
55
+ return <SuccessScreen />;
56
+ case 'onboarding-import':
57
+ return <ImportScreen />;
58
+ case 'onboarding-import-v0':
59
+ return <ImportScreenV0 />;
60
+ case 'onboarding-import-success':
61
+ return <ImportSuccessScreen />;
62
+ case 'onboarding-resume-backup':
63
+ return <ResumeBackupScreen />;
64
+
65
+ // Main app
66
+ case 'home':
67
+ return <HomeScreen />;
68
+ case 'settings':
69
+ return <SettingsScreen />;
70
+ case 'theme-settings':
71
+ return <ThemeSettingsScreen />;
72
+ case 'lock-time':
73
+ return <LockTimeScreen />;
74
+ case 'key-settings':
75
+ return <KeySettingsPasswordScreen />;
76
+ case 'view-secret-phrase':
77
+ return <ViewSecretPhraseScreen />;
78
+ case 'wallet-permissions':
79
+ return <WalletPermissionsScreen />;
80
+ case 'wallet-settings':
81
+ return <WalletSettingsScreen />;
82
+ case 'wallet-styling':
83
+ return <WalletStylingScreen />;
84
+ case 'about':
85
+ return <AboutScreen />;
86
+ case 'recovery-phrase':
87
+ return <RecoveryPhraseScreen />;
88
+
89
+ // Transactions
90
+ case 'send':
91
+ return <SendScreen />;
92
+ case 'send-review':
93
+ return <SendReviewScreen />;
94
+ case 'send-submitted':
95
+ return <SendSubmittedScreen />;
96
+ case 'sent':
97
+ return <SentScreen />;
98
+ case 'receive':
99
+ return <ReceiveScreen />;
100
+ case 'tx-details':
101
+ return <TransactionDetailsScreen />;
102
+
103
+ // Approvals
104
+ case 'connect-approval':
105
+ return <ConnectApprovalScreen />;
106
+ case 'sign-message':
107
+ return <SignMessageScreen />;
108
+ case 'approve-transaction':
109
+ return <TransactionApprovalScreen />;
110
+ case 'approve-sign-raw-tx':
111
+ return <SignRawTxScreen />;
112
+
113
+ // System
114
+ case 'locked':
115
+ return <LockedScreen />;
116
+
117
+ // Default fallback
118
+ default:
119
+ return <div>Unknown screen: {currentScreen}</div>;
120
+ }
121
+ }
@@ -0,0 +1,3 @@
1
+ <svg preserveAspectRatio="none" width="100%" height="100%" overflow="visible" style="display: block;" viewBox="0 0 15 15" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path id="Vector" d="M6.24611 0V11.3137L1.17851 6.24611L0 7.42462L7.07107 14.4957L14.1421 7.42462L12.9636 6.24611L7.89603 11.3137L7.89603 4.21468e-07L6.24611 0Z" fill="var(--fill-0, #707070)"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="16" height="16" viewBox="0 0 8 13" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path id="vector" d="M7.82812 1.41406L2.82812 6.41406L7.82812 11.4141L6.41406 12.8281L0 6.41406L6.41406 0L7.82812 1.41406Z" fill="currentColor"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="8" height="13" viewBox="0 0 8 13" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M0 1.41406L5 6.41406L0 11.4141L1.41406 12.8281L7.82812 6.41406L1.41406 0L0 1.41406Z" fill="black"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg preserveAspectRatio="none" width="100%" height="100%" overflow="visible" style="display: block;" viewBox="0 0 11 11" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path id="Vector" d="M1.16667 10.8333L9.16667 2.83333L9.16667 10L10.8333 10V0H0.833333L0.833334 1.66667H8L0 9.66667L1.16667 10.8333Z" fill="var(--fill-0, #707070)"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg preserveAspectRatio="none" width="100%" height="100%" overflow="visible" style="display: block;" viewBox="0 0 11 11" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path id="Vector" d="M1.16667 10.8333L9.16667 2.83333L9.16667 10L10.8333 10V0H0.833333L0.833334 1.66667H8L0 9.66667L1.16667 10.8333Z" fill="black"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg preserveAspectRatio="none" width="100%" height="100%" overflow="visible" style="display: block;" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path id="vector" fill-rule="evenodd" clip-rule="evenodd" d="M20 0C31.0457 0 40 8.9543 40 20C40 31.0457 31.0457 40 20 40C8.9543 40 0 31.0457 0 20C0 8.9543 8.9543 0 20 0ZM28.1421 14.436C27.6283 13.9223 26.7956 13.9224 26.2817 14.436L17.8735 22.8418L14.1357 19.104C13.622 18.5906 12.7892 18.5906 12.2754 19.104C11.7621 19.6178 11.762 20.4506 12.2754 20.9644L16.9434 25.6348C17.1899 25.8808 17.5252 26.0179 17.8735 26.0181C18.2218 26.018 18.5571 25.8806 18.8037 25.6348L28.1421 16.2964C28.6554 15.7828 28.655 14.9499 28.1421 14.436Z" fill="var(--fill-0, #5968fb)"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M10 0C15.5228 0 20 4.47715 20 10C20 15.5228 15.5228 20 10 20C4.47715 20 0 15.5228 0 10C0 4.47715 4.47715 0 10 0ZM14.8669 7.04712C14.5425 6.7232 14.0159 6.72321 13.6914 7.04712L9.05273 11.6858L6.30981 8.94287C5.98534 8.6184 5.45772 8.61871 5.13306 8.94287C4.80866 9.26731 4.80902 9.79375 5.13306 10.1184L8.46436 13.4497C8.62025 13.6056 8.83227 13.6938 9.05273 13.6938C9.27303 13.6937 9.48533 13.6055 9.64111 13.4497L14.8669 8.22388C15.1911 7.89921 15.1914 7.37159 14.8669 7.04712Z" fill="#5968fb"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg preserveAspectRatio="none" width="100%" height="100%" overflow="visible" style="display: block;" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path id="vector" fill-rule="evenodd" clip-rule="evenodd" d="M20 0C31.0457 0 40 8.9543 40 20C40 31.0457 31.0457 40 20 40C8.9543 40 0 31.0457 0 20C0 8.9543 8.9543 0 20 0ZM28.1421 14.436C27.6283 13.9223 26.7956 13.9224 26.2817 14.436L17.8735 22.8418L14.1357 19.104C13.622 18.5906 12.7892 18.5906 12.2754 19.104C11.7621 19.6178 11.762 20.4506 12.2754 20.9644L16.9434 25.6348C17.1899 25.8808 17.5252 26.0179 17.8735 26.0181C18.2218 26.018 18.5571 25.8806 18.8037 25.6348L28.1421 16.2964C28.6554 15.7828 28.655 14.9499 28.1421 14.436Z" fill="var(--fill-0, #5968fb)"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="20" height="20" viewBox="0 0 14 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path id="vector" fill-rule="evenodd" clip-rule="evenodd" d="M7 0C9.76142 0 12 2.23858 12 5V7H13C13.5523 7 14 7.44772 14 8V17C14 17.5523 13.5523 18 13 18H1C0.447716 18 0 17.5523 0 17V8C0 7.44771 0.447715 7 1 7H2V5C2 2.23858 4.23858 0 7 0ZM7.00098 10C6.04931 10 5.27734 10.772 5.27734 11.7236C5.27751 12.3362 5.59838 12.8723 6.08008 13.1777V14.5791C6.08008 15.0877 6.49238 15.5 7.00098 15.5C7.50957 15.5 7.92188 15.0877 7.92188 14.5791V13.1777C8.40318 12.8722 8.72346 12.3359 8.72363 11.7236C8.72363 10.7721 7.95242 10.0003 7.00098 10ZM7 2.5C5.61929 2.5 4.5 3.61929 4.5 5V7H9.5V5C9.5 3.61929 8.38071 2.5 7 2.5Z" fill="#707070"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg preserveAspectRatio="none" width="100%" height="100%" overflow="visible" style="display: block;" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path id="Vector (Stroke)" d="M12.8281 1.41406L7.82812 6.41406L12.8281 11.4141L11.4141 12.8281L6.41406 7.82812L1.41406 12.8281L0 11.4141L5 6.41406L0 1.41406L1.41406 0L6.41406 5L11.4141 0L12.8281 1.41406Z" fill="currentColor"/>
3
+ </svg>
@@ -0,0 +1,6 @@
1
+ <svg preserveAspectRatio="none" width="100%" height="100%" overflow="visible" style="display: block;" viewBox="0 0 13 13" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <g id="vector">
3
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M8.60059 3.13477C8.82855 3.18129 9 3.38329 9 3.625V11.625L8.99023 11.7256C8.95034 11.9211 8.79608 12.0753 8.60059 12.1152L8.5 12.125H0.5C0.258287 12.125 0.056292 11.9536 0.00976562 11.7256L0 11.625V3.625C1.28852e-07 3.34886 0.223858 3.125 0.5 3.125H8.5L8.60059 3.13477ZM1.25 10.875H7.75V4.375H1.25V10.875Z" fill="#707070"/>
4
+ <path d="M10.5 0C11.3975 0 12.125 0.727538 12.125 1.625V9.625C12.125 9.97018 11.8452 10.25 11.5 10.25C11.1548 10.25 10.875 9.97018 10.875 9.625V1.625C10.875 1.41789 10.7071 1.25 10.5 1.25H2.5C2.15482 1.25 1.875 0.970178 1.875 0.625C1.875 0.279822 2.15482 0 2.5 0H10.5Z" fill="#707070"/>
5
+ </g>
6
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg preserveAspectRatio="none" width="100%" height="100%" overflow="visible" style="display: block;" viewBox="0 0 18 18" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path id="Vector" fill-rule="evenodd" clip-rule="evenodd" d="M0 2.91667C0 2.14312 0.307291 1.40125 0.854272 0.854272C1.40125 0.307291 2.14312 0 2.91667 0H14.5833C15.3569 0 16.0987 0.307291 16.6457 0.854272C17.1927 1.40125 17.5 2.14312 17.5 2.91667V14.5833C17.5 15.3569 17.1927 16.0987 16.6457 16.6457C16.0987 17.1927 15.3569 17.5 14.5833 17.5H2.91667C2.14312 17.5 1.40125 17.1927 0.854272 16.6457C0.307291 16.0987 0 15.3569 0 14.5833V2.91667ZM8.47222 3.19444C8.21437 3.19444 7.96708 3.29687 7.78476 3.4792C7.60243 3.66153 7.5 3.90882 7.5 4.16667C7.5 4.42452 7.60243 4.6718 7.78476 4.85413C7.96708 5.03646 8.21437 5.13889 8.47222 5.13889H10.9864L6.81264 9.31264C6.63554 9.496 6.53755 9.74159 6.53976 9.9965C6.54198 10.2514 6.64422 10.4953 6.82448 10.6755C7.00474 10.8558 7.24859 10.958 7.5035 10.9602C7.75841 10.9625 8.004 10.8645 8.18736 10.6874L12.3611 6.51361V9.02778C12.3611 9.28563 12.4635 9.53292 12.6459 9.71524C12.8282 9.89757 13.0755 10 13.3333 10C13.5912 10 13.8385 9.89757 14.0208 9.71524C14.2031 9.53292 14.3056 9.28563 14.3056 9.02778V4.16667C14.3056 3.90882 14.2031 3.66153 14.0208 3.4792C13.8385 3.29687 13.5912 3.19444 13.3333 3.19444H8.47222Z" fill="#707070"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="15" height="12" viewBox="0 0 15 12" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M0.942786 1.02604C0.707414 0.790669 0.708162 0.408825 0.944455 0.174377C1.17944 -0.0587734 1.55871 -0.0580296 1.79279 0.176041L12.0928 10.476C12.3268 10.7101 12.3276 11.0894 12.0944 11.3244C11.86 11.5607 11.4782 11.5614 11.2428 11.326L9.61612 9.69937C8.84945 9.95271 8.03612 10.086 7.18278 10.086C4.12831 10.086 1.48248 8.3451 0.173753 5.80193C-0.057443 5.35266 -0.0580675 4.81928 0.172782 4.36983C0.624505 3.49036 1.23772 2.7081 1.97612 2.05937L0.942786 1.02604ZM7.18278 3.08604C7.71322 3.08604 8.22192 3.29675 8.597 3.67182C8.97207 4.0469 9.18278 4.5556 9.18278 5.08604C9.18312 5.31308 9.14479 5.53853 9.06945 5.7527L6.51612 3.19937C6.73029 3.12403 6.95574 3.0857 7.18278 3.08604ZM7.18278 0.0860375C10.2366 0.0860375 12.8819 1.82621 14.1909 4.36846C14.4228 4.81868 14.4229 5.35333 14.1911 5.80356C13.6351 6.88352 12.8347 7.82343 11.8494 8.54604L10.9028 7.5927C11.6899 7.04825 12.347 6.33964 12.8301 5.51793C12.987 5.25113 12.9872 4.92083 12.8306 4.65387C12.2963 3.74283 11.548 2.97237 10.6477 2.41094C9.60824 1.76275 8.40778 1.41921 7.18278 1.41937C6.45612 1.41937 5.74278 1.53937 5.07612 1.7527L4.04945 0.732704C5.00945 0.319371 6.06945 0.0860375 7.18278 0.0860375ZM1.53544 4.65395C1.3787 4.92093 1.3784 5.2513 1.53503 5.51834C2.06937 6.42932 2.81759 7.19973 3.71787 7.76113C4.75733 8.40932 5.95779 8.75286 7.18278 8.7527C7.64278 8.7527 8.09612 8.70604 8.51612 8.61271L6.99612 7.08604C6.53222 7.03631 6.09933 6.82929 5.76943 6.49939C5.43953 6.16949 5.23251 5.7366 5.18278 5.2727L2.91612 2.99937C2.3759 3.4632 1.90714 4.02082 1.53544 4.65395Z" fill="#707070"/>
3
+ </svg>
@@ -0,0 +1,4 @@
1
+ <svg width="15" height="10" viewBox="0 0 15 10" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M7.18187 3C8.28644 3 9.18187 3.89543 9.18187 5C9.18187 6.10457 8.28644 7 7.18187 7C6.07741 6.99987 5.18187 6.10449 5.18187 5C5.18187 3.89551 6.07741 3.00013 7.18187 3Z" fill="#707070"/>
3
+ <path fill-rule="evenodd" clip-rule="evenodd" d="M7.47582 0.00488281C7.55818 0.00787518 7.64033 0.0130628 7.72191 0.0185547C7.73193 0.0192348 7.74218 0.0197926 7.75218 0.0205078C7.81618 0.0250629 7.88009 0.0310276 7.94359 0.0371094C7.98592 0.0411802 8.02842 0.0450675 8.07054 0.0498047C8.12307 0.0557027 8.17559 0.0623961 8.22777 0.0693359C8.27048 0.0750136 8.31322 0.0815289 8.3557 0.0878906C8.38069 0.0916417 8.40599 0.0946481 8.4309 0.0986328L8.57933 0.124023C8.60832 0.129224 8.63737 0.135106 8.66625 0.140625C8.7044 0.147967 8.74255 0.156155 8.78051 0.164062C8.85144 0.178717 8.9222 0.194386 8.99242 0.210938C9.01025 0.215187 9.02834 0.21926 9.04613 0.223633C10.9763 0.693054 12.6275 1.87403 13.7092 3.47363C13.718 3.48661 13.7269 3.49967 13.7356 3.5127C13.8099 3.62403 13.8817 3.73732 13.9504 3.85254C13.9675 3.88118 13.9835 3.91059 14.0002 3.93945C14.0656 4.05224 14.1298 4.166 14.1897 4.28223C14.2766 4.451 14.331 4.63182 14.3528 4.81543C14.3673 4.93802 14.3673 5.06198 14.3528 5.18457C14.331 5.36815 14.2766 5.54902 14.1897 5.71777C14.13 5.83375 14.0654 5.94702 14.0002 6.05957C13.984 6.08757 13.968 6.11577 13.9514 6.14355C13.8822 6.25969 13.8105 6.37415 13.7356 6.48633C13.7291 6.49605 13.7226 6.50593 13.7161 6.51562C12.6345 8.12052 10.9804 9.3049 9.04613 9.77539C9.02834 9.77976 9.01026 9.78384 8.99242 9.78809C8.92219 9.80464 8.85145 9.8203 8.78051 9.83496C8.74255 9.84287 8.70441 9.85106 8.66625 9.8584C8.61277 9.86862 8.55897 9.87857 8.50511 9.8877C8.45556 9.89613 8.40558 9.90364 8.3557 9.91113C8.31321 9.9175 8.27048 9.92401 8.22777 9.92969C8.17559 9.93663 8.12307 9.94332 8.07054 9.94922C8.02841 9.95396 7.98592 9.95784 7.94359 9.96191C7.88008 9.968 7.81619 9.97396 7.75218 9.97852C7.74218 9.97923 7.73193 9.97979 7.72191 9.98047C7.64032 9.98596 7.55819 9.99115 7.47582 9.99414C7.37817 9.99773 7.27942 10 7.1809 10C7.05656 9.99999 6.93272 9.99595 6.8098 9.99023C6.77693 9.98869 6.74394 9.98632 6.71117 9.98438C6.46648 9.96994 6.22472 9.94451 5.98656 9.9082C5.95957 9.90408 5.9324 9.8999 5.90551 9.89551C5.80727 9.87948 5.70951 9.86143 5.61254 9.8418C5.58656 9.83654 5.5603 9.83168 5.53441 9.82617C5.41491 9.8007 5.29637 9.77204 5.17894 9.74121C5.16893 9.73859 5.15867 9.73606 5.14867 9.7334C5.04693 9.70625 4.946 9.67659 4.84593 9.64551C4.81183 9.63497 4.7773 9.62524 4.7434 9.61426C4.64959 9.5837 4.55632 9.55153 4.4641 9.51758C4.39415 9.492 4.32509 9.46396 4.25609 9.43652C4.23308 9.4273 4.20965 9.41862 4.18676 9.40918C4.14066 9.39035 4.09373 9.37317 4.04808 9.35352L4.05004 9.35059C2.85173 8.82983 1.8075 8.02042 1.00609 7.00879C0.969582 6.96285 0.934152 6.9159 0.898669 6.86914C0.877368 6.84099 0.856124 6.81262 0.835193 6.78418C0.766296 6.69078 0.699753 6.59551 0.634997 6.49902C0.612157 6.46494 0.588959 6.43094 0.566638 6.39648C0.535072 6.34781 0.504367 6.29844 0.473865 6.24902C0.451731 6.21315 0.430009 6.17688 0.408435 6.14062C0.371552 6.07865 0.335237 6.01619 0.300037 5.95312C0.265771 5.89178 0.232116 5.82992 0.199451 5.76758C0.190417 5.75032 0.180034 5.73315 0.17113 5.71582C0.113559 5.60364 0.0699987 5.48623 0.0412475 5.36621C0.0267256 5.30596 0.0162941 5.24483 0.0090209 5.18359C-0.00248417 5.08531 -0.00206367 4.9863 0.00511465 4.8877C0.0198723 4.68009 0.0734717 4.47448 0.17113 4.28418C0.201688 4.22469 0.234807 4.16601 0.266833 4.10742C0.280313 4.08279 0.293142 4.05768 0.306872 4.0332C0.340989 3.97236 0.376657 3.91236 0.412341 3.85254C0.436356 3.81228 0.460877 3.77222 0.485583 3.73242C0.512505 3.68908 0.538897 3.64531 0.566638 3.60254C0.594808 3.55907 0.624556 3.51651 0.653552 3.47363C0.718925 3.37711 0.78617 3.28188 0.855701 3.18848C0.874269 3.16347 0.892511 3.13806 0.911365 3.11328C0.942745 3.07216 0.973915 3.03071 1.00609 2.99023C1.80752 1.97878 2.85182 1.16908 4.05004 0.648438L4.04808 0.646484C4.09384 0.626785 4.14055 0.608716 4.18676 0.589844C4.20965 0.580409 4.23309 0.57172 4.25609 0.5625C4.32565 0.534842 4.39553 0.507211 4.46605 0.481445C4.5577 0.447731 4.65019 0.415129 4.7434 0.384766C4.77729 0.373784 4.81184 0.364052 4.84593 0.353516C4.94599 0.322439 5.04695 0.29277 5.14867 0.265625C5.15867 0.262965 5.16893 0.260432 5.17894 0.257812C5.28899 0.228923 5.40008 0.20192 5.51195 0.177734L5.55687 0.167969C5.57528 0.164105 5.59408 0.160958 5.61254 0.157227C5.7095 0.137596 5.80728 0.119543 5.90551 0.103516C5.9324 0.0991216 5.95957 0.0949416 5.98656 0.0908203C6.22469 0.0545249 6.46651 0.0290807 6.71117 0.0146484C6.72965 0.0135522 6.74832 0.0117164 6.76683 0.0107422L6.89574 0.00488281C6.9903 0.00150815 7.08551 7.5732e-06 7.1809 0C7.27941 0 7.37818 0.00129315 7.47582 0.00488281ZM7.1809 1.33301C6.93616 1.33303 6.69281 1.3478 6.45238 1.37402C5.48397 1.48243 4.54812 1.80633 3.71605 2.3252C3.39223 2.52717 3.08846 2.75689 2.80687 3.00977C2.59301 3.20186 2.38979 3.40791 2.2014 3.62891C2.05374 3.80187 1.91549 3.98312 1.78636 4.1709C1.69794 4.29959 1.61415 4.43253 1.53441 4.56836C1.43664 4.73502 1.39982 4.92612 1.42406 5.11133C1.43387 5.18555 1.45325 5.25885 1.48265 5.3291C1.49731 5.36418 1.51486 5.39829 1.53441 5.43164C2.06865 6.34243 2.81602 7.11343 3.71605 7.6748C4.682 8.27715 5.7876 8.61629 6.92211 8.66113L7.1809 8.66699C7.38231 8.66699 7.58291 8.65559 7.77953 8.6377C7.82804 8.63325 7.87669 8.62857 7.92504 8.62305C8.12663 8.59992 8.32449 8.56867 8.51488 8.52637L8.51683 8.52832C9.26786 8.3719 9.98984 8.0844 10.6467 7.6748C10.7418 7.61548 10.8344 7.5522 10.926 7.48828C11.7019 6.94621 12.3505 6.24451 12.8284 5.43164C12.9852 5.16486 12.9849 4.8353 12.8284 4.56836C12.2941 3.65752 11.5468 2.88658 10.6467 2.3252C9.98978 1.91557 9.26793 1.62711 8.51683 1.4707L8.51488 1.47363C8.41901 1.45233 8.32093 1.43343 8.22191 1.41699C7.87922 1.36187 7.53077 1.33296 7.1809 1.33301Z" fill="#707070"/>
4
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg preserveAspectRatio="none" width="100%" height="100%" overflow="visible" style="display: block;" viewBox="0 0 17 17" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path id="Vector" d="M14.625 0H1.625C0.73125 0 0.00812499 0.73125 0.00812499 1.625L0 16.25L3.25 13H14.625C15.5188 13 16.25 12.2688 16.25 11.375V1.625C16.25 0.73125 15.5188 0 14.625 0ZM8.9375 9.75H7.3125V8.125H8.9375V9.75ZM8.9375 6.5H7.3125V3.25H8.9375V6.5Z" fill="#707070"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg preserveAspectRatio="none" width="100%" height="100%" overflow="visible" style="display: block;" viewBox="0 0 8 8" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <circle id="Ellipse 4" cx="4" cy="4" r="4" fill="var(--fill-0, #369929)"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg preserveAspectRatio="none" width="100%" height="100%" overflow="visible" style="display: block;" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path id="Vector" d="M13.9912 7.74512C13.991 4.296 11.1943 1.5 7.74512 1.5C4.29611 1.50018 1.50018 4.29611 1.5 7.74512C1.5 11.1943 4.296 13.991 7.74512 13.9912C11.1944 13.9912 13.9912 11.1944 13.9912 7.74512ZM6.99512 10.5439V7.74512C6.99529 7.33116 7.33116 6.99529 7.74512 6.99512C8.15922 6.99512 8.49494 7.33105 8.49512 7.74512V10.5439C8.49494 10.958 8.15922 11.2939 7.74512 11.2939C7.33116 11.2938 6.99529 10.9579 6.99512 10.5439ZM7.75195 4.19727C8.16617 4.19727 8.50195 4.53305 8.50195 4.94727C8.50195 5.36148 8.16617 5.69727 7.75195 5.69727H7.74512C7.33105 5.69709 6.99512 5.36137 6.99512 4.94727C6.99512 4.53316 7.33105 4.19744 7.74512 4.19727H7.75195ZM15.4912 7.74512C15.4912 12.0228 12.0228 15.4912 7.74512 15.4912C3.46758 15.491 0 12.0227 0 7.74512C0.000176417 3.46769 3.46769 0.000176413 7.74512 0C12.0227 0 15.491 3.46758 15.4912 7.74512Z" fill="var(--fill-0, #707070)"/>
3
+ </svg>
@@ -0,0 +1,27 @@
1
+ <svg version="1.2" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 2120 2120" width="40" height="40">
2
+ <style>
3
+ .s0 { fill: #ec1e24 }
4
+ .s1 { fill: #e51d25 }
5
+ .s2 { fill: #0f8945 }
6
+ .s3 { fill: #0a7e40 }
7
+ </style>
8
+ <g id="_Artboards_">
9
+ </g>
10
+ <g id="Layer 1">
11
+ <g id="&lt;Group&gt;">
12
+ <path id="&lt;Path&gt;" class="s0" d="m1141.12 574.61l-85.01 53.22c-20.3 10.36-40.1 22.84-60.16 30.45-49.08 18.59-96.03 40.49-147.89 59.18-54.93 18.09-54.19 13.65-66.34 49.66-6.4 17.8-18.35 39.63-17.9 58.38-12.06 66.85-20.4 114.97 3.28 189.1 2.69 8.89 3.96 14.2 8.36 19.43 2.58 6.12 7.4 14.5 10.07 19.59l14.59 23.44c4.02 5.55 3.11 4.08 6.38 10.26 2.99 5.45 4.22 7.29 8.61 12.53 25.19 33.02 7.94 56.12 129.82 68.81 61.46 6.39 80.86 6.35 136.09-7.21 8.64-3.75 15.56-7.65 25.89-10.91 9.99-3.29 16.25-7.59 25.64-11.97 40.4-18.31 72.77-51.87 100.64-85.47 22.49-27.49 69.69-96.14 83.16-127.53 3.94-9.36 3.95-13.51 8.57-22.81 40.75-82.03 73.22-220.2 71.51-315.97-0.38-35.37-1.11-62.81-4.49-95.67-1.3-12.93-4.7-29.51-7.89-44.68l-0.38-3.5q-0.68-4.22-1.53-6.37c-1.46-7.06-9.65-40.34-7.8-45.72-1.49-6.71-0.26-20.81-16.5-9.4-9.48 5.41-71.09 72.45-90.28 89.84-45.75 40.01-84.95 68.47-126.44 103.32z"/>
13
+ <path id="&lt;Path&gt;" class="s0" d="m1098.99 218.94c0.76 3.19 5.08 13.27 7.01 18.98 2.46 7.49 3.07 12.39 11.58 14.17 26.3 4.37 53.01 19.86 70.35 35.57 11.57 10.37 37.67 44.86 24.14 68.97-2.86 4.95-45.47 40.73-75.22 64.13-29.76 23.39-63.1 40.23-92.59 64.69-0.38 0.31-1.13 0.94-1.5 1.25l-48.74 34.56c-23.67 13.19-67.49 58.91-99.45 83.85-14.12 10.89-39.7 46.08-53.13 65.01-6.65 8.77-13.34 17.89-8.73 20.72 14.72 9.94 119.11-42.99 135.73-50.89 92.55-44.26 157.09-89.22 237.84-153.21 22.74-18.46 45.15-41.11 66-57.66 20.46-16.23 31.74-34.3 53.84-57.32 23.96-24.59 47.84-64.09 62-95.42 11.22-25.35 20.03-50.92 14.37-85.36-17.92-108.62-139.96-139.34-234.27-130.57-39.45 3.49-100.28 21.76-139.75 45.34-5.49 3.34-36.59 26.26-30.6 33.02 10.36 12.34 39.77 20.79 53.78 31.01 19.95 13.52 41.49 24.75 47.34 49.16z"/>
14
+ <path id="&lt;Path&gt;" class="s1" d="m439.19 941.01l30.52 23.44c74.07 44.56 58.38 41.81 128.59 90.88 8.81 6.31 28.69 16.7 41.95 19.59 12.23 2.8 5.87 0.17 15.08 5.82 28.94 17.76 78.14 29.67 114.33 31.78l-25.27-47.93c-9.61-12.97-1.61-5.34-11.69-24.93l-17.57-52.8c-9.67-20.24-6.17-76.41-3.66-97.32 3.84-36.05 21.13-123.23 42.07-152.94 4.33-5.86 10.5-17.1 13.07-22.76l13.34-25.87c18.92-30.22 49.31-57.02 63.52-92.86 12.01-30.48-182.26-127.07-214.23-145.8-26.4-15.11-88.44-34.72-121.84-25.15-14.23 12.27 34.44 81.98 32.68 145.92 4.39 29.14-2.94 65.57-2.13 96.13 0.41 19.09 10.22 117.3 15.07 133.31 3.51 11.39 4.85 27.79 9.11 38.56 10.48 26.89 35.39 78.95 52.17 101.2 8.69 11.49 17.96 24.43 27.6 37.05 11.21 14.48 80.59 81.15 79.56 97-41.1-25.41-67.26-51.24-97.02-87.44-40.43-48.9-65.43-64.24-91.12-123.3-22.82-52.22-29.51-102.69-32.92-159.11l3.76-130.63c-26.92 6.66-49.76-1.56-78.75 17.05-30.05 18.86-21.34 42.14-24.75 73.37-2.54 21.25-12.86 20.36-29.98 37.92-6.81 6.68-9.21 10.28-15.02 17.4-25.11 29.69-35.21 50.29-18.33 95.06 29.24 78.08 48.72 81.16 101.86 127.36z"/>
15
+ <path id="&lt;Path&gt;" class="s1" d="m1268.75 1062.43c-4.75 6.86-14.98 12.9-9.37 24.13 8.85 17.75 119.97 26.73 177.21 1.92 37.41-15.8 92.47-63.32 107.31-106.37 9.97-23.04 70.14-117.23 81.68-130.43 22.34-25.77 61.14-61.54 100.8-67.44 16.21-3.1 24.63-8.25 44.06-8.64 19.06-0.07 28.69 0.76 45.93-2.24-2.54-10.61-6.97-15.5-11.71-20.76l-60.83-81.17c-3.53-7.24-11.77-20.08-16.42-26.38-37.6-53.51-42.4-74.02-99.23-121.58-10.98-9.27-42.29-27.59-55.97-33.63-27.67-12.45-105.8-38.31-140.26-36.46-8.68 0.28-8.4 1-10.78 8.41-3.77 11.46-1.41 32.1 0.9 45.47 7.36 46.72 5.92 111.03 1.25 156.7-4.34 41.89-28.75 163.1-47.32 193.36-1.99 18.88-26.23 70.47-36.6 90.01-6.63 12.58-14.59 24.36-21.35 38.32-18.57 38.23-27.57 46.11-49.3 76.78z"/>
16
+ <path id="&lt;Path&gt;" class="s0" d="m377.2 272.16c-3.82 20.11 22.96 78.57 54.08 103.1 23.67 18.69 27.82 18.71 63.48 11.07 28.57-5.83 44.25 1.08 73.34 1.19 34.76 2.68 29.96 14.04 66.27 14.78 10.36-11.57 23.33-21.18 21.35-38.33-2.71-24.49-28.8-63.14 0.67-95.22 28.29-30.45 38.5-40.3 72.07-63.7 42.76-29.54 82.64-42 130.95-51.66 19.4-8.01 51.7-12.82 72.03-15.55 8.06-1.03 13.99-1.55 21.45-3.68 14.55-3.93-9.85-26.15-13.39-29.22-26.25-24.81-54.71-40.11-95.18-40.86-38.41 7.4-7.07-2.35-56.86 12.37-62.58 18.46-71.18 41.62-183.42 33.58-85.05-6.02-165.72 5.31-212.06 79.92-5.29 21.02-29.86 60.46-14.78 82.21z"/>
17
+ <path id="&lt;Path&gt;" class="s0" d="m970.39 307.18l-27.13 29.16c-9 15.85 5.6 27.17 5.63 26.82 0.4-0.65 1.29 1.16 1.91 1.9 9.48 2.56 25.91 16.81 33.55 20.59 22.72 9.6 52.84 49.64 75.4 49.18 14.22-0.15 57.28-33.12 66.56-48.25l22.68-17.77c29.72-23.05 42.03-25.1 22.43-50.71-22.05-29.29-48.13-36.06-94.89-40.14-35.76-3.11-79.52 2.09-106.14 29.22z"/>
18
+ <path id="&lt;Path&gt;" class="s2" d="m1113.77 1171.23l-24.83 10.66c-1.68 19.26 8.4 22.9 21.15 31.64 3.26 2.36 33.95 19.93 36.3 20.83 11.39 4.45 37.71 8.48 51.06 10.33 38.19-0.83 113.88 1.25 147.03 10.38 3.38 0.98 29.68 13.32 32.28 15.28 3.29 2.02 17.7 19.56 30.35 9.57 17.75-48.69-51.06-113.92-76.47-132.42-36.48-26.73-82.55-54.65-107.35-44.34-14.36 5.68-76.04 53.67-109.52 68.07z"/>
19
+ <path id="&lt;Path&gt;" class="s2" d="m697.4 1254.16l-14.22 16.08c-18.18 17.82-27.57 46.11-29.6 73.3-3.03 22.95 40.74-2.34 62.84-9.43 45.22-22.04 85.17-19.26 134.3-26.41 38.49-0.46 58.36-33.72 69.37-48.7 56.61-77.18 18.36-67.69-33.79-77.43-52.51-9.77-24.83-13.25-66.22-15.47-9.74 0.54-7.34 0.75-14.6 4.62-4.34 2.05-10.8 4.6-15.88 7.28-33.37 17.19-34.85 14.29-56.74 34.9-1.15 1.29-33.1 38-35.46 41.26z"/>
20
+ <path id="&lt;Path&gt;" class="s0" d="m954.89 282.27l14.21-11.93c29.48-20.3 99.85-12.78 109.04-18.91-6.1-77.1-114.98-95.93-173.69-86.15-23.23 4.22-46.12 16.43-65.8 19.57-68.6 20.01-117.63 53.85-154.24 96.39-19.63 14.57-8.53 34.25-4.3 45.36 0.26 1.06 0.85 2.15 1.11 3.21 8.58 28.81 15.93 23.91 42.72 10.65 15.99-12.47 57.99-17.47 88.78-16.87 25.9 0.87 74.88 19.34 96.51 5.63 14.31-9.14 11.77-27.73 45.66-46.95z"/>
21
+ <path id="&lt;Path&gt;" class="s0" d="m771.29 489.05c7.52 5.16 17.19 9.47 22.76 13.07l84.66 58.3c14.37-1.87 61.52-34.14 75.23-44.38l52.79-37.32c18.68-11.54 24.45-14.16 11.26-29.86-5.33-6.35-44.24-32.95-54.14-38.66-24.77-13.94-27.24-29.4-67.45-45.02-25.79-10.22-32.14-12.85-63.77-15.6-47.14-3.76-92.6 13.07-129.98 36.49-17.58 10.94-30.62 33.36-9.84 49.38 25.32 19.53 50.28 35.21 78.48 53.6z"/>
22
+ <path id="&lt;Path&gt;" class="s2" d="m955.62 1973c-106.1-273.57-315.02-189.91-404.23-263.5-48.89 223.36 215.85 429.68 374.1 366.89-11.75-16.26-12.68-29.51-28.08-43.67-32.67-30.56-36.47-18.76-80.89-29.91-33.59-8.12-64.44-19.81-93.31-34.45 31.34 6.19 65.45 20.25 98.91 17.96 20.03 0.71 9.52-9.91-8.82-18.09-33.28-15.71-85.27-55.23-129.47-108.62 31.63 26.66 99.11 79.3 127.06 84.51 2.89-29.2 1.82-24.79-23.5-60.25 35.09 26.61 37.83 46.95 47.11 63.69 6.7 18.6 19.48 34.96 32.09 33.28 3.95 2.43 14.97-8.74 4.03-50.23 18.78 15.15 16.39 70.37 19.65 72.73 22.62 14.79 32.17 28.44 50.27 55.31 16.75-17.25 17.86-53.88 15.08-85.65z"/>
23
+ <path id="&lt;Path&gt;" class="s3" d="m985.44 1204.75q31.91-2.42 63.82-4.83c152.67 562.41-158.23 1208.49-279.97 1584.18-47.44-16.26-63.24-21.79-110.67-38.04 147.3-327.05 482.61-955.06 326.82-1541.31z"/>
24
+ <path id="&lt;Path&gt;" class="s2" d="m1093.24 1677.69c64.2-92.81 162.31-69.71 305.86-94.98 61.58-10.92 93.27-44.54 79.19 17.64-10.87 49.29-15.12 82.17-48.76 118.39-42.45 45.85-86.83 93.95-144.62 113.17-84.23 28.35-172.3 25.19-229.12-18.56 15.61-12.15 20.15-24.57 38.65-34.05 39.88-20.43 40.56-8.25 86.12-6.36 34.54 1.27 67.37-1.76 99.06-7.66-31.63-2.75-68.37 1.33-99.97-9.74-19.3-5.15-6.2-12.32 13.47-15.46 36.51-5.48 97.14-29.3 154.26-68.68-37.87 17.15-116.89 49.42-145.4 46.59 5.29-28.99 5.25-24.49 39.14-51.68-40.9 16.19-49.11 34.87-62.41 48.27-11.78 15.95-28.45 28.35-40.47 23.15-4.27 1.36-11.73-12.46 10.19-49.35-22.31 9.49-34.98 63.47-38.88 64.52-25.65 8.16-19.19 5.6-25.55 10.94-11.33-21.08-2.34-56.67 9.24-86.15z"/>
25
+ </g>
26
+ </g>
27
+ </svg>