Compare commits
No commits in common. "features/invitations" and "master" have entirely different histories.
features/i
...
master
19 changed files with 115 additions and 1368 deletions
8
bun.lock
8
bun.lock
|
@ -8,14 +8,10 @@
|
|||
"@lit-app/state": "^1.0.0",
|
||||
"@lit-labs/motion": "^1.0.8",
|
||||
"@noble/ciphers": "^1.2.1",
|
||||
"@noble/curves": "^1.8.1",
|
||||
"@noble/hashes": "^1.3.3",
|
||||
"@nostr-dev-kit/ndk": "^2.12.2",
|
||||
"@nostr/tools": "npm:@jsr/nostr__tools",
|
||||
"@open-wc/lit-helpers": "^0.7.0",
|
||||
"@scure/base": "^1.2.4",
|
||||
"@std/encoding": "npm:@jsr/std__encoding",
|
||||
"iconify-icon": "^2.3.0",
|
||||
"lit": "^3.2.1",
|
||||
"markdown-it": "^14.1.0",
|
||||
},
|
||||
|
@ -109,8 +105,6 @@
|
|||
|
||||
"@gar/promisify": ["@gar/promisify@1.1.3", "", {}, ""],
|
||||
|
||||
"@iconify/types": ["@iconify/types@2.0.0", "", {}, "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg=="],
|
||||
|
||||
"@isaacs/cliui": ["@isaacs/cliui@8.0.2", "", { "dependencies": { "string-width": "^5.1.2", "string-width-cjs": "npm:string-width@^4.2.0", "strip-ansi": "^7.0.1", "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", "wrap-ansi": "^8.1.0", "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" } }, ""],
|
||||
|
||||
"@jridgewell/gen-mapping": ["@jridgewell/gen-mapping@0.3.8", "", { "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", "@jridgewell/trace-mapping": "^0.3.24" } }, ""],
|
||||
|
@ -503,8 +497,6 @@
|
|||
|
||||
"humanize-ms": ["humanize-ms@1.2.1", "", { "dependencies": { "ms": "^2.0.0" } }, ""],
|
||||
|
||||
"iconify-icon": ["iconify-icon@2.3.0", "", { "dependencies": { "@iconify/types": "^2.0.0" } }, "sha512-C0beI9oTDxQz6voI5CKl7MiJf0Lw4UU8K4G4t6pcUDClLmCvuMOpcvd8MAztQ2SfoH0iv7WHdxBFjekKPFKH2Q=="],
|
||||
|
||||
"iconv-lite": ["iconv-lite@0.6.3", "", { "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" } }, ""],
|
||||
|
||||
"ieee754": ["ieee754@1.2.1", "", {}, ""],
|
||||
|
|
|
@ -44,12 +44,9 @@
|
|||
"@lit-app/state": "^1.0.0",
|
||||
"@lit-labs/motion": "^1.0.8",
|
||||
"@noble/ciphers": "^1.2.1",
|
||||
"@noble/curves": "^1.8.1",
|
||||
"@noble/hashes": "^1.3.3",
|
||||
"@nostr-dev-kit/ndk": "^2.12.2",
|
||||
"@nostr/tools": "npm:@jsr/nostr__tools",
|
||||
"@open-wc/lit-helpers": "^0.7.0",
|
||||
"@scure/base": "^1.2.4",
|
||||
"@std/encoding": "npm:@jsr/std__encoding",
|
||||
"iconify-icon": "^2.3.0",
|
||||
"lit": "^3.2.1",
|
||||
|
|
|
@ -1,547 +0,0 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
version="1.1"
|
||||
style="display: block;"
|
||||
viewBox="0 0 2048 2048"
|
||||
width="1024"
|
||||
height="1024"
|
||||
id="svg91"
|
||||
sodipodi:docname="pattern.svg"
|
||||
inkscape:version="1.4 (e7c3feb100, 2024-10-09)"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:svg="http://www.w3.org/2000/svg">
|
||||
<defs
|
||||
id="defs91" />
|
||||
<sodipodi:namedview
|
||||
id="namedview91"
|
||||
pagecolor="#505050"
|
||||
bordercolor="#eeeeee"
|
||||
borderopacity="1"
|
||||
inkscape:showpageshadow="0"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pagecheckerboard="0"
|
||||
inkscape:deskcolor="#505050"
|
||||
inkscape:zoom="0.78375605"
|
||||
inkscape:cx="446.56752"
|
||||
inkscape:cy="532.69126"
|
||||
inkscape:window-width="1920"
|
||||
inkscape:window-height="1146"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="54"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg91" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(230,229,229)"
|
||||
d="M 0 1480.15 L 1.50738 1481 C 1.2378 1483.33 0.740113 1485.3 0 1487.53 L 0 1480.15 z"
|
||||
id="path3" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(19,50,113)"
|
||||
d="M 1144.22 610.142 C 1162.71 592.571 1179.88 573.618 1197.57 555.26 L 1286.94 462.759 C 1301.05 448.052 1314.68 432.37 1329.43 418.359 C 1333.36 414.627 1339.15 409.729 1345 410.516 C 1347.42 410.842 1349.34 412.235 1350.83 414.085 C 1352.73 416.437 1352.72 419.154 1352.39 422.006 C 1352.08 424.631 1351.4 426.206 1349.87 428.314 C 1337.49 445.381 1319.83 460.879 1305.15 476.176 C 1294.86 486.901 1284.48 499.885 1272.93 509.128 C 1267.32 515.835 1258.6 522.867 1254.15 530.155 C 1245.92 536.678 1238.81 549.246 1229.92 554.124 C 1213.7 572.551 1195.73 589.65 1179 607.66 L 1175.78 611.755 A 624.681 624.681 0 0 0 1161.68 626.824 C 1170.28 639.475 1174.88 650.837 1176.14 666.199 L 1175.73 670.017 C 1175.66 678.392 1173.15 686.854 1169.58 694.39 C 1162.39 709.564 1150.38 721.172 1134.34 726.628 C 1117.95 732.206 1099.51 732.081 1083.89 724.185 C 1068.51 716.413 1055.84 701.246 1050.52 684.896 A 63.1228 63.1228 0 0 1 1054.54 636.975 A 65.6599 65.6599 0 0 1 1093.49 604.093 C 1111.15 598.71 1128.2 601.506 1144.22 610.142 z"
|
||||
id="path8" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(235,234,233)"
|
||||
d="M 1106.08 618.33 C 1115.42 617.195 1126.35 619.208 1134.65 623.595 C 1145.81 629.497 1154.04 640.628 1157.39 652.702 C 1161.04 665.845 1158.72 680.852 1151.57 692.434 C 1143.95 704.771 1132.55 711.766 1118.72 715.018 C 1106.55 715.363 1095.13 713.107 1084.91 706.173 A 46.7226 46.7226 0 0 1 1064.84 675.006 C 1062.6 661.652 1065.65 647.278 1073.84 636.401 C 1082 625.572 1092.93 620.192 1106.08 618.33 z"
|
||||
id="path9" />
|
||||
<path
|
||||
fill="rgb(19,50,113)"
|
||||
d="M 1306.55 0 L 1338.06 0 L 1209.48 130.337 C 1177.51 162.502 1144.39 194.271 1114.41 228.288 C 1126.73 244.854 1133.75 260.605 1130.47 281.715 C 1127.61 300.124 1117.17 314.35 1102.25 325.065 C 1098.88 327.482 1094.89 329.983 1090.79 330.77 L 1086.94 332.562 C 1083.59 333.625 1080.11 334.334 1076.63 334.863 C 1058.86 337.566 1041.41 332.714 1027.13 322.042 L 1023.39 318.862 C 1017.93 313.413 1013.47 307.405 1009.95 300.531 C 1002.29 285.588 1000.49 267.408 1005.74 251.388 C 1010.85 235.772 1022.8 221.596 1037.58 214.344 C 1057.02 204.804 1074.95 206.441 1094.88 213.523 C 1132.44 177.095 1168.71 139.132 1205.65 102.06 C 1239.31 68.2768 1274.25 35.0544 1306.55 0 z"
|
||||
id="path10"
|
||||
transform="translate(0,0)" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(235,234,233)"
|
||||
d="M 1062.84 224.343 C 1072.3 223.186 1082.76 225.82 1090.92 230.601 A 46.8418 46.8418 0 0 1 1112.81 260.298 A 49.1287 49.1287 0 0 1 1106.26 298.458 C 1098.31 310.716 1086.67 316.198 1072.83 319.04 C 1061.55 319.35 1051.9 318.364 1042.15 312.151 A 50.6032 50.6032 0 0 1 1020.05 279.327 C 1017.75 266.983 1021.1 253.997 1028.45 243.888 C 1036.73 232.483 1049.15 226.303 1062.84 224.343 z"
|
||||
id="path11" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(19,50,113)"
|
||||
d="M 1739.12 0 L 1770.71 0 C 1744.94 25.2045 1719.91 51.2837 1694.55 76.906 A 15210.7 15210.7 0 0 1 1488.05 284.711 C 1490.24 289.187 1492.52 293.691 1494.2 298.391 C 1500.16 315.044 1499.93 332.16 1492.29 348.269 C 1485.42 362.745 1472.92 372.939 1457.92 378.157 C 1442.7 383.457 1425.32 381.924 1410.95 374.74 C 1396.38 367.45 1385.76 353.97 1380.78 338.577 A 59.4719 59.4719 0 0 1 1384.95 292.092 A 58.9602 58.9602 0 0 1 1420.34 262.995 C 1438.72 257.405 1454.65 261.42 1471.22 270.282 C 1514.16 228.481 1555.54 185.019 1597.65 142.382 L 1739.12 0 z"
|
||||
id="path12" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(235,234,233)"
|
||||
d="M 1434.87 276.339 C 1444.26 275.721 1454.52 277.943 1462.43 283.064 C 1472.71 289.714 1479.63 301.371 1481.81 313.295 C 1483.94 324.983 1481.46 337.467 1474.59 347.215 C 1466.79 358.255 1455.92 363.22 1442.97 365.32 C 1431.52 365.435 1421.45 364.004 1411.81 357.176 C 1402.14 350.336 1395.88 339.65 1394 328.014 A 44.3582 44.3582 0 0 1 1403.04 293.58 C 1411.15 283.274 1422.12 278.067 1434.87 276.339 z"
|
||||
id="path13" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(19,50,113)"
|
||||
d="M 1431.21 290.253 C 1438.28 289.573 1444.23 289.361 1450.88 292.453 A 31.0507 31.0507 0 0 1 1467.3 310.908 C 1470.03 319.117 1469.59 328.517 1465.52 336.216 C 1461.06 344.627 1454.02 348.948 1445.24 351.898 C 1439.18 353.084 1433.93 352.69 1428.09 350.601 A 29.2423 29.2423 0 0 1 1411.33 335.037 C 1407.53 326.736 1407.21 316.548 1410.74 308.097 C 1414.76 298.467 1421.9 293.871 1431.21 290.253 z"
|
||||
id="path14" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(19,50,113)"
|
||||
d="M 1530.9 0 L 1563.32 0 L 1319.71 246.81 C 1299.96 266.856 1280.06 286.862 1260.59 307.169 C 1251.31 316.849 1242.48 326.935 1232.95 336.377 C 1238.49 342.496 1242.79 348.968 1246.05 356.578 A 62.1745 62.1745 0 0 1 1246.44 405.626 C 1239.8 421.614 1227.89 434.303 1211.7 440.805 C 1195.63 447.261 1177.18 447.745 1161.24 440.66 C 1145.32 433.582 1132.95 418.947 1126.79 402.821 C 1120.62 386.686 1122.14 371.692 1129.08 356.163 C 1136.36 339.842 1148.94 326.807 1165.87 320.566 C 1182.1 314.58 1198.59 316.389 1214.12 323.391 L 1405.54 128.179 C 1447.38 85.5718 1490.7 44.1827 1530.9 0 z"
|
||||
id="path15" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(235,234,233)"
|
||||
d="M 1186.22 333.371 C 1195.95 333.657 1205.01 335.762 1213.27 341.154 C 1224.06 348.203 1231.36 360.012 1233.95 372.543 A 45.4165 45.4165 0 0 1 1226.58 408.061 C 1217.96 420.377 1206.03 426.401 1191.64 429.043 C 1179.17 429.357 1168.02 427.023 1157.95 419.123 A 48.5963 48.5963 0 0 1 1139.99 386.886 A 47.9183 47.9183 0 0 1 1150.36 351.227 C 1159.84 339.381 1171.59 334.765 1186.22 333.371 z"
|
||||
id="path16" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(19,50,113)"
|
||||
d="M 2048 101.424 L 2048 124.297 C 2030.4 125.796 2012.61 126.043 1994.96 126.64 L 1886.9 236.792 C 1861.74 262.059 1834.8 286.819 1811.49 313.798 C 1815.33 318.331 1818.52 323.16 1820.84 328.651 C 1827.16 343.593 1827.42 361.538 1821.12 376.518 C 1814.74 391.684 1802.07 404.839 1786.69 410.915 A 57.7005 57.7005 0 0 1 1741.02 409.477 C 1726.31 402.718 1715.41 390.084 1709.84 374.996 A 61.021 61.021 0 0 1 1712.02 326.769 C 1718.92 312.386 1731.46 300.19 1746.7 295.031 C 1761.95 289.863 1777.76 292.319 1791.85 299.476 C 1805.41 283.975 1820.7 269.592 1835.28 255.043 L 1908.82 181.66 A 3311.94 3311.94 0 0 0 1954.14 135.198 C 1964.02 124.96 1973.67 114.178 1984.54 104.99 C 2005.15 102.029 2027.17 102.176 2048 101.424 z"
|
||||
id="path24" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(235,234,233)"
|
||||
d="M 1761.05 308.371 C 1770.28 307.487 1780.77 310.025 1788.74 314.571 A 43.4012 43.4012 0 0 1 1809.39 341.592 A 47.5828 47.5828 0 0 1 1803.64 378.185 C 1796.43 389.746 1786.44 395.967 1773.43 398.976 C 1761.01 399.432 1750.85 399.005 1740.24 391.445 C 1729.96 384.118 1723.07 372.238 1721.37 359.766 A 48.348 48.348 0 0 1 1731.04 324.003 C 1738.75 314.145 1748.93 309.684 1761.05 308.371 z"
|
||||
id="path25" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(19,50,113)"
|
||||
d="M 1762.03 321.104 C 1768.24 320.925 1773.93 321.699 1779.62 324.341 C 1787.46 327.982 1793.65 334.566 1796.42 342.794 C 1799.21 351.056 1798.36 360.519 1794.31 368.226 C 1789.25 377.866 1781.2 382.193 1771.17 385.047 C 1763.83 385.528 1757.62 384.946 1751.05 381.4 A 32.437 32.437 0 0 1 1735.42 361.528 A 31.0191 31.0191 0 0 1 1738.87 336.756 C 1744.29 327.937 1752.27 323.626 1762.03 321.104 z"
|
||||
id="path26" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(19,50,113)"
|
||||
d="M 1940.88 0 L 1973.21 0 C 1956.13 17.9739 1938.1 35.048 1920.54 52.5389 L 1841.5 132.057 L 1543.28 433.733 A 10069.8 10069.8 0 0 0 1412.2 567.007 L 1364.54 615.97 C 1357.49 623.259 1350.23 632.777 1342.36 638.88 L 1339.4 642.345 A 2417.22 2417.22 0 0 0 1310.32 671.528 C 1305.53 676.436 1300.59 682.739 1295.12 686.802 L 1292.29 690.181 C 1277.6 705.478 1261.98 719.92 1247.56 735.455 L 1243.9 739.35 C 1227.05 755.754 1211.06 773.492 1193.8 789.369 L 1190.71 792.676 C 1176.35 807.113 1162.98 822.47 1148.68 836.985 L 1143.98 841.621 L 938.577 1054.12 L 935.214 1057.78 C 930.244 1062.87 925.353 1067.99 920.619 1073.3 C 920.24 1121.11 921.111 1169.05 919.903 1216.83 A 10736.8 10736.8 0 0 0 771.027 1367.71 L 763.713 1552.22 C 762.238 1594 761.853 1636.06 758.817 1677.73 C 719.322 1714.5 681.997 1754.03 644.793 1793.09 L 637.129 1800.46 L 390.722 2048 L 358.363 2048 C 366.126 2038.44 375.578 2029.71 384.208 2020.93 A 2920.04 2920.04 0 0 1 436.064 1969.03 C 475.88 1929.9 514.163 1889.31 553.786 1850.03 C 575.684 1828.32 597.828 1806.91 619.324 1784.79 C 628.093 1775.77 637.463 1766.88 645.522 1757.22 L 647.097 1756.27 C 662.045 1741.05 676.823 1725.43 692.597 1711.06 L 695.393 1707.91 C 700.424 1702.96 735.606 1668.65 736.51 1665.79 C 736.86 1664.69 736.779 1663.49 736.914 1662.34 L 737.556 1654.84 C 738.79 1646.73 738.541 1637.74 738.929 1629.52 C 739.951 1607.89 740.347 1586.25 741.248 1564.62 L 750.202 1358.4 C 767.495 1337.84 787.857 1318.99 806.802 1299.93 C 814.93 1291.75 823.872 1283.57 830.902 1274.44 L 832.159 1273.8 C 839.31 1266.53 846.515 1259.31 853.336 1251.73 L 857.036 1248.33 C 870.871 1233.81 885.936 1220.65 898.805 1205.19 C 900.405 1157.55 898.699 1109.96 899.652 1062.31 A 1353.68 1353.68 0 0 0 932.803 1027.26 L 933.75 1026.27 A 6807.41 6807.41 0 0 0 1099.51 856.046 C 1124.68 829.696 1151.26 804.592 1175.55 777.427 L 1177.29 775.765 C 1187.62 764.56 1198.97 754.231 1209.64 743.336 C 1230.61 721.931 1251.1 700.136 1272.37 679 C 1291.32 660.171 1311.6 641.361 1328.5 620.64 L 1330.68 619.033 C 1348.87 597.997 1369.97 578.352 1389.46 558.443 A 13498 13498 0 0 1 1514.58 431.718 L 1785.27 156.789 C 1837.05 104.434 1890.02 53.2397 1940.88 0 z"
|
||||
id="path27" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(19,50,113)"
|
||||
d="M 1209.29 1166.99 C 1202.23 1153.62 1198.03 1140.72 1201.15 1125.38 A 64.4065 64.4065 0 0 1 1229.17 1084.55 C 1241.92 1076.36 1257.52 1073.03 1272.41 1076.51 C 1287.75 1080.09 1300.46 1089.44 1308.59 1102.86 A 62.3174 62.3174 0 0 1 1315.96 1150.03 C 1312.21 1164.87 1300.72 1178.91 1287.45 1186.46 C 1270.32 1196.22 1251.87 1194.47 1233.69 1189.46 L 1230.61 1188.4 L 1224.64 1184.84 L 1164.92 1246.46 C 1150.63 1261.12 1135.88 1275.23 1122.31 1290.59 C 1130.67 1302.4 1137.12 1315.61 1134.5 1330.59 C 1134.4 1331.16 1134.28 1331.73 1134.17 1332.3 L 1133.72 1337.28 C 1128.53 1355.38 1120.36 1369.29 1103.32 1378.51 C 1088.52 1386.53 1069.72 1388.53 1053.57 1383.58 A 58.4492 58.4492 0 0 1 1018.41 1353.87 C 1016.83 1350.71 1015.65 1347.34 1014.45 1344.02 L 1014.06 1339.01 C 1013.87 1338.65 1013.63 1338.32 1013.49 1337.94 C 1010.17 1328.89 1013.19 1314.28 1016.37 1305.44 C 1021.75 1290.52 1032.12 1278.78 1046.64 1272.08 C 1066 1263.15 1084.08 1266.99 1103.16 1274.17 C 1111.26 1268.06 1118.42 1260.1 1125.61 1252.93 C 1144.34 1234.26 1162.11 1214.76 1180.5 1195.78 L 1181.03 1195.05 C 1191.39 1187.62 1200.54 1176.26 1209.29 1166.99 z"
|
||||
id="path29" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(235,234,233)"
|
||||
d="M 1233.11 1169.58 C 1232.07 1168.6 1231.04 1167.59 1229.98 1166.62 C 1224.32 1161.41 1218.56 1155.07 1218.09 1147.03 L 1220 1145.14 L 1219.75 1143.84 C 1219.25 1143.38 1218.64 1142.83 1218.21 1142.32 C 1214.55 1138.02 1217.99 1131.69 1218.58 1126.7 C 1219.81 1116.25 1223.15 1110.11 1230.26 1102.27 L 1232.48 1102.61 C 1233.76 1100.75 1235.04 1098.78 1236.54 1097.09 C 1238.37 1095.05 1240.43 1094.75 1243.07 1094.67 C 1243.21 1094.87 1244.18 1096.21 1244.3 1096.4 C 1244.37 1096.52 1244.4 1096.66 1244.45 1096.79 L 1245.19 1092.72 L 1246.48 1094.44 C 1250.09 1091.29 1253.1 1091.32 1257.6 1091.37 L 1260.59 1092.38 C 1263.03 1091 1263.58 1091.28 1266.42 1091.54 C 1266.63 1091.75 1266.84 1091.96 1267.06 1092.17 C 1275.54 1099.93 1283.7 1091.55 1290.96 1107.47 C 1292.51 1110.89 1295.29 1112.87 1297.23 1115.99 C 1303.21 1125.64 1304.08 1137.9 1300.33 1148.56 C 1296.41 1159.68 1285.77 1169.55 1274.98 1174.12 C 1264.82 1178.43 1251.31 1178.64 1241.25 1174.33 A 45.9182 45.9182 0 0 1 1237.42 1172.52 C 1235.87 1171.65 1234.53 1170.64 1233.11 1169.58 z"
|
||||
id="path30" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(197,194,196)"
|
||||
d="M 1246.42 1100.5 L 1247.1 1100.5 L 1246.42 1100.5 z"
|
||||
id="path31" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(249,241,236)"
|
||||
d="M 1233.11 1169.58 L 1237.57 1167.57 C 1238.34 1169.43 1237.76 1170.57 1237.42 1172.52 C 1235.87 1171.65 1234.53 1170.64 1233.11 1169.58 z"
|
||||
id="path32" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(230,229,229)"
|
||||
d="M 1257.6 1091.37 L 1260.59 1092.38 C 1259.68 1096.48 1258.98 1100.07 1259.09 1104.28 L 1257.95 1104.26 L 1257.6 1091.37 z"
|
||||
id="path33" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(19,50,113)"
|
||||
d="M 1257.95 1104.26 L 1259.09 1104.28 C 1267.6 1105.41 1276.47 1108.37 1282.24 1115.09 C 1287.28 1120.97 1288.85 1129.57 1288.26 1137.12 C 1287.61 1145.31 1284.07 1152.64 1277.73 1157.93 C 1271.51 1163.12 1263.75 1165.28 1255.75 1164.33 C 1254.15 1164.14 1252.64 1163.92 1251.02 1163.9 C 1249.31 1163.87 1247.09 1164.08 1245.44 1163.63 C 1240.5 1162.3 1235.21 1154.29 1233.27 1149.96 C 1228.86 1140.08 1229.08 1129.34 1232.84 1119.31 C 1234.74 1117.84 1236.38 1116.28 1238.09 1114.6 L 1237.85 1110.73 C 1243.74 1108.89 1250.94 1107.29 1256.51 1104.9 C 1256.99 1104.69 1257.47 1104.47 1257.95 1104.26 z"
|
||||
id="path34" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(235,234,233)"
|
||||
d="M 1029.42 1333.95 C 1028.52 1332.31 1028.27 1331.17 1028.01 1329.33 C 1027.5 1325.66 1028.93 1324.42 1030.93 1321.67 C 1030.02 1320.46 1029.02 1319.26 1028.86 1317.67 C 1028.11 1310.38 1038.11 1298.51 1043.24 1293.68 C 1046.36 1290.75 1057.28 1281.72 1061.43 1283.26 C 1063.31 1283.96 1062.57 1285.52 1065.33 1284.8 C 1069.12 1283.81 1066.42 1281.8 1072.79 1281.97 C 1075.22 1283.51 1075.24 1284.02 1076.38 1286.71 L 1074.61 1285.81 L 1077.25 1285.67 C 1077.43 1284.56 1077.75 1283.47 1078.03 1282.38 C 1079.06 1282.37 1079.22 1282.33 1080.4 1282.52 C 1088.54 1283.82 1103.76 1291.05 1107.86 1298.34 C 1108.7 1299.83 1107.91 1300.99 1107.51 1302.55 C 1108.29 1302.89 1109.36 1303.33 1110.09 1303.72 C 1115.45 1306.57 1116.23 1313.71 1117.75 1319.15 L 1118.11 1322 C 1117.97 1323.9 1117.84 1325.63 1117.47 1327.5 C 1117.21 1328.87 1117.15 1329.87 1117.08 1331.24 C 1116.51 1342.08 1110.98 1352.15 1103.65 1359.87 C 1101.92 1360.47 1100.36 1360.91 1098.55 1361.17 C 1097.53 1362.34 1096.64 1363.51 1095.71 1364.76 C 1094.55 1366.34 1093.54 1367.03 1091.75 1367.88 L 1089.35 1367.65 L 1087.94 1365.9 L 1086.68 1366.25 C 1086.09 1368.19 1085.37 1369.05 1083.97 1370.49 C 1080.46 1371.15 1079.49 1370.1 1076.37 1368.55 L 1073.56 1370.86 C 1069.53 1372.03 1061.02 1370.53 1057.09 1368.92 C 1055.14 1368.12 1054.84 1365.8 1054.07 1363.91 L 1053.01 1363.55 L 1051.67 1365.06 C 1049.94 1365.2 1049.85 1365.42 1048.18 1364.52 C 1039.22 1359.71 1031.41 1345.13 1028.51 1335.85 L 1029.42 1333.95 z"
|
||||
id="path35" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(230,229,229)"
|
||||
d="M 1041.33 1324.22 C 1039.1 1323.71 1036.96 1323.45 1035.02 1322.2 L 1041.8 1321.84 L 1041.33 1324.22 z"
|
||||
id="path36" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(197,194,196)"
|
||||
d="M 1117.75 1319.15 L 1118.11 1322 C 1114.93 1321.94 1110.34 1321.24 1107.73 1323.17 C 1106.3 1325.51 1106.28 1326.68 1105.72 1329.23 C 1105.67 1329.43 1105.52 1329.59 1105.42 1329.77 C 1104.95 1327.03 1105.13 1324.13 1105.11 1321.35 C 1109.19 1320.99 1114.12 1321.11 1117.75 1319.15 z"
|
||||
id="path37" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(19,50,113)"
|
||||
d="M 1041.8 1321.84 C 1042.55 1318.59 1043.31 1315.17 1044.79 1312.16 C 1048.61 1304.44 1055.34 1297.92 1063.67 1295.38 A 32.2323 32.2323 0 0 1 1088.96 1298.39 C 1098.28 1303.8 1102.36 1311.39 1105.11 1321.35 C 1105.13 1324.13 1104.95 1327.03 1105.42 1329.77 C 1104.25 1335.92 1100.71 1340.96 1099.72 1346.27 L 1101.57 1348.83 L 1098.37 1348.01 C 1087.96 1354.74 1079.66 1360.06 1066.65 1357.53 A 29.6564 29.6564 0 0 1 1047.45 1344.85 A 86.7452 86.7452 0 0 1 1043.58 1338.22 L 1041.74 1331.1 C 1041.94 1328.9 1041.5 1326.44 1041.33 1324.22 L 1041.8 1321.84 z"
|
||||
id="path38" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(249,241,236)"
|
||||
d="M 980.794 1746.72 L 984.963 1751.57 L 980.653 1756.19 L 979.536 1751.45 C 979.49 1749.75 980.231 1748.31 980.794 1746.72 z"
|
||||
id="path41" />
|
||||
<path
|
||||
fill="#133271"
|
||||
d="m 931.25807,1978.2722 c -9.417,-15.15 -14.263,-30.42 -10.005,-48.31 3.712,-15.6 13.382,-29.86 27.282,-38.09 14.41,-8.54 33.652,-10.19 49.647,-5.58 a 60.4748,60.4748 0 0 1 36.00203,29.13 60.6413,60.6413 0 0 1 4.116,47.08 60.3091,60.3091 0 0 1 -29.528,35.34 c -14.30303,7.37 -32.24103,8.88 -47.51503,3.76 -4.957,-1.66 -9.746,-4.07 -14.541,-6.16 -18.988,16.42 -35.867,35.04 -52.877,53.46 h -31.725 c 22.393,-24.21 46.481,-46.69 69.144,-70.63 z"
|
||||
id="path53" />
|
||||
<path
|
||||
fill="#ebeae9"
|
||||
d="m 973.55207,1901.1122 c 9.638,-0.98 19.17,-0.23 27.92503,4.27 10.624,5.45 18.177,15.16 21.626,26.52 a 45.5698,45.5698 0 0 1 -3.905,35.47 c -6.668,11.66 -17.254,17.34 -29.85703,20.48 -10.887,1.25 -21.316,0 -31.015,-5.5 -10.946,-6.2 -18.459,-17.15 -21.319,-29.31 -2.716,-11.55 -0.951,-23.62 5.689,-33.55 7.347,-10.99 18.292,-15.95 30.856,-18.38 z"
|
||||
id="path54" />
|
||||
<path
|
||||
fill="#133271"
|
||||
d="m 977.10307,1913.1822 c 5.098,-0.04 10.488,1.06 15.103,3.23 a 32.1258,32.1258 0 0 1 16.92203,18.56 c 2.563,7.42 2.297,15.42 -1.234,22.47 -4.696,9.38 -12.57903,13.66 -22.12903,16.68 -7.98,0.85 -15.817,-0.3 -22.62,-4.77 a 29.1354,29.1354 0 0 1 -12.6,-18.89 c -1.616,-8.31 0.042,-17.34 4.889,-24.33 5.351,-7.71 12.668,-11.28 21.669,-12.95 z"
|
||||
id="path55" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(19,50,113)"
|
||||
d="M 1971.07 498.219 C 1983.05 497.176 1994.09 497.787 2005.3 502.542 C 2019.96 508.756 2031.1 520.933 2037.01 535.591 A 60.1046 60.1046 0 0 1 2036.26 582.92 A 61.4088 61.4088 0 0 1 2001.96 615.391 C 1984.72 621.908 1966.92 619.132 1950.52 611.766 C 1937.56 623.019 1925.93 635.953 1914 648.268 L 1856.91 706.754 L 1780.89 783.659 C 1768.55 796.394 1755.36 808.9 1744.18 822.663 C 1750.37 830.71 1754.81 840.98 1756.2 851.062 C 1758.27 866.112 1753.37 881.642 1744.27 893.637 C 1733.58 907.709 1717.48 915.34 1700.25 917.714 C 1687.37 918.532 1674.43 915.989 1663.48 909.018 A 62.6524 62.6524 0 0 1 1636.11 868.996 C 1632.9 853.625 1636.57 837.201 1645.11 824.132 C 1654.12 810.323 1668.23 801.121 1684.36 797.949 C 1700.72 794.733 1715.36 797.767 1729.12 806.995 L 1898.21 635.911 C 1910.72 623.37 1922.2 609.879 1934.99 597.625 C 1929.24 589.855 1924.46 582.398 1922 572.926 C 1918 557.497 1921.14 539.318 1929.51 525.767 C 1938.97 510.448 1954.05 502.342 1971.07 498.219 z"
|
||||
id="path57" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(235,234,233)"
|
||||
d="M 1738.66 849.311 C 1739.24 850.394 1739.63 851.44 1739.84 852.655 C 1740.7 857.686 1740.54 865.063 1737.49 869.326 C 1737.16 869.788 1736.81 870.231 1736.46 870.683 L 1738.03 873.575 C 1737.03 878.725 1732.44 884.218 1728.85 887.88 C 1720.18 896.727 1707.44 902.023 1695.04 902.067 C 1683.31 902.109 1671.62 897.479 1663.47 888.961 C 1654.94 880.038 1651.08 867.723 1651.59 855.528 C 1652.01 845.622 1655.64 831.313 1663.79 824.675 C 1664.99 823.698 1666.11 824.337 1667.54 824.547 C 1669.08 822.369 1670.62 820.321 1672.36 818.297 L 1678.58 818.278 C 1680.1 816.99 1681.64 816.14 1683.46 815.353 C 1689.58 812.711 1695.16 812.906 1701.26 815.407 C 1701.59 815.541 1701.91 815.683 1702.24 815.821 C 1703.35 813.794 1702.6 814.664 1704.54 813.249 C 1705.87 813.42 1707.1 813.582 1708.38 814.006 C 1716.86 816.816 1722.14 820.101 1726.06 828.403 L 1726.53 829.423 L 1728.74 828.508 C 1729.57 828.754 1729.98 828.802 1730.72 829.436 C 1734.72 832.852 1738.67 842.843 1738.9 847.987 L 1738.66 849.311 z"
|
||||
id="path58" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(230,229,229)"
|
||||
d="M 1671.86 830.207 L 1672.77 831.039 L 1671.86 830.207 z"
|
||||
id="path59" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(197,194,196)"
|
||||
d="M 1726.73 849.744 C 1729.01 849.15 1728.19 849.221 1730.27 849.147 C 1733.41 849.036 1735.92 849.053 1738.9 847.987 L 1738.66 849.311 C 1734.71 850.06 1730.73 850.979 1726.75 851.539 L 1726.73 849.744 z"
|
||||
id="path60" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(19,50,113)"
|
||||
d="M 1726.75 851.539 C 1726.61 851.913 1726.4 852.267 1726.34 852.66 C 1725.84 855.978 1726.97 858.541 1728.66 861.203 C 1725.7 869.394 1717.37 881.581 1709.64 885.66 C 1707.15 886.974 1705.13 888.594 1702.95 890.369 C 1697.98 888.38 1691.81 890.039 1686.43 888.926 C 1681.78 887.963 1677.45 884.878 1674.12 881.605 C 1664.5 872.146 1664.01 860.865 1666.63 848.429 C 1666.82 847.516 1667.98 843.867 1667.79 843.103 C 1667.56 842.184 1666.8 841.491 1666.31 840.685 C 1671.07 836.689 1675.97 832.018 1681.47 829.071 C 1688.85 825.122 1697.14 824.397 1705.07 827.187 C 1716.27 831.127 1721.71 839.704 1726.73 849.744 L 1726.75 851.539 z"
|
||||
id="path61" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(235,234,233)"
|
||||
d="M 1973.08 513.16 C 1982.83 512.466 1991.96 512.48 2000.94 516.974 C 2012.31 522.663 2020.74 533.88 2024.5 545.881 C 2028.07 557.33 2027.17 569.519 2021.49 580.14 C 2015.04 592.215 2004.49 598.877 1991.83 602.94 C 1980.89 604.915 1969.69 603.761 1959.78 598.561 C 1949.19 592.999 1941.6 583.514 1938.13 572.104 C 1934.5 560.193 1935.21 546.729 1941.36 535.767 C 1948.34 523.321 1959.69 516.714 1973.08 513.16 z"
|
||||
id="path62" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(19,50,113)"
|
||||
d="M 1975.93 527.11 C 1982.53 526.775 1988.44 526.879 1994.65 529.602 A 30.297 30.297 0 0 1 2011.12 547.639 C 2013.97 555.949 2013.12 564.762 2009.13 572.539 C 2004.52 581.51 1997.01 586.846 1987.6 589.873 C 1981 590.567 1975.05 590.369 1968.89 587.663 A 31.2263 31.2263 0 0 1 1951.98 569.557 C 1948.89 560.998 1949.38 551.114 1953.64 543.039 C 1958.53 533.751 1966.3 529.846 1975.93 527.11 z"
|
||||
id="path63" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(19,50,113)"
|
||||
d="M 1653.84 651.498 C 1651.05 647.006 1648.11 642.385 1645.89 637.583 A 64.2277 64.2277 0 0 1 1644.35 587.433 A 63.6209 63.6209 0 0 1 1678.43 551.958 C 1694.08 545.343 1713.24 545.574 1728.8 552.326 C 1744.55 559.157 1756.59 573.16 1762.57 589.107 C 1768.66 605.361 1767.86 622.064 1760.7 637.872 C 1753.63 653.497 1742.12 664.954 1725.98 671 C 1706.08 678.455 1688.17 674.101 1669.55 665.801 C 1638.71 698.289 1606.17 730.589 1574.6 762.5 C 1556.48 780.813 1535.16 799.573 1520.41 820.69 L 1509.22 949.269 C 1504.97 994.565 1500.08 1039.81 1497.5 1085.25 C 1512.86 1083.47 1528.1 1080.75 1543.42 1078.63 L 1621.52 1068.35 C 1638.03 1066.11 1654.64 1063.31 1671.23 1061.85 L 1676.15 1058.86 C 1685.48 1046.82 1698.88 1035.72 1709.74 1024.95 L 1777.61 956.731 L 1956.68 776.459 L 2013.69 718.662 C 2025.02 707.077 2036.07 695.076 2048 684.102 L 2048 707.372 L 1833.33 923.704 L 1727.16 1030.93 C 1711.81 1046.7 1695.45 1062.11 1680.98 1078.67 C 1665.45 1083.63 1646.15 1084.32 1629.93 1086.53 C 1585.37 1092.6 1540.59 1097.37 1496.11 1103.87 C 1493.41 1126.84 1492.18 1150.09 1490.47 1173.15 A 4666.14 4666.14 0 0 0 1482.13 1300.69 A 7986.85 7986.85 0 0 1 1414.03 1382.82 A 18718 18718 0 0 1 1275.39 1550.09 C 1249.99 1580.79 1222.78 1610.62 1198.86 1642.45 C 1221.55 1677.12 1246.38 1710.26 1270.23 1744.11 L 1433.94 1976.17 C 1450.62 2000.25 1468.99 2023.31 1484.74 2048 L 1457.08 2048 C 1424 2004.9 1394.29 1958.91 1362.74 1914.69 A 20969.6 20969.6 0 0 1 1169.92 1641.61 C 1183.61 1626.49 1196.26 1610.21 1209.25 1594.46 L 1275.09 1515 L 1461.77 1291.12 A 5669.39 5669.39 0 0 1 1465.98 1221.49 L 1466.36 1217.16 C 1467.41 1193.4 1469.8 1169.6 1471.45 1145.86 C 1479.24 1033.33 1491.48 921.108 1499.19 808.603 C 1521.42 790.614 1541.27 767.391 1561.33 746.949 C 1592.36 715.324 1624.23 684.471 1653.84 651.498 z"
|
||||
id="path64" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(235,234,233)"
|
||||
d="M 1702.65 562.379 C 1712.04 561.81 1722.49 565.289 1730.15 570.609 C 1740.58 577.851 1747.45 589.345 1749.63 601.785 C 1751.98 615.184 1749.42 629.465 1741.13 640.415 C 1731.78 652.756 1719.59 657.991 1704.78 660.097 C 1693.3 658.947 1682.83 656.247 1673.54 648.965 A 47.1851 47.1851 0 0 1 1655.78 616.604 C 1654.5 603.794 1658.15 590.049 1666.4 580.066 C 1675.67 568.863 1688.64 563.883 1702.65 562.379 z"
|
||||
id="path65" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(19,50,113)"
|
||||
d="M 2048 797.665 L 2048 826.118 A 15778.7 15778.7 0 0 1 1772.06 1106.63 C 1762.71 1115.79 1737.02 1144.59 1727.54 1149.56 C 1716.99 1155.1 1651.25 1158.96 1634.24 1160.91 C 1629.75 1215.78 1627.26 1270.63 1623.51 1325.53 C 1613.38 1339.75 1599.13 1352.31 1586.92 1364.84 L 1532.59 1421.12 L 1412.77 1543.51 C 1377.16 1579.69 1340.99 1615.73 1307.07 1653.52 C 1358.38 1726.4 1411.25 1798.23 1462.12 1871.42 A 5143.34 5143.34 0 0 0 1556.29 2004.61 C 1566.54 2018.82 1575.72 2034.35 1586.59 2048 L 1560.84 2048 C 1534.52 2007.85 1506.37 1968.96 1479.05 1929.49 A 11658.6 11658.6 0 0 0 1383.33 1791.36 L 1318.43 1700.24 C 1305.95 1682.78 1292.4 1665.64 1281.09 1647.41 C 1308.07 1620.43 1334.16 1592.63 1360.8 1565.32 A 15307.6 15307.6 0 0 0 1480.81 1443.25 L 1555.26 1366.91 C 1571.55 1350.22 1588.71 1333.76 1603.55 1315.75 C 1606.65 1298.87 1606.45 1281.1 1607.41 1263.99 C 1608.74 1240.34 1610.68 1216.64 1611.12 1192.95 L 1611.26 1191.53 C 1614.25 1178.97 1613.88 1157.06 1615.05 1143.22 L 1717.34 1132.72 C 1733.26 1120.56 1747.38 1104.24 1761.47 1089.98 L 1828.65 1022.27 L 2048 797.665 z"
|
||||
id="path67" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(19,50,113)"
|
||||
d="M 1752.49 1205.5 C 1774.53 1180.63 1798.81 1157.66 1822.19 1134.04 L 1931.85 1022.47 L 2005.16 947.268 C 2019.06 932.856 2032.48 916.86 2048 904.219 L 2048 934.279 C 2037.58 942.951 2028.26 953.716 2018.8 963.438 L 1964.67 1019.21 C 1899.5 1086.17 1835.18 1154.39 1768.56 1219.88 C 1762.99 1215.42 1757.78 1210.3 1752.49 1205.5 z"
|
||||
id="path69" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(19,50,113)"
|
||||
d="M 1778.24 1831.87 C 1776.45 1836.21 1774.31 1840.58 1771.89 1844.6 C 1762.83 1859.65 1749.27 1870.31 1732.11 1874.48 C 1716.77 1878.21 1701.78 1875.74 1688.31 1867.47 A 62.2162 62.2162 0 0 1 1660.52 1829.26 A 61.9208 61.9208 0 0 1 1668.12 1781.8 C 1676.98 1767.73 1692.52 1756.89 1708.77 1753.44 C 1724.36 1750.13 1740.17 1753.8 1753.34 1762.52 C 1770.16 1773.66 1776.8 1789.3 1780.59 1808.45 C 1796.5 1810.93 1860.52 1815.18 1869.67 1821.8 C 1889.7 1836.3 1908.11 1855.3 1926.8 1871.59 C 1967.6 1907.17 2008.92 1942.75 2048 1980.22 L 2048 2010.69 C 2027.12 1995.36 2007.9 1975.84 1988.73 1958.4 L 1906.49 1884.71 C 1895.5 1874.78 1868.7 1847.75 1857.43 1842.97 C 1845.49 1837.91 1795.16 1834.34 1778.24 1831.87 z"
|
||||
id="path71" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(235,234,233)"
|
||||
d="M 1726.65 1768.49 C 1728.36 1768.95 1730.21 1769.29 1731.86 1769.92 L 1735.05 1770.69 C 1735.71 1772.06 1735.79 1772.58 1735.89 1774.04 L 1736.87 1774.36 L 1739.02 1772.69 C 1741.89 1773.3 1742.27 1773.55 1744.44 1775.55 L 1745.72 1779.37 C 1749.99 1779.87 1751.37 1780.09 1754.17 1783.65 C 1762.64 1794.41 1765.95 1807.89 1763.85 1821.4 C 1761.93 1833.81 1755.6 1844.44 1745.28 1851.68 C 1742.15 1853.88 1738.73 1855.52 1735.28 1857.15 L 1732.96 1857.26 C 1731.39 1853.13 1731.81 1847.79 1731.68 1843.38 L 1732.83 1843.03 C 1733.44 1842.75 1734.05 1842.49 1734.65 1842.21 C 1741.95 1838.75 1747.57 1831.24 1749.96 1823.65 A 32.4429 32.4429 0 0 0 1741.88 1790.71 C 1739.53 1788.36 1735.81 1786.49 1734.6 1783.32 C 1734.45 1782.91 1734.42 1782.47 1734.32 1782.04 C 1733.1 1782.73 1731.95 1783.18 1730.65 1783.67 L 1727.74 1782.26 L 1725.24 1782.07 C 1726.4 1777.26 1727.07 1773.49 1726.65 1768.49 z"
|
||||
id="path72" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(230,229,229)"
|
||||
d="M 1731.68 1843.38 L 1732.83 1843.03 C 1733.19 1847.72 1733.47 1852.74 1735.28 1857.15 L 1732.96 1857.26 C 1731.39 1853.13 1731.81 1847.79 1731.68 1843.38 z"
|
||||
id="path73" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(230,229,229)"
|
||||
d="M 1726.65 1768.49 C 1728.36 1768.95 1730.21 1769.29 1731.86 1769.92 C 1729.52 1770.77 1729.56 1770.83 1728.28 1772.98 C 1728.21 1776.1 1728.05 1779.15 1727.74 1782.26 L 1725.24 1782.07 C 1726.4 1777.26 1727.07 1773.49 1726.65 1768.49 z"
|
||||
id="path74" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(235,234,233)"
|
||||
d="M 1677.58 1828.69 C 1675.37 1822.9 1674.15 1816.74 1675.1 1810.54 C 1677 1798.24 1681.18 1785.33 1691.6 1777.86 C 1692.61 1777.81 1693.63 1777.77 1694.64 1777.67 C 1698.39 1777.31 1698.95 1775.23 1701.18 1772.38 L 1706.72 1772.27 L 1706.15 1771.85 L 1708.07 1771.67 L 1708.87 1769.05 C 1710.81 1768.06 1711.92 1768.07 1714.07 1768.2 L 1715.82 1770.35 C 1719.86 1768.26 1722.15 1767.89 1726.65 1768.49 C 1727.07 1773.49 1726.4 1777.26 1725.24 1782.07 C 1715.95 1781.27 1706.82 1782.78 1699.51 1789.1 C 1692.85 1794.86 1689.39 1803.52 1688.9 1812.18 C 1688.63 1817.13 1689.27 1822.43 1689.77 1827.36 C 1690.12 1827.32 1690.48 1827.27 1690.84 1827.23 C 1692.22 1827.09 1691.67 1827.04 1692.81 1827.32 L 1691.12 1829.35 C 1695.18 1833.45 1699.7 1839.3 1704.24 1842.66 C 1707.26 1844.89 1709.75 1842.25 1712.75 1844.87 L 1713.58 1848.25 C 1713.76 1847.92 1713.94 1847.59 1714.13 1847.26 C 1715 1845.78 1714.62 1846.32 1715.95 1845.04 C 1718.45 1845.35 1720.07 1845.93 1722.31 1847.07 L 1723.48 1845.63 L 1723.89 1846.32 L 1725.53 1845.49 C 1727.55 1844.49 1729.5 1843.95 1731.68 1843.38 C 1731.81 1847.79 1731.39 1853.13 1732.96 1857.26 C 1726.08 1859.61 1716.72 1859.21 1709.66 1857.68 C 1695.92 1854.7 1687.06 1846.79 1679.86 1835.26 L 1677.58 1828.69 z"
|
||||
id="path75" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(249,241,236)"
|
||||
d="M 1677.58 1828.69 L 1682.18 1829.77 L 1682.58 1831.15 L 1679.86 1835.26 L 1677.58 1828.69 z"
|
||||
id="path76" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(19,50,113)"
|
||||
d="M 1731.68 1843.38 C 1729.5 1843.95 1727.55 1844.49 1725.53 1845.49 L 1723.89 1846.32 L 1723.48 1845.63 L 1722.31 1847.07 C 1720.07 1845.93 1718.45 1845.35 1715.95 1845.04 C 1714.62 1846.32 1715 1845.78 1714.13 1847.26 C 1713.94 1847.59 1713.76 1847.92 1713.58 1848.25 L 1712.75 1844.87 C 1709.75 1842.25 1707.26 1844.89 1704.24 1842.66 C 1699.7 1839.3 1695.18 1833.45 1691.12 1829.35 L 1692.81 1827.32 C 1691.67 1827.04 1692.22 1827.09 1690.84 1827.23 C 1690.48 1827.27 1690.12 1827.32 1689.77 1827.36 C 1689.27 1822.43 1688.63 1817.13 1688.9 1812.18 C 1689.39 1803.52 1692.85 1794.86 1699.51 1789.1 C 1706.82 1782.78 1715.95 1781.27 1725.24 1782.07 L 1727.74 1782.26 L 1730.65 1783.67 C 1731.95 1783.18 1733.1 1782.73 1734.32 1782.04 C 1734.42 1782.47 1734.45 1782.91 1734.6 1783.32 C 1735.81 1786.49 1739.53 1788.36 1741.88 1790.71 A 32.4429 32.4429 0 0 1 1749.96 1823.65 C 1747.57 1831.24 1741.95 1838.75 1734.65 1842.21 C 1734.05 1842.49 1733.44 1842.75 1732.83 1843.03 L 1731.68 1843.38 z"
|
||||
id="path77" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(19,50,113)"
|
||||
d="M 1695.05 1651.38 A 250.783 250.783 0 0 1 1695.46 1657.04 A 62.9987 62.9987 0 0 1 1679.12 1703.05 C 1668.39 1714.85 1652.66 1723.23 1636.56 1723.73 C 1619.67 1724.26 1602.06 1718.03 1589.98 1706.1 C 1578.73 1695 1572.71 1679.25 1572.84 1663.53 A 65.517 65.517 0 0 1 1592.83 1616.91 A 55.4544 55.4544 0 0 1 1633.28 1601.23 C 1655.97 1601.74 1671.54 1613.49 1686.61 1629.25 L 1770 1618.06 C 1780.61 1625.27 1790.19 1635.18 1799.72 1643.78 A 2904.28 2904.28 0 0 0 1842.67 1681.8 L 2048 1865.5 L 2048 1896.99 C 2034.7 1883.82 2020.19 1871.92 2006.3 1859.38 A 11412.9 11412.9 0 0 0 1907.47 1771.03 L 1815.44 1689.21 C 1797.82 1673.47 1780.66 1656.97 1762.31 1642.1 C 1740.69 1646.42 1717.04 1650.05 1695.05 1651.38 z"
|
||||
id="path82" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(235,234,233)"
|
||||
d="M 1592.86 1683.07 C 1589.79 1675.65 1588.31 1668.52 1588.63 1660.44 C 1589.14 1647.38 1595.35 1636.46 1604.8 1627.75 C 1609.44 1623.48 1610.43 1622.36 1616.59 1622.59 C 1617.62 1621.88 1618.66 1621.17 1619.74 1620.54 C 1629.51 1614.88 1639.89 1618.13 1649.82 1620.83 C 1651.3 1621.23 1653 1621.5 1654.38 1622.22 C 1656.61 1623.38 1657.54 1624.58 1658.24 1626.92 C 1660.09 1626.37 1660.54 1625.76 1662.38 1626.71 C 1664.22 1627.67 1666.07 1629.38 1667.06 1631.25 C 1674.96 1640.23 1680.97 1651.58 1680.37 1663.84 C 1679.73 1676.74 1673.47 1688.11 1663.86 1696.55 C 1654.19 1705.06 1642.51 1708.28 1629.76 1707.24 C 1618.55 1706.32 1606.45 1701.2 1599.16 1692.37 C 1597.73 1690.64 1596.46 1688.81 1595.17 1686.98 L 1592.86 1683.07 z"
|
||||
id="path83" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(249,241,236)"
|
||||
d="M 1658.24 1626.92 C 1660.09 1626.37 1660.54 1625.76 1662.38 1626.71 C 1664.22 1627.67 1666.07 1629.38 1667.06 1631.25 C 1662.29 1632.78 1661.98 1636.26 1657.84 1638.1 L 1657.08 1636.96 L 1659.42 1633.57 C 1659.18 1631.28 1658.74 1629.16 1658.24 1626.92 z"
|
||||
id="path84" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(19,50,113)"
|
||||
d="M 1629.44 1627.88 L 1629.9 1629.41 L 1631.99 1630.41 A 79.9357 79.9357 0 0 1 1635.99 1629.82 C 1642.93 1629.03 1650.09 1631.86 1655.37 1636.31 C 1662.27 1642.13 1666.93 1651.37 1667.25 1660.41 C 1667.59 1670.21 1662.94 1679.14 1656.28 1686.07 C 1652.93 1689.55 1649.21 1693.17 1644.16 1693.26 C 1641.57 1693.3 1640 1693.89 1637.68 1695 C 1637.38 1695.14 1637.08 1695.29 1636.79 1695.43 L 1636.66 1696.02 C 1636.03 1695.23 1635.26 1694.7 1634.47 1694.08 L 1635.15 1695.09 C 1631.42 1694.37 1628.06 1694.92 1624.33 1695.4 L 1623.01 1693.09 C 1622.34 1692.78 1621.66 1692.48 1621 1692.14 C 1611.67 1687.33 1605.05 1680.99 1601.95 1670.7 C 1599.85 1663.73 1600.05 1655.82 1603.67 1649.37 C 1607.85 1641.94 1614.35 1634.15 1622.82 1631.75 L 1625.94 1630.83 C 1628.11 1630.18 1628.1 1629.61 1629.44 1627.88 z"
|
||||
id="path85" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(19,50,113)"
|
||||
d="M 2048 1005.89 L 2048 1035.56 L 1791.24 1297.7 C 1787.48 1338.08 1785.74 1378.44 1783.13 1418.89 C 1781 1451.89 1777.82 1485.04 1776.56 1518.07 A 20782.2 20782.2 0 0 0 1963.93 1685.37 C 1991.94 1710.37 2021.27 1734.81 2048 1761.13 L 2048 1784.46 C 2022.03 1759.66 1994.7 1736.01 1967.93 1712.06 L 1851.6 1607.56 C 1836.27 1593.8 1821.3 1579.66 1806.04 1565.83 C 1790.79 1552 1774.2 1538.32 1761.24 1522.28 C 1764.62 1479.07 1766.93 1435.61 1769.09 1392.32 C 1770.29 1368.09 1772.32 1343.45 1772.08 1319.21 C 1748.22 1340.56 1726.56 1364.03 1704.07 1386.79 L 1583.64 1509.08 L 1481.44 1611.89 C 1462.85 1630.64 1443.4 1649.01 1426.15 1669 C 1457.4 1711.55 1487.26 1755.02 1517.55 1798.26 L 1604.67 1922.25 C 1633.67 1963.94 1665.8 2004.67 1692.19 2048 L 1671.03 2048 C 1583.28 1918.48 1491.22 1791.84 1402.44 1663.02 C 1418.51 1644.79 1436.19 1627.72 1453.24 1610.38 L 1546.19 1516.43 L 1810.08 1248.72 L 1966.14 1089.44 L 2013.23 1040.49 C 2024.33 1028.82 2035.09 1015.58 2048 1005.89 z"
|
||||
id="path86" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(19,50,113)"
|
||||
d="M 1850.38 1341.36 C 1856.97 1335.83 1862.86 1329.01 1868.91 1322.88 L 1905.17 1285.87 L 1997.68 1191.64 C 2014.51 1174.37 2030.42 1156.03 2048 1139.52 L 2048 1166.64 C 2005.47 1211.7 1961.18 1255.18 1918.15 1299.77 C 1900.79 1317.76 1882.3 1335.13 1866.29 1354.33 C 1863.51 1395.08 1860.06 1436.45 1859.9 1477.29 C 1922.83 1533.17 1986.83 1588.52 2048 1646.32 L 2048 1669.56 C 2032.93 1653.63 2015.25 1639.08 1999.12 1624.16 C 1947.63 1576.55 1894.11 1531.13 1842.82 1483.35 C 1844.17 1436.02 1848.22 1388.67 1850.38 1341.36 z"
|
||||
id="path88" />
|
||||
<path
|
||||
transform="translate(0,0)"
|
||||
fill="rgb(19,50,113)"
|
||||
d="M 2048 1552.64 C 2026.62 1547.15 2008.02 1537.67 1990.99 1523.58 C 1961.96 1499.57 1942.05 1463.15 1938.52 1425.57 C 1929.67 1331.29 1996.78 1299.27 2048 1237.21 L 2048 1272.71 C 2006.43 1312.16 1961.78 1345.41 1960 1407.76 A 120.284 120.284 0 0 0 1994.39 1496.67 C 2009.44 1512.29 2027.75 1523.53 2048 1531.11 L 2048 1552.64 z"
|
||||
id="path90" />
|
||||
<path
|
||||
fill="#e6e5e5"
|
||||
d="M -74,651.85 -75.5074,651 c 0.2696,-2.33 0.7673,-4.3 1.5074,-6.53 z"
|
||||
id="path3-3"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#133271"
|
||||
d="m 741.4306,2059.8238 h -31.51 l 128.58,-130.337 c 31.97,-32.165 65.09,-63.934 95.07,-97.951 -12.32,-16.566 -19.34,-32.317 -16.06,-53.427 2.86,-18.409 13.3,-32.635 28.22,-43.35 3.37,-2.417 7.36,-4.918 11.46,-5.705 l 3.85,-1.792 c 3.35,-1.063 6.83,-1.772 10.31,-2.301 17.77,-2.703 35.22,2.149 49.5,12.821 l 3.74,3.18 c 5.46,5.449 9.92,11.457 13.44,18.331 7.66,14.943 9.46,33.123 4.21,49.143 -5.11,15.616 -17.06,29.792 -31.84,37.044 -19.44,9.54 -37.37,7.903 -57.3,0.821 -37.56,36.428 -73.83,74.391 -110.77,111.463 -33.66,33.7832 -68.6,67.0056 -100.9,102.06 z"
|
||||
id="path10-5"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#ebeae9"
|
||||
d="m 985.1406,1835.4808 c -9.46,1.157 -19.92,-1.477 -28.08,-6.258 a 46.8418,46.8418 0 0 1 -21.89,-29.697 49.1287,49.1287 0 0 1 6.55,-38.16 c 7.95,-12.258 19.59,-17.74 33.43,-20.582 11.28,-0.31 20.93,0.676 30.68,6.889 a 50.6032,50.6032 0 0 1 22.1,32.824 c 2.3,12.344 -1.05,25.33 -8.4,35.439 -8.28,11.405 -20.7,17.585 -34.39,19.545 z"
|
||||
id="path11-3"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#133271"
|
||||
d="m 308.86061,2059.8238 h -31.59 c 25.77,-25.2045 50.8,-51.2837 76.16,-76.906 a 15210.7,15210.7 0 0 1 206.5,-207.805 c -2.19,-4.476 -4.47,-8.98 -6.15,-13.68 -5.96,-16.653 -5.73,-33.769 1.91,-49.878 6.87,-14.476 19.37,-24.67 34.37,-29.888 15.22,-5.3 32.6,-3.767 46.97,3.417 14.57,7.29 25.19,20.77 30.17,36.163 a 59.4719,59.4719 0 0 1 -4.17,46.485 58.9602,58.9602 0 0 1 -35.39,29.097 c -18.38,5.59 -34.31,1.575 -50.88,-7.287 -42.94,41.801 -84.32,85.263 -126.43,127.9 z"
|
||||
id="path12-5"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#ebeae9"
|
||||
d="m 613.11061,1783.4848 c -9.39,0.618 -19.65,-1.604 -27.56,-6.725 -10.28,-6.65 -17.2,-18.307 -19.38,-30.231 -2.13,-11.688 0.35,-24.172 7.22,-33.92 7.8,-11.04 18.67,-16.005 31.62,-18.105 11.45,-0.115 21.52,1.316 31.16,8.144 9.67,6.84 15.93,17.526 17.81,29.162 a 44.3582,44.3582 0 0 1 -9.04,34.434 c -8.11,10.306 -19.08,15.513 -31.83,17.241 z"
|
||||
id="path13-6"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#133271"
|
||||
d="m 616.77061,1769.5708 c -7.07,0.68 -13.02,0.892 -19.67,-2.2 a 31.0507,31.0507 0 0 1 -16.42,-18.455 c -2.73,-8.209 -2.29,-17.609 1.78,-25.308 4.46,-8.411 11.5,-12.732 20.28,-15.682 6.06,-1.186 11.31,-0.792 17.15,1.297 a 29.2423,29.2423 0 0 1 16.76,15.564 c 3.8,8.301 4.12,18.489 0.59,26.94 -4.02,9.63 -11.16,14.226 -20.47,17.844 z"
|
||||
id="path14-2"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#133271"
|
||||
d="m 517.08061,2059.8238 h -32.42 l 243.60999,-246.81 c 19.75,-20.046 39.65,-40.052 59.12,-60.359 9.28,-9.68 18.11,-19.766 27.64,-29.208 -5.54,-6.119 -9.84,-12.591 -13.1,-20.201 a 62.1745,62.1745 0 0 1 -0.39,-49.048 c 6.64,-15.988 18.55,-28.677 34.74,-35.179 16.07,-6.456 34.52,-6.94 50.46,0.145 15.92,7.078 28.29,21.713 34.45,37.839 6.17,16.135 4.65,31.129 -2.29,46.658 -7.28,16.321 -19.86,29.356 -36.79,35.597 -16.23,5.986 -32.72,4.177 -48.25,-2.825 l -191.41999,195.212 c -41.84,42.6072 -85.16,83.9963 -125.36,128.179 z"
|
||||
id="path15-9"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#ebeae9"
|
||||
d="m 861.7606,1726.4528 c -9.73,-0.286 -18.79,-2.391 -27.05,-7.783 -10.79,-7.049 -18.09,-18.858 -20.68,-31.389 a 45.4165,45.4165 0 0 1 7.37,-35.518 c 8.62,-12.316 20.55,-18.34 34.94,-20.982 12.47,-0.314 23.62,2.02 33.69,9.92 a 48.5963,48.5963 0 0 1 17.96,32.237 47.9183,47.9183 0 0 1 -10.37,35.659 c -9.48,11.846 -21.23,16.462 -35.86,17.856 z"
|
||||
id="path16-1"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#133271"
|
||||
d="m -0.0193855,1958.3998 v -22.873 c 17.6000005,-1.499 35.3900005,-1.746 53.0400005,-2.343 l 108.059995,-110.152 c 25.16,-25.267 52.1,-50.027 75.41,-77.006 -3.84,-4.533 -7.03,-9.362 -9.35,-14.853 -6.32,-14.942 -6.58,-32.887 -0.28,-47.867 6.38,-15.166 19.05,-28.321 34.43,-34.397 a 57.7005,57.7005 0 0 1 45.67,1.438 c 14.71,6.759 25.61,19.393 31.18,34.481 a 61.021,61.021 0 0 1 -2.18,48.227 c -6.9,14.383 -19.44,26.579 -34.68,31.738 -15.25,5.168 -31.06,2.712 -45.15,-4.445 -13.56,15.501 -28.85,29.884 -43.43,44.433 l -73.54,73.383 a 3311.94,3311.94 0 0 0 -45.319995,46.462 c -9.88,10.238 -19.53,21.02 -30.4,30.208 -20.61,2.961 -42.63,2.814 -63.4600005,3.566 z"
|
||||
id="path24-0"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#ebeae9"
|
||||
d="m 286.93061,1751.4528 c -9.23,0.884 -19.72,-1.654 -27.69,-6.2 a 43.4012,43.4012 0 0 1 -20.65,-27.021 47.5828,47.5828 0 0 1 5.75,-36.593 c 7.21,-11.561 17.2,-17.782 30.21,-20.791 12.42,-0.456 22.58,-0.029 33.19,7.531 10.28,7.327 17.17,19.207 18.87,31.679 a 48.348,48.348 0 0 1 -9.67,35.763 c -7.71,9.858 -17.89,14.319 -30.01,15.632 z"
|
||||
id="path25-6"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#133271"
|
||||
d="m 285.95061,1738.7198 c -6.21,0.179 -11.9,-0.595 -17.59,-3.237 -7.84,-3.641 -14.03,-10.225 -16.8,-18.453 -2.79,-8.262 -1.94,-17.725 2.11,-25.432 5.06,-9.64 13.11,-13.967 23.14,-16.821 7.34,-0.481 13.55,0.101 20.12,3.647 a 32.437,32.437 0 0 1 15.63,19.872 31.0191,31.0191 0 0 1 -3.45,24.772 c -5.42,8.819 -13.4,13.13 -23.16,15.652 z"
|
||||
id="path26-2"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#133271"
|
||||
d="m 838.6906,892.83379 c 7.06,13.37 11.26,26.27 8.14,41.61 a 64.4065,64.4065 0 0 1 -28.02,40.83 c -12.75,8.19 -28.35,11.52 -43.24,8.04 -15.34,-3.58 -28.05,-12.93 -36.18,-26.35 a 62.3174,62.3174 0 0 1 -7.37,-47.17 c 3.75,-14.84 15.24,-28.88 28.51,-36.43 17.13,-9.76 35.58,-8.01 53.76,-3 l 3.08,1.06 5.97,3.56 59.72,-61.62 c 14.29,-14.66 29.04,-28.77 42.61,-44.13 -8.36,-11.81 -14.81,-25.02 -12.19,-40 0.1,-0.57 0.22,-1.14 0.33,-1.71 l 0.45,-4.98 c 5.19,-18.1 13.36,-32.01 30.4,-41.23 14.8,-8.02 33.6,-10.02 49.75,-5.07 a 58.4492,58.4492 0 0 1 35.16,29.71 c 1.58,3.16 2.76,6.53 3.96,9.85 l 0.39,5.01 c 0.19,0.36 0.43,0.69 0.57,1.07 3.32,9.05 0.3,23.66 -2.88,32.5 -5.38,14.92 -15.75,26.66 -30.27,33.36 -19.36,8.93 -37.44,5.09 -56.52,-2.09 -8.1,6.11 -15.26,14.07 -22.45,21.24 -18.73,18.67 -36.5,38.17 -54.89,57.15 l -0.53,0.73 c -10.36,7.43 -19.51,18.79 -28.26,28.06 z"
|
||||
id="path29-1"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#ebeae9"
|
||||
d="m 814.8706,890.24379 c 1.04,0.98 2.07,1.99 3.13,2.96 5.66,5.21 11.42,11.55 11.89,19.59 l -1.91,1.89 0.25,1.3 c 0.5,0.46 1.11,1.01 1.54,1.52 3.66,4.3 0.22,10.63 -0.37,15.62 -1.23,10.45 -4.57,16.59 -11.68,24.43 l -2.22,-0.34 c -1.28,1.86 -2.56,3.83 -4.06,5.52 -1.83,2.04 -3.89,2.34 -6.53,2.42 -0.14,-0.2 -1.11,-1.54 -1.23,-1.73 -0.07,-0.12 -0.1,-0.26 -0.15,-0.39 l -0.74,4.07 -1.29,-1.72 c -3.61,3.15 -6.62,3.12 -11.12,3.07 l -2.99,-1.01 c -2.44,1.38 -2.99,1.1 -5.83,0.84 -0.21,-0.21 -0.42,-0.42 -0.64,-0.63 -8.48,-7.76 -16.64,0.62 -23.9,-15.3 -1.55,-3.42 -4.33,-5.4 -6.27,-8.52 -5.98,-9.65 -6.85,-21.91 -3.1,-32.57 3.92,-11.12 14.56,-20.99 25.35,-25.56 10.16,-4.31 23.67,-4.52 33.73,-0.21 a 45.9182,45.9182 0 0 1 3.83,1.81 c 1.55,0.87 2.89,1.88 4.31,2.94 z"
|
||||
id="path30-8"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#c5c2c4"
|
||||
d="m 801.5606,959.32379 h -0.68 z"
|
||||
id="path31-7"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#f9f1ec"
|
||||
d="m 814.8706,890.24379 -4.46,2.01 c -0.77,-1.86 -0.19,-3 0.15,-4.95 1.55,0.87 2.89,1.88 4.31,2.94 z"
|
||||
id="path32-9"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#e6e5e5"
|
||||
d="m 790.3806,968.45379 -2.99,-1.01 c 0.91,-4.1 1.61,-7.69 1.5,-11.9 l 1.14,0.02 z"
|
||||
id="path33-2"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#133271"
|
||||
d="m 790.0306,955.56379 -1.14,-0.02 c -8.51,-1.13 -17.38,-4.09 -23.15,-10.81 -5.04,-5.88 -6.61,-14.48 -6.02,-22.03 0.65,-8.19 4.19,-15.52 10.53,-20.81 6.22,-5.19 13.98,-7.35 21.98,-6.4 1.6,0.19 3.11,0.41 4.73,0.43 1.71,0.03 3.93,-0.18 5.58,0.27 4.94,1.33 10.23,9.34 12.17,13.67 4.41,9.88 4.19,20.62 0.43,30.65 -1.9,1.47 -3.54,3.03 -5.25,4.71 l 0.24,3.87 c -5.89,1.84 -13.09,3.44 -18.66,5.83 -0.48,0.21 -0.96,0.43 -1.44,0.64 z"
|
||||
id="path34-0"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#ebeae9"
|
||||
d="m 1018.5606,725.87379 c 0.9,1.64 1.15,2.78 1.41,4.62 0.51,3.67 -0.92,4.91 -2.92,7.66 0.91,1.21 1.91,2.41 2.07,4 0.75,7.29 -9.25,19.16 -14.38,23.99 -3.12,2.93 -14.04,11.96 -18.19,10.42 -1.88,-0.7 -1.14,-2.26 -3.9,-1.54 -3.79,0.99 -1.09,3 -7.46,2.83 -2.43,-1.54 -2.45,-2.05 -3.59,-4.74 l 1.77,0.9 -2.64,0.14 c -0.18,1.11 -0.5,2.2 -0.78,3.29 -1.03,0.01 -1.19,0.05 -2.37,-0.14 -8.14,-1.3 -23.36,-8.53 -27.46,-15.82 -0.84,-1.49 -0.05,-2.65 0.35,-4.21 -0.78,-0.34 -1.85,-0.78 -2.58,-1.17 -5.36,-2.85 -6.14,-9.99 -7.66,-15.43 l -0.36,-2.85 c 0.14,-1.9 0.27,-3.63 0.64,-5.5 0.26,-1.37 0.32,-2.37 0.39,-3.74 0.57,-10.84 6.1,-20.91 13.43,-28.63 1.73,-0.6 3.29,-1.04 5.1,-1.3 1.02,-1.17 1.91,-2.34 2.84,-3.59 1.16,-1.58 2.17,-2.27 3.96,-3.12 l 2.4,0.23 1.41,1.75 1.26,-0.35 c 0.59,-1.94 1.31,-2.8 2.71,-4.24 3.51,-0.66 4.48,0.39 7.6,1.94 l 2.81,-2.31 c 4.03,-1.17 12.54,0.33 16.47,1.94 1.95,0.8 2.25,3.12 3.02,5.01 l 1.06,0.36 1.34,-1.51 c 1.73,-0.14 1.82,-0.36 3.49,0.54 8.96,4.81 16.77,19.39 19.67,28.67 z"
|
||||
id="path35-2"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#e6e5e5"
|
||||
d="m 1006.6506,735.60379 c 2.23,0.51 4.37,0.77 6.31,2.02 l -6.78,0.36 z"
|
||||
id="path36-3"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#c5c2c4"
|
||||
d="m 930.2306,740.67379 -0.36,-2.85 c 3.18,0.06 7.77,0.76 10.38,-1.17 1.43,-2.34 1.45,-3.51 2.01,-6.06 0.05,-0.2 0.2,-0.36 0.3,-0.54 0.47,2.74 0.29,5.64 0.31,8.42 -4.08,0.36 -9.01,0.24 -12.64,2.2 z"
|
||||
id="path37-7"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#133271"
|
||||
d="m 1006.1806,737.98379 c -0.75,3.25 -1.51,6.67 -2.99,9.68 -3.82,7.72 -10.55,14.24 -18.88,16.78 a 32.2323,32.2323 0 0 1 -25.29,-3.01 c -9.32,-5.41 -13.4,-13 -16.15,-22.96 -0.02,-2.78 0.16,-5.68 -0.31,-8.42 1.17,-6.15 4.71,-11.19 5.7,-16.5 l -1.85,-2.56 3.2,0.82 c 10.41,-6.73 18.71,-12.05 31.72,-9.52 a 29.6564,29.6564 0 0 1 19.2,12.68 86.7452,86.7452 0 0 1 3.87,6.63 l 1.84,7.12 c -0.2,2.2 0.24,4.66 0.41,6.88 z"
|
||||
id="path38-5"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#f9f1ec"
|
||||
d="m 1067.1866,313.10379 -4.169,-4.85 4.31,-4.62 1.117,4.74 c 0.046,1.7 -0.695,3.14 -1.258,4.73 z"
|
||||
id="path41-2"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#133271"
|
||||
d="m 1139.1748,71.79543 c 9.417,15.15 14.263,30.42 10.005,48.31 -3.712,15.6 -13.382,29.86 -27.282,38.09 -14.41,8.54 -33.652,10.19 -49.647,5.58 a 60.4748,60.4748 0 0 1 -36.002,-29.13 60.6413,60.6413 0 0 1 -4.116,-47.08 60.3091,60.3091 0 0 1 29.528,-35.34 c 14.303,-7.37 32.241,-8.88 47.515,-3.76 4.957,1.66 9.746,4.07 14.541,6.16 18.988,-16.42 35.867,-35.04 52.877,-53.4599997 h 31.725 c -22.393,24.2099997 -46.481,46.6899997 -69.144,70.6299997 z"
|
||||
id="path53-4"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#ebeae9"
|
||||
d="m 1096.8808,148.95543 c -9.638,0.98 -19.17,0.23 -27.925,-4.27 -10.624,-5.45 -18.177,-15.16 -21.626,-26.52 a 45.5698,45.5698 0 0 1 3.905,-35.47 c 6.668,-11.66 17.254,-17.34 29.857,-20.48 10.887,-1.25 21.316,0 31.015,5.5 10.946,6.2 18.459,17.15 21.319,29.310002 2.716,11.549998 0.951,23.619998 -5.689,33.549998 -7.347,10.99 -18.292,15.95 -30.856,18.38 z"
|
||||
id="path54-7"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#133271"
|
||||
d="m 1093.3298,136.88543 c -5.098,0.04 -10.488,-1.06 -15.103,-3.23 a 32.1258,32.1258 0 0 1 -16.922,-18.56 c -2.563,-7.42 -2.297,-15.419998 1.234,-22.469998 4.696,-9.380002 12.579,-13.660002 22.129,-16.680002 7.98,-0.85 15.817,0.3 22.62,4.77 a 29.1354,29.1354 0 0 1 12.6,18.890002 c 1.616,8.309998 -0.042,17.339998 -4.889,24.329998 -5.351,7.71 -12.668,11.28 -21.669,12.95 z"
|
||||
id="path55-8"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#133271"
|
||||
d="m 76.910615,1561.6048 c -11.98,1.043 -23.02,0.432 -34.23,-4.323 -14.66,-6.214 -25.8,-18.391 -31.71,-33.049 a 60.1046,60.1046 0 0 1 0.75,-47.329 61.4088,61.4088 0 0 1 34.3,-32.471 c 17.24,-6.517 35.04,-3.741 51.44,3.625 12.959995,-11.253 24.589995,-24.187 36.519995,-36.502 l 57.09,-58.486 76.02,-76.905 c 12.34,-12.735 25.53,-25.241 36.71,-39.004 -6.19,-8.047 -10.63,-18.317 -12.02,-28.399 -2.07,-15.05 2.83,-30.58 11.93,-42.575 10.69,-14.072 26.79,-21.703 44.02,-24.077 12.88,-0.818 25.82,1.725 36.77,8.696 a 62.6524,62.6524 0 0 1 27.37,40.022 c 3.21,15.371 -0.46,31.795 -9,44.864 -9.01,13.809 -23.12,23.011 -39.25,26.183 -16.36,3.216 -31,0.182 -44.76,-9.046 l -169.09,171.084 c -12.51,12.541 -23.99,26.032 -36.78,38.286 5.75,7.77 10.53,15.227 12.99,24.699 4,15.429 0.86,33.608 -7.51,47.159 -9.46,15.319 -24.539995,23.425 -41.559995,27.548 z"
|
||||
id="path57-4"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#ebeae9"
|
||||
d="m 309.32061,1210.5128 c -0.58,-1.083 -0.97,-2.129 -1.18,-3.344 -0.86,-5.031 -0.7,-12.408 2.35,-16.671 0.33,-0.462 0.68,-0.905 1.03,-1.357 l -1.57,-2.892 c 1,-5.15 5.59,-10.643 9.18,-14.305 8.67,-8.847 21.41,-14.143 33.81,-14.187 11.73,-0.042 23.42,4.588 31.57,13.106 8.53,8.923 12.39,21.238 11.88,33.433 -0.42,9.906 -4.05,24.215 -12.2,30.853 -1.2,0.977 -2.32,0.338 -3.75,0.128 -1.54,2.178 -3.08,4.226 -4.82,6.25 l -6.22,0.019 c -1.52,1.288 -3.06,2.138 -4.88,2.925 -6.12,2.642 -11.7,2.447 -17.8,-0.054 -0.33,-0.134 -0.65,-0.276 -0.98,-0.414 -1.11,2.027 -0.36,1.157 -2.3,2.572 -1.33,-0.171 -2.56,-0.333 -3.84,-0.757 -8.48,-2.81 -13.76,-6.095 -17.68,-14.397 l -0.47,-1.02 -2.21,0.915 c -0.83,-0.246 -1.24,-0.294 -1.98,-0.928 -4,-3.416 -7.95,-13.407 -8.18,-18.551 z"
|
||||
id="path58-5"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#e6e5e5"
|
||||
d="m 376.12061,1229.6168 -0.91,-0.832 z"
|
||||
id="path59-0"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#c5c2c4"
|
||||
d="m 321.25061,1210.0798 c -2.28,0.594 -1.46,0.523 -3.54,0.597 -3.14,0.111 -5.65,0.094 -8.63,1.16 l 0.24,-1.324 c 3.95,-0.749 7.93,-1.668 11.91,-2.228 z"
|
||||
id="path60-3"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#133271"
|
||||
d="m 321.23061,1208.2848 c 0.14,-0.374 0.35,-0.728 0.41,-1.121 0.5,-3.318 -0.63,-5.881 -2.32,-8.543 2.96,-8.191 11.29,-20.378 19.02,-24.457 2.49,-1.314 4.51,-2.934 6.69,-4.709 4.97,1.989 11.14,0.33 16.52,1.443 4.65,0.963 8.98,4.048 12.31,7.321 9.62,9.459 10.11,20.74 7.49,33.176 -0.19,0.913 -1.35,4.562 -1.16,5.326 0.23,0.919 0.99,1.612 1.48,2.418 -4.76,3.996 -9.66,8.667 -15.16,11.614 -7.38,3.949 -15.67,4.674 -23.6,1.884 -11.2,-3.94 -16.64,-12.517 -21.66,-22.557 z"
|
||||
id="path61-6"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#ebeae9"
|
||||
d="m 74.900615,1546.6638 c -9.75,0.694 -18.88,0.68 -27.86,-3.814 -11.37,-5.689 -19.8,-16.906 -23.56,-28.907 -3.57,-11.449 -2.67,-23.638 3.01,-34.259 6.45,-12.075 17,-18.737 29.66,-22.8 10.94,-1.975 22.14,-0.821 32.05,4.379 10.59,5.562 18.179995,15.047 21.649995,26.457 3.63,11.911 2.92,25.375 -3.23,36.337 -6.979995,12.446 -18.329995,19.053 -31.719995,22.607 z"
|
||||
id="path62-1"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#133271"
|
||||
d="m 72.050615,1532.7138 c -6.6,0.335 -12.51,0.231 -18.72,-2.492 a 30.297,30.297 0 0 1 -16.47,-18.037 c -2.85,-8.31 -2,-17.123 1.99,-24.9 4.61,-8.971 12.12,-14.307 21.53,-17.334 6.6,-0.694 12.55,-0.496 18.71,2.21 a 31.2263,31.2263 0 0 1 16.91,18.106 c 3.09,8.559 2.6,18.443 -1.66,26.518 -4.89,9.288 -12.66,13.193 -22.29,15.929 z"
|
||||
id="path63-0"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#133271"
|
||||
d="m 394.14061,1408.3258 c 2.79,4.492 5.73,9.113 7.95,13.915 a 64.2277,64.2277 0 0 1 1.54,50.15 63.6209,63.6209 0 0 1 -34.08,35.475 c -15.65,6.615 -34.81,6.384 -50.37,-0.368 -15.75,-6.831 -27.79,-20.834 -33.77,-36.781 -6.09,-16.254 -5.29,-32.957 1.87,-48.765 7.07,-15.625 18.58,-27.082 34.72,-33.128 19.9,-7.455 37.81,-3.101 56.43,5.199 30.84,-32.488 63.38,-64.788 94.95,-96.699 18.12,-18.313 39.44,-37.073 54.19,-58.19 l 11.19,-128.579 c 4.25,-45.296 9.14,-90.541 11.72,-135.98101 -15.36,1.78 -30.6,4.5 -45.92,6.62 l -78.1,10.28 c -16.51,2.24 -33.12,5.04 -49.71,6.5 l -4.92,2.99001 c -9.33,12.04 -22.73,23.14 -33.59,33.91 l -67.87,68.219 -179.069995,180.272 -57.01,57.797 c -11.33,11.585 -22.38,23.586 -34.3100005,34.56 v -23.27 l 214.6699955,-216.332 106.17,-107.226 c 15.35,-15.77 31.71,-31.18001 46.18,-47.74001 15.53,-4.96 34.83,-5.65 51.05,-7.86 44.56,-6.07 89.34,-10.84 133.82,-17.34 2.7,-22.97 3.93,-46.22 5.64,-69.28 a 4666.14,4666.14 0 0 0 8.34,-127.54 7986.85,7986.85 0 0 1 68.1,-82.13 18718,18718 0 0 1 138.63999,-167.27 c 25.4,-30.7 52.61,-60.53 76.53,-92.36 -22.69,-34.67 -47.52,-67.81 -71.37,-101.66 L 614.04061,83.653789 c -16.68,-24.08 -35.05,-47.14 -50.8,-71.83 h 27.66 c 33.08,43.1 62.79,89.090001 94.34,133.310001 a 20969.6,20969.6 0 0 1 192.81999,273.08 c -13.69,15.12 -26.34,31.4 -39.33,47.15 l -65.84,79.46 -186.67999,223.88 a 5669.39,5669.39 0 0 1 -4.21,69.63 l -0.38,4.33 c -1.05,23.76 -3.44,47.56 -5.09,71.3 -7.79,112.53001 -20.03,224.75201 -27.74,337.25701 -22.23,17.989 -42.08,41.212 -62.14,61.654 -31.03,31.625 -62.9,62.478 -92.51,95.451 z"
|
||||
id="path64-6"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#ebeae9"
|
||||
d="m 345.33061,1497.4448 c -9.39,0.569 -19.84,-2.91 -27.5,-8.23 -10.43,-7.242 -17.3,-18.736 -19.48,-31.176 -2.35,-13.399 0.21,-27.68 8.5,-38.63 9.35,-12.341 21.54,-17.576 36.35,-19.682 11.48,1.15 21.95,3.85 31.24,11.132 a 47.1851,47.1851 0 0 1 17.76,32.361 c 1.28,12.81 -2.37,26.555 -10.62,36.538 -9.27,11.203 -22.24,16.183 -36.25,17.687 z"
|
||||
id="path65-3"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#133271"
|
||||
d="m -0.0193855,1262.1588 v -28.453 A 15778.7,15778.7 0 0 1 275.92061,953.19379 c 9.35,-9.16 35.04,-37.96 44.52,-42.93 10.55,-5.54 76.29,-9.4 93.3,-11.35 4.49,-54.87 6.98,-109.72 10.73,-164.62 10.13,-14.22 24.38,-26.78 36.59,-39.31 l 54.33,-56.28 119.82,-122.39 c 35.61,-36.18 71.77999,-72.22 105.69999,-110.01 -51.31,-72.88 -104.17999,-144.71 -155.04999,-217.9 a 5143.34,5143.34 0 0 0 -94.17,-133.190001 c -10.25,-14.21 -19.43,-29.74 -30.3,-43.39 h 25.75 c 26.32,40.15 54.47,79.04 81.79,118.510001 a 11658.6,11658.6 0 0 0 95.72,138.13 l 64.89999,91.12 c 12.48,17.46 26.03,34.6 37.34,52.83 -26.98,26.98 -53.07,54.78 -79.70999,82.09 a 15307.6,15307.6 0 0 0 -120.01,122.07 l -74.45,76.34 c -16.29,16.69 -33.45,33.15 -48.29,51.16 -3.1,16.88 -2.9,34.65 -3.86,51.76 -1.33,23.65 -3.27,47.35 -3.71,71.04 l -0.14,1.42 c -2.99,12.56 -2.62,34.47 -3.79,48.31 l -102.29,10.5 c -15.92,12.16 -30.04,28.48 -44.13,42.74 l -67.18,67.71001 z"
|
||||
id="path67-2"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#133271"
|
||||
d="m 295.49061,854.32379 c -22.04,24.87 -46.32,47.84 -69.7,71.46 l -109.66,111.57001 -73.309995,75.202 c -13.9,14.412 -27.32,30.408 -42.8400005,43.049 v -30.06 c 10.4200005,-8.672 19.7400005,-19.437 29.2000005,-29.159 l 54.13,-55.772 C 148.48061,973.65379 212.80061,905.43379 279.42061,839.94379 c 5.57,4.46 10.78,9.58 16.07,14.38 z"
|
||||
id="path69-0"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#133271"
|
||||
d="m 269.74061,227.95379 c 1.79,-4.34 3.93,-8.71 6.35,-12.73 9.06,-15.05 22.62,-25.71 39.78,-29.88 15.34,-3.73 30.33,-1.26 43.8,7.01 a 62.2162,62.2162 0 0 1 27.79,38.21 61.9208,61.9208 0 0 1 -7.6,47.46 c -8.86,14.07 -24.4,24.91 -40.65,28.36 -15.59,3.31 -31.4,-0.36 -44.57,-9.08 -16.82,-11.14 -23.46,-26.78 -27.25,-45.93 -15.91,-2.48 -79.93,-6.73 -89.08,-13.35 -20.03,-14.5 -38.44,-33.5 -57.13,-49.79 -40.799995,-35.58 -82.119995,-71.16 -121.1999955,-108.630001 v -30.47 c 20.8800005,15.33 40.0999995,34.85 59.2699995,52.290001 l 82.239996,73.69 c 10.99,9.93 37.79,36.96 49.06,41.74 11.94,5.06 62.27,8.63 79.19,11.1 z"
|
||||
id="path71-6"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#ebeae9"
|
||||
d="m 321.33061,291.33379 c -1.71,-0.46 -3.56,-0.8 -5.21,-1.43 l -3.19,-0.77 c -0.66,-1.37 -0.74,-1.89 -0.84,-3.35 l -0.98,-0.32 -2.15,1.67 c -2.87,-0.61 -3.25,-0.86 -5.42,-2.86 l -1.28,-3.82 c -4.27,-0.5 -5.65,-0.72 -8.45,-4.28 -8.47,-10.76 -11.78,-24.24 -9.68,-37.75 1.92,-12.41 8.25,-23.04 18.57,-30.28 3.13,-2.2 6.55,-3.84 10,-5.47 l 2.32,-0.11 c 1.57,4.13 1.15,9.47 1.28,13.88 l -1.15,0.35 c -0.61,0.28 -1.22,0.54 -1.82,0.82 -7.3,3.46 -12.92,10.97 -15.31,18.56 a 32.4429,32.4429 0 0 0 8.08,32.94 c 2.35,2.35 6.07,4.22 7.28,7.39 0.15,0.41 0.18,0.85 0.28,1.28 1.22,-0.69 2.37,-1.14 3.67,-1.63 l 2.91,1.41 2.5,0.19 c -1.16,4.81 -1.83,8.58 -1.41,13.58 z"
|
||||
id="path72-1"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#e6e5e5"
|
||||
d="m 316.30061,216.44379 -1.15,0.35 c -0.36,-4.69 -0.64,-9.71 -2.45,-14.12 l 2.32,-0.11 c 1.57,4.13 1.15,9.47 1.28,13.88 z"
|
||||
id="path73-5"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#e6e5e5"
|
||||
d="m 321.33061,291.33379 c -1.71,-0.46 -3.56,-0.8 -5.21,-1.43 2.34,-0.85 2.3,-0.91 3.58,-3.06 0.07,-3.12 0.23,-6.17 0.54,-9.28 l 2.5,0.19 c -1.16,4.81 -1.83,8.58 -1.41,13.58 z"
|
||||
id="path74-5"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#ebeae9"
|
||||
d="m 370.40061,231.13379 c 2.21,5.79 3.43,11.95 2.48,18.15 -1.9,12.3 -6.08,25.21 -16.5,32.68 -1.01,0.05 -2.03,0.09 -3.04,0.19 -3.75,0.36 -4.31,2.44 -6.54,5.29 l -5.54,0.11 0.57,0.42 -1.92,0.18 -0.8,2.62 c -1.94,0.99 -3.05,0.98 -5.2,0.85 l -1.75,-2.15 c -4.04,2.09 -6.33,2.46 -10.83,1.86 -0.42,-5 0.25,-8.77 1.41,-13.58 9.29,0.8 18.42,-0.71 25.73,-7.03 6.66,-5.76 10.12,-14.42 10.61,-23.08 0.27,-4.95 -0.37,-10.25 -0.87,-15.18 -0.35,0.04 -0.71,0.09 -1.07,0.13 -1.38,0.14 -0.83,0.19 -1.97,-0.09 l 1.69,-2.03 c -4.06,-4.1 -8.58,-9.95 -13.12,-13.31 -3.02,-2.23 -5.51,0.41 -8.51,-2.21 l -0.83,-3.38 c -0.18,0.33 -0.36,0.66 -0.55,0.99 -0.87,1.48 -0.49,0.94 -1.82,2.22 -2.5,-0.31 -4.12,-0.89 -6.36,-2.03 l -1.17,1.44 -0.41,-0.69 -1.64,0.83 c -2.02,1 -3.97,1.54 -6.15,2.11 -0.13,-4.41 0.29,-9.75 -1.28,-13.88 6.88,-2.35 16.24,-1.95 23.3,-0.42 13.74,2.98 22.6,10.89 29.8,22.42 z"
|
||||
id="path75-4"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#f9f1ec"
|
||||
d="m 370.40061,231.13379 -4.6,-1.08 -0.4,-1.38 2.72,-4.11 z"
|
||||
id="path76-7"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#133271"
|
||||
d="m 316.30061,216.44379 c 2.18,-0.57 4.13,-1.11 6.15,-2.11 l 1.64,-0.83 0.41,0.69 1.17,-1.44 c 2.24,1.14 3.86,1.72 6.36,2.03 1.33,-1.28 0.95,-0.74 1.82,-2.22 0.19,-0.33 0.37,-0.66 0.55,-0.99 l 0.83,3.38 c 3,2.62 5.49,-0.02 8.51,2.21 4.54,3.36 9.06,9.21 13.12,13.31 l -1.69,2.03 c 1.14,0.28 0.59,0.23 1.97,0.09 0.36,-0.04 0.72,-0.09 1.07,-0.13 0.5,4.93 1.14,10.23 0.87,15.18 -0.49,8.66 -3.95,17.32 -10.61,23.08 -7.31,6.32 -16.44,7.83 -25.73,7.03 l -2.5,-0.19 -2.91,-1.41 c -1.3,0.49 -2.45,0.94 -3.67,1.63 -0.1,-0.43 -0.13,-0.87 -0.28,-1.28 -1.21,-3.17 -4.93,-5.04 -7.28,-7.39 a 32.4429,32.4429 0 0 1 -8.08,-32.94 c 2.39,-7.59 8.01,-15.1 15.31,-18.56 0.6,-0.28 1.21,-0.54 1.82,-0.82 z"
|
||||
id="path77-6"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#133271"
|
||||
d="m 352.93061,408.44379 a 250.783,250.783 0 0 1 -0.41,-5.66 62.9987,62.9987 0 0 1 16.34,-46.01 c 10.73,-11.8 26.46,-20.18 42.56,-20.68 16.89,-0.53 34.5,5.7 46.58,17.63 11.25,11.1 17.27,26.85 17.14,42.57 a 65.517,65.517 0 0 1 -19.99,46.62 55.4544,55.4544 0 0 1 -40.45,15.68 c -22.69,-0.51 -38.26,-12.26 -53.33,-28.02 l -83.39,11.19 c -10.61,-7.21 -20.19,-17.12 -29.72,-25.72 a 2904.28,2904.28 0 0 0 -42.95,-38.02 l -205.3299955,-183.7 v -31.49 c 13.2999995,13.17 27.8099995,25.07 41.7000005,37.61 a 11412.9,11412.9 0 0 0 98.829995,88.35 l 92.03,81.82 c 17.62,15.74 34.78,32.24 53.13,47.11 21.62,-4.32 45.27,-7.95 67.26,-9.28 z"
|
||||
id="path82-7"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#ebeae9"
|
||||
d="m 455.12061,376.75379 c 3.07,7.42 4.55,14.55 4.23,22.63 -0.51,13.06 -6.72,23.98 -16.17,32.69 -4.64,4.27 -5.63,5.39 -11.79,5.16 -1.03,0.71 -2.07,1.42 -3.15,2.05 -9.77,5.66 -20.15,2.41 -30.08,-0.29 -1.48,-0.4 -3.18,-0.67 -4.56,-1.39 -2.23,-1.16 -3.16,-2.36 -3.86,-4.7 -1.85,0.55 -2.3,1.16 -4.14,0.21 -1.84,-0.96 -3.69,-2.67 -4.68,-4.54 -7.9,-8.98 -13.91,-20.33 -13.31,-32.59 0.64,-12.9 6.9,-24.27 16.51,-32.71 9.67,-8.51 21.35,-11.73 34.1,-10.69 11.21,0.92 23.31,6.04 30.6,14.87 1.43,1.73 2.7,3.56 3.99,5.39 z"
|
||||
id="path83-4"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#f9f1ec"
|
||||
d="m 389.74061,432.90379 c -1.85,0.55 -2.3,1.16 -4.14,0.21 -1.84,-0.96 -3.69,-2.67 -4.68,-4.54 4.77,-1.53 5.08,-5.01 9.22,-6.85 l 0.76,1.14 -2.34,3.39 c 0.24,2.29 0.68,4.41 1.18,6.65 z"
|
||||
id="path84-5"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#133271"
|
||||
d="m 418.54061,431.94379 -0.46,-1.53 -2.09,-1 a 79.9357,79.9357 0 0 1 -4,0.59 c -6.94,0.79 -14.1,-2.04 -19.38,-6.49 -6.9,-5.82 -11.56,-15.06 -11.88,-24.1 -0.34,-9.8 4.31,-18.73 10.97,-25.66 3.35,-3.48 7.07,-7.1 12.12,-7.19 2.59,-0.04 4.16,-0.63 6.48,-1.74 0.3,-0.14 0.6,-0.29 0.89,-0.43 l 0.13,-0.59 c 0.63,0.79 1.4,1.32 2.19,1.94 l -0.68,-1.01 c 3.73,0.72 7.09,0.17 10.82,-0.31 l 1.32,2.31 c 0.67,0.31 1.35,0.61 2.01,0.95 9.33,4.81 15.95,11.15 19.05,21.44 2.1,6.97 1.9,14.88 -1.72,21.33 -4.18,7.43 -10.68,15.22 -19.15,17.62 l -3.12,0.92 c -2.17,0.65 -2.16,1.22 -3.5,2.95 z"
|
||||
id="path85-2"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#133271"
|
||||
d="m -0.0193855,1053.9338 v -29.67 L 256.74061,762.12379 c 3.76,-40.38 5.5,-80.74 8.11,-121.19 2.13,-33 5.31,-66.15 6.57,-99.18 a 20782.2,20782.2 0 0 0 -187.369996,-167.3 c -28.01,-25 -57.339999,-49.44 -84.0699995,-75.76 v -23.33 c 25.9700005,24.8 53.2999995,48.45 80.0699995,72.4 l 116.329996,104.5 c 15.33,13.76 30.3,27.9 45.56,41.73 15.25,13.83 31.84,27.51 44.8,43.55 -3.38,43.21 -5.69,86.67 -7.85,129.96 -1.2,24.23 -3.23,48.87 -2.99,73.11 23.86,-21.35 45.52,-44.82 68.01,-67.58 l 120.43,-122.29 102.2,-102.81 c 18.59,-18.75 38.04,-37.12 55.29,-57.11 -31.25,-42.55 -61.11,-86.02 -91.4,-129.26 l -87.12,-123.99 c -29,-41.690001 -61.13,-82.420001 -87.52,-125.750001 h 21.16 c 87.75,129.520001 179.81,256.160001 268.59,384.980001 -16.07,18.23 -33.75,35.3 -50.8,52.64 l -92.95,93.95 -263.89,267.71 -156.059996,159.28 -47.09,48.95001 c -11.099999,11.67 -21.859999,24.91 -34.7699995,34.6 z"
|
||||
id="path86-5"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#133271"
|
||||
d="m 197.60061,718.46379 c -6.59,5.53 -12.48,12.35 -18.53,18.48 l -36.26,37.01 -92.509995,94.23 c -16.83,17.27 -32.74,35.61 -50.3200005,52.12 v -27.12 c 42.5300005,-45.06 86.8200005,-88.54 129.8499955,-133.13 17.36,-17.99 35.85,-35.36 51.86,-54.56 2.78,-40.75 6.23,-82.12 6.39,-122.96 -62.93,-55.88 -126.929995,-111.23 -188.0999955,-169.03 v -23.24 c 15.0700005,15.93 32.7500005,30.48 48.8800005,45.4 51.489995,47.61 105.009995,93.03 156.299995,140.81 -1.35,47.33 -5.4,94.68 -7.56,141.99 z"
|
||||
id="path88-4"
|
||||
style="display:block" />
|
||||
<path
|
||||
fill="#133271"
|
||||
d="m -0.0193855,507.18379 c 21.3800005,5.49 39.9800005,14.97 57.0100005,29.06 29.03,24.01 48.939995,60.43 52.469995,98.01 8.85,94.28 -58.259995,126.3 -109.4799955,188.36 v -35.5 c 41.5700005,-39.45 86.2200005,-72.7 88.0000005,-135.05 a 120.284,120.284 0 0 0 -34.39,-88.91 c -15.05,-15.62 -33.36,-26.86 -53.6100005,-34.44 z"
|
||||
id="path90-7"
|
||||
style="display:block" />
|
||||
</svg>
|
Before Width: | Height: | Size: 63 KiB |
|
@ -1,145 +0,0 @@
|
|||
import logo from '@assets/logo.png';
|
||||
import pattern from '@assets/pattern.svg';
|
||||
import type { NPub } from '@nostr/tools/nip19';
|
||||
import { LitElement, css, html } from 'lit';
|
||||
import { customElement, property } from 'lit/decorators.js';
|
||||
|
||||
import '@components/General/Button';
|
||||
import '@components/General/Card';
|
||||
import '@components/General/Input';
|
||||
|
||||
@customElement('arx-ccn-invitation')
|
||||
export class CCNInvitation extends LitElement {
|
||||
@property() invite = '';
|
||||
@property() ccnName = '';
|
||||
@property() ccnNpub?: NPub;
|
||||
|
||||
static override styles = css`
|
||||
:host {
|
||||
display: block;
|
||||
perspective: 1500px;
|
||||
--rotateX: 0deg;
|
||||
--rotateY: 0deg;
|
||||
}
|
||||
|
||||
arx-card {
|
||||
transform: rotateY(var(--rotateY)) rotateX(var(--rotateX));
|
||||
will-change: transform, visibility;
|
||||
transform-style: preserve-3d;
|
||||
box-shadow: 0 4px 10px rgba(0, 0, 0, .5);
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 1.5rem;
|
||||
font-weight: 700;
|
||||
color: var(--color-base-content);
|
||||
margin: 0 0 0.5rem;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 2rem;
|
||||
font-weight: 800;
|
||||
color: var(--color-accent);
|
||||
margin: 0 0 1.5rem;
|
||||
text-align: center;
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
|
||||
arx-invitation-qr {
|
||||
align-self: center;
|
||||
margin: 1rem 0;
|
||||
padding: 1rem;
|
||||
}
|
||||
|
||||
img {
|
||||
width: 400px;
|
||||
height: 400px;
|
||||
padding: 25px;
|
||||
object-fit: contain;
|
||||
background: #272933;
|
||||
}
|
||||
|
||||
.pattern {
|
||||
position: relative;
|
||||
background-size: 100% 100%;
|
||||
width: 450px;
|
||||
height: 450px;
|
||||
top: -450px;
|
||||
filter: grayscale(100%);
|
||||
mix-blend-mode: plus-lighter;
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.logo-container {
|
||||
position: relative;
|
||||
left: 50%;
|
||||
transform: translateX(-50%);
|
||||
width: 450px;
|
||||
height: 450px;
|
||||
}
|
||||
|
||||
.button-row {
|
||||
margin-top: auto;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
arx-button {
|
||||
--button-border-radius: 24px;
|
||||
--button-padding: 0.75rem 1.5rem;
|
||||
--button-font-weight: 600;
|
||||
--button-box-shadow: 0 4px 10px rgba(85, 112, 231, 0.3);
|
||||
}
|
||||
|
||||
p {
|
||||
text-align: center;
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
background: var(--color-base-300);
|
||||
padding: 1rem;
|
||||
border: 3px solid var(--color-base-400);
|
||||
border-radius: 1rem;
|
||||
color: var(--color-base-content);
|
||||
margin: 1rem 0;
|
||||
text-align: center;
|
||||
overflow-wrap: break-word;
|
||||
}
|
||||
`;
|
||||
|
||||
override render() {
|
||||
if (!this.ccnNpub || !this.invite) return html`<div>Loading...</div>`;
|
||||
return html`
|
||||
<arx-card @mousemove="${this._handleMouseMove}" @mouseleave="${this._handleMouseLeave}">
|
||||
<div>
|
||||
<h2>You've been invited to join a CCN</h2>
|
||||
<h3>${this.ccnName}</h3>
|
||||
</div>
|
||||
|
||||
<div class="logo-container">
|
||||
<img src="${logo}" />
|
||||
<div class="pattern" style="background-image: url(${pattern});"></div>
|
||||
</div>
|
||||
|
||||
<p>${this.invite}</p>
|
||||
</arx-card>
|
||||
`;
|
||||
}
|
||||
|
||||
private _handleMouseMove(e: MouseEvent) {
|
||||
const card = e.currentTarget as HTMLElement;
|
||||
const rect = card.getBoundingClientRect();
|
||||
const x = e.clientX - rect.left;
|
||||
const y = e.clientY - rect.top;
|
||||
|
||||
const rotateY = ((x / rect.width) * 20 - 10).toFixed(2);
|
||||
const rotateX = (((y / rect.height) * 20 - 10) * -1).toFixed(2);
|
||||
|
||||
this.style.setProperty('--rotateY', `${rotateY}deg`);
|
||||
this.style.setProperty('--rotateX', `${rotateX}deg`);
|
||||
}
|
||||
|
||||
private _handleMouseLeave() {
|
||||
this.style.setProperty('--rotateY', '0deg');
|
||||
this.style.setProperty('--rotateX', '0deg');
|
||||
}
|
||||
}
|
|
@ -10,9 +10,6 @@ import { customElement, state } from 'lit/decorators.js';
|
|||
import { when } from 'lit/directives/when.js';
|
||||
|
||||
import { ndk, setSigner } from '@/ndk';
|
||||
import { decryptInviteResponseDM, generateDM } from '@/utils/dm';
|
||||
import { readInvite } from '@/utils/invite';
|
||||
import { unsafeRelaySet } from '@/utils/unsafeRelaySet';
|
||||
import '@components/General/Button';
|
||||
import '@components/General/Fieldset';
|
||||
import '@components/General/Input';
|
||||
|
@ -20,50 +17,27 @@ import '@components/LoadingView';
|
|||
import '@components/ProgressSteps';
|
||||
import '@components/RelayLogs';
|
||||
import '@components/Setup/CCNList';
|
||||
import '@components/Setup/SeedPhraseSpinner';
|
||||
import { NDKEvent, NDKKind, NDKPrivateKeySigner, NDKRelay, NDKRelaySet } from '@nostr-dev-kit/ndk';
|
||||
import { nip19 } from '@nostr/tools';
|
||||
|
||||
@customElement('arx-initial-setup')
|
||||
export class InitialSetup extends LitElement {
|
||||
@state()
|
||||
private currentPage = 1;
|
||||
@state()
|
||||
private isAnimating = false;
|
||||
@state()
|
||||
private seedPhrase = '';
|
||||
@state()
|
||||
private communityName = '';
|
||||
@state()
|
||||
private userName = '';
|
||||
@state()
|
||||
private profileImage = '';
|
||||
@state()
|
||||
private lightningAddress = '';
|
||||
@state()
|
||||
private relayStatus: {
|
||||
running: boolean;
|
||||
pid: number | null;
|
||||
logs: string[];
|
||||
} = {
|
||||
@state() private currentPage = 1;
|
||||
@state() private isAnimating = false;
|
||||
@state() private seedPhrase = '';
|
||||
@state() private communityName = '';
|
||||
@state() private userName = '';
|
||||
@state() private profileImage = '';
|
||||
@state() private lightningAddress = '';
|
||||
@state() private relayStatus: { running: boolean; pid: number | null; logs: string[] } = {
|
||||
running: false,
|
||||
pid: null,
|
||||
logs: [],
|
||||
};
|
||||
@state()
|
||||
private selectedCCN: string | undefined;
|
||||
@state()
|
||||
private ccnList: { name: string; pubkey: string }[] = [];
|
||||
@state()
|
||||
private inviteCode: string | undefined;
|
||||
@state()
|
||||
private joinCCN = false;
|
||||
@state()
|
||||
private loading = false;
|
||||
@state()
|
||||
private loadingMessage = '';
|
||||
private readonly pageLabels = ['Welcome', 'Relay Setup', 'CCN Setup', 'Profile', 'Complete'];
|
||||
private randomPrivateKey = nostrTools.generateSecretKey();
|
||||
@state() private selectedCCN: string | undefined;
|
||||
@state() private ccnList: { name: string; pubkey: string }[] = [];
|
||||
|
||||
private readonly pageLabels = ['Welcome', 'Relay Setup', 'Seed Phrase', 'Profile', 'Complete'];
|
||||
|
||||
get encryptionPassphrase() {
|
||||
let encryptionPassphrase = localStorage.getItem('encryption_key');
|
||||
|
@ -109,13 +83,6 @@ export class InitialSetup extends LitElement {
|
|||
letter-spacing: 0.05em;
|
||||
}
|
||||
|
||||
.loading-message {
|
||||
margin-top: calc(var(--spacing-unit) * 4);
|
||||
font-size: 0.875rem;
|
||||
color: var(--color-secondary);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3 {
|
||||
|
@ -252,11 +219,8 @@ export class InitialSetup extends LitElement {
|
|||
private nextStep() {
|
||||
if (this.currentPage === 1) return this.handleNavigation(2);
|
||||
if (this.currentPage === 2) {
|
||||
setSigner(new NDKPrivateKeySigner(this.randomPrivateKey));
|
||||
ndk.connect(10000).then(() => {
|
||||
if (this.selectedCCN) return this.handleNavigation(4);
|
||||
return this.handleNavigation(3);
|
||||
});
|
||||
if (this.selectedCCN) return this.handleNavigation(4);
|
||||
return this.handleNavigation(3);
|
||||
}
|
||||
if (this.currentPage === 3) return this.handleNavigation(4);
|
||||
if (this.currentPage === 4) return this.goToFinalStep();
|
||||
|
@ -280,10 +244,6 @@ export class InitialSetup extends LitElement {
|
|||
this.seedPhrase = nip06.generateSeedWords();
|
||||
}
|
||||
|
||||
private onInviteCodeInput(event: ArxInputChangeEvent) {
|
||||
this.inviteCode = event.detail.value;
|
||||
}
|
||||
|
||||
private isValidSeedPhrase() {
|
||||
const words = this.seedPhrase.split(' ');
|
||||
if (words.length !== 12) return false;
|
||||
|
@ -298,10 +258,14 @@ export class InitialSetup extends LitElement {
|
|||
|
||||
private renderWelcomePage() {
|
||||
return html`
|
||||
<main ${animate()}>
|
||||
<main class="welcome-container" ${animate()}>
|
||||
<arx-progress-steps
|
||||
.currentPage=${this.currentPage}
|
||||
.pageLabels=${this.pageLabels}
|
||||
></arx-progress-steps>
|
||||
<section>
|
||||
<h1>Welcome to Eve</h1>
|
||||
<h2>Your Closed Community Network</h2>
|
||||
<h2>Your Private Community Network</h2>
|
||||
<p>
|
||||
Connect, share, and engage with your community in a secure,
|
||||
members-only space designed just for you.
|
||||
|
@ -332,7 +296,11 @@ export class InitialSetup extends LitElement {
|
|||
|
||||
private renderRelaySetupPage() {
|
||||
return html`
|
||||
<main ${animate()}>
|
||||
<main class="welcome-container" ${animate()}>
|
||||
<arx-progress-steps
|
||||
.currentPage=${this.currentPage}
|
||||
.pageLabels=${this.pageLabels}
|
||||
></arx-progress-steps>
|
||||
<section>
|
||||
<h2>Configure Eve Relay</h2>
|
||||
<p>
|
||||
|
@ -353,8 +321,7 @@ export class InitialSetup extends LitElement {
|
|||
</arx-button>
|
||||
${when(
|
||||
this.relayStatus.running,
|
||||
() =>
|
||||
html`
|
||||
() => html`
|
||||
<p class="note">
|
||||
<iconify-icon icon="mdi:information"></iconify-icon>
|
||||
Relay is running with PID: ${this.relayStatus.pid}
|
||||
|
@ -380,7 +347,7 @@ export class InitialSetup extends LitElement {
|
|||
@click=${() => this.nextStep()}
|
||||
variant="primary"
|
||||
?disabled=${!this.relayStatus.running}
|
||||
label=${this.selectedCCN ? 'Continue' : 'New CCN'}
|
||||
label=${this.selectedCCN ? 'Continue' : 'Create CCN'}
|
||||
>
|
||||
</arx-button>
|
||||
</div>
|
||||
|
@ -415,116 +382,59 @@ export class InitialSetup extends LitElement {
|
|||
|
||||
private async updateRelayStatus() {
|
||||
this.relayStatus = await window.relay.getStatus();
|
||||
if (this.relayStatus.running) {
|
||||
setTimeout(() => this.updateRelayStatus(), 2000);
|
||||
}
|
||||
if (this.relayStatus.running) setTimeout(() => this.updateRelayStatus(), 2000);
|
||||
}
|
||||
|
||||
private async createCCN() {
|
||||
this.loading = true;
|
||||
if (this.joinCCN) {
|
||||
this.loadingMessage = 'Joining community... Redeeming invite...';
|
||||
const { npub, invite } = readInvite(this.inviteCode as `${string}1${string}`);
|
||||
const dm = await generateDM(npub, invite, [['type', 'invite']]);
|
||||
await dm.publish(unsafeRelaySet, 10000, 2);
|
||||
this.loadingMessage = 'Waiting for community to let you in...';
|
||||
const ccnPubkeyHex = nip19.decode<'npub'>(npub).data;
|
||||
const ownPubkeyHex = nostrTools.getPublicKey(this.randomPrivateKey);
|
||||
// eveinvite1mm7p5m83dawq96qh58f6r7gl3fvvlp8mvp68a8ksq6ycga5r6wrmcur22dtjatpq4cy00rut2e6y563nnw8teh5xqppggzyq92gyywqstsk60
|
||||
const { privateKey, existingMembers, ccnName } = await new Promise<{
|
||||
privateKey: string;
|
||||
existingMembers: string[];
|
||||
ccnName: string;
|
||||
}>((resolve) => {
|
||||
ndk
|
||||
.subscribe(
|
||||
await new Promise((resolve) => {
|
||||
const ws = new WebSocket('ws://localhost:6942');
|
||||
ws.onopen = () => {
|
||||
ws.send(
|
||||
JSON.stringify([
|
||||
'CCN',
|
||||
'CREATE',
|
||||
{
|
||||
kinds: [NDKKind.GiftWrap],
|
||||
'#p': [ownPubkeyHex],
|
||||
name: this.communityName,
|
||||
seed: this.seedPhrase,
|
||||
},
|
||||
{},
|
||||
unsafeRelaySet,
|
||||
true,
|
||||
)
|
||||
.on('event', async (event) => {
|
||||
resolve(await decryptInviteResponseDM(event));
|
||||
});
|
||||
});
|
||||
this.loadingMessage = `You've been invited to ${ccnName}. Joining ${existingMembers.length} members...`;
|
||||
await new Promise<boolean>((resolve) => {
|
||||
const ws = new WebSocket('ws://localhost:6942');
|
||||
ws.onopen = () => {
|
||||
ws.send(
|
||||
JSON.stringify([
|
||||
'CCN',
|
||||
'ADD',
|
||||
{
|
||||
name: ccnName,
|
||||
allowedPubkeys: existingMembers,
|
||||
privateKey,
|
||||
},
|
||||
]),
|
||||
);
|
||||
};
|
||||
ws.onmessage = ({ data }) => {
|
||||
const responseData = JSON.parse(data);
|
||||
if (responseData[0] !== 'OK' || responseData[1] !== 'CCN ADDED' || responseData[2] !== true) return;
|
||||
const responseJson = JSON.parse(responseData[3]);
|
||||
if (responseJson.pubkey !== ccnPubkeyHex) return;
|
||||
resolve(true);
|
||||
ws.close();
|
||||
this.selectedCCN = ccnPubkeyHex;
|
||||
};
|
||||
});
|
||||
} else {
|
||||
this.loadingMessage = 'Creating community...';
|
||||
await new Promise<boolean>((resolve) => {
|
||||
const ws = new WebSocket('ws://localhost:6942');
|
||||
ws.onopen = () => {
|
||||
ws.send(
|
||||
JSON.stringify([
|
||||
'CCN',
|
||||
'CREATE',
|
||||
{
|
||||
name: this.communityName,
|
||||
seed: this.seedPhrase,
|
||||
creator: nostrTools.getPublicKey(this.randomPrivateKey),
|
||||
},
|
||||
]),
|
||||
);
|
||||
};
|
||||
ws.onmessage = ({ data }) => {
|
||||
const responseData = JSON.parse(data);
|
||||
if (responseData[0] !== 'OK' || responseData[1] !== 'CCN CREATED' || responseData[2] !== true) return;
|
||||
resolve(true);
|
||||
ws.close();
|
||||
this.selectedCCN = JSON.parse(responseData[3]).pubkey;
|
||||
};
|
||||
ws.onerror = () => {
|
||||
resolve(false);
|
||||
};
|
||||
});
|
||||
}
|
||||
]),
|
||||
);
|
||||
};
|
||||
ws.onmessage = ({ data }) => {
|
||||
const responseData = JSON.parse(data);
|
||||
if (responseData[0] !== 'OK' || responseData[1] !== 'CCN CREATED' || responseData[2] !== true) return;
|
||||
resolve(true);
|
||||
ws.close();
|
||||
this.selectedCCN = JSON.parse(responseData[3]).pubkey;
|
||||
};
|
||||
ws.onerror = () => {
|
||||
resolve(false);
|
||||
};
|
||||
});
|
||||
this.handleNavigation(4);
|
||||
this.loading = false;
|
||||
}
|
||||
|
||||
private renderJoinCCNPage() {
|
||||
return html`
|
||||
<div ${animate()}>
|
||||
<h2>Joining a Community</h2>
|
||||
<p>
|
||||
If you'd like to join an existing community, please enter your invite code below.
|
||||
</p>
|
||||
<arx-input type="text" placeholder="Enter invite code" @change=${this.onInviteCodeInput}></arx-input>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
||||
private renderSeedPhrasePage() {
|
||||
return html`
|
||||
<div ${animate()}>
|
||||
<h2>Creating a Community</h2>
|
||||
<main class="welcome-container" ${animate()}>
|
||||
<arx-progress-steps
|
||||
.currentPage=${this.currentPage}
|
||||
.pageLabels=${this.pageLabels}
|
||||
></arx-progress-steps>
|
||||
<section>
|
||||
<h1>Getting Started</h1>
|
||||
<h2>Creating a Community</h2>
|
||||
<p>
|
||||
Connect with others by joining an existing community or creating
|
||||
your own.
|
||||
</p>
|
||||
<p>
|
||||
During this alpha phase, community setup requires a few manual
|
||||
steps. We're actively working to streamline this process in future
|
||||
updates.
|
||||
</p>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>Seed Phrase</h3>
|
||||
<p>
|
||||
|
@ -540,8 +450,23 @@ export class InitialSetup extends LitElement {
|
|||
Security) to enable simpler invitation-based community access, as
|
||||
well as improve your community's security.
|
||||
</p>
|
||||
<arx-seed-phrase-spinner @change=${this.onSeedPhraseInput}></arx-seed-phrase-spinner>
|
||||
<div class="input-group">
|
||||
<arx-input
|
||||
@change=${this.onSeedPhraseInput}
|
||||
.value=${this.seedPhrase}
|
||||
id="seed-input"
|
||||
type="text"
|
||||
placeholder="Enter seed phrase..."
|
||||
></arx-input>
|
||||
<arx-button
|
||||
@click=${() => this.generateSeedPhrase()}
|
||||
label="Generate"
|
||||
variant="secondary"
|
||||
>
|
||||
</arx-button>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section>
|
||||
<h3>Community Name</h3>
|
||||
|
||||
|
@ -557,47 +482,6 @@ export class InitialSetup extends LitElement {
|
|||
@change=${this.onCommunityNameInput}
|
||||
></arx-input>
|
||||
</section>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
||||
private isValidInviteCode() {
|
||||
if (!this.inviteCode?.startsWith('eveinvite1')) return false;
|
||||
try {
|
||||
const invite = readInvite(this.inviteCode as `${string}1${string}`);
|
||||
return invite.npub && invite.invite;
|
||||
} catch (e) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
private renderCCNSetupPage() {
|
||||
return html`
|
||||
<main ${animate()}>
|
||||
<section>
|
||||
<h1>Getting Started</h1>
|
||||
<p>
|
||||
Connect with others by joining an existing community or creating
|
||||
your own.
|
||||
</p>
|
||||
<p>
|
||||
Do you have an invite code, or would you like to create a new
|
||||
community?
|
||||
</p>
|
||||
<div class="navigation">
|
||||
<arx-button variant=${this.joinCCN ? 'secondary' : 'primary'} label="New CCN" @click=${() => {
|
||||
this.joinCCN = false;
|
||||
}}></arx-button>
|
||||
<arx-button variant=${this.joinCCN ? 'primary' : 'secondary'} label="Join CCN" @click=${() => {
|
||||
this.joinCCN = true;
|
||||
}}></arx-button>
|
||||
</div>
|
||||
${when(
|
||||
this.joinCCN,
|
||||
() => this.renderJoinCCNPage(),
|
||||
() => this.renderSeedPhrasePage(),
|
||||
)}
|
||||
</section>
|
||||
|
||||
<div class="navigation">
|
||||
<arx-button
|
||||
|
@ -608,8 +492,8 @@ export class InitialSetup extends LitElement {
|
|||
</arx-button>
|
||||
<arx-button
|
||||
@click=${() => this.createCCN()}
|
||||
?disabled=${this.joinCCN ? !this.isValidInviteCode() : !this.isValidSeedPhrase() || !this.isValidCommunityName()}
|
||||
label=${this.joinCCN ? 'Join CCN' : 'Create CCN'}
|
||||
?disabled=${!this.isValidSeedPhrase() || !this.isValidCommunityName()}
|
||||
label="Continue"
|
||||
variant="primary"
|
||||
>
|
||||
</arx-button>
|
||||
|
@ -628,7 +512,11 @@ export class InitialSetup extends LitElement {
|
|||
|
||||
private renderProfileSetupPage() {
|
||||
return html`
|
||||
<main ${animate()}>
|
||||
<main class="welcome-container" ${animate()}>
|
||||
<arx-progress-steps
|
||||
.currentPage=${this.currentPage}
|
||||
.pageLabels=${this.pageLabels}
|
||||
></arx-progress-steps>
|
||||
<section>
|
||||
<h2>Complete Your Profile</h2>
|
||||
<p>Great progress! Let's set up your community profile.</p>
|
||||
|
@ -702,9 +590,12 @@ export class InitialSetup extends LitElement {
|
|||
resolve(false);
|
||||
};
|
||||
});
|
||||
const encryptedNsec = nip49.encrypt(this.randomPrivateKey, this.encryptionPassphrase);
|
||||
const npub = nip19.npubEncode(nostrTools.getPublicKey(this.randomPrivateKey));
|
||||
const randomPrivateKey = nostrTools.generateSecretKey();
|
||||
const encryptedNsec = nip49.encrypt(randomPrivateKey, this.encryptionPassphrase);
|
||||
const npub = nip19.npubEncode(nostrTools.getPublicKey(randomPrivateKey));
|
||||
this.lightningAddress = `${npub}@npub.cash`;
|
||||
setSigner(new NDKPrivateKeySigner(randomPrivateKey));
|
||||
await ndk.connect(10000);
|
||||
const event = new NDKEvent(ndk);
|
||||
event.kind = NDKKind.Metadata;
|
||||
event.content = JSON.stringify({
|
||||
|
@ -721,7 +612,11 @@ export class InitialSetup extends LitElement {
|
|||
|
||||
private renderFinalPage() {
|
||||
return html`
|
||||
<main ${animate()}>
|
||||
<main class="welcome-container" ${animate()}>
|
||||
<arx-progress-steps
|
||||
.currentPage=${this.currentPage}
|
||||
.pageLabels=${this.pageLabels}
|
||||
></arx-progress-steps>
|
||||
<section>
|
||||
<h2>Done!</h2>
|
||||
<p>
|
||||
|
@ -756,7 +651,6 @@ export class InitialSetup extends LitElement {
|
|||
}
|
||||
|
||||
finish() {
|
||||
localStorage.setItem('selectedCCN', JSON.stringify({ date: Date.now(), pubkey: this.selectedCCN }));
|
||||
this.dispatchEvent(
|
||||
new CustomEvent('finish', {
|
||||
detail: {
|
||||
|
@ -770,14 +664,14 @@ export class InitialSetup extends LitElement {
|
|||
);
|
||||
}
|
||||
|
||||
private renderCurrentPage() {
|
||||
override render() {
|
||||
switch (this.currentPage) {
|
||||
case 1:
|
||||
return this.renderWelcomePage();
|
||||
case 2:
|
||||
return this.renderRelaySetupPage();
|
||||
case 3:
|
||||
return this.renderCCNSetupPage();
|
||||
return this.renderSeedPhrasePage();
|
||||
case 4:
|
||||
return this.renderProfileSetupPage();
|
||||
case 5:
|
||||
|
@ -788,23 +682,4 @@ export class InitialSetup extends LitElement {
|
|||
</div>`;
|
||||
}
|
||||
}
|
||||
|
||||
override render() {
|
||||
if (this.loading) {
|
||||
return html`<div class="welcome-container">
|
||||
<arx-loading-view></arx-loading-view>
|
||||
<p class="loading-message">${this.loadingMessage}</p>
|
||||
</div>`;
|
||||
}
|
||||
return html`
|
||||
<div class="welcome-container">
|
||||
<arx-progress-steps
|
||||
.currentPage=${this.currentPage}
|
||||
.pageLabels=${this.pageLabels}
|
||||
></arx-progress-steps>
|
||||
|
||||
${this.renderCurrentPage()}
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,104 +0,0 @@
|
|||
import { inviteKind, ndk } from '@/ndk';
|
||||
import { getActiveCCNNpub, getCCNName } from '@/utils/getCCNList';
|
||||
import { randomBytes } from '@noble/ciphers/webcrypto';
|
||||
import { NDKEvent } from '@nostr-dev-kit/ndk';
|
||||
import { sha512Hash } from '@utils/sha512';
|
||||
import { LitElement, css, html } from 'lit';
|
||||
import { customElement, state } from 'lit/decorators.js';
|
||||
import { ifDefined } from 'lit/directives/if-defined.js';
|
||||
import { when } from 'lit/directives/when.js';
|
||||
|
||||
import { generateInvite } from '@/utils/invite';
|
||||
import '@components/CCNInvitation';
|
||||
import '@components/General/Button';
|
||||
import '@components/MarkdownContent';
|
||||
import { bytesToHex } from '@noble/ciphers/utils';
|
||||
import type { NPub } from '@nostr/tools/nip19';
|
||||
|
||||
// generate invite code
|
||||
// broadcast invite event to CCN { "invite": sha512Hash(inviteCode) }
|
||||
// invitee receives invite code
|
||||
// invitee generates nsec
|
||||
// invitee generates DM with their invite code to the CCN
|
||||
// upon receipt of message where sha512Hash(message) matches a valid invite code, the CCN (inviter only) will broadcast an accept invite event to all peers
|
||||
// CCN (inviter only) will DM CCN seed to invitee
|
||||
// CCN invalidates invite code
|
||||
|
||||
@customElement('arx-invite-code-generator')
|
||||
export class InviteCodeGenerator extends LitElement {
|
||||
static override styles = css`
|
||||
:host {
|
||||
display: block;
|
||||
padding: 32px;
|
||||
max-width: 600px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
`;
|
||||
|
||||
@state() inviteCode = '';
|
||||
@state() ccnNpub?: NPub;
|
||||
@state() ccnName = '';
|
||||
@state() isGenerating = false;
|
||||
@state() generatedInvite = '';
|
||||
|
||||
override async connectedCallback() {
|
||||
super.connectedCallback();
|
||||
const npub = getActiveCCNNpub();
|
||||
if (!npub) throw new Error('No CCN selected');
|
||||
const ccnName = await getCCNName(npub);
|
||||
if (!ccnName) throw new Error('CCN name not found');
|
||||
this.ccnNpub = npub;
|
||||
this.ccnName = ccnName;
|
||||
}
|
||||
|
||||
private async generateAndBroadcastInvite() {
|
||||
if (this.inviteCode) return alert('Invite already generated');
|
||||
if (this.isGenerating) return;
|
||||
this.isGenerating = true;
|
||||
try {
|
||||
this.inviteCode = bytesToHex(randomBytes(32));
|
||||
const event = new NDKEvent(ndk);
|
||||
event.kind = inviteKind;
|
||||
event.content = '';
|
||||
event.tags = [['i', sha512Hash(this.inviteCode)]];
|
||||
await event.sign();
|
||||
await event.publish();
|
||||
this.generatedInvite = generateInvite(this.ccnNpub!, this.inviteCode);
|
||||
} catch (error) {
|
||||
console.error('Failed to generate and broadcast invite:', error);
|
||||
} finally {
|
||||
this.isGenerating = false;
|
||||
}
|
||||
}
|
||||
|
||||
private async copyToClipboard() {
|
||||
if (!this.generatedInvite) return;
|
||||
await navigator.clipboard.writeText(this.generatedInvite);
|
||||
}
|
||||
|
||||
override render() {
|
||||
return html`
|
||||
<arx-button
|
||||
@click=${this.generateAndBroadcastInvite}
|
||||
?disabled=${this.isGenerating}
|
||||
variant="accent"
|
||||
label=${this.isGenerating ? 'Generating...' : 'Generate Invite'}
|
||||
></arx-button>
|
||||
${when(
|
||||
this.inviteCode,
|
||||
() => html`
|
||||
<arx-button
|
||||
@click=${this.copyToClipboard}
|
||||
variant="secondary"
|
||||
label="Copy Invite"
|
||||
></arx-button>
|
||||
<arx-ccn-invitation
|
||||
ccnNpub=${ifDefined(this.ccnNpub)}
|
||||
ccnName=${this.ccnName}
|
||||
invite=${this.generatedInvite}
|
||||
></arx-ccn-invitation>
|
||||
`,
|
||||
)}
|
||||
`;
|
||||
}
|
||||
}
|
|
@ -36,7 +36,7 @@ export class CCNList extends LitElement {
|
|||
<p>We found one CCN in your relay, which likely means you've used Eve before or there was an update introducing new setup steps. You can use this CCN to proceed with the setup, or create a new one.</p>
|
||||
<p>CCN Name: ${this.ccns[0].name}</p>
|
||||
<arx-button variant=${this.selectedCCN === this.ccns[0].pubkey ? 'accent' : 'secondary'} @click="${() => this._handleCCNSelected(this.ccns[0].pubkey)}" label="Use This CCN"></arx-button>
|
||||
<arx-button variant=${this.selectedCCN === undefined ? 'accent' : 'secondary'} @click="${() => this._handleCCNSelected(undefined)}" label="New CCN"></arx-button>
|
||||
<arx-button variant=${this.selectedCCN === undefined ? 'accent' : 'secondary'} @click="${() => this._handleCCNSelected(undefined)}" label="Create New CCN"></arx-button>
|
||||
</div>
|
||||
`;
|
||||
return html`
|
||||
|
@ -49,7 +49,7 @@ export class CCNList extends LitElement {
|
|||
.textMapper="${this._textMapper}"
|
||||
@change="${(e: CustomEvent<{ value: string }>) => this._handleCCNSelected(e.detail.value)}"
|
||||
></arx-select>
|
||||
<arx-button variant=${this.selectedCCN === undefined ? 'accent' : 'secondary'} @click="${() => this._handleCCNSelected(undefined)}" label="New CCN"></arx-button>
|
||||
<arx-button variant=${this.selectedCCN === undefined ? 'accent' : 'secondary'} @click="${() => this._handleCCNSelected(undefined)}" label="Create New CCN"></arx-button>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
|
|
@ -1,160 +0,0 @@
|
|||
import { ArxInputChangeEvent } from '@/components/General/Input';
|
||||
import * as nip06 from '@nostr/tools/nip06';
|
||||
import { wordlist } from '@scure/bip39/wordlists/english';
|
||||
import { LitElement, css, html } from 'lit';
|
||||
import { customElement, state } from 'lit/decorators.js';
|
||||
import { map } from 'lit/directives/map.js';
|
||||
import { when } from 'lit/directives/when.js';
|
||||
|
||||
import '@components/General/Button';
|
||||
|
||||
@customElement('arx-seed-phrase-spinner')
|
||||
export class SeedPhraseSpinner extends LitElement {
|
||||
@state()
|
||||
private words: (string | null)[] = [null, null, null, null, null, null, null, null, null, null, null, null];
|
||||
|
||||
@state()
|
||||
private animating = false;
|
||||
|
||||
@state()
|
||||
private tempWords: (string | null)[] = [null, null, null, null, null, null, null, null, null, null, null, null];
|
||||
|
||||
private getRandomWord() {
|
||||
return wordlist[Math.floor(Math.random() * wordlist.length)];
|
||||
}
|
||||
|
||||
static override styles = css`
|
||||
.words-list {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(4, 1fr);
|
||||
gap: 0.8rem;
|
||||
width: 100%;
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
.word {
|
||||
width: 100%;
|
||||
height: 3.5rem;
|
||||
overflow: hidden;
|
||||
position: relative;
|
||||
border-radius: 0.5rem;
|
||||
background: rgba(0, 0, 0, 0.05);
|
||||
box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.1);
|
||||
}
|
||||
|
||||
.word::before, .word::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 0.5rem;
|
||||
z-index: 1;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.word::before {
|
||||
top: 0;
|
||||
background: linear-gradient(to bottom, rgba(255, 255, 255, 0.7), transparent);
|
||||
}
|
||||
|
||||
.word::after {
|
||||
bottom: 0;
|
||||
background: linear-gradient(to top, rgba(255, 255, 255, 0.7), transparent);
|
||||
}
|
||||
|
||||
.word-inner {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
position: absolute;
|
||||
width: 100%;
|
||||
transition: transform 0.8s cubic-bezier(0.4, 0, 0.2, 1);
|
||||
will-change: transform;
|
||||
}
|
||||
|
||||
.word-item {
|
||||
height: 3.5rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
font-size: 1.5rem;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
padding: 0 0.25rem;
|
||||
}
|
||||
|
||||
.controls {
|
||||
display: flex;
|
||||
justify-content: center;
|
||||
margin-top: 1rem;
|
||||
}
|
||||
|
||||
@keyframes spin {
|
||||
0% { transform: translateY(0); }
|
||||
100% { transform: translateY(-3.5rem); }
|
||||
}
|
||||
|
||||
.spinning .word-inner {
|
||||
animation: spin var(--animation-duration) var(--animation-curve) infinite;
|
||||
}
|
||||
|
||||
.placeholder {
|
||||
opacity: 0.5;
|
||||
}
|
||||
`;
|
||||
|
||||
override render() {
|
||||
return html`
|
||||
<div class="words-list ${this.animating ? 'spinning' : ''}">
|
||||
${map(
|
||||
this.tempWords,
|
||||
(word) =>
|
||||
html`
|
||||
<div class="word">
|
||||
<div class="word-inner">
|
||||
${when(
|
||||
this.animating,
|
||||
() => html`
|
||||
<div class="word-item placeholder">${word}</div>
|
||||
<div class="word-item placeholder">${word}</div>
|
||||
`,
|
||||
() =>
|
||||
html`
|
||||
<div class="word-item ${!word ? 'placeholder' : ''}">${word || 'tap generate'}</div>
|
||||
`,
|
||||
)}
|
||||
</div>
|
||||
</div>
|
||||
`,
|
||||
)}
|
||||
</div>
|
||||
<div class="controls">
|
||||
<arx-button
|
||||
variant="primary"
|
||||
label="Generate Seed Phrase"
|
||||
?disabled=${this.animating}
|
||||
?loading=${this.animating}
|
||||
@click=${this.generateSeedPhrase}
|
||||
></arx-button>
|
||||
</div>
|
||||
`;
|
||||
}
|
||||
|
||||
private generateSeedPhrase() {
|
||||
if (this.animating) return;
|
||||
|
||||
this.animating = true;
|
||||
|
||||
const intervalId = window.setInterval(() => {
|
||||
this.tempWords = this.tempWords.map(() => this.getRandomWord());
|
||||
}, 50);
|
||||
|
||||
setTimeout(() => {
|
||||
const newWords = nip06.generateSeedWords().split(' ');
|
||||
clearInterval(intervalId);
|
||||
this.tempWords = newWords;
|
||||
this.words = newWords;
|
||||
this.animating = false;
|
||||
this.dispatchEvent(new ArxInputChangeEvent(this.words.join(' ')));
|
||||
}, 1500);
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
import NDK, { type NDKKind, NDKPrivateKeySigner } from '@nostr-dev-kit/ndk';
|
||||
import NDK, { NDKPrivateKeySigner } from '@nostr-dev-kit/ndk';
|
||||
import * as nip49 from '@nostr/tools/nip49';
|
||||
|
||||
export const ndk = new NDK({
|
||||
|
@ -37,6 +37,3 @@ export async function getUserProfile(npub: string | undefined = undefined) {
|
|||
await user.fetchProfile();
|
||||
return user.profile;
|
||||
}
|
||||
|
||||
export const inviteResponseKind = 9998 as NDKKind;
|
||||
export const inviteKind = 9999 as NDKKind;
|
||||
|
|
|
@ -77,6 +77,7 @@ export class Home extends LitElement {
|
|||
color: '#7B68EE',
|
||||
icon: 'arx:settings',
|
||||
},
|
||||
},
|
||||
];
|
||||
|
||||
widgets = [
|
||||
|
|
|
@ -14,7 +14,6 @@ import '@components/General/Button';
|
|||
import '@components/General/Card';
|
||||
import '@components/General/Fieldset';
|
||||
import '@components/General/Input';
|
||||
import '@components/InviteCodeGenerator';
|
||||
import '@components/RelayLogs';
|
||||
|
||||
@customElement('arx-settings')
|
||||
|
@ -218,11 +217,6 @@ export class EveSettings extends LitElement {
|
|||
<arx-relay-logs .logs=${this.relayStatus.logs}></arx-relay-logs>
|
||||
</arx-fieldset>
|
||||
</arx-card>
|
||||
<arx-card>
|
||||
<arx-fieldset legend="Invites">
|
||||
<arx-invite-code-generator></arx-invite-code-generator>
|
||||
</arx-fieldset>
|
||||
</arx-card>
|
||||
<arx-card>
|
||||
<arx-fieldset legend="Reset">
|
||||
<p>
|
||||
|
|
|
@ -159,14 +159,14 @@ export default class EveRouter extends LitElement {
|
|||
::-webkit-scrollbar-thumb:hover {
|
||||
background: var(--color-neutral);
|
||||
}
|
||||
|
||||
|
||||
.window {
|
||||
overflow: auto;
|
||||
grid-column: 2;
|
||||
grid-row: 2;
|
||||
position: relative;
|
||||
}
|
||||
|
||||
|
||||
.window::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
|
@ -179,7 +179,7 @@ export default class EveRouter extends LitElement {
|
|||
background: linear-gradient(to right, transparent, rgba(0, 0, 0, 0.03));
|
||||
transition: opacity 0.3s ease;
|
||||
}
|
||||
|
||||
|
||||
.window:hover::after {
|
||||
opacity: 1;
|
||||
}
|
||||
|
@ -235,7 +235,7 @@ export default class EveRouter extends LitElement {
|
|||
transform: perspective(1200px) translateX(50vw);
|
||||
filter: blur(50px);
|
||||
}
|
||||
|
||||
|
||||
.window-content.transitioning::after {
|
||||
opacity: 1;
|
||||
}
|
||||
|
@ -500,7 +500,7 @@ export default class EveRouter extends LitElement {
|
|||
() => html`<iconify-icon icon="mdi:chevron-right"></iconify-icon>`,
|
||||
)}
|
||||
</button>
|
||||
<arx-sidebar
|
||||
<arx-sidebar
|
||||
class=${classMap({ hidden: !this.sidebarVisible })}
|
||||
.currentPath=${this.currentPath}
|
||||
.userNpub=${this.userNpub}
|
||||
|
@ -525,7 +525,7 @@ export default class EveRouter extends LitElement {
|
|||
keyed(
|
||||
this.currentRoute.params,
|
||||
html`
|
||||
<${this.currentRoute.component}
|
||||
<${this.currentRoute.component}
|
||||
${spread(this.currentRoute.params)}
|
||||
path=${this.currentPath}
|
||||
@navigate=${this.navigate}
|
||||
|
|
|
@ -17,7 +17,6 @@
|
|||
--color-base-100: oklch(98% 0.016 73.684);
|
||||
--color-base-200: oklch(95% 0.038 75.164);
|
||||
--color-base-300: oklch(90% 0.076 70.697);
|
||||
--color-base-400: oklch(85% 0.076 70.697);
|
||||
--color-base-content: oklch(40% 0.123 38.172);
|
||||
|
||||
--color-primary: oklch(0% 0 0);
|
||||
|
@ -59,7 +58,6 @@ body.dark {
|
|||
--color-base-100: oklch(28.822% 0.022 277.508);
|
||||
--color-base-200: oklch(26.805% 0.02 277.508);
|
||||
--color-base-300: oklch(24.787% 0.019 277.508);
|
||||
--color-base-400: oklch(22.769% 0.016 277.508);
|
||||
--color-base-content: oklch(97.747% 0.007 106.545);
|
||||
--color-primary: oklch(75.461% 0.183 346.812);
|
||||
--color-primary-content: oklch(15.092% 0.036 346.812);
|
||||
|
|
|
@ -1,3 +0,0 @@
|
|||
export function arrayToUnique<T>(array: T[]): T[] {
|
||||
return [...new Set(array)];
|
||||
}
|
|
@ -1,65 +0,0 @@
|
|||
import { inviteResponseKind, ndk } from '@/ndk';
|
||||
import { bytesToHex } from '@noble/hashes/utils';
|
||||
import { NDKEvent, NDKKind, NDKPrivateKeySigner, type NDKTag, NDKUser } from '@nostr-dev-kit/ndk';
|
||||
import type { NPub } from '@nostr/tools/nip19';
|
||||
import * as nostrTools from '@nostr/tools/pure';
|
||||
import { base64 } from '@scure/base';
|
||||
import { arrayToUnique } from './arrayToUnique';
|
||||
export async function generateDM(npub: NPub, content: string, additionalTags: NDKTag[] = []) {
|
||||
if (!ndk.signer) {
|
||||
throw new Error('NDK signer not initialized');
|
||||
}
|
||||
|
||||
const recipient = new NDKUser({
|
||||
npub,
|
||||
});
|
||||
|
||||
const randomPrivateKey = nostrTools.generateSecretKey();
|
||||
const randomSigner = new NDKPrivateKeySigner(randomPrivateKey);
|
||||
|
||||
const dmEvent = new NDKEvent(ndk);
|
||||
dmEvent.kind = NDKKind.PrivateDirectMessage;
|
||||
dmEvent.content = content;
|
||||
dmEvent.tags.push(['p', recipient.pubkey], ...additionalTags);
|
||||
await dmEvent.sign(ndk.signer);
|
||||
|
||||
const sealEvent = new NDKEvent(ndk);
|
||||
sealEvent.kind = NDKKind.GiftWrapSeal;
|
||||
sealEvent.content = await randomSigner.encrypt(recipient, JSON.stringify(dmEvent), 'nip44');
|
||||
await sealEvent.sign(randomSigner);
|
||||
|
||||
const giftWrapEvent = new NDKEvent(ndk);
|
||||
giftWrapEvent.kind = NDKKind.GiftWrap;
|
||||
giftWrapEvent.tags.push(['p', recipient.pubkey], ...additionalTags);
|
||||
giftWrapEvent.content = await randomSigner.encrypt(recipient, JSON.stringify(sealEvent), 'nip44');
|
||||
await giftWrapEvent.sign(randomSigner);
|
||||
|
||||
return giftWrapEvent;
|
||||
}
|
||||
|
||||
export async function decryptInviteResponseDM(event: NDKEvent): Promise<{
|
||||
privateKey: string;
|
||||
existingMembers: string[];
|
||||
ccnName: string;
|
||||
}> {
|
||||
if (event.kind !== NDKKind.GiftWrap) {
|
||||
throw new Error('Event is not a gift wrap');
|
||||
}
|
||||
|
||||
const seal = JSON.parse(await ndk.signer?.decrypt(event.author, event.content, 'nip44')!);
|
||||
if (seal.kind !== NDKKind.GiftWrapSeal) {
|
||||
throw new Error('Seal is not a gift wrap seal');
|
||||
}
|
||||
|
||||
const inviteResponse = JSON.parse(await ndk.signer?.decrypt(event.author, seal.content, 'nip44')!);
|
||||
if (inviteResponse.kind !== inviteResponseKind) {
|
||||
throw new Error('Invite response is not of correct type');
|
||||
}
|
||||
|
||||
const privateKey = base64.decode(inviteResponse.content);
|
||||
return {
|
||||
privateKey: bytesToHex(privateKey),
|
||||
existingMembers: arrayToUnique(inviteResponse.tags.filter((tag) => tag[0] === 'p').map((tag) => tag[1])),
|
||||
ccnName: inviteResponse.tags.find((tag) => tag[0] === 'name')?.[1],
|
||||
};
|
||||
}
|
|
@ -1,33 +0,0 @@
|
|||
import { nip19 } from '@nostr/tools';
|
||||
import type { NPub } from '@nostr/tools/nip19';
|
||||
|
||||
export function getCCNList(): Promise<{ name: string; pubkey: string }[]> {
|
||||
return new Promise((resolve, reject) => {
|
||||
const ws = new WebSocket('ws://localhost:6942');
|
||||
ws.onopen = () => {
|
||||
ws.send(JSON.stringify(['CCN', 'LIST']));
|
||||
};
|
||||
ws.onmessage = (event) => {
|
||||
const data = JSON.parse(event.data);
|
||||
if (data[0] !== 'OK' || data[1] !== 'CCN LIST' || data[2] !== true) return;
|
||||
resolve(JSON.parse(data[3]));
|
||||
};
|
||||
ws.onerror = (event) => {
|
||||
reject(event);
|
||||
};
|
||||
});
|
||||
}
|
||||
|
||||
export function getActiveCCNNpub() {
|
||||
const selectedCCN = localStorage.getItem('selectedCCN');
|
||||
if (!selectedCCN) return null;
|
||||
const { pubkey } = JSON.parse(selectedCCN);
|
||||
return nip19.npubEncode(pubkey);
|
||||
}
|
||||
|
||||
export async function getCCNName(npub: NPub) {
|
||||
const ccnList = await getCCNList();
|
||||
const npubToPubkey = nip19.decode<'npub'>(npub);
|
||||
const ccn = ccnList.find((ccn) => ccn.pubkey === npubToPubkey.data);
|
||||
return ccn?.name;
|
||||
}
|
|
@ -1,19 +0,0 @@
|
|||
import { bytesToHex, hexToBytes } from '@noble/ciphers/utils';
|
||||
import { nip19 } from '@nostr/tools';
|
||||
import type { NPub } from '@nostr/tools/nip19';
|
||||
import { bech32m } from '@scure/base';
|
||||
|
||||
export function generateInvite(ccn: NPub, invite: string) {
|
||||
const npubHex = nip19.decode<'npub'>(ccn).data;
|
||||
const combinedBytes = bech32m.toWords(new Uint8Array([...hexToBytes(npubHex), ...hexToBytes(invite)]));
|
||||
return bech32m.encode('eveinvite', combinedBytes, false);
|
||||
}
|
||||
|
||||
export function readInvite(invite: `${string}1${string}`) {
|
||||
const decoded = bech32m.decode(invite, false);
|
||||
if (decoded.prefix !== 'eveinvite') return false;
|
||||
const hexBytes = bech32m.fromWords(decoded.words);
|
||||
const npub = nip19.npubEncode(bytesToHex(hexBytes.slice(0, 32)));
|
||||
const inviteCode = bytesToHex(hexBytes.slice(32));
|
||||
return { npub, invite: inviteCode };
|
||||
}
|
|
@ -1,6 +0,0 @@
|
|||
import { bytesToHex } from '@noble/ciphers/utils';
|
||||
import { sha512 } from '@noble/hashes/sha512';
|
||||
|
||||
export function sha512Hash(input: string) {
|
||||
return bytesToHex(sha512.create().update(input).digest());
|
||||
}
|
|
@ -1,25 +0,0 @@
|
|||
import { ndk } from '@/ndk';
|
||||
import { NDKRelay, NDKRelaySet } from '@nostr-dev-kit/ndk';
|
||||
|
||||
/**
|
||||
* This is an unsafe relay set that is used to publish events publicly
|
||||
* This should NEVER be used except for the initial setup
|
||||
*/
|
||||
export const unsafeRelaySet = new NDKRelaySet(
|
||||
new Set([
|
||||
new NDKRelay('wss://nos.lol/', undefined, ndk),
|
||||
new NDKRelay('wss://nostr.einundzwanzig.space/', undefined, ndk),
|
||||
new NDKRelay('wss://nostr.massmux.com/', undefined, ndk),
|
||||
new NDKRelay('wss://nostr.mom/', undefined, ndk),
|
||||
new NDKRelay('wss://purplerelay.com/', undefined, ndk),
|
||||
new NDKRelay('wss://relay.damus.io/', undefined, ndk),
|
||||
new NDKRelay('wss://relay.goodmorningbitcoin.com/', undefined, ndk),
|
||||
new NDKRelay('wss://relay.lexingtonbitcoin.org/', undefined, ndk),
|
||||
new NDKRelay('wss://relay.nostr.band/', undefined, ndk),
|
||||
new NDKRelay('wss://relay.primal.net/', undefined, ndk),
|
||||
new NDKRelay('wss://relay.snort.social/', undefined, ndk),
|
||||
new NDKRelay('wss://strfry.iris.to/', undefined, ndk),
|
||||
new NDKRelay('wss://cache2.primal.net/v1', undefined, ndk),
|
||||
]),
|
||||
ndk,
|
||||
);
|
Loading…
Add table
Reference in a new issue