Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
2d8c86d26b | ||
|
|
91332b7eb0 | ||
|
|
3da73d626b | ||
|
|
060cbea9da | ||
|
|
9bb5d141c3 | ||
|
|
571b3e9f37 | ||
|
|
6a2e44d36e | ||
|
|
c3263eec73 | ||
|
|
401a28132e | ||
|
|
8250a07c02 | ||
|
|
26a19388f3 | ||
|
|
ca6e38cb9c | ||
|
|
ca5a604a3e | ||
|
|
0fcecc9c58 | ||
|
|
4e925171b3 | ||
|
|
41e2fe19bc | ||
|
|
a927d6bf59 | ||
|
|
c0cc183c59 | ||
|
|
b68c4ff9b4 | ||
|
|
132329361f | ||
|
|
4d86629315 | ||
|
|
d1c92f2957 | ||
|
|
0d2cc5b998 | ||
|
|
fdfd5d56c9 | ||
|
|
059c520a50 | ||
|
|
d8818dc435 | ||
|
|
2baa147afa | ||
|
|
e179bbe259 | ||
|
|
16cab4b768 | ||
|
|
6ab34fa87c | ||
|
|
fcfd366dec | ||
|
|
98dd685679 | ||
|
|
2597318488 | ||
|
|
aa997826f8 | ||
|
|
69705052b3 | ||
|
|
f903f17ebd | ||
|
|
95d50e9833 | ||
|
|
63e8a068b3 | ||
|
|
dbc0b4acee | ||
|
|
f31ac660d2 | ||
|
|
8b72f8c277 | ||
|
|
ca052682bb | ||
|
|
1b0e479e49 | ||
|
|
f22ceae41c | ||
|
|
346256f895 | ||
|
|
a0cbd5a23f | ||
|
|
803b0608cc | ||
|
|
7eb1cbdabd | ||
|
|
ca873a99f4 | ||
|
|
8d666baf28 | ||
|
|
be0c9d67bb | ||
|
|
f0594ba09c | ||
|
|
fce6d1615a | ||
|
|
a264526127 | ||
|
|
fbfffbb31a | ||
|
|
bca3610cff | ||
|
|
facd91375c | ||
|
|
96321005e0 | ||
|
|
6f07678f04 | ||
|
|
3b6ee90a7e | ||
|
|
909e8a1d8e | ||
|
|
8f2baca339 | ||
|
|
637166bfd6 | ||
|
|
45af3a21b7 | ||
|
|
7e686cef6b | ||
|
|
be43d30cc7 | ||
|
|
77b16f287a | ||
|
|
bc7fb794bf | ||
|
|
c1ab6d8687 | ||
|
|
ccfafc5da4 | ||
|
|
502281e219 | ||
|
|
b81cc58d5e | ||
|
|
05ac07d656 | ||
|
|
3234c78f0d | ||
|
|
3849ae306c | ||
|
|
301b14f518 | ||
|
|
df8566e1b5 | ||
|
|
45d05786da | ||
|
|
6a6bebb2d1 | ||
|
|
ea76c808de | ||
|
|
f9069540a9 | ||
|
|
8a9868b644 | ||
|
|
d1e2bf3e7d | ||
|
|
66c55f0722 | ||
|
|
ca7d0b6965 | ||
|
|
02ff28acdd | ||
|
|
cb56a4fe46 | ||
|
|
752e6752b4 | ||
|
|
00df76269a | ||
|
|
99483b3506 | ||
|
|
5619a6f22f | ||
|
|
c510cbf590 | ||
|
|
6d9265de0f | ||
|
|
49ea562322 | ||
|
|
1f087b6c08 | ||
|
|
37c839600e | ||
|
|
cef2e4fa49 | ||
|
|
11ff2b9084 | ||
|
|
69f16b59cb | ||
|
|
0e644260b6 | ||
|
|
33609ab534 | ||
|
|
1cc7a025a1 | ||
|
|
709b0ff61e | ||
|
|
0d7d90a442 | ||
|
|
5cbdc5eaf2 | ||
|
|
a7c3064df6 | ||
|
|
f63d52c9d6 | ||
|
|
b752256bda | ||
|
|
474d171779 | ||
|
|
51ce9b6e45 | ||
|
|
9cef24f827 | ||
|
|
e6880b7fed | ||
|
|
e505eba111 | ||
|
|
4e067d13b3 | ||
|
|
40c0042158 | ||
|
|
6abfa122e4 | ||
|
|
032540a712 | ||
|
|
cf95048f2b | ||
|
|
29a1ce7de7 | ||
|
|
1670b8b8d2 | ||
|
|
3644b935fd | ||
|
|
20162cceef | ||
|
|
44a9de7db7 | ||
|
|
f99a2d99a2 | ||
|
|
f795a3ea21 | ||
|
|
f8a56b7de2 | ||
|
|
8a667ccaba | ||
|
|
6ddd0b00bd | ||
|
|
c597cfda51 | ||
|
|
f673bc59d0 | ||
|
|
78b925daa6 | ||
|
|
4e05c94912 | ||
|
|
acb599b760 | ||
|
|
c7b70dbd56 | ||
|
|
b4f7299f27 | ||
|
|
6fd5a218a3 | ||
|
|
a1518c06fb | ||
|
|
c517a0b41f | ||
|
|
ded904fac8 | ||
|
|
abea6bff7b | ||
|
|
06f53ba6eb | ||
|
|
eda0919f52 | ||
|
|
1f27c744d2 | ||
|
|
bbc011ddb9 | ||
|
|
c2054a1ef6 | ||
|
|
f9d420fecd | ||
|
|
3e1d719512 | ||
|
|
f685bd18ab | ||
|
|
f46cc59041 | ||
|
|
380b1ed329 | ||
|
|
1056b4fba6 | ||
|
|
19031dba99 | ||
|
|
028db7a7ee | ||
|
|
a1764faaeb | ||
|
|
8529bb0e21 | ||
|
|
9eefdd1858 | ||
|
|
e5803860df | ||
|
|
2754d734aa | ||
|
|
3487ca4822 | ||
|
|
02ebddc34a | ||
|
|
3957f6bd09 | ||
|
|
11ab98b3d8 | ||
|
|
e24403949c | ||
|
|
288f6b91d0 | ||
|
|
8ca105966d | ||
|
|
592cd517ff | ||
|
|
586b410a66 | ||
|
|
a444940db2 | ||
|
|
afe5aef9f7 | ||
|
|
21a3e8fafc | ||
|
|
26bbba5a2e | ||
|
|
b68d5c9398 | ||
|
|
c1425f0562 | ||
|
|
e1f1b60608 | ||
|
|
ea1c95528c | ||
|
|
0cac2969ae | ||
|
|
b856c51389 | ||
|
|
aa3b23ecb8 | ||
|
|
1e653e213a | ||
|
|
7d91dcfb70 | ||
|
|
8e7e6266f0 | ||
|
|
167ccf5151 | ||
|
|
c582e0820a | ||
|
|
7d3a63d744 | ||
|
|
0a0987873f | ||
|
|
18d60c8781 | ||
|
|
7708ea6a0f | ||
|
|
71a46c6b63 | ||
|
|
667324df69 | ||
|
|
957e20d763 | ||
|
|
029a87c6ca | ||
|
|
baa4609102 | ||
|
|
875943e4da | ||
|
|
10e674cdd0 | ||
|
|
0bf78b0b81 | ||
|
|
c90b93556a | ||
|
|
f45718ea06 | ||
|
|
6d418ee8cc | ||
|
|
4851b1b72d | ||
|
|
dfb6f88be9 | ||
|
|
f28227384d | ||
|
|
cef9be92f3 | ||
|
|
f849d67a79 | ||
|
|
fba3becb06 | ||
|
|
a23ff6d119 | ||
|
|
384744c958 | ||
|
|
70c6617e88 | ||
|
|
9afe3b334e | ||
|
|
ad67d4c7ae | ||
|
|
b7eaed3ac3 | ||
|
|
136e2d68a2 | ||
|
|
bdcd54687d | ||
|
|
99190b0ef1 | ||
|
|
c7702b0c37 | ||
|
|
9b88a2c14d | ||
|
|
6a945e6a08 | ||
|
|
9c7cf0778f | ||
|
|
dd0f1a25d0 | ||
|
|
7f4cf3060e | ||
|
|
30496a4875 | ||
|
|
027508f495 | ||
|
|
b5e2b2a2ad | ||
|
|
9c9db05b86 | ||
|
|
1fa17a7df7 | ||
|
|
e09e5858d8 | ||
|
|
6ede062a66 | ||
|
|
b351b4042f | ||
|
|
95d0ce33d4 | ||
|
|
75366167e8 | ||
|
|
7fa7e4be45 | ||
|
|
d14dafbade | ||
|
|
e222f448bb | ||
|
|
f55ed3dc4c | ||
|
|
fedfcc247e | ||
|
|
8186adfaeb | ||
|
|
00304facba | ||
|
|
ff241f437f | ||
|
|
4a6b9cd64d | ||
|
|
8646dfbf02 | ||
|
|
d6f2681c61 | ||
|
|
5a47ca6053 | ||
|
|
d7fd273475 | ||
|
|
ce828a6ef5 | ||
|
|
15dbd72f93 | ||
|
|
e3bdd8737f | ||
|
|
7942656026 | ||
|
|
1fe8a2cb17 | ||
|
|
ab48b1f867 | ||
|
|
3043842254 | ||
|
|
249e326de4 | ||
|
|
b3cace3b43 | ||
|
|
ad578179d8 | ||
|
|
c57351f8b5 | ||
|
|
c5934e4c5b | ||
|
|
06e64bd3b8 | ||
|
|
48572812a9 | ||
|
|
46b610370a | ||
|
|
96d4b8ed45 | ||
|
|
c18ba3d815 | ||
|
|
fd81079247 | ||
|
|
e5781fbabc | ||
|
|
8887b06583 | ||
|
|
9955ff7df9 | ||
|
|
db74b6049c | ||
|
|
0b5c7af4be | ||
|
|
721016a00e | ||
|
|
563522d261 | ||
|
|
04f4455491 | ||
|
|
b976ce480a | ||
|
|
6d5f7cfd22 | ||
|
|
9baed0987e | ||
|
|
b76d17d35c | ||
|
|
4e182612e8 | ||
|
|
645729a518 | ||
|
|
9ee4c1cd5c | ||
|
|
02742aef5b | ||
|
|
87af2c3855 | ||
|
|
ea1ce4a029 | ||
|
|
2fe9185a6f | ||
|
|
ef191c55be | ||
|
|
abd74a127a | ||
|
|
52ac269b8d | ||
|
|
643f65ce3b | ||
|
|
465ce3e69a | ||
|
|
207b648f36 | ||
|
|
7f2d52a5ce | ||
|
|
f1eaa95c44 | ||
|
|
e203de172d | ||
|
|
79b7e2aaa5 | ||
|
|
3c2ade9299 | ||
|
|
f3f2dc6cec | ||
|
|
12b69bd681 | ||
|
|
8f542ff448 | ||
|
|
80c81c11fb | ||
|
|
e3809bd930 | ||
|
|
d755e29459 | ||
|
|
105eb5a9cd | ||
|
|
65f8436aa7 | ||
|
|
4afdd79252 | ||
|
|
d1e807b11f | ||
|
|
ee84690cd9 | ||
|
|
c7a27f1dc7 | ||
|
|
1fd9f8d1f8 | ||
|
|
b57d849ecd | ||
|
|
654ae4dc0b | ||
|
|
3984a623bf | ||
|
|
96619c6cec | ||
|
|
3dd92ccdb4 | ||
|
|
b111a615a9 | ||
|
|
2372958713 | ||
|
|
82a8541af1 | ||
|
|
ea162972fa | ||
|
|
094d6858d1 | ||
|
|
65398d59d4 | ||
|
|
3df9659ce2 | ||
|
|
c4f4f53fd6 | ||
|
|
b567b6a840 | ||
|
|
ab18e5f134 | ||
|
|
929115c02b | ||
|
|
e26884c099 | ||
|
|
077bcdcaf5 | ||
|
|
685ac5a94a | ||
|
|
3d1b75b591 | ||
|
|
e1bfe9b93c | ||
|
|
5b75a165ce | ||
|
|
e12fbc85d4 | ||
|
|
6bbef0a975 | ||
|
|
bc175ca438 | ||
|
|
ef15772b97 | ||
|
|
da5b913757 | ||
|
|
6b5a51f652 | ||
|
|
af2620c8b3 | ||
|
|
15fdfdc42e | ||
|
|
ce88e1f97b | ||
|
|
a67e3a5eac | ||
|
|
cc747f0690 | ||
|
|
a6d2661562 | ||
|
|
4b95b12a7b | ||
|
|
cca8554e3d | ||
|
|
28c426ca3c | ||
|
|
be83a4295a | ||
|
|
87439ee509 | ||
|
|
36ef54d541 | ||
|
|
400407358d | ||
|
|
502b121e43 | ||
|
|
61447ced4f | ||
|
|
1e107c68b4 | ||
|
|
602fb31f27 | ||
|
|
2a8531a025 | ||
|
|
980589e190 | ||
|
|
4a2d1f4a02 | ||
|
|
39e6cc4d68 | ||
|
|
e5018432cb | ||
|
|
dbf0b03bac | ||
|
|
01060035bc | ||
|
|
fa0cf5a654 | ||
|
|
4f1a1cad8e | ||
|
|
8c8aae9a1e | ||
|
|
230c53875f | ||
|
|
2e40cbc7c7 | ||
|
|
cd1ffc3e9a | ||
|
|
4db2cd7eda | ||
|
|
f230b36382 | ||
|
|
b872f2a5db | ||
|
|
c6678d16a6 | ||
|
|
b73a02048e | ||
|
|
1f2f2751e4 | ||
|
|
85998534fe | ||
|
|
8e7b8bd75f | ||
|
|
fb983f23dd | ||
|
|
7df99521c4 | ||
|
|
a8c0a1aa61 | ||
|
|
fc05350ae4 | ||
|
|
ba7de8fa01 | ||
|
|
778cf80e6b | ||
|
|
f01bb7d271 | ||
|
|
6a031e5a71 | ||
|
|
37924841e1 | ||
|
|
be90248fc7 | ||
|
|
cb38beb32c | ||
|
|
cc8500d0f4 | ||
|
|
61d4e36f1f | ||
|
|
5c5f164aa2 | ||
|
|
5275e6c732 | ||
|
|
f3ea6734a1 | ||
|
|
bb20176c76 | ||
|
|
beee44a10e | ||
|
|
43823dbda1 | ||
|
|
ff39bf365c | ||
|
|
5d69e4a8aa | ||
|
|
142db19627 | ||
|
|
7b84ecbb56 | ||
|
|
dc6de1734a | ||
|
|
1e464cef0a | ||
|
|
4decaa6789 | ||
|
|
a057088808 | ||
|
|
e46053a7b7 | ||
|
|
91d9e82d84 | ||
|
|
608f5ed3e9 | ||
|
|
9b2e209b4f | ||
|
|
bae1582631 | ||
|
|
c3fe76d78c | ||
|
|
8abab0e379 | ||
|
|
d31204188b | ||
|
|
a74f34b559 | ||
|
|
37cda348b0 | ||
|
|
38656e73c5 | ||
|
|
03ac430be4 | ||
|
|
89979d6ce4 | ||
|
|
54a3145710 | ||
|
|
7aea149b6c | ||
|
|
f50aa55e8b | ||
|
|
6c0d7c30c6 | ||
|
|
af163d597e | ||
|
|
d0c8302d21 | ||
|
|
44e2d76525 | ||
|
|
8f274bbb44 | ||
|
|
8436124cbc | ||
|
|
647fa8e212 | ||
|
|
6cc5886073 | ||
|
|
513c889926 | ||
|
|
9c6f4d59b3 | ||
|
|
a0d5768752 | ||
|
|
4f951cdf8a | ||
|
|
619e2ba1ee | ||
|
|
7d6a80eefa | ||
|
|
2403f8fb29 | ||
|
|
b485112ed3 | ||
|
|
1f5c835f8a | ||
|
|
a3d7ee63d3 | ||
|
|
a8cf67728b | ||
|
|
c830fc7841 | ||
|
|
5ef3bb9cbf | ||
|
|
b882175f36 | ||
|
|
d20215929d | ||
|
|
ea312b9986 | ||
|
|
0559341f31 | ||
|
|
1f4dc2d4a2 | ||
|
|
14ca0f5c59 | ||
|
|
e51c4843c5 | ||
|
|
32a9fac9ed | ||
|
|
de8cbf6178 | ||
|
|
33e1aea80c | ||
|
|
83589ee677 | ||
|
|
023ecdebc9 | ||
|
|
2d9cb2c0b9 | ||
|
|
5c0814ef9b | ||
|
|
28831a3b06 | ||
|
|
0d073a36a3 | ||
|
|
069600d602 | ||
|
|
d70a27f2fd | ||
|
|
e330626b03 | ||
|
|
0f4b16c194 | ||
|
|
c89bda86b7 | ||
|
|
56fa5355fd | ||
|
|
7ea52670b9 | ||
|
|
ee264e88d4 | ||
|
|
3f7db4e772 | ||
|
|
3d9fc18a83 | ||
|
|
9eeed7f992 | ||
|
|
ba0a86cbea | ||
|
|
41d8d65d82 | ||
|
|
57843b8a6f | ||
|
|
d6258d0ca1 | ||
|
|
66ccebb02b | ||
|
|
e3081e56f8 | ||
|
|
201b223813 | ||
|
|
08d534e39b | ||
|
|
4489169553 | ||
|
|
16c239716b | ||
|
|
f5913eb947 | ||
|
|
f2681af9ee | ||
|
|
66dd51d75a | ||
|
|
5f78361533 | ||
|
|
3c1192298b | ||
|
|
0bd9d79bbe | ||
|
|
a2e055f313 | ||
|
|
ca1d5c4303 | ||
|
|
e6eebc00a3 | ||
|
|
29bdf794f3 | ||
|
|
4ba81b8f03 | ||
|
|
8af7f0e797 | ||
|
|
c67fa18ad3 | ||
|
|
6c9da6537e | ||
|
|
241785b428 | ||
|
|
411166ffba | ||
|
|
203c9ebbca | ||
|
|
ede37d5d0f | ||
|
|
4f02529b15 | ||
|
|
0f6b73340e | ||
|
|
96c53cc173 | ||
|
|
7ce3bc18b2 | ||
|
|
82b47e314b | ||
|
|
9d2474c1e3 | ||
|
|
787f69fc46 | ||
|
|
054d4e52b2 | ||
|
|
0d1ef6d40e | ||
|
|
ead448b8d4 | ||
|
|
7ff10e6792 | ||
|
|
3d6c94e7c5 | ||
|
|
7673e64738 | ||
|
|
4230c53812 | ||
|
|
3198e03cc4 | ||
|
|
1e48e107fc | ||
|
|
ed7c889c4f | ||
|
|
84f4481ef0 | ||
|
|
b84997d058 | ||
|
|
3063a7c05f | ||
|
|
36fe4c9e9a | ||
|
|
5c5134b69f | ||
|
|
e7fb764158 | ||
|
|
fe624cfd1c | ||
|
|
81b8237570 | ||
|
|
a019c7dae0 | ||
|
|
552dd029fa | ||
|
|
bd5c6359fe | ||
|
|
6bd483d768 | ||
|
|
7003c0d81b | ||
|
|
b038d9a41f | ||
|
|
89c42cf7e4 | ||
|
|
cd1e5ad3ad | ||
|
|
f36c761c28 | ||
|
|
0f7d95d31b | ||
|
|
4b92f56ed7 | ||
|
|
b54fb07e84 | ||
|
|
11825191cf | ||
|
|
d719b17aec | ||
|
|
65a33922cf | ||
|
|
727ee9b014 | ||
|
|
4d51f0334f | ||
|
|
86e4866d6a | ||
|
|
e75276ed88 | ||
|
|
bfdf4c0453 | ||
|
|
f90902c5e3 | ||
|
|
d0d6844fbd | ||
|
|
cd7a724e62 | ||
|
|
1f5877460b | ||
|
|
8da77ee13b | ||
|
|
d205cd09ef | ||
|
|
b44d8505b2 | ||
|
|
9d99fe9272 | ||
|
|
431839d36d | ||
|
|
cce1f688b9 |
No files matched your search
@@ -1,9 +0,0 @@
|
|||||||
{
|
|
||||||
"permissions": {
|
|
||||||
"allow": [
|
|
||||||
"Bash(php -l:*)",
|
|
||||||
"Bash(php:*)"
|
|
||||||
],
|
|
||||||
"deny": []
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,45 +1,51 @@
|
|||||||
name: myep-next
|
|
||||||
type: php
|
type: php
|
||||||
docroot: public
|
docroot: public
|
||||||
php_version: "8.2"
|
php_version: "8.3"
|
||||||
webserver_type: apache-fpm
|
webserver_type: apache-fpm
|
||||||
xdebug_enabled: false
|
xdebug_enabled: false
|
||||||
additional_hostnames: []
|
additional_hostnames:
|
||||||
|
- mysnz
|
||||||
|
- mysbw
|
||||||
|
- myser
|
||||||
additional_fqdns: []
|
additional_fqdns: []
|
||||||
database:
|
database:
|
||||||
type: mariadb
|
type: mysql
|
||||||
version: "10.11"
|
version: "8.4"
|
||||||
use_dns_when_possible: true
|
use_dns_when_possible: true
|
||||||
composer_version: "2"
|
composer_version: "2"
|
||||||
web_environment: []
|
web_environment: []
|
||||||
corepack_enable: false
|
corepack_enable: false
|
||||||
|
nodejs_version: "22"
|
||||||
|
|
||||||
# Key features of DDEV's config.yaml:
|
# Key features of DDEV's config.yaml:
|
||||||
|
|
||||||
# name: <projectname> # Name of the project, automatically provides
|
# name: <projectname> # Name of the project, automatically provides
|
||||||
# http://projectname.ddev.site and https://projectname.ddev.site
|
# http://projectname.ddev.site and https://projectname.ddev.site
|
||||||
|
# If the name is omitted, the project will take the name of the enclosing directory,
|
||||||
|
# which is useful if you want to have a copy of the project side by side with this one.
|
||||||
|
|
||||||
# type: <projecttype> # backdrop, craftcms, django4, drupal, drupal6, drupal7, laravel, magento, magento2, php, python, shopware6, silverstripe, typo3, wordpress
|
# type: <projecttype> # backdrop, cakephp, craftcms, drupal, drupal6, drupal7, drupal8, drupal9, drupal10, drupal11, generic, laravel, magento, magento2, php, shopware6, silverstripe, symfony, typo3, wordpress
|
||||||
# See https://ddev.readthedocs.io/en/stable/users/quickstart/ for more
|
# See https://docs.ddev.com/en/stable/users/quickstart/ for more
|
||||||
# information on the different project types
|
# information on the different project types
|
||||||
# "drupal" covers recent Drupal 8+
|
|
||||||
|
|
||||||
# docroot: <relative_path> # Relative path to the directory containing index.php.
|
# docroot: <relative_path> # Relative path to the directory containing index.php.
|
||||||
|
|
||||||
# php_version: "8.2" # PHP version to use, "5.6", "7.0", "7.1", "7.2", "7.3", "7.4", "8.0", "8.1", "8.2", "8.3", "8.4"
|
# php_version: "8.3" # PHP version to use, "5.6" through "8.5"
|
||||||
|
|
||||||
# You can explicitly specify the webimage but this
|
# You can explicitly specify the webimage but this
|
||||||
# is not recommended, as the images are often closely tied to DDEV's' behavior,
|
# is not recommended, as the images are often closely tied to DDEV's' behavior,
|
||||||
# so this can break upgrades.
|
# so this can break upgrades.
|
||||||
|
|
||||||
# webimage: <docker_image> # nginx/php docker image.
|
# webimage: <docker_image>
|
||||||
|
# It’s unusual to change this option, and we don’t recommend it without Docker experience and a good reason.
|
||||||
|
# Typically, this means additions to the existing web image using a .ddev/web-build/Dockerfile.*
|
||||||
|
|
||||||
# database:
|
# database:
|
||||||
# type: <dbtype> # mysql, mariadb, postgres
|
# type: <dbtype> # mysql, mariadb, postgres
|
||||||
# version: <version> # database version, like "10.11" or "8.0"
|
# version: <version> # database version, like "10.11" or "8.0"
|
||||||
# MariaDB versions can be 5.5-10.8, 10.11, and 11.4.
|
# MariaDB versions can be 5.5-10.8, 10.11, 11.4, 11.8
|
||||||
# MySQL versions can be 5.5-8.0.
|
# MySQL versions can be 5.5-8.0, 8.4
|
||||||
# PostgreSQL versions can be 9-17.
|
# PostgreSQL versions can be 9-18
|
||||||
|
|
||||||
# router_http_port: <port> # Port to be used for http (defaults to global configuration, usually 80)
|
# router_http_port: <port> # Port to be used for http (defaults to global configuration, usually 80)
|
||||||
# router_https_port: <port> # Port for https (defaults to global configuration, usually 443)
|
# router_https_port: <port> # Port for https (defaults to global configuration, usually 443)
|
||||||
@@ -49,12 +55,21 @@ corepack_enable: false
|
|||||||
# "ddev xdebug" to enable Xdebug and "ddev xdebug off" to disable it work better,
|
# "ddev xdebug" to enable Xdebug and "ddev xdebug off" to disable it work better,
|
||||||
# as leaving Xdebug enabled all the time is a big performance hit.
|
# as leaving Xdebug enabled all the time is a big performance hit.
|
||||||
|
|
||||||
# xhprof_enabled: false # Set to true to enable Xhprof and "ddev start" or "ddev restart"
|
# xhgui_http_port: "8143"
|
||||||
# Note that for most people the commands
|
# xhgui_https_port: "8142"
|
||||||
# "ddev xhprof" to enable Xhprof and "ddev xhprof off" to disable it work better,
|
# The XHGui ports can be changed from the default 8143 and 8142
|
||||||
# as leaving Xhprof enabled all the time is a big performance hit.
|
# Very rarely used
|
||||||
|
|
||||||
# webserver_type: nginx-fpm, apache-fpm, or nginx-gunicorn
|
# host_xhgui_port: "8142"
|
||||||
|
# Can be used to change the host binding port of the XHGui
|
||||||
|
# application. Rarely used; only when port conflict and
|
||||||
|
# bind_all_ports is used (normally with router disabled)
|
||||||
|
|
||||||
|
# xhprof_mode: [prepend|xhgui|global]
|
||||||
|
# Set to "xhgui" to enable XHGui features
|
||||||
|
# "xhgui" will become default in a future major release
|
||||||
|
|
||||||
|
# webserver_type: nginx-fpm, apache-fpm, generic
|
||||||
|
|
||||||
# timezone: Europe/Berlin
|
# timezone: Europe/Berlin
|
||||||
# If timezone is unset, DDEV will attempt to derive it from the host system timezone
|
# If timezone is unset, DDEV will attempt to derive it from the host system timezone
|
||||||
@@ -80,9 +95,9 @@ corepack_enable: false
|
|||||||
# Alternatively, an explicit Composer version may be specified, for example "2.2.18".
|
# Alternatively, an explicit Composer version may be specified, for example "2.2.18".
|
||||||
# To reinstall Composer after the image was built, run "ddev debug rebuild".
|
# To reinstall Composer after the image was built, run "ddev debug rebuild".
|
||||||
|
|
||||||
# nodejs_version: "20"
|
# nodejs_version: "22"
|
||||||
# change from the default system Node.js version to any other version.
|
# change from the default system Node.js version to any other version.
|
||||||
# See https://ddev.readthedocs.io/en/stable/users/configuration/config/#nodejs_version for more information
|
# See https://docs.ddev.com/en/stable/users/configuration/config/#nodejs_version for more information
|
||||||
# and https://www.npmjs.com/package/n#specifying-nodejs-versions for the full documentation,
|
# and https://www.npmjs.com/package/n#specifying-nodejs-versions for the full documentation,
|
||||||
# Note that using of 'ddev nvm' is discouraged because "nodejs_version" is much easier to use,
|
# Note that using of 'ddev nvm' is discouraged because "nodejs_version" is much easier to use,
|
||||||
# can specify any version, and is more robust than using 'nvm'.
|
# can specify any version, and is more robust than using 'nvm'.
|
||||||
@@ -118,7 +133,7 @@ corepack_enable: false
|
|||||||
|
|
||||||
# ddev_version_constraint: ""
|
# ddev_version_constraint: ""
|
||||||
# Example:
|
# Example:
|
||||||
# ddev_version_constraint: ">= 1.22.4"
|
# ddev_version_constraint: ">= 1.24.8"
|
||||||
# This will enforce that the running ddev version is within this constraint.
|
# This will enforce that the running ddev version is within this constraint.
|
||||||
# See https://github.com/Masterminds/semver#checking-version-constraints for
|
# See https://github.com/Masterminds/semver#checking-version-constraints for
|
||||||
# supported constraint formats
|
# supported constraint formats
|
||||||
@@ -147,8 +162,8 @@ corepack_enable: false
|
|||||||
# - "mutagen": enables Mutagen for this project.
|
# - "mutagen": enables Mutagen for this project.
|
||||||
# - "nfs": enables NFS for this project.
|
# - "nfs": enables NFS for this project.
|
||||||
#
|
#
|
||||||
# See https://ddev.readthedocs.io/en/stable/users/install/performance/#nfs
|
# See https://docs.ddev.com/en/stable/users/install/performance/#nfs
|
||||||
# See https://ddev.readthedocs.io/en/stable/users/install/performance/#mutagen
|
# See https://docs.ddev.com/en/stable/users/install/performance/#mutagen
|
||||||
|
|
||||||
# fail_on_hook_fail: False
|
# fail_on_hook_fail: False
|
||||||
# Decide whether 'ddev start' should be interrupted by a failing hook
|
# Decide whether 'ddev start' should be interrupted by a failing hook
|
||||||
@@ -197,7 +212,7 @@ corepack_enable: false
|
|||||||
|
|
||||||
# ngrok_args: --basic-auth username:pass1234
|
# ngrok_args: --basic-auth username:pass1234
|
||||||
# Provide extra flags to the "ngrok http" command, see
|
# Provide extra flags to the "ngrok http" command, see
|
||||||
# https://ngrok.com/docs/ngrok-agent/config or run "ngrok http -h"
|
# https://ngrok.com/docs/agent/config/v3/#agent-configuration or run "ngrok http -h"
|
||||||
|
|
||||||
# disable_settings_management: false
|
# disable_settings_management: false
|
||||||
# If true, DDEV will not create CMS-specific settings files like
|
# If true, DDEV will not create CMS-specific settings files like
|
||||||
@@ -275,7 +290,7 @@ corepack_enable: false
|
|||||||
# Many DDEV commands can be extended to run tasks before or after the
|
# Many DDEV commands can be extended to run tasks before or after the
|
||||||
# DDEV command is executed, for example "post-start", "post-import-db",
|
# DDEV command is executed, for example "post-start", "post-import-db",
|
||||||
# "pre-composer", "post-composer"
|
# "pre-composer", "post-composer"
|
||||||
# See https://ddev.readthedocs.io/en/stable/users/extend/custom-commands/ for more
|
# See https://docs.ddev.com/en/stable/users/extend/custom-commands/ for more
|
||||||
# information on the commands that can be extended and the tasks you can define
|
# information on the commands that can be extended and the tasks you can define
|
||||||
# for them. Example:
|
# for them. Example:
|
||||||
#hooks:
|
#hooks:
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
services:
|
||||||
|
web:
|
||||||
|
external_links:
|
||||||
|
- "ddev-router:ep-reisen.ddev.site"
|
||||||
@@ -25,7 +25,7 @@ APP_SECRET=642ead390b8a38f0a017ec84d5362129
|
|||||||
#
|
#
|
||||||
# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
|
# DATABASE_URL="sqlite:///%kernel.project_dir%/var/data.db"
|
||||||
# DATABASE_URL="mysql://app:[email protected]:3306/app?serverVersion=8.0.32&charset=utf8mb4"
|
# DATABASE_URL="mysql://app:[email protected]:3306/app?serverVersion=8.0.32&charset=utf8mb4"
|
||||||
DATABASE_URL="mysql://db:db@db:3306/db?serverVersion=10.11.11-MariaDB&charset=utf8mb4"
|
DATABASE_URL="mysql://db:db@db:3306/db?serverVersion=8.4.0&charset=utf8mb4"
|
||||||
# DATABASE_URL="postgresql://app:[email protected]:5432/app?serverVersion=16&charset=utf8"
|
# DATABASE_URL="postgresql://app:[email protected]:5432/app?serverVersion=16&charset=utf8"
|
||||||
###< doctrine/doctrine-bundle ###
|
###< doctrine/doctrine-bundle ###
|
||||||
|
|
||||||
@@ -40,21 +40,50 @@ MESSENGER_TRANSPORT_DSN=doctrine://default?auto_setup=0
|
|||||||
MAILER_DSN=null://null
|
MAILER_DSN=null://null
|
||||||
###< symfony/mailer ###
|
###< symfony/mailer ###
|
||||||
|
|
||||||
|
MAILJET_API_KEY=
|
||||||
|
MAILJET_API_SECRET=
|
||||||
|
MAILJET_API_BASE_URL=https://api.mailjet.com/v3/REST
|
||||||
|
MAILJET_NEWSLETTER_LIST_ID=
|
||||||
|
APP_NEWSLETTER_CONFIRMATION_TTL_HOURS=1
|
||||||
|
|
||||||
APP_BPN_USER=
|
APP_BPN_USER=
|
||||||
APP_BPN_PASSWORD=
|
APP_BPN_PASSWORD=
|
||||||
APP_BPN_IP=
|
APP_BPN_IP=
|
||||||
APP_BPN_PORT=
|
APP_BPN_PORTS=
|
||||||
APP_BPN_DEBUG=false
|
APP_BPN_DEBUG=false
|
||||||
|
APP_BPN_CONNECTION_TIMEOUT=5
|
||||||
|
APP_BPN_STREAM_TIMEOUT=30
|
||||||
|
APP_BPN_TOTAL_TIMEOUT=45
|
||||||
|
|
||||||
APP_TRAVEL_INFO_BASE_URL=https://www.ep-reisen.de/reiseinformationen/
|
APP_TRAVEL_INFO_BASE_URL="https://www.ep-reisen.de/reiseinformationen/"
|
||||||
|
APP_LEGAL_NOTICE_URL="https://www.ep-reisen.de/unternehmen/impressum-skireiseveranstalter/"
|
||||||
|
APP_TERMS_AND_CONDITIONS_URL="https://www.ep-reisen.de/skireisen/infos/allgemeine-infos/agb/"
|
||||||
|
APP_PRIVACY_POLICY_URL="https://www.ep-reisen.de/unternehmen/impressum-skireiseveranstalter/datenschutz-winterreisen/"
|
||||||
|
APP_CMS_API_BASE_URL="https://www.ep-reisen.de/"
|
||||||
|
APP_WEBSITE_BASE_URL="https://www.ep-reisen.de/"
|
||||||
|
APP_CUSTOMER_SERVICE_EMAIL="[email protected]"
|
||||||
|
|
||||||
# Travel Data Service Configuration
|
# Travel Data Service Configuration
|
||||||
APP_TRAVEL_PREFER_REMOTE=false
|
APP_TRAVEL_PREFER_REMOTE=false
|
||||||
APP_TRAVEL_ENABLE_FALLBACK=true
|
APP_TRAVEL_ENABLE_FALLBACK=true
|
||||||
|
APP_TRAVEL_SNAPSHOT_RETENTION_BUFFER_DAYS=14
|
||||||
|
|
||||||
|
# Feature Flags
|
||||||
|
FEATURE_TRAVEL_SNAPSHOT=true
|
||||||
|
|
||||||
|
# Emails
|
||||||
|
APP_DEFAULT_EMAIL_FROM=[email protected]
|
||||||
|
APP_DEFAULT_EMAIL_TO=[email protected]
|
||||||
|
|
||||||
|
# Booking Configuration
|
||||||
|
# Status for new bookings: 'F' (Fixed/Final), 'O' (Option - requires agency confirmation)
|
||||||
|
# Use 'O' during beta phase, switch to 'F' for production
|
||||||
|
DEFAULT_BOOKING_STATUS=F
|
||||||
|
|
||||||
API_KEYS=
|
API_KEYS=
|
||||||
|
|
||||||
XML_EXPORT_PATH="%kernel.project_dir%/var/xmlexport"
|
XML_EXPORT_PATH="%kernel.project_dir%/var/xmlexport"
|
||||||
|
JSON_EXPORT_PATH="%kernel.project_dir%/var/jsonexport"
|
||||||
|
|
||||||
SFTP_XML_EXPORT_HOST=
|
SFTP_XML_EXPORT_HOST=
|
||||||
SFTP_XML_EXPORT_PORT=
|
SFTP_XML_EXPORT_PORT=
|
||||||
@@ -66,3 +95,9 @@ OAUTH_PRIVATE_KEY=%kernel.project_dir%/config/secret/private.key
|
|||||||
OAUTH_PUBLIC_KEY=%kernel.project_dir%/config/secret/public.key
|
OAUTH_PUBLIC_KEY=%kernel.project_dir%/config/secret/public.key
|
||||||
OAUTH_ENCRYPTION_KEY=580084fd179e67399467f59ee96658ac
|
OAUTH_ENCRYPTION_KEY=580084fd179e67399467f59ee96658ac
|
||||||
###< league/oauth2-server-bundle ###
|
###< league/oauth2-server-bundle ###
|
||||||
|
|
||||||
|
###> symfony/lock ###
|
||||||
|
# Choose one of the stores below
|
||||||
|
# postgresql+advisory://db_user:db_password@localhost/db_name
|
||||||
|
LOCK_DSN=flock
|
||||||
|
###< symfony/lock ###
|
||||||
@@ -31,3 +31,9 @@ yarn-error.log
|
|||||||
/.php-cs-fixer.php
|
/.php-cs-fixer.php
|
||||||
/.php-cs-fixer.cache
|
/.php-cs-fixer.cache
|
||||||
###< friendsofphp/php-cs-fixer ###
|
###< friendsofphp/php-cs-fixer ###
|
||||||
|
|
||||||
|
/ray.php
|
||||||
|
|
||||||
|
###> phpstan/phpstan ###
|
||||||
|
phpstan.neon
|
||||||
|
###< phpstan/phpstan ###
|
||||||
@@ -2,12 +2,11 @@
|
|||||||
|
|
||||||
$finder = (new PhpCsFixer\Finder())
|
$finder = (new PhpCsFixer\Finder())
|
||||||
->in(__DIR__)
|
->in(__DIR__)
|
||||||
->exclude('var')
|
->exclude('var');
|
||||||
;
|
|
||||||
|
|
||||||
return (new PhpCsFixer\Config())
|
return (new PhpCsFixer\Config())
|
||||||
->setRules([
|
->setRules([
|
||||||
'@Symfony' => true,
|
'@Symfony' => true,
|
||||||
|
'@DoctrineAnnotation' => true,
|
||||||
])
|
])
|
||||||
->setFinder($finder)
|
->setFinder($finder);
|
||||||
;
|
|
||||||
@@ -1,70 +1,117 @@
|
|||||||
### user profile minimum
|
### user profile minimum
|
||||||
|
# @no-cookie-jar
|
||||||
GET {{base_url}}/api/userinfo
|
GET {{base_url}}/api/userinfo
|
||||||
Accept: application/json
|
Accept: application/json
|
||||||
Authorization: Bearer {{$auth.token("oauth2_email")}}
|
Authorization: Bearer {{$auth.token("oauth2_email")}}
|
||||||
|
|
||||||
### user profile full
|
### user profile full
|
||||||
|
# @no-cookie-jar
|
||||||
GET {{base_url}}/api/userinfo
|
GET {{base_url}}/api/userinfo
|
||||||
Accept: application/json
|
Accept: application/json
|
||||||
Authorization: Bearer {{$auth.token("oauth2_profile")}}
|
Authorization: Bearer {{$auth.token("oauth2_profile")}}
|
||||||
|
|
||||||
### user crm attributes
|
### user crm attributes
|
||||||
|
# @no-cookie-jar
|
||||||
GET {{base_url}}/api/crm-attributes
|
GET {{base_url}}/api/crm-attributes
|
||||||
Accept: application/json
|
Accept: application/json
|
||||||
Authorization: Bearer {{$auth.token("oauth2_profile")}}
|
Authorization: Bearer {{$auth.token("oauth2_profile")}}
|
||||||
|
|
||||||
### API last update at
|
### API last update at
|
||||||
|
# @no-cookie-jar
|
||||||
GET {{base_url}}/api/last-update
|
GET {{base_url}}/api/last-update
|
||||||
Accept: application/json
|
Accept: application/json
|
||||||
Authorization: Bearer {{$auth.token("oauth2_api")}}
|
Authorization: Bearer {{$auth.token("oauth2_api")}}
|
||||||
|
|
||||||
### API countries
|
### API countries
|
||||||
|
# @no-cookie-jar
|
||||||
GET {{base_url}}/api/countries
|
GET {{base_url}}/api/countries
|
||||||
Accept: application/json
|
Accept: application/json
|
||||||
Authorization: Bearer {{$auth.token("oauth2_api")}}
|
Authorization: Bearer {{$auth.token("oauth2_api")}}
|
||||||
|
|
||||||
### API hotels
|
### API hotels
|
||||||
|
# @no-cookie-jar
|
||||||
GET {{base_url}}/api/hotels
|
GET {{base_url}}/api/hotels
|
||||||
Accept: application/json
|
Accept: application/json
|
||||||
Authorization: Bearer {{$auth.token("oauth2_api")}}
|
Authorization: Bearer {{$auth.token("oauth2_api")}}
|
||||||
|
|
||||||
### API hotel
|
### API hotel
|
||||||
|
# @no-cookie-jar
|
||||||
GET {{base_url}}/api/hotels/198924
|
GET {{base_url}}/api/hotels/198924
|
||||||
Accept: application/json
|
Accept: application/json
|
||||||
Authorization: Bearer {{$auth.token("oauth2_api")}}
|
Authorization: Bearer {{$auth.token("oauth2_api")}}
|
||||||
|
|
||||||
### API pickups
|
### API pickups
|
||||||
|
# @no-cookie-jar
|
||||||
GET {{base_url}}/api/pickups
|
GET {{base_url}}/api/pickups
|
||||||
Accept: application/json
|
Accept: application/json
|
||||||
Authorization: Bearer {{$auth.token("oauth2_api")}}
|
Authorization: Bearer {{$auth.token("oauth2_api")}}
|
||||||
|
|
||||||
### API pickup
|
### API pickup
|
||||||
|
# @no-cookie-jar
|
||||||
GET {{base_url}}/api/pickups/1
|
GET {{base_url}}/api/pickups/1
|
||||||
Accept: application/json
|
Accept: application/json
|
||||||
Authorization: Bearer {{$auth.token("oauth2_api")}}
|
Authorization: Bearer {{$auth.token("oauth2_api")}}
|
||||||
|
|
||||||
### API travels
|
### API travels
|
||||||
|
# @no-cookie-jar
|
||||||
GET {{base_url}}/api/travels
|
GET {{base_url}}/api/travels
|
||||||
Accept: application/json
|
Accept: application/json
|
||||||
Authorization: Bearer {{$auth.token("oauth2_api")}}
|
Authorization: Bearer {{$auth.token("oauth2_api")}}
|
||||||
|
|
||||||
### API travel
|
### API travel
|
||||||
GET {{base_url}}/api/travels/DWWWE211125
|
# @no-cookie-jar
|
||||||
|
GET {{base_url}}/api/travels/DPWMP140326
|
||||||
Accept: application/json
|
Accept: application/json
|
||||||
Authorization: Bearer {{$auth.token("oauth2_api")}}
|
Authorization: Bearer {{$auth.token("oauth2_api")}}
|
||||||
|
|
||||||
### API travel remote
|
### API travel remote
|
||||||
|
# @no-cookie-jar
|
||||||
GET {{base_url}}/api/travels/11603
|
GET {{base_url}}/api/travels/11603
|
||||||
Accept: application/json
|
Accept: application/json
|
||||||
Authorization: Bearer {{$auth.token("oauth2_api")}}
|
Authorization: Bearer {{$auth.token("oauth2_api")}}
|
||||||
|
|
||||||
### API hotel availability remote
|
### API hotel availability remote
|
||||||
GET {{base_url}}/api/travels/11603/152546/2026-01-03/availability
|
# @no-cookie-jar
|
||||||
|
GET {{base_url}}/api/travels/11606/152546/2026-01-24/availability
|
||||||
Accept: application/json
|
Accept: application/json
|
||||||
Authorization: Bearer {{$auth.token("oauth2_api")}}
|
Authorization: Bearer {{$auth.token("oauth2_api")}}
|
||||||
|
|
||||||
### API products remote
|
### API products remote
|
||||||
|
# @no-cookie-jar
|
||||||
GET {{base_url}}/api/products
|
GET {{base_url}}/api/products
|
||||||
Accept: application/json
|
Accept: application/json
|
||||||
Authorization: Bearer {{$auth.token("oauth2_api")}}
|
Authorization: Bearer {{$auth.token("oauth2_api")}}
|
||||||
|
|
||||||
|
### API contact form
|
||||||
|
# @no-cookie-jar
|
||||||
|
POST {{base_url}}/api/contactform
|
||||||
|
Accept: application/json
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: Bearer {{$auth.token("oauth2_api")}}
|
||||||
|
|
||||||
|
{
|
||||||
|
"lastName": "{{$random.name.lastName}}",
|
||||||
|
"firstName": "{{$random.name.firstName}}",
|
||||||
|
"gender": "d",
|
||||||
|
"street": "{{$random.address.streetAddress}}",
|
||||||
|
"zipCode": "{{$random.address.zipCode}}",
|
||||||
|
"city": "{{$random.address.city}}",
|
||||||
|
"email": "{{$random.email}}",
|
||||||
|
"phone": "{{$random.phoneNumber.cellPhone}}"
|
||||||
|
}
|
||||||
|
|
||||||
|
### API pickups planning webhook
|
||||||
|
# @no-cookie-jar
|
||||||
|
POST {{base_url}}/api/pickups-planning
|
||||||
|
Accept: application/json
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: Bearer {{$auth.token("oauth2_api")}}
|
||||||
|
|
||||||
|
< ./assets/json/zustiegplanung.json
|
||||||
|
|
||||||
|
### API pickups planning
|
||||||
|
# @no-cookie-jar
|
||||||
|
GET {{base_url}}/api/pickups-planning/DPWWTS191125
|
||||||
|
Accept: application/json
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: Bearer {{$auth.token("oauth2_api")}}
|
||||||
@@ -1,13 +1,15 @@
|
|||||||
import './bootstrap.js'
|
import './bootstrap.js'
|
||||||
|
import './loading.js'
|
||||||
|
|
||||||
import './styles/app.css'
|
import './styles/app.css'
|
||||||
|
|
||||||
import '@iframe-resizer/child'
|
|
||||||
|
|
||||||
import htmx from 'htmx.org'
|
import htmx from 'htmx.org'
|
||||||
|
|
||||||
window.htmx = htmx
|
window.htmx = htmx
|
||||||
htmx.config.includeIndicatorStyles = false
|
htmx.config.includeIndicatorStyles = false
|
||||||
htmx.config.historyEnabled = false
|
htmx.config.historyEnabled = true
|
||||||
htmx.config.historyCacheSize = 0
|
htmx.config.historyCacheSize = 10
|
||||||
htmx.config.allowScriptTags = false
|
htmx.config.allowScriptTags = false
|
||||||
htmx.config.withCredentials = true
|
htmx.config.withCredentials = true
|
||||||
htmx.config.selfRequestsOnly = false
|
htmx.config.selfRequestsOnly = false
|
||||||
|
htmx.config.timeout = 50000 // 50 seconds - slightly higher than backend timeout (45s)
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
import { Controller } from '@hotwired/stimulus'
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Monitors birthday input fields (day, month, year) and dispatches a custom event
|
||||||
|
* only when all three fields are filled with valid values.
|
||||||
|
*
|
||||||
|
* This prevents premature HTMX refreshes when users are still entering the date,
|
||||||
|
* improving UX by waiting until the complete date is entered.
|
||||||
|
*/
|
||||||
|
export default class extends Controller {
|
||||||
|
static targets = ['day', 'month', 'year']
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Checks if all birthday fields are filled and dispatches a completion event.
|
||||||
|
*
|
||||||
|
* Called on input/change events from the day, month, and year fields.
|
||||||
|
* Only dispatches the 'birthday:complete' event when all three fields
|
||||||
|
* contain valid values that could form a complete date.
|
||||||
|
*/
|
||||||
|
check() {
|
||||||
|
const day = this.dayTarget.value.trim()
|
||||||
|
const month = this.monthTarget.value.trim()
|
||||||
|
const year = this.yearTarget.value.trim()
|
||||||
|
|
||||||
|
if (false === this.isComplete(day, month, year)) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
this.element.dispatchEvent(new CustomEvent('birthday:complete', { bubbles: true }))
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Validates that all date components are filled with plausible values.
|
||||||
|
*
|
||||||
|
* @param {string} day The day value
|
||||||
|
* @param {string} month The month value
|
||||||
|
* @param {string} year The year value
|
||||||
|
*
|
||||||
|
* @returns {boolean} True if all fields contain complete values
|
||||||
|
*/
|
||||||
|
isComplete(day, month, year) {
|
||||||
|
// Day: 1-2 digits
|
||||||
|
if (0 === day.length || day.length > 2) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// Month: 1-2 digits
|
||||||
|
if (0 === month.length || month.length > 2) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
// Year: exactly 4 digits for a complete year
|
||||||
|
if (4 !== year.length) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
|
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
import { Controller } from '@hotwired/stimulus'
|
|
||||||
|
|
||||||
export default class extends Controller {
|
|
||||||
static targets = ['field']
|
|
||||||
static values = { availabilities: Object }
|
|
||||||
|
|
||||||
toggle(event) {
|
|
||||||
let field = event.target
|
|
||||||
let id = field.value
|
|
||||||
let availabilities = this.availabilitiesValue
|
|
||||||
if (field.checked) {
|
|
||||||
availabilities[id].available--
|
|
||||||
} else {
|
|
||||||
availabilities[id].available++
|
|
||||||
}
|
|
||||||
field.disabled = 0 >= availabilities[id].available
|
|
||||||
field.classList.toggle('cursor-not-allowed', field.disabled)
|
|
||||||
this.availabilitiesValue = availabilities
|
|
||||||
}
|
|
||||||
|
|
||||||
availabilitiesValueChanged(availabilities) {
|
|
||||||
this.fieldTargets.forEach((field) => {
|
|
||||||
let id = field.value
|
|
||||||
if (false === field.checked && 0 >= availabilities[id].available) {
|
|
||||||
field.disabled = true
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,32 @@
|
|||||||
|
import { Controller } from '@hotwired/stimulus'
|
||||||
|
|
||||||
|
export default class extends Controller {
|
||||||
|
|
||||||
|
static classes = [ 'hidden' ]
|
||||||
|
static targets = [ 'container', 'checkboxGroup' ]
|
||||||
|
static values = { visible: Boolean }
|
||||||
|
|
||||||
|
connect() {
|
||||||
|
this.updateVisibility()
|
||||||
|
}
|
||||||
|
|
||||||
|
check() {
|
||||||
|
this.updateVisibility()
|
||||||
|
}
|
||||||
|
|
||||||
|
updateVisibility() {
|
||||||
|
if (!this.hasCheckboxGroupTarget) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
const checkboxes = this.checkboxGroupTarget.querySelectorAll('input[type="checkbox"]')
|
||||||
|
const hasChecked = Array.from(checkboxes).some(checkbox => checkbox.checked)
|
||||||
|
this.visibleValue = hasChecked
|
||||||
|
}
|
||||||
|
|
||||||
|
visibleValueChanged(visible) {
|
||||||
|
if (this.hasContainerTarget) {
|
||||||
|
this.containerTarget.classList.toggle(this.hiddenClass, false === visible)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
import { Controller } from '@hotwired/stimulus';
|
||||||
|
|
||||||
|
export default class extends Controller {
|
||||||
|
static values = {
|
||||||
|
payload: Object
|
||||||
|
};
|
||||||
|
|
||||||
|
connect() {
|
||||||
|
if (typeof window.dataLayer !== 'undefined') {
|
||||||
|
window.dataLayer.push(this.payloadValue);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,23 +1,23 @@
|
|||||||
import { Controller } from '@hotwired/stimulus'
|
import {Controller} from '@hotwired/stimulus'
|
||||||
|
|
||||||
export default class extends Controller {
|
export default class extends Controller {
|
||||||
|
|
||||||
static targets = [ 'fields', 'field', 'addButton', 'index' ]
|
static targets = ['fields', 'field', 'addButton', 'index']
|
||||||
static values = {
|
static values = {
|
||||||
prototype: String,
|
prototype: String,
|
||||||
maxItems: Number,
|
maxItems: Number,
|
||||||
itemsCount: Number,
|
itemsCount: Number,
|
||||||
}
|
}
|
||||||
|
|
||||||
connect () {
|
connect() {
|
||||||
this.index = this.itemsCountValue = this.fieldTargets.length
|
this.itemsCountValue = this.fieldTargets.length
|
||||||
}
|
}
|
||||||
|
|
||||||
addItem() {
|
addItem() {
|
||||||
let prototype = JSON.parse(this.prototypeValue)
|
const index = this.fieldTargets.length + 1
|
||||||
const newField = prototype.replace(/__name__/g, this.index)
|
const prototype = JSON.parse(this.prototypeValue)
|
||||||
|
const newField = prototype.replace(/__name__/g, index)
|
||||||
this.fieldsTarget.insertAdjacentHTML('beforeend', newField)
|
this.fieldsTarget.insertAdjacentHTML('beforeend', newField)
|
||||||
this.index++
|
|
||||||
this.itemsCountValue++
|
this.itemsCountValue++
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,14 +0,0 @@
|
|||||||
import { Controller } from '@hotwired/stimulus'
|
|
||||||
|
|
||||||
export default class extends Controller {
|
|
||||||
static values = { offsetTop: { type: Number}}
|
|
||||||
connect() {
|
|
||||||
if ('parentIframe' in window) {
|
|
||||||
window.iFrameResizer = {
|
|
||||||
onReady: function () {
|
|
||||||
window.parentIFrame.scrollTo(0, this.offsetTopValue)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,12 +0,0 @@
|
|||||||
import { Controller} from '@hotwired/stimulus'
|
|
||||||
|
|
||||||
export default class extends Controller {
|
|
||||||
|
|
||||||
static targets = [ 'indicator' ]
|
|
||||||
static classes = [ 'hidden' ]
|
|
||||||
|
|
||||||
toggle() {
|
|
||||||
this.indicatorTarget.classList.remove(this.hiddenClass)
|
|
||||||
this.element.scrollIntoView({ block: 'start', behavior: 'smooth'})
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
import {Controller} from '@hotwired/stimulus'
|
||||||
|
|
||||||
|
export default class extends Controller {
|
||||||
|
|
||||||
|
static targets = ['field', 'display', 'buttonInc', 'buttonDec']
|
||||||
|
|
||||||
|
static values = {
|
||||||
|
current: Number,
|
||||||
|
min: Number,
|
||||||
|
max: Number
|
||||||
|
}
|
||||||
|
|
||||||
|
connect() {
|
||||||
|
this.currentValue = parseInt(this.fieldTarget.value) || 0
|
||||||
|
this.updateForm()
|
||||||
|
}
|
||||||
|
|
||||||
|
increase() {
|
||||||
|
if (null !== this.maxValue && this.currentValue >= this.maxValue) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.currentValue = this.currentValue + 1
|
||||||
|
this.updateForm()
|
||||||
|
}
|
||||||
|
|
||||||
|
decrease() {
|
||||||
|
if (null !== this.minValue && this.currentValue <= this.minValue) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
this.currentValue = this.currentValue - 1
|
||||||
|
this.updateForm()
|
||||||
|
}
|
||||||
|
|
||||||
|
updateForm() {
|
||||||
|
this.displayTarget.innerText = this.currentValue
|
||||||
|
this.fieldTarget.value = this.currentValue
|
||||||
|
|
||||||
|
this.buttonIncTarget.disabled = null !== this.maxValue && this.currentValue >= this.maxValue
|
||||||
|
this.buttonDecTarget.disabled = null !== this.minValue && this.currentValue <= this.minValue
|
||||||
|
|
||||||
|
// Trigger change event to fire HTMX request
|
||||||
|
this.fieldTarget.dispatchEvent(new Event('change', {bubbles: true}))
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
import { Controller } from '@hotwired/stimulus'
|
||||||
|
import Toastify from 'toastify-js'
|
||||||
|
|
||||||
|
export default class extends Controller {
|
||||||
|
|
||||||
|
static values = { text: String, class: String }
|
||||||
|
|
||||||
|
connect() {
|
||||||
|
// Show toast from Stimulus values (existing functionality)
|
||||||
|
if (this.hasTextValue) {
|
||||||
|
this.showToast(this.textValue, this.classValue)
|
||||||
|
}
|
||||||
|
|
||||||
|
// Bind handler for proper cleanup
|
||||||
|
this.boundHandleNotifications = this.handleNotifications.bind(this)
|
||||||
|
|
||||||
|
// Listen for custom HTMX notification events on document.body
|
||||||
|
// Events from HX-Trigger response headers bubble up to document.body
|
||||||
|
document.body.addEventListener('showNotifications', this.boundHandleNotifications)
|
||||||
|
}
|
||||||
|
|
||||||
|
disconnect() {
|
||||||
|
document.body.removeEventListener('showNotifications', this.boundHandleNotifications)
|
||||||
|
}
|
||||||
|
|
||||||
|
handleNotifications(event) {
|
||||||
|
// HTMX wraps the trigger value in an object with 'value' and 'elt' properties
|
||||||
|
// event.detail.value contains the actual array from the HX-Trigger header
|
||||||
|
const notifications = event.detail?.value || event.detail || []
|
||||||
|
|
||||||
|
if (Array.isArray(notifications)) {
|
||||||
|
notifications.forEach((notification, index) => {
|
||||||
|
const className = this.getClassForType(notification.type)
|
||||||
|
this.showToast(notification.message, className)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
showToast(text, className = '') {
|
||||||
|
Toastify({
|
||||||
|
duration: 5000,
|
||||||
|
text: text,
|
||||||
|
gravity: 'top',
|
||||||
|
position: 'right',
|
||||||
|
className: className,
|
||||||
|
close: true,
|
||||||
|
}).showToast()
|
||||||
|
}
|
||||||
|
|
||||||
|
getClassForType(type) {
|
||||||
|
const typeMap = {
|
||||||
|
'success': 'toastify--success',
|
||||||
|
'warning': 'toastify--warning',
|
||||||
|
'error': 'toastify--error',
|
||||||
|
'info': 'toastify--info',
|
||||||
|
}
|
||||||
|
|
||||||
|
return typeMap[type] || 'toastify--info'
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,18 +1,26 @@
|
|||||||
import { Controller } from '@hotwired/stimulus'
|
import {Controller} from '@hotwired/stimulus'
|
||||||
|
|
||||||
export default class extends Controller {
|
export default class extends Controller {
|
||||||
|
static classes = ['closed', 'open', 'iconOpen']
|
||||||
static classes = [ 'closed' ]
|
static targets = ['content', 'icon', 'container']
|
||||||
static targets = [ 'toggle', 'icon' ]
|
|
||||||
static values = {
|
static values = {
|
||||||
open: {
|
open: {
|
||||||
type: Boolean,
|
type: Boolean,
|
||||||
default: true,
|
default: true,
|
||||||
},
|
},
|
||||||
|
storageKey: {
|
||||||
|
type: String,
|
||||||
|
default: ''
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
initialize() {
|
initialize() {
|
||||||
this.target = this.hasToggleTarget ? this.toggleTarget : this.element
|
this.target = this.hasContentTarget ? this.contentTarget : this.element
|
||||||
|
|
||||||
|
// Restore state from storage if storageKey is provided
|
||||||
|
if (this.hasStorageKey()) {
|
||||||
|
this.restoreState()
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
toggle() {
|
toggle() {
|
||||||
@@ -30,10 +38,37 @@ export default class extends Controller {
|
|||||||
openValueChanged(open) {
|
openValueChanged(open) {
|
||||||
this.target.classList.toggle(this.closedClass, false === open)
|
this.target.classList.toggle(this.closedClass, false === open)
|
||||||
|
|
||||||
if (false === this.hasIconTarget) {
|
if (this.hasIconTarget) {
|
||||||
return
|
let iconClass = this.hasIconOpenClass ? this.iconOpenClass : 'rotate-90'
|
||||||
|
this.iconTarget.classList.toggle(iconClass, true === open)
|
||||||
}
|
}
|
||||||
|
|
||||||
this.iconTarget.classList.toggle('rotate-90', true === open)
|
// Toggle class on container element (or controller element) if specified
|
||||||
|
if (this.hasOpenClass) {
|
||||||
|
const container = this.hasContainerTarget ? this.containerTarget : this.element
|
||||||
|
this.openClasses.forEach(cls => {
|
||||||
|
container.classList.toggle(cls, true === open)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
// Save state to storage if storageKey is provided
|
||||||
|
if (this.hasStorageKey()) {
|
||||||
|
this.saveState()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
hasStorageKey() {
|
||||||
|
return this.storageKeyValue && this.storageKeyValue.trim() !== ''
|
||||||
|
}
|
||||||
|
|
||||||
|
saveState() {
|
||||||
|
sessionStorage.setItem(`toggle_${this.storageKeyValue}`, this.openValue.toString())
|
||||||
|
}
|
||||||
|
|
||||||
|
restoreState() {
|
||||||
|
const savedState = sessionStorage.getItem(`toggle_${this.storageKeyValue}`)
|
||||||
|
if (savedState !== null) {
|
||||||
|
this.openValue = savedState === 'true'
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -16,14 +16,17 @@ export default class extends Controller {
|
|||||||
trigger: 'click',
|
trigger: 'click',
|
||||||
allowHTML: true,
|
allowHTML: true,
|
||||||
interactive: true,
|
interactive: true,
|
||||||
|
appendTo: document.body,
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
options = {
|
options = {
|
||||||
content: this.contentValue,
|
content: this.contentValue,
|
||||||
placement,
|
placement,
|
||||||
touch: false,
|
touch: false,
|
||||||
|
trigger: 'mouseenter focus',
|
||||||
allowHTML: true,
|
allowHTML: true,
|
||||||
interactive: true,
|
interactive: true,
|
||||||
|
appendTo: document.body,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (this.hasTriggerTarget) {
|
if (this.hasTriggerTarget) {
|
||||||
|
|||||||
|
After Width: | Height: | Size: 10 KiB |
|
After Width: | Height: | Size: 5.3 KiB |
|
After Width: | Height: | Size: 11 KiB |
|
After Width: | Height: | Size: 44 KiB |
@@ -0,0 +1,9 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<svg viewBox="0 0 130 130" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g transform="translate(3, 28)">
|
||||||
|
<path d="M107,0.3c-36.4,5.5 -81.6,19.1 -81.6,38.2c0,17.7 41.8,13.2 41.8,13.2c0,0 -67,22.3 -67,-7c0,-33.2 84.5,-44.4 106.8,-44.4Z" fill="#0084d4"/>
|
||||||
|
<path d="M17,73.5c36.4,-5.4 81.6,-19.1 81.6,-38.2c0,-17.7 -41.8,-13.2 -41.8,-13.2c0,0 67,-22.3 67,7c0,33.3 -84.5,44.4 -106.8,44.4Z" fill="#f8c62f"/>
|
||||||
|
<path d="M60.7,34.3l-12.8,4l12.2,0.8l-0.4,-2.4l1,-2.4Z" fill="#0084d4"/>
|
||||||
|
<path d="M75.9,35.2l-9.2,2.9l-3.5,9.7l-1.7,-11.3l4,-10.7l1.7,7.9l8.7,1.5Z" fill="#f8c62f"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 628 B |
|
After Width: | Height: | Size: 285 KiB |
|
After Width: | Height: | Size: 245 KiB |
|
After Width: | Height: | Size: 313 KiB |
|
After Width: | Height: | Size: 417 KiB |
|
After Width: | Height: | Size: 384 KiB |
|
After Width: | Height: | Size: 466 KiB |
|
After Width: | Height: | Size: 480 KiB |
|
After Width: | Height: | Size: 339 KiB |
@@ -1,236 +0,0 @@
|
|||||||
<svg xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<symbol id="icon-dots" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M12 6.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5ZM12 12.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5ZM12 18.75a.75.75 0 1 1 0-1.5.75.75 0 0 1 0 1.5Z" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-feedback" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M7.5 8.25h9m-9 3H12m-9.75 1.51c0 1.6 1.123 2.994 2.707 3.227 1.129.166 2.27.293 3.423.379.35.026.67.21.865.501L12 21l2.755-4.133a1.14 1.14 0 01.865-.501 48.172 48.172 0 003.423-.379c1.584-.233 2.707-1.626 2.707-3.228V6.741c0-1.602-1.123-2.995-2.707-3.228A48.394 48.394 0 0012 3c-2.392 0-4.744.175-7.043.513C3.373 3.746 2.25 5.14 2.25 6.741v6.018z" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-login" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M15.75 9V5.25A2.25 2.25 0 0013.5 3h-6a2.25 2.25 0 00-2.25 2.25v13.5A2.25 2.25 0 007.5 21h6a2.25 2.25 0 002.25-2.25V15m3 0l3-3m0 0l-3-3m3 3H9" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-logout" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M15.75 9V5.25A2.25 2.25 0 0013.5 3h-6a2.25 2.25 0 00-2.25 2.25v13.5A2.25 2.25 0 007.5 21h6a2.25 2.25 0 002.25-2.25V15M12 9l-3 3m0 0l3 3m-3-3h12.75" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-alert" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M12 9v3.75m9-.75a9 9 0 11-18 0 9 9 0 0118 0zm-9 3.75h.008v.008H12v-.008z" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-close" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M6 18L18 6M6 6l12 12" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-back" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M9 15L3 9m0 0l6-6M3 9h12a6 6 0 010 12h-3" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-list" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M8.25 6.75h12M8.25 12h12m-12 5.25h12M3.75 6.75h.007v.008H3.75V6.75zm.375 0a.375.375 0 11-.75 0 .375.375 0 01.75 0zM3.75 12h.007v.008H3.75V12zm.375 0a.375.375 0 11-.75 0 .375.375 0 01.75 0zm-.375 5.25h.007v.008H3.75v-.008zm.375 0a.375.375 0 11-.75 0 .375.375 0 01.75 0z" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-menu" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M3.75 6.75h16.5M3.75 12h16.5m-16.5 5.25h16.5" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-edit" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M16.862 4.487l1.687-1.688a1.875 1.875 0 112.652 2.652L10.582 16.07a4.5 4.5 0 01-1.897 1.13L6 18l.8-2.685a4.5 4.5 0 011.13-1.897l8.932-8.931zm0 0L19.5 7.125M18 14v4.75A2.25 2.25 0 0115.75 21H5.25A2.25 2.25 0 013 18.75V8.25A2.25 2.25 0 015.25 6H10" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-plus" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M12 4.5v15m7.5-7.5h-15" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-minus" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M19.5 12h-15" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-search" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M21 21l-5.197-5.197m0 0A7.5 7.5 0 105.196 5.196a7.5 7.5 0 0010.607 10.607z" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-user" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M15.75 6a3.75 3.75 0 11-7.5 0 3.75 3.75 0 017.5 0zM4.501 20.118a7.5 7.5 0 0114.998 0A17.933 17.933 0 0112 21.75c-2.676 0-5.216-.584-7.499-1.632z" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-users" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M15 19.128a9.38 9.38 0 002.625.372 9.337 9.337 0 004.121-.952 4.125 4.125 0 00-7.533-2.493M15 19.128v-.003c0-1.113-.285-2.16-.786-3.07M15 19.128v.106A12.318 12.318 0 018.624 21c-2.331 0-4.512-.645-6.374-1.766l-.001-.109a6.375 6.375 0 0111.964-3.07M12 6.375a3.375 3.375 0 11-6.75 0 3.375 3.375 0 016.75 0zm8.25 2.25a2.625 2.625 0 11-5.25 0 2.625 2.625 0 015.25 0z" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-delete" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M14.74 9l-.346 9m-4.788 0L9.26 9m9.968-3.21c.342.052.682.107 1.022.166m-1.022-.165L18.16 19.673a2.25 2.25 0 01-2.244 2.077H8.084a2.25 2.25 0 01-2.244-2.077L4.772 5.79m14.456 0a48.108 48.108 0 00-3.478-.397m-12 .562c.34-.059.68-.114 1.022-.165m0 0a48.11 48.11 0 013.478-.397m7.5 0v-.916c0-1.18-.91-2.164-2.09-2.201a51.964 51.964 0 00-3.32 0c-1.18.037-2.09 1.022-2.09 2.201v.916m7.5 0a48.667 48.667 0 00-7.5 0" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-check" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M4.5 12.75l6 6 9-13.5" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-upload" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" stroke="currentColor">
|
|
||||||
<path d="M4 16v1a3 3 0 003 3h10a3 3 0 003-3v-1m-4-8l-4-4m0 0L8 8m4-4v12"/>
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-download" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M3 16.5v2.25A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75V16.5M16.5 12L12 16.5m0 0L7.5 12m4.5 4.5V3" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-sort" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M8.25 15L12 18.75 15.75 15m-7.5-6L12 5.25 15.75 9" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-arrow-left" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M19.5 12h-15m0 0l6.75 6.75M4.5 12l6.75-6.75" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-arrow-right" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M4.5 12h15m0 0l-6.75-6.75M19.5 12l-6.75 6.75" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-document" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M19.5 14.25v-2.625a3.375 3.375 0 00-3.375-3.375h-1.5A1.125 1.125 0 0113.5 7.125v-1.5a3.375 3.375 0 00-3.375-3.375H8.25m0 12.75h7.5m-7.5 3H12M10.5 2.25H5.625c-.621 0-1.125.504-1.125 1.125v17.25c0 .621.504 1.125 1.125 1.125h12.75c.621 0 1.125-.504 1.125-1.125V11.25a9 9 0 00-9-9z" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-filter" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M12 3c2.755 0 5.455.232 8.083.678.533.09.917.556.917 1.096v1.044a2.25 2.25 0 01-.659 1.591l-5.432 5.432a2.25 2.25 0 00-.659 1.591v2.927a2.25 2.25 0 01-1.244 2.013L9.75 21v-6.568a2.25 2.25 0 00-.659-1.591L3.659 7.409A2.25 2.25 0 013 5.818V4.774c0-.54.384-1.006.917-1.096A48.32 48.32 0 0112 3z" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-refresh" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M16.023 9.348h4.992v-.001M2.985 19.644v-4.992m0 0h4.992m-4.993 0l3.181 3.183a8.25 8.25 0 0013.803-3.7M4.031 9.865a8.25 8.25 0 0113.803-3.7l3.181 3.182m0-4.991v4.99" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-settings" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M10.343 3.94c.09-.542.56-.94 1.11-.94h1.093c.55 0 1.02.398 1.11.94l.149.894c.07.424.384.764.78.93.398.164.855.142 1.205-.108l.737-.527a1.125 1.125 0 011.45.12l.773.774c.39.389.44 1.002.12 1.45l-.527.737c-.25.35-.272.806-.107 1.204.165.397.505.71.93.78l.893.15c.543.09.94.56.94 1.109v1.094c0 .55-.397 1.02-.94 1.11l-.893.149c-.425.07-.765.383-.93.78-.165.398-.143.854.107 1.204l.527.738c.32.447.269 1.06-.12 1.45l-.774.773a1.125 1.125 0 01-1.449.12l-.738-.527c-.35-.25-.806-.272-1.203-.107-.397.165-.71.505-.781.929l-.149.894c-.09.542-.56.94-1.11.94h-1.094c-.55 0-1.019-.398-1.11-.94l-.148-.894c-.071-.424-.384-.764-.781-.93-.398-.164-.854-.142-1.204.108l-.738.527c-.447.32-1.06.269-1.45-.12l-.773-.774a1.125 1.125 0 01-.12-1.45l.527-.737c.25-.35.273-.806.108-1.204-.165-.397-.505-.71-.93-.78l-.894-.15c-.542-.09-.94-.56-.94-1.109v-1.094c0-.55.398-1.02.94-1.11l.894-.149c.424-.07.765-.383.93-.78.165-.398.143-.854-.107-1.204l-.527-.738a1.125 1.125 0 01.12-1.45l.773-.773a1.125 1.125 0 011.45-.12l.737.527c.35.25.807.272 1.204.107.397-.165.71-.505.78-.929l.15-.894z" />
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-at" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" d="M16.5 12a4.5 4.5 0 11-9 0 4.5 4.5 0 019 0zm0 0c0 1.657 1.007 3 2.25 3S21 13.657 21 12a9 9 0 10-2.636 6.364M16.5 12V8.25" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-mail" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M21.75 6.75v10.5a2.25 2.25 0 01-2.25 2.25h-15a2.25 2.25 0 01-2.25-2.25V6.75m19.5 0A2.25 2.25 0 0019.5 4.5h-15a2.25 2.25 0 00-2.25 2.25m19.5 0v.243a2.25 2.25 0 01-1.07 1.916l-7.5 4.615a2.25 2.25 0 01-2.36 0L3.32 8.91a2.25 2.25 0 01-1.07-1.916V6.75" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-house" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M8.25 21v-4.875c0-.621.504-1.125 1.125-1.125h2.25c.621 0 1.125.504 1.125 1.125V21m0 0h4.5V3.545M12.75 21h7.5V10.75M2.25 21h1.5m18 0h-18M2.25 9l4.5-1.636M18.75 3l-1.5.545m0 6.205l3 1m1.5.5l-1.5-.5M6.75 7.364V3h-3v18m3-13.636l10.5-3.819" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-phone" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M2.25 6.75c0 8.284 6.716 15 15 15h2.25a2.25 2.25 0 002.25-2.25v-1.372c0-.516-.351-.966-.852-1.091l-4.423-1.106c-.44-.11-.902.055-1.173.417l-.97 1.293c-.282.376-.769.542-1.21.38a12.035 12.035 0 01-7.143-7.143c-.162-.441.004-.928.38-1.21l1.293-.97c.363-.271.527-.734.417-1.173L6.963 3.102a1.125 1.125 0 00-1.091-.852H4.5A2.25 2.25 0 002.25 4.5v2.25z" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-mobile" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M10.5 1.5H8.25A2.25 2.25 0 0 0 6 3.75v16.5a2.25 2.25 0 0 0 2.25 2.25h7.5A2.25 2.25 0 0 0 18 20.25V3.75a2.25 2.25 0 0 0-2.25-2.25H13.5m-3 0V3h3V1.5m-3 0h3m-3 18.75h3" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-calendar" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M6.75 3v2.25M17.25 3v2.25M3 18.75V7.5a2.25 2.25 0 012.25-2.25h13.5A2.25 2.25 0 0121 7.5v11.25m-18 0A2.25 2.25 0 005.25 21h13.5A2.25 2.25 0 0021 18.75m-18 0v-7.5A2.25 2.25 0 015.25 9h13.5A2.25 2.25 0 0121 11.25v7.5m-9-6h.008v.008H12v-.008zM12 15h.008v.008H12V15zm0 2.25h.008v.008H12v-.008zM9.75 15h.008v.008H9.75V15zm0 2.25h.008v.008H9.75v-.008zM7.5 15h.008v.008H7.5V15zm0 2.25h.008v.008H7.5v-.008zm6.75-4.5h.008v.008h-.008v-.008zm0 2.25h.008v.008h-.008V15zm0 2.25h.008v.008h-.008v-.008zm2.25-4.5h.008v.008H16.5v-.008zm0 2.25h.008v.008H16.5V15z" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-hand" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M10.05 4.575a1.575 1.575 0 10-3.15 0v3m3.15-3v-1.5a1.575 1.575 0 013.15 0v1.5m-3.15 0l.075 5.925m3.075.75V4.575m0 0a1.575 1.575 0 013.15 0V15M6.9 7.575a1.575 1.575 0 10-3.15 0v8.175a6.75 6.75 0 006.75 6.75h2.018a5.25 5.25 0 003.712-1.538l1.732-1.732a5.25 5.25 0 001.538-3.712l.003-2.024a.668.668 0 01.198-.471 1.575 1.575 0 10-2.228-2.228 3.818 3.818 0 00-1.12 2.687M6.9 7.575V12m6.27 4.318A4.49 4.49 0 0116.35 15m.002 0h-.002" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-copy" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M16.5 8.25V6a2.25 2.25 0 00-2.25-2.25H6A2.25 2.25 0 003.75 6v8.25A2.25 2.25 0 006 16.5h2.25m8.25-8.25H18a2.25 2.25 0 012.25 2.25V18A2.25 2.25 0 0118 20.25h-7.5A2.25 2.25 0 018.25 18v-1.5m8.25-8.25h-6a2.25 2.25 0 00-2.25 2.25v6" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-photo" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M2.25 15.75l5.159-5.159a2.25 2.25 0 013.182 0l5.159 5.159m-1.5-1.5l1.409-1.409a2.25 2.25 0 013.182 0l2.909 2.909m-18 3.75h16.5a1.5 1.5 0 001.5-1.5V6a1.5 1.5 0 00-1.5-1.5H3.75A1.5 1.5 0 002.25 6v12a1.5 1.5 0 001.5 1.5zm10.5-11.25h.008v.008h-.008V8.25zm.375 0a.375.375 0 11-.75 0 .375.375 0 01.75 0z" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-print" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
|
|
||||||
<path d="M6.72 13.829c-.24.03-.48.062-.72.096m.72-.096a42.415 42.415 0 0110.56 0m-10.56 0L6.34 18m10.94-4.171c.24.03.48.062.72.096m-.72-.096L17.66 18m0 0l.229 2.523a1.125 1.125 0 01-1.12 1.227H7.231c-.662 0-1.18-.568-1.12-1.227L6.34 18m11.318 0h1.091A2.25 2.25 0 0021 15.75V9.456c0-1.081-.768-2.015-1.837-2.175a48.055 48.055 0 00-1.913-.247M6.34 18H5.25A2.25 2.25 0 013 15.75V9.456c0-1.081.768-2.015 1.837-2.175a48.041 48.041 0 011.913-.247m10.5 0a48.536 48.536 0 00-10.5 0m10.5 0V3.375c0-.621-.504-1.125-1.125-1.125h-8.25c-.621 0-1.125.504-1.125 1.125v3.659M18 10.5h.008v.008H18V10.5zm-3 0h.008v.008H15V10.5z" stroke-linecap="round" stroke-linejoin="round"/>
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-locked" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M16.5 10.5V6.75a4.5 4.5 0 10-9 0v3.75m-.75 11.25h10.5a2.25 2.25 0 002.25-2.25v-6.75a2.25 2.25 0 00-2.25-2.25H6.75a2.25 2.25 0 00-2.25 2.25v6.75a2.25 2.25 0 002.25 2.25z" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-unlocked" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M13.5 10.5V6.75a4.5 4.5 0 119 0v3.75M3.75 21.75h10.5a2.25 2.25 0 002.25-2.25v-6.75a2.25 2.25 0 00-2.25-2.25H3.75a2.25 2.25 0 00-2.25 2.25v6.75a2.25 2.25 0 002.25 2.25z" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-mask" fill="currentColor" stroke="none" viewBox="0 0 576 512">
|
|
||||||
<!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
|
|
||||||
<path d="M288 64C39.52 64 0 182.1 0 273.5C0 379.5 78.8 448 176 448c27.33 0 51.21-6.516 66.11-36.79l19.93-40.5C268.3 358.6 278.1 352.4 288 352.1c9.9 .3711 19.7 6.501 25.97 18.63l19.93 40.5C348.8 441.5 372.7 448 400 448c97.2 0 176-68.51 176-174.5C576 182.1 536.5 64 288 64zM400 400c-18.12 0-19.56-2.924-23.04-9.986l-20.35-41.33c-13.87-26.86-38.85-43.53-66.82-44.57L288 304L286.2 304.1c-27.96 1.049-52.94 17.71-67.24 45.41l-19.93 40.49C195.6 397.1 194.1 400 176 400c-75.36 0-128-52.04-128-126.5C48 229.3 48 112 288 112s240 117.3 240 161.5C528 347.1 475.4 400 400 400zM160 192C124.7 192 96 220.7 96 256s28.65 64 64 64c35.35 0 64-28.65 64-64S195.3 192 160 192zM416 192c-35.35 0-64 28.65-64 64s28.65 64 64 64c35.35 0 64-28.65 64-64S451.3 192 416 192z"/>
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-excel" fill="currentColor" stroke="none" viewBox="0 0 384 512">
|
|
||||||
<!--! Font Awesome Pro 6.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
|
|
||||||
<path d="M365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0H64C28.65 0 0 28.65 0 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h160L224 128c0 17.67 14.33 32 32 32h79.1V448zM229.1 233.3L192 280.9L154.9 233.3C146.8 222.8 131.8 220.9 121.3 229.1C110.8 237.2 108.9 252.3 117.1 262.8L161.6 320l-44.53 57.25c-8.156 10.47-6.25 25.56 4.188 33.69C125.7 414.3 130.8 416 135.1 416c7.156 0 14.25-3.188 18.97-9.25L192 359.1l37.06 47.65C233.8 412.8 240.9 416 248 416c5.125 0 10.31-1.656 14.72-5.062c10.44-8.125 12.34-23.22 4.188-33.69L222.4 320l44.53-57.25c8.156-10.47 6.25-25.56-4.188-33.69C252.2 220.9 237.2 222.8 229.1 233.3z"/>
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-pdf" fill="currentColor" stroke="none" viewBox="0 0 384 512">
|
|
||||||
<!--! Font Awesome Pro 6.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
|
|
||||||
<path d="M365.3 93.38l-74.63-74.64C278.6 6.742 262.3 0 245.4 0H64C28.65 0 0 28.65 0 64l.0065 384c0 35.34 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM336 448c0 8.836-7.164 16-16 16H64.02c-8.838 0-16-7.164-16-16L48 64.13c0-8.836 7.164-16 16-16h160L224 128c0 17.67 14.33 32 32 32h79.1V448zM202 286.1c.877-2.688 1.74-5.398 2.582-8.145c1.434-5.762 7.488-31.54 7.488-52.47C212.1 207 197.1 192 178.6 192C160.1 192 145.1 207 145.1 225.5c0 .2969 .1641 28.81 13.85 62.3c-7.035 19.36-15.57 38.8-25.41 57.93c-21.49 10.11-39.24 22.23-52.8 36.07c-6.234 6.438-9.367 14.74-9.367 24.72c0 18.45 15.01 33.46 33.46 33.46c10.8 0 20.98-5.227 27.22-13.98c7.322-10.28 18.38-26.9 30.47-48.95c15.8-6.352 33.88-11.72 53.88-16c13.55 9.578 28.9 17.29 45.71 22.95c4.527 1.551 9.402 2.348 14.43 2.348c20.26 0 36.13-16.19 36.13-36.86c0-20.33-16.54-36.87-36.87-36.87h-3.705c-2.727 .125-20.51 1.141-45.37 5.367C216.9 308.9 208.6 298.3 202 286.1zM110.2 410.4c-3.273 4.688-12.03 2.777-12.03-5.312c0-1.754 .6289-3.43 1.729-4.555c9.02-9.219 19.94-17.05 31.85-23.72C122.3 393.1 114.3 404.7 110.2 410.4zM178.6 218.8c3.693 0 6.703 3.008 6.703 6.703c0 15.21-4.109 34.84-5.746 42.1C172.1 245 171.9 227.2 171.9 225.5C171.9 221.8 174.9 218.8 178.6 218.8zM162.3 348.3c6.611-13.48 13.22-28.46 19.38-44.7c6.389 10.92 14.56 21.86 24.96 31.97C192.6 338.8 177.4 342.9 162.3 348.3zM272.4 339.5h3.352c5.539 0 10.05 4.5 10.05 10.79c0 5.129-4.176 9.32-9.32 9.32c-2.029 0-4.059-.3164-5.852-.9414c-12.33-4.137-23.11-9.32-32.54-15.19C258.3 340.3 272.1 339.5 272.4 339.5z"/>
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-file" fill="currentColor" stroke="none" viewBox="0 0 384 512">
|
|
||||||
<!--! Font Awesome Pro 6.0.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
|
|
||||||
<path d="M365.3 93.38l-74.63-74.64C278.6 6.743 262.3 0 245.4 0L64-.0001c-35.35 0-64 28.65-64 64l.0065 384c0 35.35 28.65 64 64 64H320c35.2 0 64-28.8 64-64V138.6C384 121.7 377.3 105.4 365.3 93.38zM320 464H64.02c-8.836 0-15.1-7.163-16-15.1L48 64.13c-.0004-8.837 7.163-16 16-16h160L224 128c0 17.67 14.33 32 32 32h79.1v288C336 456.8 328.8 464 320 464z"/>
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-sigma" fill="currentColor" stroke="none" viewBox="0 0 384 512">
|
|
||||||
<!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
|
|
||||||
<path d="M335.1 136l.0005-56H83.59l165 158.7C253.3 243.2 255.1 249.5 255.1 256s-2.656 12.78-7.375 17.31L83.59 432h252.4l-.0005-56c0-13.25 10.75-24 24-24C373.2 352 384 362.8 384 376v80c0 13.25-10.75 24-24 24H23.99c-9.782 0-18.59-5.938-22.25-15.03s-1.438-19.47 5.625-26.28L197.4 256L7.364 73.31C.3015 66.5-1.917 56.13 1.739 47.03S14.21 32 23.99 32h336C373.2 32 384 42.75 384 56v80C384 149.3 373.2 160 359.1 160C346.7 160 335.1 149.3 335.1 136z"/>
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-percent" fill="currentColor" stroke="none" viewBox="0 0 384 512">
|
|
||||||
<!--! Font Awesome Pro 6.2.0 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2022 Fonticons, Inc. -->
|
|
||||||
<path d="M376.1 71.03c-9.375-9.375-24.56-9.375-33.94 0l-336 336c-9.375 9.375-9.375 24.56 0 33.94C11.72 445.7 17.84 448 24 448s12.28-2.344 16.97-7.031l336-336C386.3 95.59 386.3 80.41 376.1 71.03zM64 176c26.51 0 48-21.49 48-48S90.51 80 64 80C37.49 80 16 101.5 16 128S37.49 176 64 176zM320 336c-26.51 0-48 21.49-48 48s21.49 48 48 48c26.51 0 48-21.49 48-48S346.5 336 320 336z"/>
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-eye" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M2.036 12.322a1.012 1.012 0 010-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178z" />
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-profile" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M7.864 4.243A7.5 7.5 0 0119.5 10.5c0 2.92-.556 5.709-1.568 8.268M5.742 6.364A7.465 7.465 0 004.5 10.5a7.464 7.464 0 01-1.15 3.993m1.989 3.559A11.209 11.209 0 008.25 10.5a3.75 3.75 0 117.5 0c0 .527-.021 1.049-.064 1.565M12 10.5a14.94 14.94 0 01-3.6 9.75m6.633-4.596a18.666 18.666 0 01-2.485 5.33" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-chart" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M3.75 3v11.25A2.25 2.25 0 006 16.5h2.25M3.75 3h-1.5m1.5 0h16.5m0 0h1.5m-1.5 0v11.25A2.25 2.25 0 0118 16.5h-2.25m-7.5 0h7.5m-7.5 0l-1 3m8.5-3l1 3m0 0l.5 1.5m-.5-1.5h-9.5m0 0l-.5 1.5M9 11.25v1.5M12 9v3.75m3-6v6" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-info" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M11.25 11.25l.041-.02a.75.75 0 011.063.852l-.708 2.836a.75.75 0 001.063.853l.041-.021M21 12a9 9 0 11-18 0 9 9 0 0118 0zm-9-3.75h.008v.008H12V8.25z" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-star" fill="currentColor" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" xmlns="http://www.w3.org/2000/svg">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M11.48 3.499a.562.562 0 011.04 0l2.125 5.111a.563.563 0 00.475.345l5.518.442c.499.04.701.663.321.988l-4.204 3.602a.563.563 0 00-.182.557l1.285 5.385a.562.562 0 01-.84.61l-4.725-2.885a.563.563 0 00-.586 0L6.982 20.54a.562.562 0 01-.84-.61l1.285-5.386a.562.562 0 00-.182-.557l-4.204-3.602a.563.563 0 01.321-.988l5.518-.442a.563.563 0 00.475-.345L11.48 3.5z" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-cancel" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M9.75 9.75l4.5 4.5m0-4.5l-4.5 4.5M21 12a9 9 0 11-18 0 9 9 0 0118 0z" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-bell" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M14.857 17.082a23.848 23.848 0 005.454-1.31A8.967 8.967 0 0118 9.75v-.7V9A6 6 0 006 9v.75a8.967 8.967 0 01-2.312 6.022c1.733.64 3.56 1.085 5.455 1.31m5.714 0a24.255 24.255 0 01-5.714 0m5.714 0a3 3 0 11-5.714 0" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-folder" fill="none" stroke="currentColor" stroke-width="1.5" viewBox="0 0 24 24">
|
|
||||||
<path d="M2.25 12.75V12A2.25 2.25 0 014.5 9.75h15A2.25 2.25 0 0121.75 12v.75m-8.69-6.44l-2.12-2.12a1.5 1.5 0 00-1.061-.44H4.5A2.25 2.25 0 002.25 6v12a2.25 2.25 0 002.25 2.25h15A2.25 2.25 0 0021.75 18V9a2.25 2.25 0 00-2.25-2.25h-5.379a1.5 1.5 0 01-1.06-.44z" stroke-linecap="round" stroke-linejoin="round"/>
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-power" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M5.636 5.636a9 9 0 1 0 12.728 0M12 3v9" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-no-symbol" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor">
|
|
||||||
<path stroke-linecap="round" stroke-linejoin="round" d="M18.364 18.364A9 9 0 0 0 5.636 5.636m12.728 12.728A9 9 0 0 1 5.636 5.636m12.728 12.728L5.636 5.636" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-bus" xmlns="http://www.w3.org/2000/svg" stroke-width="1.5" viewBox="0 0 24 24" stroke="currentColor" fill="none">
|
|
||||||
<path stroke="none" d="M0 0h24v24H0z" fill="none"/>
|
|
||||||
<path d="M6 17m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0" />
|
|
||||||
<path d="M18 17m-2 0a2 2 0 1 0 4 0a2 2 0 1 0 -4 0" />
|
|
||||||
<path d="M4 17h-2v-11a1 1 0 0 1 1 -1h14a5 7 0 0 1 5 7v5h-2m-4 0h-8" />
|
|
||||||
<path d="M16 5l1.5 7l4.5 0" />
|
|
||||||
<path d="M2 10l15 0" />
|
|
||||||
<path d="M7 5l0 5" />
|
|
||||||
<path d="M12 5l0 5" />
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-ski" fill="currentColor" stroke="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
|
||||||
<!--! Font Awesome Pro 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. -->
|
|
||||||
<path d="M380.7 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0zM2.7 268.9c6.1-11.8 20.6-16.3 32.4-10.2L239.8 365l49.6-74.5-82.7-87.9c-9.5-10.1-14.4-22.4-15.1-34.9l87.7 42 49.4 52.5c12.8 13.6 14.5 34.1 4.2 49.6l-50.2 75.4 135.8 70.5c13.6 7.1 29.8 7.2 43.6 .3l15.2-7.6c11.9-5.9 26.3-1.1 32.2 10.7s1.1 26.3-10.7 32.2l-15.2 7.6c-27.5 13.7-59.9 13.5-87.2-.7L12.9 301.3C1.2 295.2-3.4 280.7 2.7 268.9zM118.9 65.6L137 74.2l8.7-17.4c4-7.9 13.6-11.1 21.5-7.2s11.1 13.6 7.2 21.5l-8.5 16.9 55.5 26.6c1.7-.9 3.5-1.7 5.4-2.5l80.9-32.4c32.4-13 68.6 6.5 75.6 40.7l12.3 59.7 62.9 30.1c12 5.7 17 20 11.3 32s-20 17-32 11.3l-54.2-25.9c-1-.3-1.9-.6-2.8-1l-229.1-110-9.2 18.4c-4 7.9-13.6 11.1-21.5 7.2s-11.1-13.6-7.2-21.5l9-18-17.6-8.4c-8-3.8-11.3-13.4-7.5-21.3s13.4-11.3 21.3-7.5zm217.3 64.7c-1-4.9-6.2-7.7-10.8-5.8l-45.7 18.3 65.5 31.5-9-43.9z"/>
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-snowboard" fill="currentColor" stroke="nonw" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512">
|
|
||||||
<!--! Font Awesome Pro 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. -->
|
|
||||||
<path d="M204.3 3c11.6-6.4 26.2-2.3 32.6 9.3l31.9 57.4c1.3 2.3 3.6 3.8 6.2 4.1l33.8 3.4c24.1 2.4 46.9 12 65.4 27.6L503.5 213.6c10.1 8.5 11.4 23.7 2.9 33.8s-23.7 11.4-33.8 2.9l-68.2-57.5-82.3 43.9 24.7 18.9c24.9 19 34.6 51.9 24.1 81.4l-28.2 79c-1.4 3.8-3.6 7-6.3 9.6l93.3 35.7c4.6 1.8 9.4 2.6 14.3 2.6H472c13.3 0 24 10.7 24 24s-10.7 24-24 24H443.8c-10.8 0-21.4-2-31.5-5.8L60.1 371.3c-11.5-4.4-22-11.2-30.8-20L7 329c-9.4-9.4-9.4-24.6 0-33.9s24.6-9.4 33.9 0l22.4 22.4c4 4 8.7 7.1 14 9.1l19.4 7.4c-2.9-11.4 2.9-23.4 14-28.1L192 272l0-68.2c0-21.2 12-40.6 31-50.1L284.4 123l-14.1-1.4c-18.3-1.8-34.5-12.5-43.4-28.5L195 35.7c-6.4-11.6-2.3-26.2 9.3-32.6zm91.8 407.2c-.3-3.4 .1-6.9 1.3-10.3l28.2-79c3.5-9.8 .3-20.8-8-27.1L240 234.4l0 42.9c0 16.1-9.7 30.7-24.6 36.9L134 348.2l162.1 62.1zM259.6 189l20.5 15.7 84.6-45.1-17.2-14.5L259.6 189zM384 48a48 48 0 1 1 96 0 48 48 0 1 1 -96 0z"/>
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-hourglass" fill="currentColor" stroke="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 384 512">
|
|
||||||
<!--! Font Awesome Pro 6.4.2 by @fontawesome - https://fontawesome.com License - https://fontawesome.com/license (Commercial License) Copyright 2023 Fonticons, Inc. -->
|
|
||||||
<path d="M24 0C10.7 0 0 10.7 0 24S10.7 48 24 48h8V67c0 40.3 16 79 44.5 107.5L158.1 256 76.5 337.5C48 366 32 404.7 32 445v19H24c-13.3 0-24 10.7-24 24s10.7 24 24 24H360c13.3 0 24-10.7 24-24s-10.7-24-24-24h-8V445c0-40.3-16-79-44.5-107.5L225.9 256l81.5-81.5C336 146 352 107.3 352 67V48h8c13.3 0 24-10.7 24-24s-10.7-24-24-24H24zM192 289.9l81.5 81.5C293 391 304 417.4 304 445v19H80V445c0-27.6 11-54 30.5-73.5L192 289.9zm0-67.9l-81.5-81.5C91 121 80 94.6 80 67V48H304V67c0 27.6-11 54-30.5 73.5L192 222.1z"/>
|
|
||||||
</symbol>
|
|
||||||
<symbol id="icon-flag-a" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 480"><g fill-rule="evenodd"><path fill="#fff" d="M640 480H0V0h640z"/><path fill="#ed2939" d="M640 480H0V320h640zm0-319.9H0V.1h640z"/></g></symbol>
|
|
||||||
<symbol id="icon-flag-ch" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 480"><g fill-rule="evenodd" stroke-width="1pt"><path fill="#d52b1e" d="M0 0h640v480H0z"/><g fill="#fff"><path d="M170 195h300v90H170z"/><path d="M275 90h90v300h-90z"/></g></g></symbol>
|
|
||||||
<symbol id="icon-flag-d" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 480"><path fill="#ffce00" d="M0 320h640v160H0z"/><path d="M0 0h640v160H0z"/><path fill="#d00" d="M0 160h640v160H0z"/></symbol>
|
|
||||||
<symbol id="icon-flag-f" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 480"><g fill-rule="evenodd" stroke-width="1pt"><path fill="#fff" d="M0 0h640v480H0z"/><path fill="#00267f" d="M0 0h213.3v480H0z"/><path fill="#f31830" d="M426.7 0H640v480H426.7z"/></g></symbol>
|
|
||||||
<symbol id="icon-flag-i" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 640 480"><g fill-rule="evenodd" stroke-width="1pt"><path fill="#fff" d="M0 0h640v480H0z"/><path fill="#009246" d="M0 0h213.3v480H0z"/><path fill="#ce2b37" d="M426.7 0H640v480H426.7z"/></g></symbol>
|
|
||||||
<!-- By Sam Herbert (@sherb), for everyone. More @ http://goo.gl/7AJzbL -->
|
|
||||||
<symbol id="icon-spinner" viewBox="0 0 44 44" xmlns="http://www.w3.org/2000/svg" stroke="currentColor">
|
|
||||||
<g fill="none" fill-rule="evenodd" stroke-width="2">
|
|
||||||
<circle cx="22" cy="22" r="1">
|
|
||||||
<animate attributeName="r"
|
|
||||||
begin="0s" dur="1.8s"
|
|
||||||
values="1; 20"
|
|
||||||
calcMode="spline"
|
|
||||||
keyTimes="0; 1"
|
|
||||||
keySplines="0.165, 0.84, 0.44, 1"
|
|
||||||
repeatCount="indefinite" />
|
|
||||||
<animate attributeName="stroke-opacity"
|
|
||||||
begin="0s" dur="1.8s"
|
|
||||||
values="1; 0"
|
|
||||||
calcMode="spline"
|
|
||||||
keyTimes="0; 1"
|
|
||||||
keySplines="0.3, 0.61, 0.355, 1"
|
|
||||||
repeatCount="indefinite" />
|
|
||||||
</circle>
|
|
||||||
<circle cx="22" cy="22" r="1">
|
|
||||||
<animate attributeName="r"
|
|
||||||
begin="-0.9s" dur="1.8s"
|
|
||||||
values="1; 20"
|
|
||||||
calcMode="spline"
|
|
||||||
keyTimes="0; 1"
|
|
||||||
keySplines="0.165, 0.84, 0.44, 1"
|
|
||||||
repeatCount="indefinite" />
|
|
||||||
<animate attributeName="stroke-opacity"
|
|
||||||
begin="-0.9s" dur="1.8s"
|
|
||||||
values="1; 0"
|
|
||||||
calcMode="spline"
|
|
||||||
keyTimes="0; 1"
|
|
||||||
keySplines="0.3, 0.61, 0.355, 1"
|
|
||||||
repeatCount="indefinite" />
|
|
||||||
</circle>
|
|
||||||
</g>
|
|
||||||
</symbol>
|
|
||||||
</svg>
|
|
||||||
|
Before Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 7.3 KiB |
|
Before Width: | Height: | Size: 4.0 KiB After Width: | Height: | Size: 4.0 KiB |
@@ -0,0 +1,673 @@
|
|||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<!-- Generator: Adobe Illustrator 20.1.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg version="1.1" id="Ebene_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
|
||||||
|
viewBox="0 0 502.8 337.7" style="enable-background:new 0 0 502.8 337.7;" xml:space="preserve">
|
||||||
|
<style type="text/css">
|
||||||
|
.st0{clip-path:url(#SVGID_2_);fill:url(#SVGID_3_);}
|
||||||
|
.st1{fill:url(#SVGID_4_);}
|
||||||
|
.st2{clip-path:url(#SVGID_6_);fill:url(#SVGID_7_);}
|
||||||
|
.st3{fill:url(#SVGID_8_);}
|
||||||
|
.st4{fill:url(#SVGID_9_);}
|
||||||
|
.st5{fill:url(#SVGID_10_);}
|
||||||
|
.st6{fill:#F3A21A;}
|
||||||
|
.st7{fill:url(#SVGID_11_);}
|
||||||
|
.st8{fill:url(#SVGID_12_);}
|
||||||
|
.st9{fill:url(#SVGID_13_);}
|
||||||
|
.st10{fill:#EB9D18;}
|
||||||
|
.st11{fill:url(#SVGID_14_);}
|
||||||
|
.st12{fill:url(#SVGID_15_);}
|
||||||
|
.st13{fill:#FFFFFF;}
|
||||||
|
.st14{fill:#ADACB0;}
|
||||||
|
.st15{fill:#494948;}
|
||||||
|
.st16{fill:#C10A27;}
|
||||||
|
</style>
|
||||||
|
<g id="Blason">
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<defs>
|
||||||
|
<path id="SVGID_1_" d="M186.7,1.6c-7.7,3.8-8.3,11.4-6.8,19c1.4,6.9,4.8,14.1,8,20.4c26.6,48.7,52.7,97.6,78,147
|
||||||
|
c7.3,14.2,14.5,28.4,21.6,42.6c6.8-4.7,13.7-9.5,20.5-14.3c-7.2-14.5-14.4-29.1-21.4-43.6C262.8,124,240,75,217.3,25.7
|
||||||
|
c-3.4-7-7.5-14.4-13.1-20c-2.6-2.6-5.4-4.5-8.5-5.3C192.9-0.3,189.9,0,186.7,1.6"/>
|
||||||
|
</defs>
|
||||||
|
<clipPath id="SVGID_2_">
|
||||||
|
<use xlink:href="#SVGID_1_" style="overflow:visible;"/>
|
||||||
|
</clipPath>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_3_" gradientUnits="userSpaceOnUse" x1="185.9588" y1="703.2838" x2="298.626" y2="480.6175" gradientTransform="matrix(1 0 0 -1 0 707.5911)">
|
||||||
|
<stop offset="1.840490e-02" style="stop-color:#2E2E2D"/>
|
||||||
|
<stop offset="6.957448e-02" style="stop-color:#414140"/>
|
||||||
|
<stop offset="0.1472" style="stop-color:#5F5E5E"/>
|
||||||
|
<stop offset="0.2218" style="stop-color:#494948"/>
|
||||||
|
<stop offset="0.3098" style="stop-color:#373636"/>
|
||||||
|
<stop offset="0.4193" style="stop-color:#1E1D1D"/>
|
||||||
|
<stop offset="0.5731" style="stop-color:#070707"/>
|
||||||
|
<stop offset="1" style="stop-color:#000000"/>
|
||||||
|
</linearGradient>
|
||||||
|
<polygon class="st0" points="181.3,-3.2 352.9,40.6 303.4,234.6 131.7,190.8 "/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path d="M283.2,191.8c-2.4-7.3-4.6-14.7-7-21.8c-8.5-25.5-15.8-51.1-24.2-76.3c-3.6-10.6-6.6-21.3-10.1-31.7
|
||||||
|
c-1.1-3.4-2.1-6.7-3.1-9.8c-0.7-2.1-0.8-4.4-1.9-6c0.1-0.9,0.4-1,0.5-1.9h0.5c0.5,2.2,1.6,3.7,2.6,5.3c1.4,0.3,2.1,0.3,3.8,0.2
|
||||||
|
c0.4-0.4,0.9-0.4,1.4-0.7c1.9-1.3,3.7-4.7,4.3-7.2c0.5-2-0.2-6.2,0.7-7.7c-0.2-0.9-0.3-1-1-1.4c0-0.9,0.1-1.4,0.5-1.9
|
||||||
|
c-0.4-0.7-1.1-0.6-1.4-1.2c-0.1-0.6-0.2-1.1-0.2-1.7c-1-2.5-2-6.2-3.6-8.4c-0.7-1-2.3-1.6-3.4-2.4c-1.7-1.3-2.8-3.6-4.1-5.3
|
||||||
|
c-0.7-0.9-2-1.4-2.9-2.2c-3.2,0.1-4.3,1.8-6.7,2.2c0-0.6,0-0.9-0.2-1.2v-0.5c-5.9-0.2-6.9,1.9-10.6,4.3c0.6,2.3,3.8,2.1,4.6,4.6
|
||||||
|
c0.7,1,0.4,2.3-0.2,2.9c0.3,1,2.1,1.9,2.9,2.4c0.3,1.9,0.5,3.2-0.2,4.8c1.3,0.7,2.7,1.6,3.1,3.1c0.4,1.4-0.7,3.4-0.5,4.1
|
||||||
|
c0.3,0.2,0.6,0.5,1,0.7c0.8,1.2,2.1,4.5,1.2,5.8c0.3,2.1,1,0.7,2.2,1.7c0.5,0.4,0.6,1.4,1,1.9c0.2,0.3,1,0.4,1.2,0.7
|
||||||
|
c0.6,2.2,1.3,4.5,1.9,6.7c1.9,4.8,3.6,10.4,5.3,15.4c10.1,30.2,18.9,60.3,29,90.5c3.4,10.2,6.6,20.7,10.1,31.2
|
||||||
|
c1.3,3.9,4.1,9.8,4.6,13.9l0.2,0.2h3.1C286.5,200.5,284.6,196.1,283.2,191.8z M233.5,27.4c-2.1-2.7-2-8.2-4.3-10.8
|
||||||
|
c0.2-1.2,0.8-1.2,1.4-1.9h1.2c1,2,1.9,4.5,2.4,7C232.7,23.1,233.4,24.7,233.5,27.4z M234.7,14.9c-0.8-0.5-1.6-1-2.4-1.4h-0.2
|
||||||
|
c0.3-1,0.8-1.3,1.4-1.9h1.7c2.2,2.3,4.4,4.7,6.7,7c0.9,0.9,2.2,1.6,2.9,2.6c3.8,6.1,1.7,20.5-1.7,26.4c-0.7,0-1.1,0-1.4-0.2
|
||||||
|
c-1.7-2.2-1.4-8.1-2.2-11.3c-1.3-5.7-2-12-3.6-17C235.5,17.6,235.5,16.1,234.7,14.9z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_4_" gradientUnits="userSpaceOnUse" x1="134.3743" y1="628.9778" x2="244.3741" y2="544.978" gradientTransform="matrix(1 0 0 -1 0 707.5911)">
|
||||||
|
<stop offset="1.840490e-02" style="stop-color:#2E2E2D"/>
|
||||||
|
<stop offset="9.394112e-02" style="stop-color:#414140"/>
|
||||||
|
<stop offset="0.2086" style="stop-color:#5F5E5E"/>
|
||||||
|
<stop offset="0.2778" style="stop-color:#494948"/>
|
||||||
|
<stop offset="0.3594" style="stop-color:#373636"/>
|
||||||
|
<stop offset="0.4611" style="stop-color:#1E1D1D"/>
|
||||||
|
<stop offset="0.6038" style="stop-color:#070707"/>
|
||||||
|
<stop offset="1" style="stop-color:#000000"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path class="st1" d="M254.8,140.4c0,0-48.7-35.8-63.8-52.3c-15.1-16.6-31.7-21.6-40.6-20.6s-14.6,7.1-14.6,7.1s-7,7.2-7.7,13.3
|
||||||
|
c-0.7,5.8-1.1,7.6,0.1,12c1.2,4.4,2.2,14.9,27.2,28.7c35.9,19.7,83.3,56.8,83.3,56.8L254.8,140.4z"/>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<defs>
|
||||||
|
<path id="SVGID_5_" d="M369.8,1.6c7.7,3.8,8.3,11.4,6.8,19c-1.4,6.9-4.8,14.1-8,20.4c-26.6,48.7-52.7,97.6-78,147
|
||||||
|
c-7.3,14.2-14.5,28.4-21.6,42.6c-6.8-4.7-13.7-9.5-20.5-14.3c7.2-14.5,14.4-29.1,21.4-43.6c23.8-48.7,46.6-97.7,69.3-147
|
||||||
|
c3.4-7,7.5-14.4,13-20c2.6-2.6,5.4-4.5,8.5-5.3C363.6-0.3,366.6,0,369.8,1.6"/>
|
||||||
|
</defs>
|
||||||
|
<clipPath id="SVGID_6_">
|
||||||
|
<use xlink:href="#SVGID_5_" style="overflow:visible;"/>
|
||||||
|
</clipPath>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_7_" gradientUnits="userSpaceOnUse" x1="-15.0273" y1="703.2908" x2="97.6398" y2="480.6245" gradientTransform="matrix(-1 0 0 -1 355.5174 707.5911)">
|
||||||
|
<stop offset="1.840490e-02" style="stop-color:#2E2E2D"/>
|
||||||
|
<stop offset="6.957448e-02" style="stop-color:#414140"/>
|
||||||
|
<stop offset="0.1472" style="stop-color:#5F5E5E"/>
|
||||||
|
<stop offset="0.2218" style="stop-color:#494948"/>
|
||||||
|
<stop offset="0.3098" style="stop-color:#373636"/>
|
||||||
|
<stop offset="0.4193" style="stop-color:#1E1D1D"/>
|
||||||
|
<stop offset="0.5731" style="stop-color:#070707"/>
|
||||||
|
<stop offset="1" style="stop-color:#000000"/>
|
||||||
|
</linearGradient>
|
||||||
|
<polygon class="st2" points="375.2,-3.2 203.6,40.6 253.1,234.6 424.8,190.8 "/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path d="M269,205h3.1l0.2-0.2c0.4-4.2,3.3-10,4.6-13.9c3.5-10.5,6.7-21,10.1-31.2c10.1-30.2,19-60.3,29-90.5
|
||||||
|
c1.7-5,3.3-10.5,5.3-15.4c0.6-2.2,1.3-4.5,1.9-6.7c0.2-0.3,1-0.4,1.2-0.7c0.4-0.5,0.5-1.5,1-1.9c1.1-1,1.9,0.4,2.2-1.7
|
||||||
|
c-0.9-1.3,0.4-4.5,1.2-5.8c0.3-0.2,0.6-0.5,1-0.7c0.2-0.7-0.9-2.7-0.5-4.1c0.5-1.5,1.8-2.4,3.1-3.1c-0.8-1.6-0.5-2.9-0.2-4.8
|
||||||
|
c0.8-0.5,2.6-1.4,2.9-2.4c-0.6-0.6-0.9-1.9-0.2-2.9c0.7-2.5,4-2.2,4.6-4.6c-3.6-2.4-4.6-4.5-10.6-4.3v0.5
|
||||||
|
c-0.2,0.3-0.2,0.6-0.2,1.2c-2.4-0.4-3.5-2-6.7-2.2c-0.9,0.8-2.2,1.2-2.9,2.2c-1.3,1.7-2.4,4-4.1,5.3c-1,0.8-2.6,1.4-3.4,2.4
|
||||||
|
c-1.6,2.2-2.6,5.9-3.6,8.4c-0.1,0.6-0.2,1.1-0.2,1.7c-0.3,0.6-1.1,0.5-1.4,1.2c0.4,0.5,0.5,1,0.5,1.9c-0.6,0.4-0.8,0.5-1,1.4
|
||||||
|
c0.9,1.5,0.2,5.7,0.7,7.7c0.7,2.5,2.4,5.9,4.3,7.2c0.5,0.4,1,0.3,1.4,0.7c1.7,0.1,2.4,0.1,3.8-0.2c1-1.6,2.1-3,2.6-5.3h0.5
|
||||||
|
c0.1,0.9,0.3,1,0.5,1.9c-1.2,1.6-1.2,3.9-1.9,6c-1.1,3.2-2,6.5-3.1,9.8c-3.5,10.4-6.5,21.1-10.1,31.7
|
||||||
|
c-8.4,25.2-15.7,50.9-24.2,76.3c-2.4,7.1-4.5,14.5-7,21.8C271.9,196.1,270.1,200.5,269,205z M322.3,21.7c0.5-2.4,1.4-4.9,2.4-7
|
||||||
|
h1.2c0.7,0.7,1.2,0.7,1.4,1.9c-2.4,2.6-2.2,8.1-4.3,10.8C323.1,24.7,323.8,23.1,322.3,21.7z M320.6,19c-1.6,5-2.3,11.3-3.6,17
|
||||||
|
c-0.8,3.2-0.5,9.1-2.2,11.3c-0.3,0.2-0.8,0.2-1.4,0.2c-3.4-5.9-5.5-20.3-1.7-26.4c0.7-1.1,2-1.8,2.9-2.6c2.3-2.3,4.5-4.7,6.7-7
|
||||||
|
h1.7c0.6,0.6,1.1,0.9,1.4,1.9h-0.2c-0.8,0.5-1.6,1-2.4,1.4C321,16.1,321.1,17.6,320.6,19z"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_8_" gradientUnits="userSpaceOnUse" x1="-66.6074" y1="629.002" x2="43.393" y2="545.0015" gradientTransform="matrix(-1 0 0 -1 355.5174 707.5911)">
|
||||||
|
<stop offset="1.840490e-02" style="stop-color:#2E2E2D"/>
|
||||||
|
<stop offset="9.394112e-02" style="stop-color:#414140"/>
|
||||||
|
<stop offset="0.2086" style="stop-color:#5F5E5E"/>
|
||||||
|
<stop offset="0.2778" style="stop-color:#494948"/>
|
||||||
|
<stop offset="0.3594" style="stop-color:#373636"/>
|
||||||
|
<stop offset="0.4611" style="stop-color:#1E1D1D"/>
|
||||||
|
<stop offset="0.6038" style="stop-color:#070707"/>
|
||||||
|
<stop offset="1" style="stop-color:#000000"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path class="st3" d="M317.8,185.3c0,0,47.4-37.1,83.3-56.8c25.1-13.7,26-24.2,27.2-28.7c1.2-4.4,0.8-6.2,0.1-12
|
||||||
|
c-0.7-6.1-7.7-13.3-7.7-13.3s-5.8-6.1-14.6-7.1c-8.9-1-25.4,4.1-40.6,20.6c-15.1,16.6-63.8,52.3-63.8,52.3L317.8,185.3z"/>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_9_" gradientUnits="userSpaceOnUse" x1="278.3112" y1="431.7694" x2="278.3112" y2="615.46" gradientTransform="matrix(1 0 0 -1 0 707.5911)">
|
||||||
|
<stop offset="0" style="stop-color:#DA9B24"/>
|
||||||
|
<stop offset="1" style="stop-color:#FDC762"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path class="st4" d="M277.9,92.2c4.7,0.1,28.4-1.5,66.9,14.2c3,1.2,3.4,1.7,4.6,4.6c6.2,18.9,8.7,44.3,7.2,60.2
|
||||||
|
c-1.5,32.2-20.5,68.7-43.8,84.7c-4.2,3.4-23.2,16.3-30.9,19.4c-2.9,1.5-4.3,1.8-8.6-0.4c-4.3-2.2-17.5-8.1-29.1-18.3
|
||||||
|
c-11.3-8.9-41.2-33.7-44.6-85.9c-0.1-41.9,5.4-52.6,7.1-59.2c1.9-3.3,1.4-4.5,5.7-5.8C216.7,104.3,247.7,91.8,277.9,92.2z"/>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_10_" gradientUnits="userSpaceOnUse" x1="278.349" y1="605.4353" x2="278.349" y2="441.3781" gradientTransform="matrix(1 0 0 -1 0 707.5911)">
|
||||||
|
<stop offset="0" style="stop-color:#F2BF4B"/>
|
||||||
|
<stop offset="1" style="stop-color:#EBAE24"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path class="st5" d="M278,99.6c4.3,0.1,26.2-1.4,61.6,13c2.8,1.1,3.1,1.6,4.2,4.3c5.7,17.4,8,40.7,6.6,55.4
|
||||||
|
c-1.4,29.7-18.9,63.2-40.3,78c-3.8,3.1-21.4,15-28.4,17.8c-2.7,1.3-3.9,1.6-7.9-0.4c-3.9-2-16.1-7.5-26.8-16.8
|
||||||
|
c-10.4-8.2-37.9-31-41.1-79.1c-0.1-38.5,5-48.4,6.5-54.5c1.7-3,1.3-4.1,5.2-5.4C221.6,110.7,250.1,99.2,278,99.6z"/>
|
||||||
|
<path class="st6" d="M278.5,245.6c-0.9,0.1-1.9-0.2-3.4-1c-2.8-1.5-11.6-5.4-19.4-12.1c-7.5-5.9-27.3-22.4-29.7-57.1
|
||||||
|
c0-27.8,3.6-34.9,4.7-39.3c0.6-1.1,0.8-1.8,1.3-2.4l46.5,44.9V245.6z"/>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_11_" gradientUnits="userSpaceOnUse" x1="304.4899" y1="551.4356" x2="304.4899" y2="478.9356" gradientTransform="matrix(1 0 0 -1 0 707.5911)">
|
||||||
|
<stop offset="0" style="stop-color:#F8B640"/>
|
||||||
|
<stop offset="1" style="stop-color:#F9C660"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path class="st7" d="M278.5,245.6c0.7,0,1.4-0.3,2.2-0.8c5.1-2,17.7-10.6,20.5-12.9c15.5-10.7,28.1-34.9,29.1-56.3
|
||||||
|
c1-10.6-0.7-27.4-4.8-40c-0.4-1.1-0.7-1.6-1.2-2.1l-45.9,44.9L278.5,245.6L278.5,245.6z"/>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_12_" gradientUnits="userSpaceOnUse" x1="232" y1="556.7395" x2="324.4" y2="556.7395" gradientTransform="matrix(1 0 0 -1 0 707.5911)">
|
||||||
|
<stop offset="0" style="stop-color:#F8B640"/>
|
||||||
|
<stop offset="1" style="stop-color:#F9C660"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path class="st8" d="M324.4,133.6c-0.4-0.4-0.9-0.6-1.8-1c-25.6-10.4-41.4-9.3-44.5-9.4c-20.1-0.3-40.7,8.1-43.6,9
|
||||||
|
c-1.4,0.5-2.1,0.9-2.5,1.5l46.5,44.9L324.4,133.6z"/>
|
||||||
|
|
||||||
|
<radialGradient id="SVGID_13_" cx="278.2325" cy="523.2651" r="49.5127" gradientTransform="matrix(1 0 0 -1 0 707.5911)" gradientUnits="userSpaceOnUse">
|
||||||
|
<stop offset="0" style="stop-color:#C2172D"/>
|
||||||
|
<stop offset="1" style="stop-color:#951922"/>
|
||||||
|
</radialGradient>
|
||||||
|
<path class="st9" d="M278.1,131.2c2.7,0.1,16.4-0.9,38.6,8.2c1.7,0.7,1.9,1,2.6,2.7c3.6,10.9,5,25.6,4.1,34.7
|
||||||
|
c-0.9,18.6-11.8,39.6-25.3,48.9c-2.4,2-13.4,9.4-17.8,11.2c-1.7,0.8-2.5,1-4.9-0.2c-2.5-1.3-10.1-4.7-16.8-10.5
|
||||||
|
c-6.5-5.1-23.8-19.4-25.8-49.6c0-24.2,3.1-30.3,4.1-34.2c1.1-1.9,0.8-2.6,3.3-3.4C242.7,138.2,260.6,130.9,278.1,131.2z"/>
|
||||||
|
<path class="st10" d="M281.3,219.5l-4-0.2c0,0-9.2,0.2-14-12.6l-20-57.6c0,0,17,7.2,21.5,22L281.3,219.5z"/>
|
||||||
|
<path class="st10" d="M307.2,158.7h-4.1l-6.5,24.8c-3.6,14.4-14.2,17.2-14.2,17.2l11.1-42h-12.9c0,0,1.2-8.8,10.5-8.8h27.2
|
||||||
|
C318.3,149.9,315,158.7,307.2,158.7z"/>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_14_" gradientUnits="userSpaceOnUse" x1="278.3005" y1="510.4355" x2="278.3005" y2="573.277" gradientTransform="matrix(1 0 0 -1 0 707.5911)">
|
||||||
|
<stop offset="0.3006" style="stop-color:#FFFFFF;stop-opacity:0.15"/>
|
||||||
|
<stop offset="1" style="stop-color:#EBAE24;stop-opacity:0"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path class="st11" d="M209.6,174.2c0,0,18.2,7.8,24,8.7c5.4,4.7,15.7,10.2,21.8,12.2c10.4,2.9,17.3,3.3,22.6,3.3
|
||||||
|
c5.3,0,15.7-0.2,24.9-4.2c5.7-2.5,14.9-7.1,20.5-13.3c7-1.6,23.7-9.7,23.7-9.7s0.9-31.3-6.8-49.4c-0.7-1.6-1.7-1.7-1.7-1.7
|
||||||
|
s-28.1-12.2-59.9-12.2s-60.5,11.9-60.5,11.9s-0.8,0-1.6,1.9C215.8,123.5,208.4,144.6,209.6,174.2z"/>
|
||||||
|
|
||||||
|
<linearGradient id="SVGID_15_" gradientUnits="userSpaceOnUse" x1="278.9793" y1="525.4617" x2="205.7293" y2="544.7117" gradientTransform="matrix(1 0 0 -1 0 707.5911)">
|
||||||
|
<stop offset="0" style="stop-color:#FFFFFF;stop-opacity:8.000000e-02"/>
|
||||||
|
<stop offset="1" style="stop-color:#EBAE24;stop-opacity:0"/>
|
||||||
|
</linearGradient>
|
||||||
|
<path class="st12" d="M281.6,268.1c-2.7,1.3-3.9,1.6-7.9-0.4c-3.9-2-16.1-7.5-26.8-16.8c-10.4-8.2-37.9-31-41.1-79.1
|
||||||
|
c-0.1-38.5,5-48.4,6.5-54.5c1.7-3,1.3-4.1,5.2-5.4c4-1.3,32.5-12.8,60.3-12.4c4.3,0.1,26.2-1.4,61.6,13c1.4,0.6,1.4,0.6,2.7,1.6
|
||||||
|
C237.8,167.7,281.6,268.1,281.6,268.1z"/>
|
||||||
|
<path class="st13" d="M248.8,34c0,0-1.3,8.4-2.7,12.1C244.7,49.9,251.8,41.9,248.8,34z"/>
|
||||||
|
<path class="st13" d="M307.8,34c0,0,1.3,8.4,2.7,12.1C311.9,49.9,304.7,41.9,307.8,34z"/>
|
||||||
|
</g>
|
||||||
|
<g id="Calque_6">
|
||||||
|
</g>
|
||||||
|
<g id="Fond_texte">
|
||||||
|
<g>
|
||||||
|
<path class="st13" d="M233.4,242.3c-12.2,0-17.7-9.7-17.7-16.5c0-5.7,2.5-10.8,7.1-14.6c-0.9-2.1-1.4-4.2-1.4-6.4
|
||||||
|
c0-6.8,6.6-14.5,16.2-14.5c3.4,0,6.6,0.7,8.8,1.9c2.9,1.7,2.9,4.3,2.9,5.1c0,1.5-0.2,5.9-0.5,7.2c-0.8,4-3.8,4.4-4.7,4.4
|
||||||
|
c-0.5,0-4.6-0.1-4.6-5.3c0-0.8-0.2-1.4-0.5-1.8c-0.5-0.5-1.3-1.1-2.5-1.1c-2.8,0-2.8,2.3-2.8,3c0,2.6,2.3,5.5,7.6,11.3
|
||||||
|
c0.9,1,3.4,3.4,5.8,5.6c0.1-0.5,0.1-0.9,0.2-1.4c-2.5-0.2-4.4-2.2-4.4-4.6c0-2.2,1.8-4.6,5.1-4.6c2.2,0,4.6,0.1,7.1,0.4h0.1
|
||||||
|
c2.8,0.4,4.7,2.5,4.7,5.3c0,4.3-2,8.9-4,12.3c1.7,1.3,3,2.1,4,2.7c1.6,1,3.6,1.6,4.5,1.6c3.7,0,5,2.8,5,4.6c0,2.6-2.2,4.6-5.2,4.6
|
||||||
|
h-5.4c-4.5,0-6.9-0.7-11.4-4C243.3,240.7,238.6,242.3,233.4,242.3z M228.9,220.4c-0.3,0.8-0.5,1.7-0.5,2.8c0,4.5,2.9,7.7,6.9,7.7
|
||||||
|
c1.3,0,2.4-0.2,3.4-0.5c-2.6-2.4-5.1-4.9-6.1-5.9C232.3,224.2,230.7,222.4,228.9,220.4z"/>
|
||||||
|
<path class="st14" d="M219.9,225.8c0-6.5,4.2-10.8,8.5-13.4c-2.1-2.9-2.7-5.2-2.7-7.7c0-4.4,4.5-10.2,11.9-10.2
|
||||||
|
c2.8,0,5.2,0.6,6.7,1.4c0.7,0.4,0.7,0.7,0.7,1.4c0,1.7-0.2,5.6-0.4,6.4c-0.2,0.8-0.3,0.9-0.6,0.9c-0.3,0-0.3-0.2-0.3-1.1
|
||||||
|
c0-1.4-0.3-3.3-1.7-4.7c-1.2-1.3-3.1-2.4-5.6-2.4c-3.3,0-7.1,2.1-7.1,7.3c0,4.3,3,7.9,8.8,14.2c1.9,2.1,8.7,8.4,10.5,9.9
|
||||||
|
c1.6-2.1,2.8-5.8,2.8-9.2c0-0.8-0.2-1.9-1.1-2.7c-0.7-0.7-1.9-0.9-2.7-0.9c-0.3,0-0.7-0.1-0.7-0.4s0.4-0.4,0.9-0.4
|
||||||
|
c1.3,0,3.6,0.1,6.7,0.4c0.8,0.1,1,0.6,1,1.1c0,4.5-3.1,10.1-5.5,13.1c3.7,3.1,6.1,4.6,7.7,5.5c1.8,1.1,4.6,2.2,6.6,2.2
|
||||||
|
c0.5,0,0.8,0.1,0.8,0.4c0,0.2-0.4,0.4-0.9,0.4h-5.4c-4.1,0-5.4-0.4-11.5-5.2c-1.3,1.3-5.7,6-13.9,6
|
||||||
|
C223.6,238,219.9,230.6,219.9,225.8z M245.8,231c-3.1-2.6-8.6-7.8-10.1-9.4c-1.4-1.6-5-5.5-6.6-7.8c-2.9,1.9-5,4.9-5,9.3
|
||||||
|
c0,6.9,4.9,11.9,11.1,11.9C240.5,235.1,243.9,232.9,245.8,231z"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path class="st14" d="M219.9,225.8c0-6.5,4.2-10.8,8.5-13.4c-2.1-2.9-2.7-5.2-2.7-7.7c0-4.4,4.5-10.2,11.9-10.2
|
||||||
|
c2.8,0,5.2,0.6,6.7,1.4c0.7,0.4,0.7,0.7,0.7,1.4c0,1.7-0.2,5.6-0.4,6.4c-0.2,0.8-0.3,0.9-0.6,0.9c-0.3,0-0.3-0.2-0.3-1.1
|
||||||
|
c0-1.4-0.3-3.3-1.7-4.7c-1.2-1.3-3.1-2.4-5.6-2.4c-3.3,0-7.1,2.1-7.1,7.3c0,4.3,3,7.9,8.8,14.2c1.9,2.1,8.7,8.4,10.5,9.9
|
||||||
|
c1.6-2.1,2.8-5.8,2.8-9.2c0-0.8-0.2-1.9-1.1-2.7c-0.7-0.7-1.9-0.9-2.7-0.9c-0.3,0-0.7-0.1-0.7-0.4s0.4-0.4,0.9-0.4
|
||||||
|
c1.3,0,3.6,0.1,6.7,0.4c0.8,0.1,1,0.6,1,1.1c0,4.5-3.1,10.1-5.5,13.1c3.7,3.1,6.1,4.6,7.7,5.5c1.8,1.1,4.6,2.2,6.6,2.2
|
||||||
|
c0.5,0,0.8,0.1,0.8,0.4c0,0.2-0.4,0.4-0.9,0.4h-5.4c-4.1,0-5.4-0.4-11.5-5.2c-1.3,1.3-5.7,6-13.9,6
|
||||||
|
C223.6,238,219.9,230.6,219.9,225.8z M245.8,231c-3.1-2.6-8.6-7.8-10.1-9.4c-1.4-1.6-5-5.5-6.6-7.8c-2.9,1.9-5,4.9-5,9.3
|
||||||
|
c0,6.9,4.9,11.9,11.1,11.9C240.5,235.1,243.9,232.9,245.8,231z"/>
|
||||||
|
</g>
|
||||||
|
<path class="st14" d="M110.2,249.4v-26.6c-0.9-1.3-1.7-2.7-2.3-4.2c-1.2-2.8-1.8-5.8-1.8-8.9s0.6-6.1,1.8-8.9
|
||||||
|
c1.2-2.7,2.8-5.1,4.8-7.2c2-2,4.5-3.7,7.2-4.8c2.8-1.2,5.8-1.8,8.9-1.8h35.6v26.6c0.9,1.3,1.7,2.7,2.3,4.2c1.2,2.8,1.8,5.8,1.8,8.9
|
||||||
|
s-0.6,6.1-1.8,8.9c-1.2,2.7-2.8,5.2-4.9,7.2c-2.1,2.1-4.5,3.7-7.2,4.9c-2.8,1.2-5.8,1.8-8.9,1.8L110.2,249.4L110.2,249.4z"/>
|
||||||
|
<path class="st13" d="M114.8,244.9v-19.7h4.4c-1.2-0.7-2.3-1.6-3.2-2.6c-1.6-1.6-2.9-3.6-3.8-5.8c-1-2.2-1.4-4.6-1.4-7.2
|
||||||
|
c0-2.5,0.5-4.9,1.4-7.2c0.9-2.2,2.2-4.1,3.9-5.8c1.6-1.6,3.6-2.9,5.8-3.9s4.6-1.4,7.2-1.4h31.1V211h-4.5c1.1,0.7,2.2,1.5,3.2,2.5
|
||||||
|
c1.7,1.6,3,3.6,4,5.8c1,2.2,1.4,4.6,1.4,7.2c0,2.5-0.5,4.9-1.4,7.2c-0.9,2.2-2.3,4.1-3.9,5.8c-1.7,1.7-3.6,3-5.8,3.9
|
||||||
|
c-2.2,1-4.6,1.4-7.2,1.4h-31.2V244.9z"/>
|
||||||
|
<path d="M154.3,197v8.4h-25.4c-1.2,0-2.2,0.4-3,1.2c-0.8,0.8-1.2,1.8-1.2,3s0.4,2.2,1.2,3.1c0.8,0.8,1.8,1.3,3,1.3h16.9
|
||||||
|
c1.8,0,3.4,0.3,4.9,1s2.9,1.5,4,2.7c1.2,1.1,2.1,2.5,2.7,4c0.7,1.5,1,3.2,1,4.9c0,1.8-0.3,3.4-1,4.9s-1.6,2.9-2.7,4
|
||||||
|
c-1.2,1.2-2.5,2.1-4,2.7c-1.5,0.7-3.2,1-4.9,1h-25.3v-8.4h25.3c1.3,0,2.3-0.4,3.1-1.2c0.8-0.8,1.2-1.8,1.2-3.1c0-1.2-0.4-2.2-1.2-3
|
||||||
|
s-1.8-1.2-3.1-1.2h-16.9c-1.8,0-3.4-0.3-4.9-1s-2.9-1.6-4-2.7c-1.1-1.2-2-2.5-2.7-4s-1-3.2-1-4.9c0-1.8,0.3-3.4,1-4.9
|
||||||
|
s1.5-2.9,2.7-4c1.1-1.1,2.5-2,4-2.7s3.2-1,4.9-1L154.3,197L154.3,197z"/>
|
||||||
|
<polygon class="st14" points="195.8,241 195.8,186.8 224.6,186.8 224.6,244.2 "/>
|
||||||
|
<polygon class="st13" points="200.4,236.9 200.4,191.4 220,191.4 220,239.1 "/>
|
||||||
|
<path d="M206,231.9v-34.8h8.4v35.7"/>
|
||||||
|
<path class="st14" d="M193.4,294.4c-4.3,0-8.4-0.8-12.2-2.5c-3.8-1.6-7.1-3.9-10-6.7c-2.9-2.9-5.1-6.2-6.7-10
|
||||||
|
c-1.6-3.8-2.5-7.9-2.5-12.2c0-4.3,0.8-8.5,2.5-12.3c1.6-3.7,3.9-7.1,6.8-9.9c2.8-2.8,6.2-5,9.9-6.6c3.8-1.6,7.9-2.5,12.2-2.5h2.5
|
||||||
|
v-16.9h28.7v48.1c0,4.2-0.8,8.3-2.5,12.2c-1.6,3.7-3.8,7.1-6.6,9.9c-2.8,2.9-6.2,5.2-10,6.8C201.7,293.6,197.6,294.4,193.4,294.4z
|
||||||
|
M193.4,260.6c-0.4,0-0.7,0.1-1,0.2s-0.6,0.3-0.8,0.5s-0.4,0.5-0.6,0.8c-0.1,0.2-0.2,0.4-0.2,0.9c0,0.4,0.1,0.7,0.2,1
|
||||||
|
c0.1,0.3,0.3,0.6,0.5,0.8c0.2,0.2,0.5,0.4,0.8,0.5s0.6,0.2,1,0.2c0.5,0,0.7-0.1,0.9-0.2c0.3-0.1,0.6-0.3,0.8-0.6
|
||||||
|
c0.2-0.2,0.4-0.5,0.5-0.8s0.2-0.6,0.2-1v-2.5h-2.3V260.6z"/>
|
||||||
|
<path class="st13" d="M193.4,289.9c-3.6,0-7.1-0.7-10.4-2.1c-3.2-1.4-6.1-3.3-8.5-5.8c-2.4-2.4-4.4-5.3-5.8-8.5
|
||||||
|
c-1.4-3.3-2.1-6.8-2.1-10.4c0-3.7,0.7-7.2,2.1-10.5c1.4-3.2,3.3-6,5.8-8.5c2.4-2.4,5.3-4.3,8.5-5.7c3.3-1.4,6.8-2.1,10.4-2.1h7
|
||||||
|
v-16.9h19.7V263c0,3.6-0.7,7.1-2.1,10.4c-1.4,3.2-3.3,6.1-5.7,8.5c-2.4,2.5-5.3,4.4-8.5,5.8C200.5,289.1,197,289.9,193.4,289.9z
|
||||||
|
M193.4,256.1c-1,0-1.9,0.2-2.8,0.5c-0.9,0.4-1.6,0.9-2.3,1.5c-0.7,0.7-1.1,1.4-1.5,2.3c-0.4,0.8-0.5,1.7-0.5,2.7s0.2,1.9,0.5,2.8
|
||||||
|
c0.4,0.9,0.9,1.6,1.5,2.3c0.6,0.6,1.4,1.1,2.3,1.5c0.9,0.4,1.8,0.5,2.8,0.5s1.9-0.2,2.7-0.5c0.9-0.4,1.6-0.9,2.3-1.5
|
||||||
|
c0.6-0.6,1.1-1.4,1.5-2.3s0.5-1.8,0.5-2.8v-7H193.4z"/>
|
||||||
|
<path d="M214.4,225.1V263c0,2.9-0.5,5.6-1.6,8.2s-2.6,4.8-4.5,6.8c-1.9,1.9-4.1,3.5-6.7,4.6c-2.6,1.1-5.3,1.6-8.2,1.6
|
||||||
|
s-5.6-0.5-8.2-1.6c-2.6-1.1-4.8-2.6-6.8-4.6c-1.9-1.9-3.5-4.2-4.6-6.8c-1.1-2.6-1.6-5.3-1.6-8.2c0-2.9,0.5-5.7,1.6-8.2
|
||||||
|
c1.1-2.5,2.6-4.8,4.6-6.7c1.9-1.9,4.2-3.4,6.8-4.5s5.3-1.6,8.2-1.6h12.7v-16.9 M193.4,275.8c1.8,0,3.4-0.3,4.9-1s2.9-1.6,4-2.7
|
||||||
|
c1.2-1.2,2.1-2.5,2.7-4.1c0.7-1.6,1-3.2,1-5v-12.7h-12.7c-1.8,0-3.4,0.3-5,1s-2.9,1.6-4.1,2.7c-1.2,1.2-2.1,2.5-2.7,4
|
||||||
|
c-0.7,1.5-1,3.2-1,4.9c0,1.8,0.3,3.4,1,5s1.6,2.9,2.7,4.1c1.2,1.2,2.5,2.1,4.1,2.7C189.9,275.5,191.6,275.8,193.4,275.8z"/>
|
||||||
|
<path class="st14" d="M31.4,294.6c-4.3,0-8.3-0.8-12.2-2.5c-3.8-1.6-7.1-3.9-10-6.7c-2.9-2.8-5.1-6.2-6.7-10
|
||||||
|
c-1.6-3.8-2.5-7.9-2.5-12.2v-48.1h28.8V232h2.6c4.3,0,8.4,0.8,12.3,2.5c3.7,1.6,7,3.8,9.8,6.7c2.8,2.8,5.1,6.1,6.7,9.8
|
||||||
|
c1.6,3.8,2.5,7.9,2.5,12.3c0,4.2-0.8,8.3-2.5,12.2c-1.6,3.7-3.8,7.1-6.6,9.9c-2.8,2.9-6.2,5.1-9.9,6.8
|
||||||
|
C39.8,293.7,35.7,294.6,31.4,294.6z M28.8,263.3c0,0.4,0.1,0.7,0.2,1c0.1,0.4,0.3,0.6,0.5,0.8c0.2,0.2,0.5,0.4,0.8,0.5
|
||||||
|
s0.6,0.2,1,0.2c0.5,0,0.7-0.1,0.9-0.2c0.3-0.1,0.6-0.3,0.8-0.6c0.2-0.2,0.4-0.5,0.5-0.8s0.2-0.6,0.2-1c0-0.5-0.1-0.7-0.2-0.9
|
||||||
|
c-0.1-0.3-0.3-0.6-0.6-0.8c-0.2-0.2-0.5-0.4-0.8-0.6c-0.2-0.1-0.4-0.2-0.9-0.2h-2.6v2.6H28.8z"/>
|
||||||
|
<path class="st13" d="M31.4,290c-3.6,0-7.1-0.7-10.4-2.1c-3.2-1.4-6.1-3.3-8.5-5.8c-2.4-2.4-4.4-5.3-5.8-8.5
|
||||||
|
c-1.4-3.3-2.1-6.8-2.1-10.4v-43.6h19.7v16.9h7.1c3.7,0,7.2,0.7,10.5,2.1c3.2,1.4,6,3.3,8.4,5.7c2.4,2.4,4.3,5.2,5.7,8.4
|
||||||
|
c1.4,3.2,2.1,6.8,2.1,10.5c0,3.6-0.7,7.1-2.1,10.4c-1.4,3.2-3.3,6.1-5.7,8.5c-2.4,2.5-5.3,4.4-8.5,5.8
|
||||||
|
C38.6,289.3,35.1,290,31.4,290z M24.3,263.3c0,1,0.2,1.9,0.5,2.8c0.4,0.9,0.9,1.6,1.5,2.3c0.6,0.6,1.4,1.1,2.3,1.5s1.8,0.5,2.8,0.5
|
||||||
|
s1.9-0.2,2.7-0.5c0.9-0.4,1.6-0.9,2.3-1.5c0.6-0.6,1.1-1.4,1.5-2.3s0.5-1.8,0.5-2.8s-0.2-1.9-0.5-2.7c-0.4-0.9-0.9-1.6-1.5-2.3
|
||||||
|
c-0.6-0.6-1.4-1.1-2.3-1.5c-0.8-0.4-1.7-0.5-2.7-0.5h-7.1C24.3,256.3,24.3,263.3,24.3,263.3z"/>
|
||||||
|
<path d="M39.6,243.9c2.5,1.1,4.8,2.6,6.7,4.5c1.9,1.9,3.4,4.1,4.5,6.7c1.1,2.5,1.6,5.3,1.6,8.2c0,2.9-0.5,5.6-1.6,8.2
|
||||||
|
s-2.6,4.8-4.5,6.8c-1.9,1.9-4.1,3.5-6.7,4.6c-2.5,1.1-5.3,1.6-8.2,1.6c-2.9,0-5.6-0.5-8.2-1.6s-4.8-2.6-6.8-4.6
|
||||||
|
c-1.9-1.9-3.5-4.2-4.6-6.8c-1.1-2.6-1.6-5.3-1.6-8.2v-37.9h8.4v16.8h12.8C34.3,242.2,37,242.8,39.6,243.9z M31.4,276
|
||||||
|
c1.8,0,3.4-0.3,4.9-1s2.9-1.6,4-2.7c1.2-1.2,2.1-2.5,2.7-4.1c0.7-1.6,1-3.2,1-5s-0.3-3.4-1-4.9s-1.6-2.9-2.7-4
|
||||||
|
c-1.2-1.2-2.5-2.1-4-2.7c-1.5-0.7-3.2-1-4.9-1H18.6v12.7c0,1.8,0.3,3.4,1,5s1.6,2.9,2.7,4.1c1.2,1.2,2.5,2.1,4.1,2.7
|
||||||
|
C27.9,275.7,29.6,276,31.4,276z"/>
|
||||||
|
<path class="st14" d="M75.9,294.6c-4.3,0-8.3-0.8-12.2-2.5c-3.8-1.6-7.1-3.9-10-6.8c-2.8-2.8-5-6.2-6.6-9.9
|
||||||
|
c-1.6-3.8-2.5-7.9-2.5-12.2c0-4.3,0.8-8.5,2.5-12.3c1.6-3.7,3.8-7,6.7-9.8c2.8-2.8,6.2-5.1,9.9-6.7c3.8-1.6,7.9-2.5,12.2-2.5
|
||||||
|
c4.3,0,8.4,0.8,12.3,2.5c3.7,1.6,7,3.8,9.8,6.6c2.9,2.8,5.2,6.2,6.8,9.9c1.6,3.8,2.5,7.9,2.5,12.3c0,4.2-0.8,8.3-2.5,12.2
|
||||||
|
c-1.6,3.8-3.9,7.1-6.7,10c-2.8,2.8-6.2,5.1-9.9,6.7C84.4,293.7,80.3,294.6,75.9,294.6z M75.9,260.8c-0.4,0-0.7,0.1-1,0.2
|
||||||
|
s-0.6,0.3-0.8,0.5c-0.2,0.2-0.4,0.5-0.6,0.8c-0.1,0.2-0.2,0.4-0.2,0.9c0,0.4,0.1,0.7,0.2,1c0.1,0.3,0.3,0.6,0.5,0.8
|
||||||
|
c0.2,0.2,0.5,0.4,0.8,0.5s0.6,0.2,1,0.2c0.4,0,0.7-0.1,1-0.2s0.6-0.3,0.8-0.5c0.2-0.2,0.4-0.5,0.5-0.8c0.1-0.3,0.2-0.6,0.2-1
|
||||||
|
c0-0.5-0.1-0.7-0.2-0.9c-0.1-0.3-0.3-0.6-0.6-0.8c-0.2-0.2-0.5-0.4-0.8-0.5C76.6,260.8,76.3,260.8,75.9,260.8z"/>
|
||||||
|
<path class="st13" d="M75.9,290c-3.6,0-7.1-0.7-10.4-2.1c-3.2-1.4-6.1-3.3-8.5-5.8c-2.4-2.4-4.3-5.3-5.7-8.5
|
||||||
|
c-1.4-3.3-2.1-6.8-2.1-10.4c0-3.7,0.7-7.2,2.1-10.5c1.4-3.2,3.3-6,5.7-8.4c2.4-2.4,5.3-4.3,8.5-5.7c3.3-1.4,6.8-2.1,10.4-2.1
|
||||||
|
c3.7,0,7.2,0.7,10.5,2.1c3.2,1.4,6,3.3,8.4,5.7c2.5,2.4,4.4,5.3,5.8,8.5c1.4,3.2,2.1,6.8,2.1,10.5c0,3.6-0.7,7.1-2.1,10.4
|
||||||
|
c-1.4,3.2-3.3,6.1-5.8,8.5c-2.4,2.4-5.3,4.4-8.5,5.7C83.2,289.3,79.6,290,75.9,290z M75.9,256.3c-1,0-1.9,0.2-2.8,0.5
|
||||||
|
c-0.9,0.4-1.6,0.9-2.3,1.5c-0.6,0.6-1.1,1.4-1.5,2.3c-0.4,0.8-0.5,1.7-0.5,2.7s0.2,1.9,0.5,2.8c0.4,0.9,0.9,1.6,1.5,2.3
|
||||||
|
c0.6,0.6,1.4,1.1,2.3,1.5c0.9,0.4,1.8,0.5,2.8,0.5s1.9-0.2,2.8-0.5c0.9-0.4,1.6-0.9,2.3-1.5c0.6-0.6,1.1-1.4,1.5-2.3
|
||||||
|
s0.5-1.8,0.5-2.8s-0.2-1.9-0.5-2.7c-0.4-0.9-0.9-1.6-1.5-2.3c-0.6-0.6-1.4-1.1-2.3-1.5S76.9,256.3,75.9,256.3z"/>
|
||||||
|
<path d="M54.9,263.3c0-2.9,0.5-5.7,1.6-8.2c1.1-2.5,2.6-4.8,4.5-6.7c1.9-1.9,4.1-3.4,6.7-4.5c2.6-1.1,5.3-1.6,8.2-1.6
|
||||||
|
s5.7,0.5,8.2,1.6s4.8,2.6,6.7,4.5s3.5,4.1,4.6,6.7c1.1,2.5,1.6,5.3,1.6,8.2c0,2.9-0.5,5.6-1.6,8.2s-2.6,4.8-4.6,6.8
|
||||||
|
c-1.9,1.9-4.2,3.5-6.7,4.6s-5.3,1.6-8.2,1.6s-5.6-0.5-8.2-1.6c-2.6-1.1-4.8-2.6-6.7-4.6c-1.9-1.9-3.4-4.2-4.5-6.8
|
||||||
|
C55.5,268.9,54.9,266.1,54.9,263.3z M63.2,263.3c0,1.8,0.3,3.4,1,5c0.7,1.6,1.6,2.9,2.7,4.1c1.2,1.2,2.5,2.1,4.1,2.7
|
||||||
|
c1.6,0.7,3.2,1,5,1s3.4-0.3,5-1c1.6-0.7,2.9-1.6,4.1-2.7c1.2-1.2,2.1-2.5,2.7-4.1c0.7-1.6,1-3.2,1-5s-0.3-3.4-1-4.9s-1.6-2.9-2.7-4
|
||||||
|
c-1.2-1.2-2.5-2.1-4.1-2.7c-1.6-0.7-3.2-1-5-1s-3.4,0.3-5,1c-1.6,0.7-2.9,1.6-4.1,2.7c-1.2,1.2-2.1,2.5-2.7,4
|
||||||
|
C63.5,259.9,63.2,261.5,63.2,263.3z"/>
|
||||||
|
<path class="st14" d="M120.9,294.4c-4.3,0-8.3-0.8-12.2-2.5c-3.8-1.6-7.1-3.9-10-6.7c-2.9-2.8-5.1-6.2-6.7-10
|
||||||
|
c-1.6-3.8-2.5-7.9-2.5-12.2c0-4.3,0.8-8.5,2.5-12.3c1.6-3.7,3.9-7.1,6.8-9.9c2.8-2.8,6.2-5,9.9-6.6c3.8-1.6,7.9-2.5,12.2-2.5
|
||||||
|
s8.5,0.8,12.3,2.5c3.7,1.6,7,3.8,9.8,6.7c2.8,2.8,5.1,6.1,6.7,9.8c1.6,3.8,2.5,7.9,2.5,12.3v31.3h-31.3V294.4z M120.9,260.6
|
||||||
|
c-0.4,0-0.7,0.1-1,0.2s-0.6,0.3-0.8,0.5s-0.4,0.5-0.6,0.8c-0.1,0.2-0.2,0.4-0.2,0.9c0,0.4,0.1,0.7,0.2,1c0.1,0.3,0.3,0.6,0.5,0.8
|
||||||
|
c0.2,0.2,0.5,0.4,0.8,0.5s0.6,0.2,1,0.2h2.5v-2.6c0-0.5-0.1-0.7-0.2-0.9c-0.1-0.3-0.3-0.6-0.6-0.8c-0.2-0.2-0.5-0.4-0.8-0.6
|
||||||
|
C121.6,260.7,121.4,260.6,120.9,260.6z"/>
|
||||||
|
<path class="st13" d="M120.9,289.9c-3.6,0-7.1-0.7-10.4-2.1c-3.2-1.4-6.1-3.3-8.5-5.8c-2.4-2.4-4.4-5.3-5.8-8.5
|
||||||
|
c-1.4-3.3-2.1-6.8-2.1-10.4c0-3.7,0.7-7.2,2.1-10.5c1.4-3.2,3.3-6,5.8-8.5c2.4-2.4,5.3-4.3,8.5-5.7c3.3-1.4,6.8-2.1,10.4-2.1
|
||||||
|
c3.7,0,7.2,0.7,10.5,2.1c3.2,1.4,6,3.3,8.4,5.7c2.4,2.4,4.3,5.2,5.7,8.4c1.4,3.2,2.1,6.8,2.1,10.5v26.8h-26.7V289.9z M120.9,256.1
|
||||||
|
c-1,0-1.9,0.2-2.8,0.5c-0.9,0.4-1.6,0.9-2.3,1.5c-0.7,0.7-1.1,1.4-1.5,2.3c-0.4,0.8-0.5,1.7-0.5,2.7s0.2,1.9,0.5,2.8
|
||||||
|
c0.4,0.9,0.9,1.6,1.5,2.3c0.6,0.6,1.4,1.1,2.3,1.5c0.9,0.4,1.8,0.5,2.8,0.5h7v-7.1c0-1-0.2-1.9-0.5-2.7c-0.4-0.9-0.9-1.6-1.5-2.3
|
||||||
|
c-0.6-0.6-1.4-1.1-2.3-1.5C122.8,256.2,121.9,256.1,120.9,256.1z"/>
|
||||||
|
<path d="M120.9,242c2.9,0,5.7,0.5,8.2,1.6s4.8,2.6,6.7,4.5s3.4,4.1,4.5,6.7c1.1,2.5,1.6,5.3,1.6,8.2v21.2h-21
|
||||||
|
c-2.9,0-5.6-0.5-8.2-1.6c-2.6-1.1-4.8-2.6-6.8-4.6c-1.9-1.9-3.5-4.2-4.6-6.8c-1.1-2.6-1.6-5.3-1.6-8.2c0-2.9,0.5-5.7,1.6-8.2
|
||||||
|
c1.1-2.5,2.6-4.8,4.6-6.7c1.9-1.9,4.2-3.4,6.8-4.5C115.3,242.6,118,242,120.9,242z M133.6,275.8V263c0-1.8-0.3-3.4-1-4.9
|
||||||
|
s-1.6-2.9-2.7-4c-1.2-1.2-2.5-2.1-4-2.7c-1.5-0.7-3.2-1-4.9-1c-1.8,0-3.4,0.3-5,1s-2.9,1.6-4.1,2.7c-1.2,1.2-2.1,2.5-2.7,4
|
||||||
|
c-0.7,1.5-1,3.2-1,4.9c0,1.8,0.3,3.4,1,5s1.6,2.9,2.7,4.1c1.2,1.2,2.5,2.1,4.1,2.7c1.6,0.7,3.2,1,5,1L133.6,275.8L133.6,275.8z"/>
|
||||||
|
<g>
|
||||||
|
<path class="st14" d="M150.9,169.9h28.7v33.9c0.8-0.1,1.7-0.1,2.6-0.1c0.5,0,0.7-0.1,0.9-0.2c0.3-0.1,0.6-0.3,0.8-0.6
|
||||||
|
c0.2-0.2,0.4-0.5,0.5-0.8s0.2-0.6,0.2-1v-14.3h28.8v14.4c0,5.2-1.2,10-3.5,14.4c-0.5,0.9-1,1.7-1.5,2.5c0.5,0.8,1,1.7,1.5,2.6
|
||||||
|
c2.3,4.4,3.5,9.2,3.5,14.3v14.4h-28.8V235c0-0.5-0.1-0.7-0.2-0.9c-0.1-0.3-0.3-0.6-0.6-0.8c-0.2-0.2-0.5-0.4-0.8-0.6
|
||||||
|
c-0.2-0.1-0.4-0.2-0.9-0.2l0,0c-0.4,0-0.7,0.1-1,0.2s-0.6,0.3-0.8,0.5s-0.4,0.5-0.6,0.8c-0.1,0.2-0.2,0.4-0.2,0.9v16.7l-28.8,1.6
|
||||||
|
v-83.3H150.9z"/>
|
||||||
|
<path class="st13" d="M155.4,174.5h19.7v34.7c2.3-0.6,4.7-1,7.1-1c1,0,1.9-0.2,2.7-0.5c0.9-0.4,1.6-0.9,2.3-1.5
|
||||||
|
c0.6-0.6,1.1-1.4,1.5-2.3s0.5-1.8,0.5-2.8v-9.8h19.7v9.8c0,4.4-1,8.5-3,12.3c-0.9,1.7-1.9,3.2-3.1,4.6c1.2,1.4,2.2,3,3.1,4.7
|
||||||
|
c2,3.8,2.9,7.9,2.9,12.2v9.9h-19.7v-9.9c0-1-0.2-1.9-0.5-2.7c-0.4-0.9-0.9-1.6-1.5-2.3c-0.6-0.6-1.4-1.1-2.3-1.5
|
||||||
|
c-0.8-0.4-1.7-0.5-2.7-0.5s-1.9,0.2-2.8,0.5c-0.9,0.4-1.6,0.9-2.3,1.5c-0.6,0.6-1.1,1.4-1.5,2.3c-0.4,0.8-0.5,1.7-0.5,2.7v12.4
|
||||||
|
l-19.7,1.1v-73.9H155.4z"/>
|
||||||
|
<path d="M161.1,242.5V235v-54.8h8.4v38.1c1.8-1.4,3.8-2.4,6-3.2c2.2-0.8,4.4-1.1,6.8-1.1c1.8,0,3.4-0.3,4.9-1s2.9-1.6,4-2.7
|
||||||
|
c1.2-1.2,2.1-2.5,2.7-4.1c0.7-1.6,1-3.2,1-5v-4.1h8.4v4.1c0,3.5-0.8,6.7-2.3,9.6s-3.6,5.3-6.2,7.3c2.6,1.9,4.7,4.4,6.2,7.3
|
||||||
|
s2.3,6.1,2.3,9.6v4.2h-8.4V235c0-1.8-0.3-3.4-1-4.9s-1.6-2.9-2.7-4c-1.2-1.2-2.5-2.1-4-2.7c-1.5-0.7-3.2-1-4.9-1
|
||||||
|
c-1.8,0-3.4,0.3-5,1s-2.9,1.6-4.1,2.7c-1.2,1.2-2.1,2.5-2.7,4c-0.7,1.5-1,3.2-1,4.9v7.1"/>
|
||||||
|
<path class="st14" d="M134.2,294.4v-31.3c0-4.3,0.8-8.5,2.5-12.3c1.6-3.7,3.9-7.1,6.8-9.9c2.8-2.8,6.2-5,9.9-6.6
|
||||||
|
c1.8-0.8,3.7-1.4,5.6-1.8l0.8-0.2l19.9-1.1v29.3h-14.2c-0.5,0-0.7,0.1-0.9,0.2c-0.3,0.1-0.6,0.3-0.8,0.6c-0.2,0.2-0.4,0.5-0.6,0.8
|
||||||
|
c-0.1,0.2-0.2,0.4-0.2,0.9v31.3h-28.8V294.4z"/>
|
||||||
|
<path class="st13" d="M138.7,289.9v-26.8c0-3.7,0.7-7.2,2.1-10.5c1.4-3.2,3.3-6,5.8-8.5c2.4-2.4,5.3-4.3,8.5-5.7
|
||||||
|
c1.5-0.7,3.2-1.2,4.8-1.5l0.4-0.1l14.8-0.8v20h-9.6c-1,0-1.9,0.2-2.7,0.5c-0.9,0.4-1.6,0.9-2.3,1.5c-0.7,0.7-1.2,1.4-1.5,2.3
|
||||||
|
c-0.4,0.8-0.5,1.7-0.5,2.7v26.8h-19.8V289.9z"/>
|
||||||
|
<path d="M169.4,242v8.4h-3.9c-1.8,0-3.4,0.3-4.9,1s-2.9,1.6-4,2.7c-1.2,1.2-2.1,2.5-2.7,4c-0.7,1.5-1,3.2-1,4.9v21.2h-8.4v-21.1
|
||||||
|
c0-2.9,0.5-5.7,1.6-8.2c1.1-2.5,2.6-4.8,4.6-6.7c1.9-1.9,4.2-3.4,6.8-4.5c1.2-0.5,2.5-0.9,3.8-1.2"/>
|
||||||
|
</g>
|
||||||
|
<path class="st14" d="M238.4,294.6c-4.2,0-8.2-0.8-12-2.4s-7.2-3.9-10.2-6.8c-3.1-3.1-5.4-6.6-6.9-10.5c-1.4-3.8-2.2-7.7-2.2-11.6
|
||||||
|
c0-4,0.7-7.9,2.2-11.6c1.5-3.9,3.8-7.4,6.9-10.4c3-3,6.6-5.4,10.4-6.9s7.7-2.3,11.7-2.3s7.9,0.8,11.7,2.3c3.9,1.5,7.4,3.9,10.4,6.9
|
||||||
|
l10.1,10.1l-12,12l12,12l-10.1,10.1c-2.9,2.9-6.4,5.2-10.2,6.8C246.6,293.8,242.6,294.6,238.4,294.6z"/>
|
||||||
|
<path class="st13" d="M238.4,290c-3.6,0-7-0.7-10.2-2s-6.2-3.3-8.7-5.8c-2.6-2.6-4.6-5.6-5.9-9c-1.2-3.2-1.9-6.6-1.9-10
|
||||||
|
s0.6-6.7,1.9-9.9c1.3-3.3,3.3-6.3,5.9-8.9s5.6-4.6,8.9-5.9s6.6-1.9,10-1.9s6.8,0.7,10,1.9c3.3,1.3,6.3,3.3,8.9,5.9l6.9,6.9l-12,12
|
||||||
|
l12,12l-6.9,6.9c-2.5,2.5-5.4,4.5-8.7,5.8C245.4,289.4,242,290,238.4,290z"/>
|
||||||
|
<path d="M250.3,269.4l5.9,5.9l-2.9,2.9c-2,2-4.3,3.5-6.9,4.6s-5.3,1.6-8.1,1.6c-2.8,0-5.5-0.5-8.1-1.6s-4.9-2.6-6.9-4.6
|
||||||
|
c-2.1-2.1-3.6-4.4-4.6-7s-1.5-5.2-1.5-7.9c0-2.7,0.5-5.3,1.5-7.9c1-2.6,2.5-4.9,4.6-6.9c2.1-2.1,4.4-3.6,7-4.6s5.2-1.5,7.9-1.5
|
||||||
|
c2.7,0,5.3,0.5,7.9,1.5s4.9,2.6,7,4.6l2.9,2.9l-23.4,23.4c2.4,1.2,4.9,1.6,7.6,1.2s5-1.6,7-3.6L250.3,269.4z M229.4,254.2
|
||||||
|
c-2.5,2.5-3.8,5.5-3.8,9c0,1.9,0.4,3.8,1.3,5.5c0.8-0.8,1.9-1.9,3.4-3.4s3.2-3.2,4.9-4.9c1.7-1.7,3.4-3.4,5-4.9
|
||||||
|
c1.6-1.6,2.8-2.8,3.7-3.7c-2.4-1.2-4.9-1.6-7.6-1.2C233.7,251.1,231.4,252.2,229.4,254.2z"/>
|
||||||
|
<path class="st14" d="M248.8,294.4v-31.3c0-4.3,0.8-8.5,2.5-12.3c1.6-3.7,3.9-7.1,6.8-9.9c2.8-2.8,6.2-5,9.9-6.6
|
||||||
|
c3.8-1.6,7.9-2.5,12.2-2.5h14.4v28.8h-14.4c-0.5,0-0.7,0.1-0.9,0.2c-0.3,0.1-0.6,0.3-0.8,0.6c-0.2,0.2-0.4,0.5-0.6,0.8
|
||||||
|
c-0.1,0.2-0.2,0.4-0.2,0.9v31.3H248.8z"/>
|
||||||
|
<path class="st13" d="M253.4,289.9v-26.8c0-3.7,0.7-7.2,2.1-10.5c1.4-3.2,3.3-6,5.8-8.5c2.4-2.4,5.3-4.3,8.5-5.7
|
||||||
|
c3.3-1.4,6.8-2.1,10.4-2.1h9.9V256h-9.9c-1,0-1.9,0.2-2.7,0.5c-0.9,0.4-1.6,0.9-2.3,1.5c-0.6,0.6-1.1,1.4-1.5,2.3
|
||||||
|
c-0.4,0.8-0.5,1.7-0.5,2.7v26.8h-19.8V289.9z"/>
|
||||||
|
<path d="M284.4,242v8.4h-4.2c-1.8,0-3.4,0.3-4.9,1s-2.9,1.6-4,2.7c-1.2,1.2-2.1,2.5-2.7,4c-0.7,1.5-1,3.2-1,4.9v21.2h-8.4v-21.1
|
||||||
|
c0-2.9,0.5-5.7,1.6-8.2c1.1-2.5,2.6-4.8,4.6-6.7c1.9-1.9,4.2-3.4,6.8-4.5c2.6-1.1,5.3-1.6,8.2-1.6L284.4,242L284.4,242z"/>
|
||||||
|
<path class="st14" d="M341.7,294.5c-5.1,0-9.9-1.2-14.3-3.5c-0.9-0.5-1.8-1-2.6-1.5c-0.8,0.5-1.7,1-2.5,1.5
|
||||||
|
c-4.4,2.3-9.2,3.5-14.4,3.5c-4.3,0-8.3-0.8-12.2-2.5c-3.8-1.6-7.1-3.9-10-6.7c-2.9-2.9-5.1-6.2-6.7-10s-2.5-7.9-2.5-12.2v-31.2
|
||||||
|
h28.9v31.3c0,0.4,0.1,0.7,0.2,1s0.3,0.6,0.5,0.8c0.2,0.2,0.5,0.4,0.8,0.6c0.2,0.1,0.4,0.2,0.9,0.2c0.4,0,0.7-0.1,1-0.2
|
||||||
|
c0.4-0.1,0.6-0.3,0.8-0.5c0.2-0.2,0.4-0.5,0.5-0.8s0.2-0.6,0.2-1v-31.2h28.8v31.1c0,0.4,0.1,0.7,0.2,1c0.1,0.4,0.3,0.6,0.5,0.8
|
||||||
|
c0.2,0.2,0.5,0.4,0.8,0.6c0.2,0.1,0.4,0.2,0.9,0.2c0.4,0,0.7-0.1,1-0.2s0.6-0.3,0.8-0.5c0.2-0.2,0.4-0.5,0.5-0.8s0.2-0.6,0.2-1
|
||||||
|
v-31.2h28.8v31.1c0,4.2-0.8,8.3-2.5,12.2c-1.6,3.8-3.9,7.1-6.7,10c-2.8,2.8-6.2,5.1-9.9,6.7C350.2,293.6,346.1,294.5,341.7,294.5z"
|
||||||
|
/>
|
||||||
|
<path class="st13" d="M341.7,289.9c-4.3,0-8.5-1-12.2-2.9c-1.7-0.9-3.3-1.9-4.7-3.1c-1.4,1.2-3,2.2-4.6,3.1c-3.7,2-7.8,3-12.3,3
|
||||||
|
c-3.6,0-7.1-0.7-10.4-2.1c-3.2-1.4-6.1-3.3-8.5-5.8c-2.4-2.4-4.4-5.3-5.8-8.5c-1.4-3.3-2.1-6.8-2.1-10.4v-26.7h19.8v26.7
|
||||||
|
c0,1,0.2,1.9,0.5,2.8c0.4,0.9,0.9,1.6,1.5,2.3c0.6,0.6,1.4,1.1,2.3,1.5c0.8,0.4,1.7,0.5,2.7,0.5s1.9-0.2,2.8-0.5
|
||||||
|
c0.9-0.4,1.6-0.9,2.3-1.5c0.6-0.6,1.1-1.4,1.5-2.3s0.5-1.8,0.5-2.8v-26.7h19.7v26.7c0,1,0.2,1.9,0.5,2.8c0.4,0.9,0.9,1.6,1.5,2.3
|
||||||
|
c0.6,0.6,1.4,1.1,2.3,1.5c0.8,0.4,1.7,0.5,2.7,0.5s1.9-0.2,2.8-0.5c0.9-0.4,1.6-0.9,2.3-1.5c0.6-0.6,1.1-1.4,1.5-2.3
|
||||||
|
s0.5-1.8,0.5-2.8v-26.7h19.7v26.7c0,3.6-0.7,7.1-2.1,10.4c-1.4,3.2-3.3,6.1-5.8,8.5c-2.4,2.4-5.3,4.4-8.5,5.7
|
||||||
|
C349,289.2,345.4,289.9,341.7,289.9z"/>
|
||||||
|
<path d="M362.9,242.1v21c0,2.9-0.5,5.6-1.6,8.2s-2.6,4.8-4.6,6.8c-1.9,1.9-4.2,3.5-6.7,4.6s-5.3,1.6-8.2,1.6
|
||||||
|
c-3.4,0-6.6-0.8-9.6-2.3c-2.9-1.5-5.4-3.6-7.3-6.2c-1.9,2.6-4.4,4.7-7.3,6.2s-6.1,2.3-9.6,2.3c-2.9,0-5.6-0.5-8.2-1.6
|
||||||
|
s-4.8-2.6-6.8-4.6c-1.9-1.9-3.5-4.2-4.6-6.8c-1.1-2.6-1.6-5.3-1.6-8.2v-21h8.4v21c0,1.8,0.3,3.4,1,5s1.6,2.9,2.7,4.1s2.5,2.1,4,2.7
|
||||||
|
c1.5,0.7,3.2,1,4.9,1c1.8,0,3.4-0.3,5-1s2.9-1.6,4.1-2.7c1.2-1.2,2.1-2.5,2.7-4.1c0.7-1.6,1-3.2,1-5v-21h8.4v21c0,1.8,0.3,3.4,1,5
|
||||||
|
s1.6,2.9,2.7,4.1c1.2,1.2,2.5,2.1,4,2.7c1.5,0.7,3.2,1,4.9,1c1.8,0,3.4-0.3,5-1s2.9-1.6,4.1-2.7s2.1-2.5,2.7-4.1c0.7-1.6,1-3.2,1-5
|
||||||
|
v-21H362.9z"/>
|
||||||
|
<path class="st14" d="M387,294.6c-4.2,0-8.2-0.8-12-2.4s-7.2-3.9-10.2-6.8c-3.1-3.1-5.4-6.6-6.9-10.5c-1.4-3.8-2.2-7.7-2.2-11.6
|
||||||
|
c0-4,0.7-7.9,2.2-11.6c1.5-3.9,3.8-7.4,6.9-10.4c3-3,6.6-5.4,10.4-6.9s7.7-2.3,11.7-2.3s7.9,0.8,11.7,2.3c3.9,1.5,7.4,3.9,10.4,6.9
|
||||||
|
l10.1,10.1l-12,12l12,12L409,285.5c-2.9,2.9-6.4,5.2-10.2,6.8C395.2,293.8,391.1,294.6,387,294.6z"/>
|
||||||
|
<path class="st13" d="M387,290c-3.6,0-7-0.7-10.2-2s-6.2-3.3-8.7-5.8c-2.6-2.6-4.6-5.6-5.9-9c-1.2-3.2-1.9-6.6-1.9-10
|
||||||
|
s0.6-6.7,1.9-9.9c1.3-3.3,3.3-6.3,5.9-8.9s5.6-4.6,8.9-5.9s6.6-1.9,10-1.9s6.8,0.7,10,1.9c3.3,1.3,6.3,3.3,8.9,5.9l6.9,6.9l-12,12
|
||||||
|
l12,12l-6.9,6.9c-2.5,2.5-5.4,4.5-8.7,5.8C394,289.4,390.5,290,387,290z"/>
|
||||||
|
<path d="M398.9,269.4l5.9,5.9l-2.9,2.9c-2,2-4.3,3.5-6.9,4.6s-5.3,1.6-8.1,1.6s-5.5-0.5-8.1-1.6s-4.8-2.6-6.9-4.6
|
||||||
|
c-2.1-2.1-3.6-4.4-4.6-7s-1.5-5.2-1.5-7.9c0-2.7,0.5-5.3,1.5-7.9c1-2.6,2.5-4.9,4.6-6.9c2.1-2.1,4.4-3.6,7-4.6s5.2-1.5,7.9-1.5
|
||||||
|
c2.7,0,5.3,0.5,7.9,1.5s4.9,2.6,7,4.6l2.9,2.9l-23.4,23.4c2.4,1.2,4.9,1.6,7.6,1.2s5-1.6,7-3.6L398.9,269.4z M378,254.2
|
||||||
|
c-2.5,2.5-3.8,5.5-3.8,9c0,1.9,0.4,3.8,1.3,5.5c0.8-0.8,1.9-1.9,3.4-3.4s3.2-3.2,4.9-4.9c1.7-1.7,3.4-3.4,5-4.9
|
||||||
|
c1.6-1.6,2.8-2.8,3.7-3.7c-2.4-1.2-4.9-1.6-7.6-1.2C382.3,251.1,380,252.2,378,254.2z"/>
|
||||||
|
<path class="st14" d="M428.8,294.6c-4.2,0-8.2-0.8-12-2.4s-7.2-3.9-10.2-6.8c-3.1-3.1-5.4-6.6-6.9-10.5c-1.4-3.8-2.2-7.7-2.2-11.6
|
||||||
|
c0-4,0.7-7.9,2.2-11.6c1.5-3.9,3.8-7.4,6.9-10.4c3-3,6.6-5.4,10.4-6.9s7.7-2.3,11.7-2.3s7.9,0.8,11.7,2.3c3.9,1.5,7.4,3.9,10.4,6.9
|
||||||
|
l10.1,10.1l-12,12l12,12l-10.1,10.1c-2.9,2.9-6.4,5.2-10.2,6.8C436.9,293.8,432.9,294.6,428.8,294.6z"/>
|
||||||
|
<path class="st13" d="M428.8,290c-3.6,0-7-0.7-10.2-2s-6.2-3.3-8.7-5.8c-2.6-2.6-4.6-5.6-5.9-9c-1.2-3.2-1.9-6.6-1.9-10
|
||||||
|
s0.6-6.7,1.9-9.9c1.3-3.3,3.3-6.3,5.9-8.9s5.6-4.6,8.9-5.9s6.6-1.9,10-1.9s6.8,0.7,10,1.9c3.3,1.3,6.3,3.3,8.9,5.9l6.9,6.9l-12,12
|
||||||
|
l12,12l-6.9,6.9c-2.5,2.5-5.4,4.5-8.7,5.8C435.7,289.4,432.3,290,428.8,290z"/>
|
||||||
|
<path d="M440.7,269.4l5.9,5.9l-2.9,2.9c-2,2-4.3,3.5-6.9,4.6s-5.3,1.6-8.1,1.6c-2.8,0-5.5-0.5-8.1-1.6s-4.8-2.6-6.9-4.6
|
||||||
|
c-2.1-2.1-3.6-4.4-4.6-7s-1.5-5.2-1.5-7.9c0-2.7,0.5-5.3,1.5-7.9c1-2.6,2.5-4.9,4.6-6.9c2.1-2.1,4.4-3.6,7-4.6s5.2-1.5,7.9-1.5
|
||||||
|
c2.7,0,5.3,0.5,7.9,1.5s4.9,2.6,7,4.6l2.9,2.9L423,274.8c2.4,1.2,4.9,1.6,7.6,1.2s5-1.6,7-3.6L440.7,269.4z M419.7,254.2
|
||||||
|
c-2.5,2.5-3.8,5.5-3.8,9c0,1.9,0.4,3.8,1.3,5.5c0.8-0.8,1.9-1.9,3.4-3.4s3.2-3.2,4.9-4.9c1.7-1.7,3.4-3.4,5-4.9
|
||||||
|
c1.6-1.6,2.8-2.8,3.7-3.7c-2.4-1.2-4.9-1.6-7.6-1.2C424.1,251.1,421.7,252.2,419.7,254.2z"/>
|
||||||
|
<path class="st14" d="M473,294.4V280c0-0.5-0.1-0.7-0.2-0.9c-0.1-0.3-0.3-0.6-0.6-0.8c-0.2-0.2-0.5-0.4-0.8-0.6
|
||||||
|
c-0.2-0.1-0.4-0.2-0.9-0.2c-0.4,0-0.7,0.1-1,0.2s-0.6,0.3-0.8,0.5s-0.4,0.5-0.6,0.8c-0.1,0.2-0.2,0.4-0.2,0.9v14.4h-28.8v-79.4
|
||||||
|
h28.8v33.9c0.8-0.1,1.7-0.1,2.6-0.1c0.5,0,0.7-0.1,0.9-0.2c0.3-0.1,0.6-0.3,0.8-0.6c0.2-0.2,0.4-0.5,0.5-0.8s0.2-0.6,0.2-1v-14.3
|
||||||
|
h28.8v14.4c0,5.2-1.2,10-3.5,14.4c-0.5,0.9-1,1.7-1.5,2.5c0.5,0.8,1,1.7,1.5,2.6c2.3,4.4,3.5,9.2,3.5,14.3v14.4L473,294.4
|
||||||
|
L473,294.4z"/>
|
||||||
|
<path class="st13" d="M477.5,289.9V280c0-1-0.2-1.9-0.5-2.7c-0.4-0.9-0.9-1.6-1.5-2.3c-0.6-0.6-1.4-1.1-2.3-1.5
|
||||||
|
c-0.8-0.4-1.7-0.5-2.7-0.5s-1.9,0.2-2.8,0.5c-0.9,0.4-1.6,0.9-2.3,1.5c-0.7,0.7-1.1,1.4-1.5,2.3c-0.4,0.8-0.5,1.7-0.5,2.7v9.9
|
||||||
|
h-19.7v-70.4h19.7v34.7c2.3-0.6,4.7-1,7.1-1c1,0,1.9-0.2,2.7-0.5c0.9-0.4,1.6-0.9,2.3-1.5c0.6-0.6,1.1-1.4,1.5-2.3s0.5-1.8,0.5-2.8
|
||||||
|
v-9.8h19.7v9.8c0,4.4-1,8.5-3,12.3c-0.9,1.7-1.9,3.2-3.1,4.6c1.2,1.4,2.2,3,3.1,4.7c2,3.7,2.9,7.9,2.9,12.2v9.9L477.5,289.9
|
||||||
|
L477.5,289.9z"/>
|
||||||
|
<path d="M489.2,255.8c-1.5,2.9-3.6,5.3-6.2,7.3c2.6,1.9,4.7,4.4,6.2,7.3s2.3,6.1,2.3,9.6v4.2h-8.4V280c0-1.8-0.3-3.4-1-4.9
|
||||||
|
s-1.6-2.9-2.7-4c-1.2-1.2-2.5-2.1-4-2.7c-1.5-0.7-3.2-1-4.9-1c-1.8,0-3.4,0.3-5,1c-1.6,0.7-2.9,1.6-4.1,2.7c-1.2,1.2-2.1,2.5-2.7,4
|
||||||
|
c-0.7,1.5-1,3.2-1,4.9v4.2h-8.4V280v-54.8h8.4v38.1c1.8-1.4,3.8-2.4,6-3.2s4.4-1.1,6.8-1.1c1.8,0,3.4-0.3,4.9-1s2.9-1.6,4-2.7
|
||||||
|
c1.2-1.2,2.1-2.5,2.7-4.1c0.7-1.6,1-3.2,1-5v-4.1h8.4v4.1C491.5,249.7,490.8,252.9,489.2,255.8z"/>
|
||||||
|
</g>
|
||||||
|
<g id="Fond_texte_1_">
|
||||||
|
<path class="st13" d="M114.8,244.9v-19.7h4.4c-1.2-0.7-2.3-1.6-3.2-2.6c-1.6-1.6-2.9-3.6-3.8-5.8c-1-2.2-1.4-4.6-1.4-7.2
|
||||||
|
c0-2.5,0.5-4.9,1.4-7.2c0.9-2.2,2.2-4.1,3.9-5.8c1.6-1.6,3.6-2.9,5.8-3.9s4.6-1.4,7.2-1.4h31.1V211h-4.5c1.1,0.7,2.2,1.5,3.2,2.5
|
||||||
|
c1.7,1.6,3,3.6,4,5.8c1,2.2,1.4,4.6,1.4,7.2c0,2.5-0.5,4.9-1.4,7.2c-0.9,2.2-2.3,4.1-3.9,5.8c-1.7,1.7-3.6,3-5.8,3.9
|
||||||
|
c-2.2,1-4.6,1.4-7.2,1.4h-31.2V244.9z"/>
|
||||||
|
<path d="M154.3,197v8.4h-25.4c-1.2,0-2.2,0.4-3,1.2c-0.8,0.8-1.2,1.8-1.2,3s0.4,2.2,1.2,3.1c0.8,0.8,1.8,1.3,3,1.3h16.9
|
||||||
|
c1.8,0,3.4,0.3,4.9,1s2.9,1.5,4,2.7c1.2,1.1,2.1,2.5,2.7,4c0.7,1.5,1,3.2,1,4.9c0,1.8-0.3,3.4-1,4.9s-1.6,2.9-2.7,4
|
||||||
|
c-1.2,1.2-2.5,2.1-4,2.7c-1.5,0.7-3.2,1-4.9,1h-25.3v-8.4h25.3c1.3,0,2.3-0.4,3.1-1.2c0.8-0.8,1.2-1.8,1.2-3.1c0-1.2-0.4-2.2-1.2-3
|
||||||
|
s-1.8-1.2-3.1-1.2h-16.9c-1.8,0-3.4-0.3-4.9-1s-2.9-1.6-4-2.7c-1.1-1.2-2-2.5-2.7-4s-1-3.2-1-4.9c0-1.8,0.3-3.4,1-4.9
|
||||||
|
s1.5-2.9,2.7-4c1.1-1.1,2.5-2,4-2.7s3.2-1,4.9-1L154.3,197L154.3,197z"/>
|
||||||
|
<polygon class="st13" points="200.4,236.9 200.4,191.4 220,191.4 220,239.1 "/>
|
||||||
|
<path d="M206,231.9v-34.8h8.4v35.7"/>
|
||||||
|
<path class="st13" d="M193.4,289.9c-3.6,0-7.1-0.7-10.4-2.1c-3.2-1.4-6.1-3.3-8.5-5.8c-2.4-2.4-4.4-5.3-5.8-8.5
|
||||||
|
c-1.4-3.3-2.1-6.8-2.1-10.4c0-3.7,0.7-7.2,2.1-10.5c1.4-3.2,3.3-6,5.8-8.5c2.4-2.4,5.3-4.3,8.5-5.7c3.3-1.4,6.8-2.1,10.4-2.1h7
|
||||||
|
v-16.9h19.7V263c0,3.6-0.7,7.1-2.1,10.4c-1.4,3.2-3.3,6.1-5.7,8.5c-2.4,2.5-5.3,4.4-8.5,5.8C200.5,289.1,197,289.9,193.4,289.9z
|
||||||
|
M193.4,256.1c-1,0-1.9,0.2-2.8,0.5c-0.9,0.4-1.6,0.9-2.3,1.5c-0.7,0.7-1.1,1.4-1.5,2.3c-0.4,0.8-0.5,1.7-0.5,2.7s0.2,1.9,0.5,2.8
|
||||||
|
c0.4,0.9,0.9,1.6,1.5,2.3c0.6,0.6,1.4,1.1,2.3,1.5c0.9,0.4,1.8,0.5,2.8,0.5s1.9-0.2,2.7-0.5c0.9-0.4,1.6-0.9,2.3-1.5
|
||||||
|
c0.6-0.6,1.1-1.4,1.5-2.3s0.5-1.8,0.5-2.8v-7H193.4z"/>
|
||||||
|
<path d="M214.4,225.1V263c0,2.9-0.5,5.6-1.6,8.2s-2.6,4.8-4.5,6.8c-1.9,1.9-4.1,3.5-6.7,4.6c-2.6,1.1-5.3,1.6-8.2,1.6
|
||||||
|
s-5.6-0.5-8.2-1.6c-2.6-1.1-4.8-2.6-6.8-4.6c-1.9-1.9-3.5-4.2-4.6-6.8c-1.1-2.6-1.6-5.3-1.6-8.2c0-2.9,0.5-5.7,1.6-8.2
|
||||||
|
c1.1-2.5,2.6-4.8,4.6-6.7c1.9-1.9,4.2-3.4,6.8-4.5s5.3-1.6,8.2-1.6h12.7v-16.9 M193.4,275.8c1.8,0,3.4-0.3,4.9-1s2.9-1.6,4-2.7
|
||||||
|
c1.2-1.2,2.1-2.5,2.7-4.1c0.7-1.6,1-3.2,1-5v-12.7h-12.7c-1.8,0-3.4,0.3-5,1s-2.9,1.6-4.1,2.7c-1.2,1.2-2.1,2.5-2.7,4
|
||||||
|
c-0.7,1.5-1,3.2-1,4.9c0,1.8,0.3,3.4,1,5s1.6,2.9,2.7,4.1c1.2,1.2,2.5,2.1,4.1,2.7C189.9,275.5,191.6,275.8,193.4,275.8z"/>
|
||||||
|
<path class="st13" d="M31.4,290c-3.6,0-7.1-0.7-10.4-2.1c-3.2-1.4-6.1-3.3-8.5-5.8c-2.4-2.4-4.4-5.3-5.8-8.5
|
||||||
|
c-1.4-3.3-2.1-6.8-2.1-10.4v-43.6h19.7v16.9h7.1c3.7,0,7.2,0.7,10.5,2.1c3.2,1.4,6,3.3,8.4,5.7c2.4,2.4,4.3,5.2,5.7,8.4
|
||||||
|
c1.4,3.2,2.1,6.8,2.1,10.5c0,3.6-0.7,7.1-2.1,10.4c-1.4,3.2-3.3,6.1-5.7,8.5c-2.4,2.5-5.3,4.4-8.5,5.8
|
||||||
|
C38.6,289.3,35.1,290,31.4,290z M24.3,263.3c0,1,0.2,1.9,0.5,2.8c0.4,0.9,0.9,1.6,1.5,2.3c0.6,0.6,1.4,1.1,2.3,1.5s1.8,0.5,2.8,0.5
|
||||||
|
s1.9-0.2,2.7-0.5c0.9-0.4,1.6-0.9,2.3-1.5c0.6-0.6,1.1-1.4,1.5-2.3s0.5-1.8,0.5-2.8s-0.2-1.9-0.5-2.7c-0.4-0.9-0.9-1.6-1.5-2.3
|
||||||
|
c-0.6-0.6-1.4-1.1-2.3-1.5c-0.8-0.4-1.7-0.5-2.7-0.5h-7.1C24.3,256.3,24.3,263.3,24.3,263.3z"/>
|
||||||
|
<path d="M39.6,243.9c2.5,1.1,4.8,2.6,6.7,4.5c1.9,1.9,3.4,4.1,4.5,6.7c1.1,2.5,1.6,5.3,1.6,8.2c0,2.9-0.5,5.6-1.6,8.2
|
||||||
|
s-2.6,4.8-4.5,6.8c-1.9,1.9-4.1,3.5-6.7,4.6c-2.5,1.1-5.3,1.6-8.2,1.6c-2.9,0-5.6-0.5-8.2-1.6s-4.8-2.6-6.8-4.6
|
||||||
|
c-1.9-1.9-3.5-4.2-4.6-6.8c-1.1-2.6-1.6-5.3-1.6-8.2v-37.9h8.4v16.8h12.8C34.3,242.2,37,242.8,39.6,243.9z M31.4,276
|
||||||
|
c1.8,0,3.4-0.3,4.9-1s2.9-1.6,4-2.7c1.2-1.2,2.1-2.5,2.7-4.1c0.7-1.6,1-3.2,1-5s-0.3-3.4-1-4.9s-1.6-2.9-2.7-4
|
||||||
|
c-1.2-1.2-2.5-2.1-4-2.7c-1.5-0.7-3.2-1-4.9-1H18.6v12.7c0,1.8,0.3,3.4,1,5s1.6,2.9,2.7,4.1c1.2,1.2,2.5,2.1,4.1,2.7
|
||||||
|
C27.9,275.7,29.6,276,31.4,276z"/>
|
||||||
|
<path class="st13" d="M75.9,290c-3.6,0-7.1-0.7-10.4-2.1c-3.2-1.4-6.1-3.3-8.5-5.8c-2.4-2.4-4.3-5.3-5.7-8.5
|
||||||
|
c-1.4-3.3-2.1-6.8-2.1-10.4c0-3.7,0.7-7.2,2.1-10.5c1.4-3.2,3.3-6,5.7-8.4c2.4-2.4,5.3-4.3,8.5-5.7c3.3-1.4,6.8-2.1,10.4-2.1
|
||||||
|
c3.7,0,7.2,0.7,10.5,2.1c3.2,1.4,6,3.3,8.4,5.7c2.5,2.4,4.4,5.3,5.8,8.5c1.4,3.2,2.1,6.8,2.1,10.5c0,3.6-0.7,7.1-2.1,10.4
|
||||||
|
c-1.4,3.2-3.3,6.1-5.8,8.5c-2.4,2.4-5.3,4.4-8.5,5.7C83.2,289.3,79.6,290,75.9,290z M75.9,256.3c-1,0-1.9,0.2-2.8,0.5
|
||||||
|
c-0.9,0.4-1.6,0.9-2.3,1.5c-0.6,0.6-1.1,1.4-1.5,2.3c-0.4,0.8-0.5,1.7-0.5,2.7s0.2,1.9,0.5,2.8c0.4,0.9,0.9,1.6,1.5,2.3
|
||||||
|
c0.6,0.6,1.4,1.1,2.3,1.5c0.9,0.4,1.8,0.5,2.8,0.5s1.9-0.2,2.8-0.5c0.9-0.4,1.6-0.9,2.3-1.5c0.6-0.6,1.1-1.4,1.5-2.3
|
||||||
|
s0.5-1.8,0.5-2.8s-0.2-1.9-0.5-2.7c-0.4-0.9-0.9-1.6-1.5-2.3c-0.6-0.6-1.4-1.1-2.3-1.5S76.9,256.3,75.9,256.3z"/>
|
||||||
|
<path d="M54.9,263.3c0-2.9,0.5-5.7,1.6-8.2c1.1-2.5,2.6-4.8,4.5-6.7c1.9-1.9,4.1-3.4,6.7-4.5c2.6-1.1,5.3-1.6,8.2-1.6
|
||||||
|
s5.7,0.5,8.2,1.6s4.8,2.6,6.7,4.5s3.5,4.1,4.6,6.7c1.1,2.5,1.6,5.3,1.6,8.2c0,2.9-0.5,5.6-1.6,8.2s-2.6,4.8-4.6,6.8
|
||||||
|
c-1.9,1.9-4.2,3.5-6.7,4.6s-5.3,1.6-8.2,1.6s-5.6-0.5-8.2-1.6c-2.6-1.1-4.8-2.6-6.7-4.6c-1.9-1.9-3.4-4.2-4.5-6.8
|
||||||
|
C55.5,268.9,54.9,266.1,54.9,263.3z M63.2,263.3c0,1.8,0.3,3.4,1,5c0.7,1.6,1.6,2.9,2.7,4.1c1.2,1.2,2.5,2.1,4.1,2.7
|
||||||
|
c1.6,0.7,3.2,1,5,1s3.4-0.3,5-1c1.6-0.7,2.9-1.6,4.1-2.7c1.2-1.2,2.1-2.5,2.7-4.1c0.7-1.6,1-3.2,1-5s-0.3-3.4-1-4.9s-1.6-2.9-2.7-4
|
||||||
|
c-1.2-1.2-2.5-2.1-4.1-2.7c-1.6-0.7-3.2-1-5-1s-3.4,0.3-5,1c-1.6,0.7-2.9,1.6-4.1,2.7c-1.2,1.2-2.1,2.5-2.7,4
|
||||||
|
C63.5,259.9,63.2,261.5,63.2,263.3z"/>
|
||||||
|
<path class="st13" d="M120.9,289.9c-3.6,0-7.1-0.7-10.4-2.1c-3.2-1.4-6.1-3.3-8.5-5.8c-2.4-2.4-4.4-5.3-5.8-8.5
|
||||||
|
c-1.4-3.3-2.1-6.8-2.1-10.4c0-3.7,0.7-7.2,2.1-10.5c1.4-3.2,3.3-6,5.8-8.5c2.4-2.4,5.3-4.3,8.5-5.7c3.3-1.4,6.8-2.1,10.4-2.1
|
||||||
|
c3.7,0,7.2,0.7,10.5,2.1c3.2,1.4,6,3.3,8.4,5.7c2.4,2.4,4.3,5.2,5.7,8.4c1.4,3.2,2.1,6.8,2.1,10.5v26.8h-26.7V289.9z M120.9,256.1
|
||||||
|
c-1,0-1.9,0.2-2.8,0.5c-0.9,0.4-1.6,0.9-2.3,1.5c-0.7,0.7-1.1,1.4-1.5,2.3c-0.4,0.8-0.5,1.7-0.5,2.7s0.2,1.9,0.5,2.8
|
||||||
|
c0.4,0.9,0.9,1.6,1.5,2.3c0.6,0.6,1.4,1.1,2.3,1.5c0.9,0.4,1.8,0.5,2.8,0.5h7v-7.1c0-1-0.2-1.9-0.5-2.7c-0.4-0.9-0.9-1.6-1.5-2.3
|
||||||
|
c-0.6-0.6-1.4-1.1-2.3-1.5C122.8,256.2,121.9,256.1,120.9,256.1z"/>
|
||||||
|
<path d="M120.9,242c2.9,0,5.7,0.5,8.2,1.6s4.8,2.6,6.7,4.5s3.4,4.1,4.5,6.7c1.1,2.5,1.6,5.3,1.6,8.2v21.2h-21
|
||||||
|
c-2.9,0-5.6-0.5-8.2-1.6c-2.6-1.1-4.8-2.6-6.8-4.6c-1.9-1.9-3.5-4.2-4.6-6.8c-1.1-2.6-1.6-5.3-1.6-8.2c0-2.9,0.5-5.7,1.6-8.2
|
||||||
|
c1.1-2.5,2.6-4.8,4.6-6.7c1.9-1.9,4.2-3.4,6.8-4.5C115.3,242.6,118,242,120.9,242z M133.6,275.8V263c0-1.8-0.3-3.4-1-4.9
|
||||||
|
s-1.6-2.9-2.7-4c-1.2-1.2-2.5-2.1-4-2.7c-1.5-0.7-3.2-1-4.9-1c-1.8,0-3.4,0.3-5,1s-2.9,1.6-4.1,2.7c-1.2,1.2-2.1,2.5-2.7,4
|
||||||
|
c-0.7,1.5-1,3.2-1,4.9c0,1.8,0.3,3.4,1,5s1.6,2.9,2.7,4.1c1.2,1.2,2.5,2.1,4.1,2.7c1.6,0.7,3.2,1,5,1L133.6,275.8L133.6,275.8z"/>
|
||||||
|
<g>
|
||||||
|
<path class="st13" d="M155.4,174.5h19.7v34.7c2.3-0.6,4.7-1,7.1-1c1,0,1.9-0.2,2.7-0.5c0.9-0.4,1.6-0.9,2.3-1.5
|
||||||
|
c0.6-0.6,1.1-1.4,1.5-2.3s0.5-1.8,0.5-2.8v-9.8h19.7v9.8c0,4.4-1,8.5-3,12.3c-0.9,1.7-1.9,3.2-3.1,4.6c1.2,1.4,2.2,3,3.1,4.7
|
||||||
|
c2,3.8,2.9,7.9,2.9,12.2v9.9h-19.7v-9.9c0-1-0.2-1.9-0.5-2.7c-0.4-0.9-0.9-1.6-1.5-2.3c-0.6-0.6-1.4-1.1-2.3-1.5
|
||||||
|
c-0.8-0.4-1.7-0.5-2.7-0.5s-1.9,0.2-2.8,0.5c-0.9,0.4-1.6,0.9-2.3,1.5c-0.6,0.6-1.1,1.4-1.5,2.3c-0.4,0.8-0.5,1.7-0.5,2.7v12.4
|
||||||
|
l-19.7,1.1v-73.9H155.4z"/>
|
||||||
|
<path d="M161.1,242.5V235v-54.8h8.4v38.1c1.8-1.4,3.8-2.4,6-3.2c2.2-0.8,4.4-1.1,6.8-1.1c1.8,0,3.4-0.3,4.9-1s2.9-1.6,4-2.7
|
||||||
|
c1.2-1.2,2.1-2.5,2.7-4.1c0.7-1.6,1-3.2,1-5v-4.1h8.4v4.1c0,3.5-0.8,6.7-2.3,9.6s-3.6,5.3-6.2,7.3c2.6,1.9,4.7,4.4,6.2,7.3
|
||||||
|
s2.3,6.1,2.3,9.6v4.2h-8.4V235c0-1.8-0.3-3.4-1-4.9s-1.6-2.9-2.7-4c-1.2-1.2-2.5-2.1-4-2.7c-1.5-0.7-3.2-1-4.9-1
|
||||||
|
c-1.8,0-3.4,0.3-5,1s-2.9,1.6-4.1,2.7c-1.2,1.2-2.1,2.5-2.7,4c-0.7,1.5-1,3.2-1,4.9v7.1"/>
|
||||||
|
<path class="st13" d="M138.7,289.9v-26.8c0-3.7,0.7-7.2,2.1-10.5c1.4-3.2,3.3-6,5.8-8.5c2.4-2.4,5.3-4.3,8.5-5.7
|
||||||
|
c1.5-0.7,3.2-1.2,4.8-1.5l0.4-0.1l14.8-0.8v20h-9.6c-1,0-1.9,0.2-2.7,0.5c-0.9,0.4-1.6,0.9-2.3,1.5c-0.7,0.7-1.2,1.4-1.5,2.3
|
||||||
|
c-0.4,0.8-0.5,1.7-0.5,2.7v26.8h-19.8V289.9z"/>
|
||||||
|
<path d="M169.4,242v8.4h-3.9c-1.8,0-3.4,0.3-4.9,1s-2.9,1.6-4,2.7c-1.2,1.2-2.1,2.5-2.7,4c-0.7,1.5-1,3.2-1,4.9v21.2h-8.4v-21.1
|
||||||
|
c0-2.9,0.5-5.7,1.6-8.2c1.1-2.5,2.6-4.8,4.6-6.7c1.9-1.9,4.2-3.4,6.8-4.5c1.2-0.5,2.5-0.9,3.8-1.2"/>
|
||||||
|
</g>
|
||||||
|
<path class="st13" d="M238.4,290c-3.6,0-7-0.7-10.2-2s-6.2-3.3-8.7-5.8c-2.6-2.6-4.6-5.6-5.9-9c-1.2-3.2-1.9-6.6-1.9-10
|
||||||
|
s0.6-6.7,1.9-9.9c1.3-3.3,3.3-6.3,5.9-8.9s5.6-4.6,8.9-5.9s6.6-1.9,10-1.9s6.8,0.7,10,1.9c3.3,1.3,6.3,3.3,8.9,5.9l6.9,6.9l-12,12
|
||||||
|
l12,12l-6.9,6.9c-2.5,2.5-5.4,4.5-8.7,5.8C245.4,289.4,242,290,238.4,290z"/>
|
||||||
|
<path d="M250.3,269.4l5.9,5.9l-2.9,2.9c-2,2-4.3,3.5-6.9,4.6s-5.3,1.6-8.1,1.6c-2.8,0-5.5-0.5-8.1-1.6s-4.9-2.6-6.9-4.6
|
||||||
|
c-2.1-2.1-3.6-4.4-4.6-7s-1.5-5.2-1.5-7.9c0-2.7,0.5-5.3,1.5-7.9c1-2.6,2.5-4.9,4.6-6.9c2.1-2.1,4.4-3.6,7-4.6s5.2-1.5,7.9-1.5
|
||||||
|
c2.7,0,5.3,0.5,7.9,1.5s4.9,2.6,7,4.6l2.9,2.9l-23.4,23.4c2.4,1.2,4.9,1.6,7.6,1.2s5-1.6,7-3.6L250.3,269.4z M229.4,254.2
|
||||||
|
c-2.5,2.5-3.8,5.5-3.8,9c0,1.9,0.4,3.8,1.3,5.5c0.8-0.8,1.9-1.9,3.4-3.4s3.2-3.2,4.9-4.9c1.7-1.7,3.4-3.4,5-4.9
|
||||||
|
c1.6-1.6,2.8-2.8,3.7-3.7c-2.4-1.2-4.9-1.6-7.6-1.2C233.7,251.1,231.4,252.2,229.4,254.2z"/>
|
||||||
|
<path class="st13" d="M253.4,289.9v-26.8c0-3.7,0.7-7.2,2.1-10.5c1.4-3.2,3.3-6,5.8-8.5c2.4-2.4,5.3-4.3,8.5-5.7
|
||||||
|
c3.3-1.4,6.8-2.1,10.4-2.1h9.9V256h-9.9c-1,0-1.9,0.2-2.7,0.5c-0.9,0.4-1.6,0.9-2.3,1.5c-0.6,0.6-1.1,1.4-1.5,2.3
|
||||||
|
c-0.4,0.8-0.5,1.7-0.5,2.7v26.8h-19.8V289.9z"/>
|
||||||
|
<path d="M284.4,242v8.4h-4.2c-1.8,0-3.4,0.3-4.9,1s-2.9,1.6-4,2.7c-1.2,1.2-2.1,2.5-2.7,4c-0.7,1.5-1,3.2-1,4.9v21.2h-8.4v-21.1
|
||||||
|
c0-2.9,0.5-5.7,1.6-8.2c1.1-2.5,2.6-4.8,4.6-6.7c1.9-1.9,4.2-3.4,6.8-4.5c2.6-1.1,5.3-1.6,8.2-1.6L284.4,242L284.4,242z"/>
|
||||||
|
<path class="st13" d="M341.7,289.9c-4.3,0-8.5-1-12.2-2.9c-1.7-0.9-3.3-1.9-4.7-3.1c-1.4,1.2-3,2.2-4.6,3.1c-3.7,2-7.8,3-12.3,3
|
||||||
|
c-3.6,0-7.1-0.7-10.4-2.1c-3.2-1.4-6.1-3.3-8.5-5.8c-2.4-2.4-4.4-5.3-5.8-8.5c-1.4-3.3-2.1-6.8-2.1-10.4v-26.7h19.8v26.7
|
||||||
|
c0,1,0.2,1.9,0.5,2.8c0.4,0.9,0.9,1.6,1.5,2.3c0.6,0.6,1.4,1.1,2.3,1.5c0.8,0.4,1.7,0.5,2.7,0.5s1.9-0.2,2.8-0.5
|
||||||
|
c0.9-0.4,1.6-0.9,2.3-1.5c0.6-0.6,1.1-1.4,1.5-2.3s0.5-1.8,0.5-2.8v-26.7h19.7v26.7c0,1,0.2,1.9,0.5,2.8c0.4,0.9,0.9,1.6,1.5,2.3
|
||||||
|
c0.6,0.6,1.4,1.1,2.3,1.5c0.8,0.4,1.7,0.5,2.7,0.5s1.9-0.2,2.8-0.5c0.9-0.4,1.6-0.9,2.3-1.5c0.6-0.6,1.1-1.4,1.5-2.3
|
||||||
|
s0.5-1.8,0.5-2.8v-26.7h19.7v26.7c0,3.6-0.7,7.1-2.1,10.4c-1.4,3.2-3.3,6.1-5.8,8.5c-2.4,2.4-5.3,4.4-8.5,5.7
|
||||||
|
C349,289.2,345.4,289.9,341.7,289.9z"/>
|
||||||
|
<path d="M362.9,242.1v21c0,2.9-0.5,5.6-1.6,8.2s-2.6,4.8-4.6,6.8c-1.9,1.9-4.2,3.5-6.7,4.6s-5.3,1.6-8.2,1.6
|
||||||
|
c-3.4,0-6.6-0.8-9.6-2.3c-2.9-1.5-5.4-3.6-7.3-6.2c-1.9,2.6-4.4,4.7-7.3,6.2s-6.1,2.3-9.6,2.3c-2.9,0-5.6-0.5-8.2-1.6
|
||||||
|
s-4.8-2.6-6.8-4.6c-1.9-1.9-3.5-4.2-4.6-6.8c-1.1-2.6-1.6-5.3-1.6-8.2v-21h8.4v21c0,1.8,0.3,3.4,1,5s1.6,2.9,2.7,4.1s2.5,2.1,4,2.7
|
||||||
|
c1.5,0.7,3.2,1,4.9,1c1.8,0,3.4-0.3,5-1s2.9-1.6,4.1-2.7c1.2-1.2,2.1-2.5,2.7-4.1c0.7-1.6,1-3.2,1-5v-21h8.4v21c0,1.8,0.3,3.4,1,5
|
||||||
|
s1.6,2.9,2.7,4.1c1.2,1.2,2.5,2.1,4,2.7c1.5,0.7,3.2,1,4.9,1c1.8,0,3.4-0.3,5-1s2.9-1.6,4.1-2.7s2.1-2.5,2.7-4.1c0.7-1.6,1-3.2,1-5
|
||||||
|
v-21H362.9z"/>
|
||||||
|
<path class="st13" d="M387,290c-3.6,0-7-0.7-10.2-2s-6.2-3.3-8.7-5.8c-2.6-2.6-4.6-5.6-5.9-9c-1.2-3.2-1.9-6.6-1.9-10
|
||||||
|
s0.6-6.7,1.9-9.9c1.3-3.3,3.3-6.3,5.9-8.9s5.6-4.6,8.9-5.9s6.6-1.9,10-1.9s6.8,0.7,10,1.9c3.3,1.3,6.3,3.3,8.9,5.9l6.9,6.9l-12,12
|
||||||
|
l12,12l-6.9,6.9c-2.5,2.5-5.4,4.5-8.7,5.8C394,289.4,390.5,290,387,290z"/>
|
||||||
|
<path d="M398.9,269.4l5.9,5.9l-2.9,2.9c-2,2-4.3,3.5-6.9,4.6s-5.3,1.6-8.1,1.6s-5.5-0.5-8.1-1.6s-4.8-2.6-6.9-4.6
|
||||||
|
c-2.1-2.1-3.6-4.4-4.6-7s-1.5-5.2-1.5-7.9c0-2.7,0.5-5.3,1.5-7.9c1-2.6,2.5-4.9,4.6-6.9c2.1-2.1,4.4-3.6,7-4.6s5.2-1.5,7.9-1.5
|
||||||
|
c2.7,0,5.3,0.5,7.9,1.5s4.9,2.6,7,4.6l2.9,2.9l-23.4,23.4c2.4,1.2,4.9,1.6,7.6,1.2s5-1.6,7-3.6L398.9,269.4z M378,254.2
|
||||||
|
c-2.5,2.5-3.8,5.5-3.8,9c0,1.9,0.4,3.8,1.3,5.5c0.8-0.8,1.9-1.9,3.4-3.4s3.2-3.2,4.9-4.9c1.7-1.7,3.4-3.4,5-4.9
|
||||||
|
c1.6-1.6,2.8-2.8,3.7-3.7c-2.4-1.2-4.9-1.6-7.6-1.2C382.3,251.1,380,252.2,378,254.2z"/>
|
||||||
|
<path class="st13" d="M428.8,290c-3.6,0-7-0.7-10.2-2s-6.2-3.3-8.7-5.8c-2.6-2.6-4.6-5.6-5.9-9c-1.2-3.2-1.9-6.6-1.9-10
|
||||||
|
s0.6-6.7,1.9-9.9c1.3-3.3,3.3-6.3,5.9-8.9s5.6-4.6,8.9-5.9s6.6-1.9,10-1.9s6.8,0.7,10,1.9c3.3,1.3,6.3,3.3,8.9,5.9l6.9,6.9l-12,12
|
||||||
|
l12,12l-6.9,6.9c-2.5,2.5-5.4,4.5-8.7,5.8C435.7,289.4,432.3,290,428.8,290z"/>
|
||||||
|
<path d="M440.7,269.4l5.9,5.9l-2.9,2.9c-2,2-4.3,3.5-6.9,4.6s-5.3,1.6-8.1,1.6c-2.8,0-5.5-0.5-8.1-1.6s-4.8-2.6-6.9-4.6
|
||||||
|
c-2.1-2.1-3.6-4.4-4.6-7s-1.5-5.2-1.5-7.9c0-2.7,0.5-5.3,1.5-7.9c1-2.6,2.5-4.9,4.6-6.9c2.1-2.1,4.4-3.6,7-4.6s5.2-1.5,7.9-1.5
|
||||||
|
c2.7,0,5.3,0.5,7.9,1.5s4.9,2.6,7,4.6l2.9,2.9L423,274.8c2.4,1.2,4.9,1.6,7.6,1.2s5-1.6,7-3.6L440.7,269.4z M419.7,254.2
|
||||||
|
c-2.5,2.5-3.8,5.5-3.8,9c0,1.9,0.4,3.8,1.3,5.5c0.8-0.8,1.9-1.9,3.4-3.4s3.2-3.2,4.9-4.9c1.7-1.7,3.4-3.4,5-4.9
|
||||||
|
c1.6-1.6,2.8-2.8,3.7-3.7c-2.4-1.2-4.9-1.6-7.6-1.2C424.1,251.1,421.7,252.2,419.7,254.2z"/>
|
||||||
|
<path class="st13" d="M477.5,289.9V280c0-1-0.2-1.9-0.5-2.7c-0.4-0.9-0.9-1.6-1.5-2.3c-0.6-0.6-1.4-1.1-2.3-1.5
|
||||||
|
c-0.8-0.4-1.7-0.5-2.7-0.5s-1.9,0.2-2.8,0.5c-0.9,0.4-1.6,0.9-2.3,1.5c-0.7,0.7-1.1,1.4-1.5,2.3c-0.4,0.8-0.5,1.7-0.5,2.7v9.9
|
||||||
|
h-19.7v-70.4h19.7v34.7c2.3-0.6,4.7-1,7.1-1c1,0,1.9-0.2,2.7-0.5c0.9-0.4,1.6-0.9,2.3-1.5c0.6-0.6,1.1-1.4,1.5-2.3s0.5-1.8,0.5-2.8
|
||||||
|
v-9.8h19.7v9.8c0,4.4-1,8.5-3,12.3c-0.9,1.7-1.9,3.2-3.1,4.6c1.2,1.4,2.2,3,3.1,4.7c2,3.7,2.9,7.9,2.9,12.2v9.9L477.5,289.9
|
||||||
|
L477.5,289.9z"/>
|
||||||
|
<path d="M489.2,255.8c-1.5,2.9-3.6,5.3-6.2,7.3c2.6,1.9,4.7,4.4,6.2,7.3s2.3,6.1,2.3,9.6v4.2h-8.4V280c0-1.8-0.3-3.4-1-4.9
|
||||||
|
s-1.6-2.9-2.7-4c-1.2-1.2-2.5-2.1-4-2.7c-1.5-0.7-3.2-1-4.9-1c-1.8,0-3.4,0.3-5,1c-1.6,0.7-2.9,1.6-4.1,2.7c-1.2,1.2-2.1,2.5-2.7,4
|
||||||
|
c-0.7,1.5-1,3.2-1,4.9v4.2h-8.4V280v-54.8h8.4v38.1c1.8-1.4,3.8-2.4,6-3.2s4.4-1.1,6.8-1.1c1.8,0,3.4-0.3,4.9-1s2.9-1.6,4-2.7
|
||||||
|
c1.2-1.2,2.1-2.5,2.7-4.1c0.7-1.6,1-3.2,1-5v-4.1h8.4v4.1C491.5,249.7,490.8,252.9,489.2,255.8z"/>
|
||||||
|
</g>
|
||||||
|
<g id="Texte">
|
||||||
|
<path d="M154.3,197v8.4h-25.4c-1.2,0-2.2,0.4-3,1.2c-0.8,0.8-1.2,1.8-1.2,3s0.4,2.2,1.2,3.1c0.8,0.8,1.8,1.3,3,1.3h16.9
|
||||||
|
c1.8,0,3.4,0.3,4.9,1s2.9,1.5,4,2.7c1.2,1.1,2.1,2.5,2.7,4c0.7,1.5,1,3.2,1,4.9c0,1.8-0.3,3.4-1,4.9s-1.6,2.9-2.7,4
|
||||||
|
c-1.2,1.2-2.5,2.1-4,2.7c-1.5,0.7-3.2,1-4.9,1h-25.3v-8.4h25.3c1.3,0,2.3-0.4,3.1-1.2c0.8-0.8,1.2-1.8,1.2-3.1c0-1.2-0.4-2.2-1.2-3
|
||||||
|
s-1.8-1.2-3.1-1.2h-16.9c-1.8,0-3.4-0.3-4.9-1s-2.9-1.6-4-2.7c-1.1-1.2-2-2.5-2.7-4s-1-3.2-1-4.9c0-1.8,0.3-3.4,1-4.9
|
||||||
|
s1.5-2.9,2.7-4c1.1-1.1,2.5-2,4-2.7s3.2-1,4.9-1L154.3,197L154.3,197z"/>
|
||||||
|
<path d="M206,231.9v-34.8h8.4v35.7"/>
|
||||||
|
<path d="M214.4,225.1V263c0,2.9-0.5,5.6-1.6,8.2s-2.6,4.8-4.5,6.8c-1.9,1.9-4.1,3.5-6.7,4.6c-2.6,1.1-5.3,1.6-8.2,1.6
|
||||||
|
s-5.6-0.5-8.2-1.6c-2.6-1.1-4.8-2.6-6.8-4.6c-1.9-1.9-3.5-4.2-4.6-6.8c-1.1-2.6-1.6-5.3-1.6-8.2c0-2.9,0.5-5.7,1.6-8.2
|
||||||
|
c1.1-2.5,2.6-4.8,4.6-6.7c1.9-1.9,4.2-3.4,6.8-4.5s5.3-1.6,8.2-1.6h12.7v-16.9 M193.4,275.8c1.8,0,3.4-0.3,4.9-1s2.9-1.6,4-2.7
|
||||||
|
c1.2-1.2,2.1-2.5,2.7-4.1c0.7-1.6,1-3.2,1-5v-12.7h-12.7c-1.8,0-3.4,0.3-5,1s-2.9,1.6-4.1,2.7c-1.2,1.2-2.1,2.5-2.7,4
|
||||||
|
c-0.7,1.5-1,3.2-1,4.9c0,1.8,0.3,3.4,1,5s1.6,2.9,2.7,4.1c1.2,1.2,2.5,2.1,4.1,2.7C189.9,275.5,191.6,275.8,193.4,275.8z"/>
|
||||||
|
<path d="M39.6,243.9c2.5,1.1,4.8,2.6,6.7,4.5c1.9,1.9,3.4,4.1,4.5,6.7c1.1,2.5,1.6,5.3,1.6,8.2c0,2.9-0.5,5.6-1.6,8.2
|
||||||
|
s-2.6,4.8-4.5,6.8c-1.9,1.9-4.1,3.5-6.7,4.6c-2.5,1.1-5.3,1.6-8.2,1.6c-2.9,0-5.6-0.5-8.2-1.6s-4.8-2.6-6.8-4.6
|
||||||
|
c-1.9-1.9-3.5-4.2-4.6-6.8c-1.1-2.6-1.6-5.3-1.6-8.2v-37.9h8.4v16.8h12.8C34.3,242.2,37,242.8,39.6,243.9z M31.4,276
|
||||||
|
c1.8,0,3.4-0.3,4.9-1s2.9-1.6,4-2.7c1.2-1.2,2.1-2.5,2.7-4.1c0.7-1.6,1-3.2,1-5s-0.3-3.4-1-4.9s-1.6-2.9-2.7-4
|
||||||
|
c-1.2-1.2-2.5-2.1-4-2.7c-1.5-0.7-3.2-1-4.9-1H18.6v12.7c0,1.8,0.3,3.4,1,5s1.6,2.9,2.7,4.1c1.2,1.2,2.5,2.1,4.1,2.7
|
||||||
|
C27.9,275.7,29.6,276,31.4,276z"/>
|
||||||
|
<path d="M54.9,263.3c0-2.9,0.5-5.7,1.6-8.2c1.1-2.5,2.6-4.8,4.5-6.7c1.9-1.9,4.1-3.4,6.7-4.5c2.6-1.1,5.3-1.6,8.2-1.6
|
||||||
|
s5.7,0.5,8.2,1.6s4.8,2.6,6.7,4.5s3.5,4.1,4.6,6.7c1.1,2.5,1.6,5.3,1.6,8.2c0,2.9-0.5,5.6-1.6,8.2s-2.6,4.8-4.6,6.8
|
||||||
|
c-1.9,1.9-4.2,3.5-6.7,4.6s-5.3,1.6-8.2,1.6s-5.6-0.5-8.2-1.6c-2.6-1.1-4.8-2.6-6.7-4.6c-1.9-1.9-3.4-4.2-4.5-6.8
|
||||||
|
C55.5,268.9,54.9,266.1,54.9,263.3z M63.2,263.3c0,1.8,0.3,3.4,1,5c0.7,1.6,1.6,2.9,2.7,4.1c1.2,1.2,2.5,2.1,4.1,2.7
|
||||||
|
c1.6,0.7,3.2,1,5,1s3.4-0.3,5-1c1.6-0.7,2.9-1.6,4.1-2.7c1.2-1.2,2.1-2.5,2.7-4.1c0.7-1.6,1-3.2,1-5s-0.3-3.4-1-4.9s-1.6-2.9-2.7-4
|
||||||
|
c-1.2-1.2-2.5-2.1-4.1-2.7c-1.6-0.7-3.2-1-5-1s-3.4,0.3-5,1c-1.6,0.7-2.9,1.6-4.1,2.7c-1.2,1.2-2.1,2.5-2.7,4
|
||||||
|
C63.5,259.9,63.2,261.5,63.2,263.3z"/>
|
||||||
|
<path d="M120.9,242c2.9,0,5.7,0.5,8.2,1.6s4.8,2.6,6.7,4.5s3.4,4.1,4.5,6.7c1.1,2.5,1.6,5.3,1.6,8.2v21.2h-21
|
||||||
|
c-2.9,0-5.6-0.5-8.2-1.6c-2.6-1.1-4.8-2.6-6.8-4.6c-1.9-1.9-3.5-4.2-4.6-6.8c-1.1-2.6-1.6-5.3-1.6-8.2c0-2.9,0.5-5.7,1.6-8.2
|
||||||
|
c1.1-2.5,2.6-4.8,4.6-6.7c1.9-1.9,4.2-3.4,6.8-4.5C115.3,242.6,118,242,120.9,242z M133.6,275.8V263c0-1.8-0.3-3.4-1-4.9
|
||||||
|
s-1.6-2.9-2.7-4c-1.2-1.2-2.5-2.1-4-2.7c-1.5-0.7-3.2-1-4.9-1c-1.8,0-3.4,0.3-5,1s-2.9,1.6-4.1,2.7c-1.2,1.2-2.1,2.5-2.7,4
|
||||||
|
c-0.7,1.5-1,3.2-1,4.9c0,1.8,0.3,3.4,1,5s1.6,2.9,2.7,4.1c1.2,1.2,2.5,2.1,4.1,2.7c1.6,0.7,3.2,1,5,1L133.6,275.8L133.6,275.8z"/>
|
||||||
|
<g>
|
||||||
|
<path d="M161.1,242.5V235v-54.8h8.4v38.1c1.8-1.4,3.8-2.4,6-3.2c2.2-0.8,4.4-1.1,6.8-1.1c1.8,0,3.4-0.3,4.9-1s2.9-1.6,4-2.7
|
||||||
|
c1.2-1.2,2.1-2.5,2.7-4.1c0.7-1.6,1-3.2,1-5v-4.1h8.4v4.1c0,3.5-0.8,6.7-2.3,9.6s-3.6,5.3-6.2,7.3c2.6,1.9,4.7,4.4,6.2,7.3
|
||||||
|
s2.3,6.1,2.3,9.6v4.2h-8.4V235c0-1.8-0.3-3.4-1-4.9s-1.6-2.9-2.7-4c-1.2-1.2-2.5-2.1-4-2.7c-1.5-0.7-3.2-1-4.9-1
|
||||||
|
c-1.8,0-3.4,0.3-5,1s-2.9,1.6-4.1,2.7c-1.2,1.2-2.1,2.5-2.7,4c-0.7,1.5-1,3.2-1,4.9v7.1"/>
|
||||||
|
<path d="M169.4,242v8.4h-3.9c-1.8,0-3.4,0.3-4.9,1s-2.9,1.6-4,2.7c-1.2,1.2-2.1,2.5-2.7,4c-0.7,1.5-1,3.2-1,4.9v21.2h-8.4v-21.1
|
||||||
|
c0-2.9,0.5-5.7,1.6-8.2c1.1-2.5,2.6-4.8,4.6-6.7c1.9-1.9,4.2-3.4,6.8-4.5c1.2-0.5,2.5-0.9,3.8-1.2"/>
|
||||||
|
</g>
|
||||||
|
<path d="M250.3,269.4l5.9,5.9l-2.9,2.9c-2,2-4.3,3.5-6.9,4.6s-5.3,1.6-8.1,1.6c-2.8,0-5.5-0.5-8.1-1.6s-4.9-2.6-6.9-4.6
|
||||||
|
c-2.1-2.1-3.6-4.4-4.6-7s-1.5-5.2-1.5-7.9c0-2.7,0.5-5.3,1.5-7.9c1-2.6,2.5-4.9,4.6-6.9c2.1-2.1,4.4-3.6,7-4.6s5.2-1.5,7.9-1.5
|
||||||
|
c2.7,0,5.3,0.5,7.9,1.5s4.9,2.6,7,4.6l2.9,2.9l-23.4,23.4c2.4,1.2,4.9,1.6,7.6,1.2s5-1.6,7-3.6L250.3,269.4z M229.4,254.2
|
||||||
|
c-2.5,2.5-3.8,5.5-3.8,9c0,1.9,0.4,3.8,1.3,5.5c0.8-0.8,1.9-1.9,3.4-3.4s3.2-3.2,4.9-4.9c1.7-1.7,3.4-3.4,5-4.9
|
||||||
|
c1.6-1.6,2.8-2.8,3.7-3.7c-2.4-1.2-4.9-1.6-7.6-1.2C233.7,251.1,231.4,252.2,229.4,254.2z"/>
|
||||||
|
<path d="M284.4,242v8.4h-4.2c-1.8,0-3.4,0.3-4.9,1s-2.9,1.6-4,2.7c-1.2,1.2-2.1,2.5-2.7,4c-0.7,1.5-1,3.2-1,4.9v21.2h-8.4v-21.1
|
||||||
|
c0-2.9,0.5-5.7,1.6-8.2c1.1-2.5,2.6-4.8,4.6-6.7c1.9-1.9,4.2-3.4,6.8-4.5c2.6-1.1,5.3-1.6,8.2-1.6L284.4,242L284.4,242z"/>
|
||||||
|
<path d="M362.9,242.1v21c0,2.9-0.5,5.6-1.6,8.2s-2.6,4.8-4.6,6.8c-1.9,1.9-4.2,3.5-6.7,4.6s-5.3,1.6-8.2,1.6
|
||||||
|
c-3.4,0-6.6-0.8-9.6-2.3c-2.9-1.5-5.4-3.6-7.3-6.2c-1.9,2.6-4.4,4.7-7.3,6.2s-6.1,2.3-9.6,2.3c-2.9,0-5.6-0.5-8.2-1.6
|
||||||
|
s-4.8-2.6-6.8-4.6c-1.9-1.9-3.5-4.2-4.6-6.8c-1.1-2.6-1.6-5.3-1.6-8.2v-21h8.4v21c0,1.8,0.3,3.4,1,5s1.6,2.9,2.7,4.1s2.5,2.1,4,2.7
|
||||||
|
c1.5,0.7,3.2,1,4.9,1c1.8,0,3.4-0.3,5-1s2.9-1.6,4.1-2.7c1.2-1.2,2.1-2.5,2.7-4.1c0.7-1.6,1-3.2,1-5v-21h8.4v21c0,1.8,0.3,3.4,1,5
|
||||||
|
s1.6,2.9,2.7,4.1c1.2,1.2,2.5,2.1,4,2.7c1.5,0.7,3.2,1,4.9,1c1.8,0,3.4-0.3,5-1s2.9-1.6,4.1-2.7s2.1-2.5,2.7-4.1c0.7-1.6,1-3.2,1-5
|
||||||
|
v-21H362.9z"/>
|
||||||
|
<path d="M398.9,269.4l5.9,5.9l-2.9,2.9c-2,2-4.3,3.5-6.9,4.6s-5.3,1.6-8.1,1.6s-5.5-0.5-8.1-1.6s-4.8-2.6-6.9-4.6
|
||||||
|
c-2.1-2.1-3.6-4.4-4.6-7s-1.5-5.2-1.5-7.9c0-2.7,0.5-5.3,1.5-7.9c1-2.6,2.5-4.9,4.6-6.9c2.1-2.1,4.4-3.6,7-4.6s5.2-1.5,7.9-1.5
|
||||||
|
c2.7,0,5.3,0.5,7.9,1.5s4.9,2.6,7,4.6l2.9,2.9l-23.4,23.4c2.4,1.2,4.9,1.6,7.6,1.2s5-1.6,7-3.6L398.9,269.4z M378,254.2
|
||||||
|
c-2.5,2.5-3.8,5.5-3.8,9c0,1.9,0.4,3.8,1.3,5.5c0.8-0.8,1.9-1.9,3.4-3.4s3.2-3.2,4.9-4.9c1.7-1.7,3.4-3.4,5-4.9
|
||||||
|
c1.6-1.6,2.8-2.8,3.7-3.7c-2.4-1.2-4.9-1.6-7.6-1.2C382.3,251.1,380,252.2,378,254.2z"/>
|
||||||
|
<path d="M440.7,269.4l5.9,5.9l-2.9,2.9c-2,2-4.3,3.5-6.9,4.6s-5.3,1.6-8.1,1.6c-2.8,0-5.5-0.5-8.1-1.6s-4.8-2.6-6.9-4.6
|
||||||
|
c-2.1-2.1-3.6-4.4-4.6-7s-1.5-5.2-1.5-7.9c0-2.7,0.5-5.3,1.5-7.9c1-2.6,2.5-4.9,4.6-6.9c2.1-2.1,4.4-3.6,7-4.6s5.2-1.5,7.9-1.5
|
||||||
|
c2.7,0,5.3,0.5,7.9,1.5s4.9,2.6,7,4.6l2.9,2.9L423,274.8c2.4,1.2,4.9,1.6,7.6,1.2s5-1.6,7-3.6L440.7,269.4z M419.7,254.2
|
||||||
|
c-2.5,2.5-3.8,5.5-3.8,9c0,1.9,0.4,3.8,1.3,5.5c0.8-0.8,1.9-1.9,3.4-3.4s3.2-3.2,4.9-4.9c1.7-1.7,3.4-3.4,5-4.9
|
||||||
|
c1.6-1.6,2.8-2.8,3.7-3.7c-2.4-1.2-4.9-1.6-7.6-1.2C424.1,251.1,421.7,252.2,419.7,254.2z"/>
|
||||||
|
<path d="M489.2,255.8c-1.5,2.9-3.6,5.3-6.2,7.3c2.6,1.9,4.7,4.4,6.2,7.3s2.3,6.1,2.3,9.6v4.2h-8.4V280c0-1.8-0.3-3.4-1-4.9
|
||||||
|
s-1.6-2.9-2.7-4c-1.2-1.2-2.5-2.1-4-2.7c-1.5-0.7-3.2-1-4.9-1c-1.8,0-3.4,0.3-5,1c-1.6,0.7-2.9,1.6-4.1,2.7c-1.2,1.2-2.1,2.5-2.7,4
|
||||||
|
c-0.7,1.5-1,3.2-1,4.9v4.2h-8.4V280v-54.8h8.4v38.1c1.8-1.4,3.8-2.4,6-3.2s4.4-1.1,6.8-1.1c1.8,0,3.4-0.3,4.9-1s2.9-1.6,4-2.7
|
||||||
|
c1.2-1.2,2.1-2.5,2.7-4.1c0.7-1.6,1-3.2,1-5v-4.1h8.4v4.1C491.5,249.7,490.8,252.9,489.2,255.8z"/>
|
||||||
|
</g>
|
||||||
|
<g id="Ebene_7">
|
||||||
|
<g>
|
||||||
|
<g>
|
||||||
|
<path class="st15" d="M497.8,327.5c-1.5,0-2.8-0.2-3.7-1.4l1-0.9l0.5-0.5c0,0,0.3-0.2,0.5,0s0.4,0.3,0.6,0.4
|
||||||
|
c0.5,0.2,1.1,0.3,1.6,0.3c0.8,0,1.7-0.3,1.9-1c0.1-0.5-0.1-0.8-0.8-0.9l-1.5-0.1c-1.7-0.2-2.6-0.9-2.2-2.7c0.4-2,2.1-2.9,4-3
|
||||||
|
c1.3,0,2.7,0.5,3,1.2c0.5,0.9-1.3,1.5-1.3,1.5c-0.1-0.1-0.2-0.3-0.3-0.4c-0.4-0.3-0.9-0.4-1.5-0.4c-0.9,0-1.4,0.4-1.5,0.9
|
||||||
|
c-0.1,0.4,0,0.8,0.8,0.8l1.5,0.1c1.8,0.2,2.6,1.2,2.2,2.8C502,326.5,500,327.5,497.8,327.5"/>
|
||||||
|
<path class="st15" d="M426.3,318.3c-1.3,2.4-5.5,9.3-5.5,9.3h-1.9l-0.8-13.2c0,0,2.7,1.3,2.7,4.1l0.2,4.5l4.9-8.6
|
||||||
|
C426,314.4,427.6,315.9,426.3,318.3"/>
|
||||||
|
<path class="st15" d="M431,323.5h-1.9c-0.9,0-1.4,0.4-1.6,1.1s0.1,1.1,1.1,1.1c0.7,0,1.1-0.1,1.6-0.5c0.3-0.2,0.5-0.6,0.7-1.2
|
||||||
|
L431,323.5 M431.6,327.6c-1,0-1.4-0.8-1.4-0.8c-0.8,0.6-1.5,0.9-2.6,0.9s-1.8-0.3-2.2-0.9c-0.4-0.5-0.4-1.3-0.2-2.2
|
||||||
|
c0.4-1.5,1.8-2.8,4-2.8h2.2l0.1-0.5c0.3-1.1-0.1-1.5-1.4-1.5c-0.9,0-1.3,0.2-2,0c-0.6-0.2-1.1-0.7-1.1-0.7c1.2-1,2.2-1.3,3.8-1.3
|
||||||
|
c2.6,0,3.7,1.1,3.1,3.4l-1.7,6.4H431.6z"/>
|
||||||
|
<path class="st15" d="M449.8,316.7h-1.1l-1.7,6.4c-0.9,3.7-3.7,4.5-3.7,4.5l2.9-10.9h-3.4c0,0,0.3-2.3,2.7-2.3h7.1
|
||||||
|
C452.7,314.4,451.8,316.7,449.8,316.7"/>
|
||||||
|
<path class="st15" d="M455.3,327.6l1.6-5.9c0.3-1.3-0.3-1.7-1.1-1.7c-0.7,0-1.6,0.4-2,1.7l-0.7,2.7c-0.8,2.8-3.2,3.2-3.2,3.2
|
||||||
|
l3.5-13.2h2.3l-1.2,4.4c0.8-0.7,1.7-1,2.5-1c2.1,0,2.8,1.5,2.2,3.5l-0.6,2.1l-1.1,4.2L455.3,327.6"/>
|
||||||
|
<path class="st15" d="M437.6,324.3c-0.8,2.8-3.2,3.2-3.2,3.2l3.5-13.2h2.3L437.6,324.3"/>
|
||||||
|
<path class="st15" d="M465.9,320.3c-0.2-0.3-0.5-0.4-1-0.4s-0.9,0.1-1.2,0.4c-0.6,0.5-0.9,1.3-1.2,2.3c-0.3,1-0.4,1.9-0.1,2.4
|
||||||
|
c0.2,0.3,0.5,0.4,1,0.4s0.9-0.1,1.2-0.4c0.6-0.5,0.9-1.4,1.2-2.4S466.3,320.8,465.9,320.3 M466.2,326.4c-0.7,0.6-1.9,1.2-3.2,1.2
|
||||||
|
c-1.4,0-2.2-0.6-2.6-1.2c-0.6-0.9-0.5-2-0.1-3.8c0.5-1.7,1-2.8,2.1-3.7c0.7-0.6,1.8-1.2,3.2-1.2s2.2,0.6,2.6,1.2
|
||||||
|
c0.6,0.9,0.5,2,0.1,3.7C467.7,324.4,467.2,325.4,466.2,326.4"/>
|
||||||
|
<path class="st15" d="M475.6,320.4c-0.3-0.4-0.5-0.6-1.1-0.6c-0.7,0-1.7,0.6-2,1.8l-0.6,2.3c-0.8,3.2-3.3,3.5-3.3,3.5l2.6-9.7
|
||||||
|
h2.3l-0.2,0.9c0.6-0.6,1.6-1,2.6-1c0.9,0,1.5,0.2,2,0.9L475.6,320.4"/>
|
||||||
|
<path class="st15" d="M482.8,320.7c-0.1-0.6-0.5-1-1.3-1s-1.4,0.4-1.8,1c-0.2,0.4-0.4,0.6-0.5,1h3.6
|
||||||
|
C482.8,321.3,482.8,321,482.8,320.7 M483,323.3h-4.3c-0.3,1.2,0.2,2.2,1.5,2.2c1,0,1.6-0.3,2.4-0.9l1,1.4c-1.2,1-2.3,1.5-4,1.5
|
||||||
|
c-2.2,0-4.1-1-3-4.9c0.8-3.2,3-4.9,5.4-4.9c2.6,0,3.6,2,2.9,4.6C484.9,322.3,484.6,323.3,483,323.3"/>
|
||||||
|
<path class="st15" d="M491.3,324.2l0.7-2.6c0.3-1.3-0.3-1.8-1.1-1.8c-0.7,0-1.7,0.4-2,1.8l-1.2,4.3l-0.4,1.5H485l2.6-9.7h2.3
|
||||||
|
l-0.2,0.9c0.8-0.7,1.8-1,2.6-1c0.9,0,1.6,0.3,2,0.9c0.6,0.8,0.5,1.7,0.2,2.7l-1.6,6.2C492.8,327.4,490.3,327.5,491.3,324.2"/>
|
||||||
|
</g>
|
||||||
|
<g>
|
||||||
|
<path class="st16" d="M392.4,304.3c-7.4,0-13.7,4.8-15.9,11.5c-2.2-6.7-8.4-11.5-15.8-11.5c-9.2,0-16.7,7.5-16.7,16.7
|
||||||
|
s7.5,16.7,16.7,16.7c7.4,0,13.7-4.8,15.8-11.5c2.2,6.7,8.5,11.5,15.9,11.5c9.2,0,16.7-7.5,16.7-16.7S401.6,304.3,392.4,304.3z
|
||||||
|
M392.4,336c-8.3,0-15.1-6.7-15.1-15s6.7-15,15.1-15c8.3,0,15.1,6.7,15.1,15C407.5,329.3,400.7,336,392.4,336z"/>
|
||||||
|
<g>
|
||||||
|
<rect x="353.5" y="319.6" class="st13" width="14.4" height="0.7"/>
|
||||||
|
<rect x="357.1" y="327.5" class="st13" width="8.3" height="0.7"/>
|
||||||
|
<path class="st13" d="M349,325v-3.3h1.8v3.4c0,1.2-0.8,1.8-2.2,1.8c-1.4,0-2.2-0.6-2.2-1.8v-3.4h1.8v3.3c0,0.3,0.1,0.4,0.4,0.4
|
||||||
|
C348.9,325.4,349,325.3,349,325"/>
|
||||||
|
<polygon class="st13" points="354.7,326.8 353.7,324.8 353.6,324.8 353.6,326.8 352.1,326.8 352.1,321.7 353.8,321.7
|
||||||
|
354.8,323.8 354.8,323.8 354.8,321.7 356.4,321.7 356.4,326.8 "/>
|
||||||
|
<rect x="358" y="321.7" class="st13" width="1.7" height="5.1"/>
|
||||||
|
<polygon class="st13" points="363.7,323.1 363.7,326.8 362,326.8 362,323.1 360.8,323.1 360.9,321.7 364.9,321.7 364.8,323.1
|
||||||
|
"/>
|
||||||
|
<polygon class="st13" points="366,326.8 366,321.7 369.4,321.7 369.3,323 367.8,323 367.8,323.7 369.1,323.7 369.1,324.8
|
||||||
|
367.8,324.8 367.8,325.6 369.4,325.6 369.3,326.8 "/>
|
||||||
|
<path class="st13" d="M372.6,323h-0.2v2.5h0.2c0.6,0,0.7-0.5,0.7-1.2C373.3,323.4,373.2,323,372.6,323 M372.6,326.8h-2v-5.1h2
|
||||||
|
c1.8,0,2.4,1,2.4,2.5C375.1,325.6,374.5,326.8,372.6,326.8"/>
|
||||||
|
<polygon class="st13" points="353.5,318.9 353.5,313.7 355.2,313.7 355.2,317.5 356.7,317.5 356.5,318.9 "/>
|
||||||
|
<rect x="357.1" y="313.7" class="st13" width="1.7" height="5.1"/>
|
||||||
|
<polygon class="st13" points="363.1,318.9 360.5,318.9 359.5,313.7 361.4,313.7 361.8,316.9 361.9,316.9 362.2,313.7 364,313.7
|
||||||
|
"/>
|
||||||
|
<polygon class="st13" points="364.6,318.9 364.6,313.7 368,313.7 367.9,315.1 366.4,315.1 366.4,315.7 367.7,315.7 367.7,316.9
|
||||||
|
366.4,316.9 366.4,317.6 368,317.6 367.9,318.9 "/>
|
||||||
|
</g>
|
||||||
|
<path class="st16" d="M393.4,331.8h-1.1c0,0-2.5,0.1-3.8-3.4l-5.5-15.7c0,0,4.7,2,5.9,6L393.4,331.8"/>
|
||||||
|
<path class="st16" d="M400.5,315.2h-1.1l-1.8,6.8c-1,3.9-3.9,4.7-3.9,4.7l3-11.5h-3.5c0,0,0.3-2.4,2.9-2.4h7.5
|
||||||
|
C403.5,312.8,402.6,315.2,400.5,315.2"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
<g id="masque">
|
||||||
|
<polygon class="st13" points="179.6,226.6 175.1,228.7 172.2,232 172.2,240.4 172.2,244.9 174,245.8 186.7,240.7 191.1,236.5
|
||||||
|
190.4,231.3 186.4,226.6 "/>
|
||||||
|
<polygon class="st13" points="140,242 139.3,245.8 141.9,249.4 143.7,251.6 147,246.8 148.2,242.7 143.2,242.2 "/>
|
||||||
|
<polygon class="st13" points="251.2,260.2 251.2,264.8 253.4,267.3 255.7,264.8 255.7,261 253.6,259.5 "/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 60 KiB |
@@ -0,0 +1,58 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||||
|
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||||
|
<svg width="100%" height="100%" viewBox="0 0 250 35" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-miterlimit:10;">
|
||||||
|
<g id="Ebene-1" serif:id="Ebene 1">
|
||||||
|
<g>
|
||||||
|
<path d="M7.532,12.709L7.532,13.161L5.771,13.161L5.771,12.614C5.771,11.115 5.2,10.234 3.867,10.234C2.535,10.234 1.964,11.115 1.964,12.59C1.964,16.326 7.555,16.683 7.555,21.37C7.555,23.893 6.342,25.534 3.796,25.534C1.25,25.534 0.06,23.893 0.06,21.37L0.06,20.418L1.797,20.418L1.797,21.465C1.797,22.964 2.416,23.845 3.748,23.845C5.081,23.845 5.699,22.964 5.699,21.465C5.699,17.753 0.131,17.396 0.131,12.709C0.131,10.139 1.321,8.545 3.819,8.545C6.342,8.545 7.532,10.187 7.532,12.709" style="fill:rgb(90,150,200);fill-rule:nonzero;"/>
|
||||||
|
<path d="M16.288,16.088L16.288,17.753L12.219,17.753L12.219,23.678L17.216,23.678L17.216,25.368L10.363,25.368L10.363,8.711L17.216,8.711L17.216,10.401L12.219,10.401L12.219,16.088L16.288,16.088Z" style="fill:rgb(90,150,200);fill-rule:nonzero;"/>
|
||||||
|
<path d="M26.258,25.344L24.473,25.344L21.713,12.09L21.713,25.368L20.095,25.368L20.095,8.711L22.689,8.711L25.425,22.013L28.066,8.711L30.66,8.711L30.66,25.368L28.899,25.368L28.899,11.971L26.258,25.344Z" style="fill:rgb(90,150,200);fill-rule:nonzero;"/>
|
||||||
|
<path d="M39.678,16.088L39.678,17.753L35.609,17.753L35.609,23.678L40.606,23.678L40.606,25.368L33.753,25.368L33.753,8.711L40.606,8.711L40.606,10.401L35.609,10.401L35.609,16.088L39.678,16.088Z" style="fill:rgb(90,150,200);fill-rule:nonzero;"/>
|
||||||
|
<path d="M50.719,12.709L50.719,13.161L48.958,13.161L48.958,12.614C48.958,11.115 48.387,10.234 47.054,10.234C45.722,10.234 45.151,11.115 45.151,12.59C45.151,16.326 50.742,16.683 50.742,21.37C50.742,23.893 49.529,25.534 46.983,25.534C44.437,25.534 43.247,23.893 43.247,21.37L43.247,20.418L44.984,20.418L44.984,21.465C44.984,22.964 45.603,23.845 46.935,23.845C48.268,23.845 48.886,22.964 48.886,21.465C48.886,17.753 43.318,17.396 43.318,12.709C43.318,10.139 44.508,8.545 47.007,8.545C49.529,8.545 50.719,10.187 50.719,12.709" style="fill:rgb(90,150,200);fill-rule:nonzero;"/>
|
||||||
|
<path d="M55.977,25.368L55.977,10.401L52.908,10.401L52.908,8.711L60.903,8.711L60.903,10.401L57.833,10.401L57.833,25.368L55.977,25.368Z" style="fill:rgb(90,150,200);fill-rule:nonzero;"/>
|
||||||
|
<path d="M69.302,16.088L69.302,17.753L65.233,17.753L65.233,23.678L70.23,23.678L70.23,25.368L63.377,25.368L63.377,8.711L70.23,8.711L70.23,10.401L65.233,10.401L65.233,16.088L69.302,16.088Z" style="fill:rgb(90,150,200);fill-rule:nonzero;"/>
|
||||||
|
<path d="M76.369,16.564C77.844,16.564 78.725,16.088 78.725,14.279L78.725,12.685C78.725,11.186 78.177,10.401 76.797,10.401L74.989,10.401L74.989,16.564L76.369,16.564ZM76.845,8.711C79.462,8.711 80.557,10.044 80.557,12.519L80.557,13.875C80.557,15.707 79.915,16.849 78.487,17.301C80.01,17.753 80.581,18.991 80.581,20.775L80.581,23.369C80.581,24.107 80.604,24.797 80.914,25.368L79.034,25.368C78.82,24.892 78.725,24.464 78.725,23.345L78.725,20.728C78.725,18.848 77.844,18.253 76.298,18.253L74.989,18.253L74.989,25.368L73.133,25.368L73.133,8.711L76.845,8.711Z" style="fill:rgb(90,150,200);fill-rule:nonzero;"/>
|
||||||
|
<path d="M89.623,16.088L89.623,17.753L85.554,17.753L85.554,23.678L90.551,23.678L90.551,25.368L83.698,25.368L83.698,8.711L90.551,8.711L90.551,10.401L85.554,10.401L85.554,16.088L89.623,16.088Z" style="fill:rgb(90,150,200);fill-rule:nonzero;"/>
|
||||||
|
<path d="M95.095,25.368L93.43,25.368L93.43,8.711L95.785,8.711L99.64,20.752L99.64,8.711L101.282,8.711L101.282,25.368L99.355,25.368L95.095,11.9L95.095,25.368Z" style="fill:rgb(90,150,200);fill-rule:nonzero;"/>
|
||||||
|
<path d="M108.254,23.678C109.586,23.678 110.229,22.845 110.229,21.323L110.229,12.756C110.229,11.234 109.586,10.401 108.23,10.401L106.231,10.401L106.231,23.678L108.254,23.678ZM108.278,8.711C110.871,8.711 112.061,10.282 112.061,12.852L112.061,21.251C112.061,23.797 110.871,25.368 108.278,25.368L104.375,25.368L104.375,8.711L108.278,8.711Z" style="fill:rgb(90,150,200);fill-rule:nonzero;"/>
|
||||||
|
<path d="M120.913,16.088L120.913,17.753L116.844,17.753L116.844,23.678L121.841,23.678L121.841,25.368L114.988,25.368L114.988,8.711L121.841,8.711L121.841,10.401L116.844,10.401L116.844,16.088L120.913,16.088Z" style="fill:rgb(90,150,200);fill-rule:nonzero;"/>
|
||||||
|
<path d="M178.95,12.681L178.95,13.13L177.201,13.13L177.201,12.586C177.201,11.097 176.634,10.223 175.31,10.223C173.986,10.223 173.419,11.097 173.419,12.563C173.419,16.273 178.973,16.627 178.973,21.283C178.973,23.789 177.768,25.419 175.239,25.419C172.71,25.419 171.529,23.789 171.529,21.283L171.529,20.338L173.254,20.338L173.254,21.378C173.254,22.867 173.868,23.741 175.192,23.741C176.515,23.741 177.13,22.867 177.13,21.378C177.13,17.691 171.599,17.336 171.599,12.681C171.599,10.128 172.781,8.545 175.263,8.545C177.768,8.545 178.95,10.176 178.95,12.681" style="fill:rgb(233,84,66);fill-rule:nonzero;"/>
|
||||||
|
<path d="M184.574,18.069L183.605,19.7L183.605,25.254L181.762,25.254L181.762,8.71L183.605,8.71L183.605,16.698L188.001,8.71L189.868,8.71L185.685,16.25L190.01,25.254L188.119,25.254L184.574,18.069Z" style="fill:rgb(233,84,66);fill-rule:nonzero;"/>
|
||||||
|
<rect x="192.609" y="8.71" width="1.843" height="16.544" style="fill:rgb(233,84,66);"/>
|
||||||
|
<path d="M200.739,16.509C202.204,16.509 203.078,16.037 203.078,14.241L203.078,12.657C203.078,11.168 202.535,10.388 201.164,10.388L199.368,10.388L199.368,16.509L200.739,16.509ZM201.211,8.71C203.811,8.71 204.898,10.034 204.898,12.492L204.898,13.839C204.898,15.659 204.26,16.793 202.842,17.242C204.355,17.691 204.922,18.92 204.922,20.693L204.922,23.269C204.922,24.001 204.946,24.686 205.253,25.254L203.386,25.254C203.173,24.781 203.078,24.356 203.078,23.245L203.078,20.645C203.078,18.778 202.204,18.187 200.668,18.187L199.368,18.187L199.368,25.254L197.525,25.254L197.525,8.71L201.211,8.71Z" style="fill:rgb(233,84,66);fill-rule:nonzero;"/>
|
||||||
|
<path d="M213.902,16.037L213.902,17.691L209.861,17.691L209.861,23.576L214.824,23.576L214.824,25.254L208.018,25.254L208.018,8.71L214.824,8.71L214.824,10.388L209.861,10.388L209.861,16.037L213.902,16.037Z" style="fill:rgb(233,84,66);fill-rule:nonzero;"/>
|
||||||
|
<rect x="217.707" y="8.71" width="1.843" height="16.544" style="fill:rgb(233,84,66);"/>
|
||||||
|
<path d="M229.783,12.681L229.783,13.13L228.034,13.13L228.034,12.586C228.034,11.097 227.467,10.223 226.144,10.223C224.82,10.223 224.253,11.097 224.253,12.563C224.253,16.273 229.807,16.627 229.807,21.283C229.807,23.789 228.602,25.419 226.073,25.419C223.544,25.419 222.362,23.789 222.362,21.283L222.362,20.338L224.088,20.338L224.088,21.378C224.088,22.867 224.702,23.741 226.026,23.741C227.349,23.741 227.964,22.867 227.964,21.378C227.964,17.691 222.433,17.336 222.433,12.681C222.433,10.128 223.615,8.545 226.096,8.545C228.602,8.545 229.783,10.176 229.783,12.681" style="fill:rgb(233,84,66);fill-rule:nonzero;"/>
|
||||||
|
<path d="M238.48,16.037L238.48,17.691L234.439,17.691L234.439,23.576L239.402,23.576L239.402,25.254L232.595,25.254L232.595,8.71L239.402,8.71L239.402,10.388L234.439,10.388L234.439,16.037L238.48,16.037Z" style="fill:rgb(233,84,66);fill-rule:nonzero;"/>
|
||||||
|
<path d="M243.915,25.254L242.261,25.254L242.261,8.71L244.601,8.71L248.429,20.669L248.429,8.71L250.06,8.71L250.06,25.254L248.146,25.254L243.915,11.877L243.915,25.254Z" style="fill:rgb(233,84,66);fill-rule:nonzero;"/>
|
||||||
|
<path d="M162.932,17.573C162.932,26.334 155.83,33.436 147.069,33.436C138.308,33.436 131.206,26.334 131.206,17.573C131.206,8.812 138.308,1.71 147.069,1.71C155.83,1.71 162.932,8.812 162.932,17.573" style="fill:rgb(91,150,199);fill-rule:nonzero;"/>
|
||||||
|
<path d="M162.932,17.573C162.932,8.818 155.824,1.71 147.069,1.71C138.314,1.71 131.206,8.818 131.206,17.573C131.206,26.328 138.314,33.436 147.069,33.436C155.824,33.436 162.932,26.328 162.932,17.573Z" style="fill:none;stroke:rgb(232,82,66);stroke-width:2.09px;"/>
|
||||||
|
<path d="M146.221,10.769C146.221,10.769 146.157,10.739 146.125,10.721L143.056,8.949C142.695,8.74 142.541,8.332 142.711,8.037L142.819,7.85C142.99,7.555 143.42,7.484 143.781,7.692L146.221,9.105L146.221,10.769Z" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
<path d="M147.73,10.769C147.73,10.769 147.794,10.739 147.826,10.721L150.895,8.949C151.256,8.74 151.41,8.332 151.24,8.037L151.132,7.85C150.961,7.555 150.531,7.484 150.17,7.692L147.73,9.105L147.73,10.769Z" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
<path d="M146.221,24.277C146.221,24.277 146.157,24.307 146.125,24.325L143.056,26.097C142.695,26.306 142.541,26.714 142.711,27.009L142.819,27.196C142.99,27.491 143.42,27.562 143.781,27.354L146.221,25.941L146.221,24.277Z" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
<path d="M147.73,24.277C147.73,24.277 147.794,24.307 147.826,24.325L150.895,26.097C151.256,26.306 151.41,26.714 151.24,27.009L151.132,27.196C150.961,27.491 150.531,27.562 150.17,27.354L147.73,25.941L147.73,24.277Z" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
<path d="M140.753,14.727C140.753,14.727 140.695,14.767 140.664,14.785L137.596,16.56C137.235,16.769 136.804,16.699 136.634,16.404L136.526,16.217C136.355,15.922 136.509,15.513 136.869,15.305L139.312,13.896L140.753,14.727Z" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
<path d="M141.507,13.419C141.507,13.419 141.513,13.348 141.513,13.312L141.51,9.768C141.509,9.351 141.233,9.014 140.892,9.014L140.676,9.014C140.335,9.015 140.059,9.352 140.059,9.769L140.065,12.589L141.507,13.419Z" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
<path d="M152.457,21.471C152.457,21.471 152.451,21.541 152.451,21.578L152.454,25.122C152.455,25.539 152.731,25.876 153.072,25.876L153.288,25.876C153.629,25.875 153.905,25.537 153.905,25.121L153.899,22.301L152.457,21.471Z" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
<path d="M153.211,20.163C153.211,20.163 153.269,20.122 153.3,20.104L156.368,18.329C156.729,18.121 157.16,18.191 157.33,18.486L157.438,18.673C157.609,18.968 157.455,19.377 157.095,19.585L154.652,20.994L153.211,20.163Z" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
<path d="M152.418,13.383C152.418,13.383 152.411,13.312 152.411,13.276L152.391,9.732C152.389,9.315 152.664,8.976 153.004,8.974L153.22,8.973C153.561,8.971 153.84,9.307 153.842,9.724L153.854,12.544L152.418,13.383Z" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
<path d="M153.18,14.686C153.18,14.686 153.238,14.726 153.269,14.744L156.349,16.499C156.71,16.706 157.14,16.633 157.309,16.337L157.416,16.149C157.585,15.853 157.429,15.445 157.067,15.239L154.616,13.846L153.18,14.686Z" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
<path d="M140.756,20.201C140.756,20.201 140.698,20.161 140.667,20.143L137.587,18.388C137.226,18.181 136.796,18.254 136.627,18.551L136.52,18.738C136.351,19.034 136.507,19.442 136.869,19.648L139.32,21.042L140.756,20.201Z" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
<path d="M141.519,21.505C141.519,21.505 141.525,21.575 141.525,21.611L141.545,25.155C141.547,25.572 141.272,25.911 140.932,25.913L140.716,25.914C140.375,25.916 140.096,25.58 140.094,25.163L140.082,22.344L141.519,21.505Z" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
<path d="M146.976,13.856L149.161,12.606C149.522,12.398 149.697,12.027 149.553,11.777L149.462,11.619C149.318,11.37 148.909,11.336 148.548,11.545L146.976,12.423L146.976,13.856Z" style="fill:white;fill-rule:nonzero;stroke:rgb(89,149,199);stroke-width:0.25px;"/>
|
||||||
|
<path d="M146.976,13.856L144.866,12.606C144.505,12.398 144.329,12.027 144.473,11.777L144.565,11.619C144.709,11.37 145.118,11.336 145.479,11.545L146.976,12.423L146.976,13.856Z" style="fill:white;fill-rule:nonzero;stroke:rgb(89,149,199);stroke-width:0.25px;"/>
|
||||||
|
<path d="M146.976,21.174L149.161,22.424C149.522,22.632 149.697,23.003 149.553,23.253L149.462,23.411C149.318,23.661 148.909,23.694 148.548,23.486L146.976,22.607L146.976,21.174Z" style="fill:white;fill-rule:nonzero;stroke:rgb(89,149,199);stroke-width:0.25px;"/>
|
||||||
|
<path d="M146.976,21.174L144.866,22.424C144.505,22.632 144.329,23.003 144.473,23.253L144.565,23.411C144.709,23.661 145.118,23.694 145.479,23.486L146.976,22.607L146.976,21.174Z" style="fill:white;fill-rule:nonzero;stroke:rgb(89,149,199);stroke-width:0.25px;"/>
|
||||||
|
<path d="M150.105,15.659L150.084,13.142C150.082,12.726 150.314,12.387 150.602,12.386L150.785,12.385C151.073,12.384 151.308,12.72 151.31,13.137L151.343,14.938L150.105,15.659Z" style="fill:white;fill-rule:nonzero;stroke:rgb(89,149,199);stroke-width:0.25px;"/>
|
||||||
|
<path d="M150.105,15.659L152.248,16.852C152.609,17.059 153.019,17.024 153.161,16.774L153.252,16.615C153.395,16.365 153.218,15.995 152.856,15.788L151.343,14.938L150.105,15.659Z" style="fill:white;fill-rule:nonzero;stroke:rgb(89,149,199);stroke-width:0.25px;"/>
|
||||||
|
<path d="M143.77,15.594L141.591,16.853C141.229,17.06 140.82,17.026 140.677,16.776L140.586,16.617C140.443,16.367 140.62,15.997 140.982,15.79L142.532,14.873L143.77,15.594Z" style="fill:white;fill-rule:nonzero;stroke:rgb(89,149,199);stroke-width:0.25px;"/>
|
||||||
|
<path d="M143.77,15.594L143.752,13.142C143.753,12.725 143.521,12.387 143.233,12.386L143.05,12.385C142.762,12.384 142.528,12.721 142.526,13.137L142.532,14.873L143.77,15.594Z" style="fill:white;fill-rule:nonzero;stroke:rgb(89,149,199);stroke-width:0.25px;"/>
|
||||||
|
<path d="M143.77,19.358L141.591,18.099C141.229,17.892 140.82,17.927 140.677,18.177L140.586,18.335C140.443,18.585 140.62,18.956 140.982,19.163L142.532,20.079L143.77,19.358Z" style="fill:white;fill-rule:nonzero;stroke:rgb(89,149,199);stroke-width:0.25px;"/>
|
||||||
|
<path d="M143.77,19.358L143.752,21.811C143.753,22.227 143.521,22.566 143.233,22.567L143.05,22.567C142.762,22.568 142.528,22.232 142.526,21.815L142.532,20.079L143.77,19.358Z" style="fill:white;fill-rule:nonzero;stroke:rgb(89,149,199);stroke-width:0.25px;"/>
|
||||||
|
<path d="M150.416,19.505L150.463,22.023C150.473,22.439 150.714,22.771 151.002,22.764L151.185,22.76C151.473,22.754 151.698,22.411 151.689,21.994L151.673,20.193L150.416,19.505Z" style="fill:white;fill-rule:nonzero;stroke:rgb(89,149,199);stroke-width:0.25px;"/>
|
||||||
|
<path d="M150.416,19.505L152.526,18.255C152.881,18.038 153.291,18.062 153.441,18.308L153.536,18.465C153.686,18.711 153.518,19.086 153.162,19.302L151.673,20.193L150.416,19.505Z" style="fill:white;fill-rule:nonzero;stroke:rgb(89,149,199);stroke-width:0.25px;"/>
|
||||||
|
<path d="M146.976,30.184C146.559,30.184 146.221,29.846 146.221,29.429L146.221,5.485C146.221,5.069 146.559,4.731 146.976,4.731C147.392,4.731 147.73,5.069 147.73,5.485L147.73,29.429C147.73,29.846 147.392,30.184 146.976,30.184" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
<path d="M136.006,23.849C135.795,23.49 135.917,23.028 136.276,22.818L156.95,10.729C157.31,10.519 157.772,10.64 157.982,10.999C158.192,11.359 158.071,11.821 157.712,12.031L137.037,24.12C136.678,24.33 136.216,24.209 136.006,23.849" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
<path d="M158.042,23.816L158.042,23.816C157.835,24.177 157.373,24.301 157.013,24.093L136.243,12.125C135.882,11.917 135.758,11.456 135.966,11.095C136.174,10.734 136.635,10.61 136.996,10.818L157.766,22.786C158.127,22.994 158.25,23.455 158.042,23.816" style="fill:white;fill-rule:nonzero;"/>
|
||||||
|
</g>
|
||||||
|
</g>
|
||||||
|
</svg>
|
||||||
|
After Width: | Height: | Size: 15 KiB |
@@ -0,0 +1 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg width="100%" height="100%" viewBox="0 0 330 200" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;"><g id="star"><g><g><path d="M27.732,120.059l-2.21,5.727c-2.713,-1.005 -6.13,-1.809 -9.546,-1.809c-4.119,0 -6.23,1.508 -6.23,3.618c0,6.33 19.493,3.617 19.493,14.971c0,6.129 -5.526,10.852 -14.368,10.852c-5.225,0 -10.751,-1.608 -14.871,-4.12l3.115,-5.627c3.517,2.211 7.737,3.517 11.655,3.517c4.823,0 6.933,-1.909 6.933,-3.919c0,-6.129 -19.492,-3.918 -19.492,-15.172c0,-5.828 5.023,-10.148 13.966,-10.148c4.622,0.1 8.943,1.205 11.555,2.11Z" style="fill:#64c2c8;fill-rule:nonzero;"/><path d="M71.039,130.81l0,21.703l-7.436,0l0,-19.191c0,-6.23 -1.005,-9.043 -7.335,-9.043c-3.617,0 -6.933,0.603 -10.249,1.607l0,26.527l-7.536,0l0,-30.244c4.221,-2.01 11.757,-4.22 18.388,-4.22c9.244,0.1 14.168,4.722 14.168,12.861Z" style="fill:#64c2c8;fill-rule:nonzero;"/><path d="M79.579,135.733c0,-9.947 7.938,-17.583 18.69,-17.583c11.354,0 18.689,7.636 18.689,17.583c0,10.048 -7.938,17.685 -18.689,17.685c-11.254,0 -18.69,-7.637 -18.69,-17.685Zm29.742,0.101c0,-6.33 -4.119,-11.555 -11.052,-11.555c-6.934,0 -10.953,5.225 -10.953,11.555c0,6.33 4.321,11.454 10.953,11.454c6.631,0 11.052,-5.124 11.052,-11.454Z" style="fill:#64c2c8;fill-rule:nonzero;"/><path d="M176.441,118.953l-16.981,34.163l-1.808,0l-8.642,-18.689l-8.942,18.689l-1.909,0l-16.378,-34.163l8.44,0l9.344,21.905l6.13,-13.364l-3.919,-8.541l7.837,0l9.244,21.905l9.747,-21.905l7.837,0Z" style="fill:#64c2c8;fill-rule:nonzero;"/></g><g><path d="M94.149,192.705l19.593,0l0,6.129l-31.952,0l-0.101,-0.703l20.398,-27.029l-17.785,0l0.301,-5.828l29.541,0l0.101,0.704l-20.096,26.727Z" style="fill:#64c2c8;fill-rule:nonzero;"/><path d="M119.671,181.954c0,-9.948 7.937,-17.584 18.689,-17.584c11.354,0 18.689,7.636 18.689,17.584c0,10.048 -7.938,17.684 -18.689,17.684c-11.354,0 -18.689,-7.636 -18.689,-17.684Zm29.741,0.201c0,-6.33 -4.119,-11.555 -11.052,-11.555c-6.933,0 -10.953,5.225 -10.953,11.555c0,6.33 4.321,11.454 10.953,11.454c6.631,0 11.052,-5.124 11.052,-11.454Z" style="fill:#64c2c8;fill-rule:nonzero;"/><path d="M198.245,177.131l0,21.703l-7.435,0l0,-19.191c0,-6.23 -1.005,-9.043 -7.335,-9.043c-3.617,0 -6.933,0.602 -10.249,1.607l0,26.527l-7.536,0l0,-30.244c4.22,-2.01 11.756,-4.221 18.388,-4.221c9.344,0.101 14.167,4.622 14.167,12.862Z" style="fill:#64c2c8;fill-rule:nonzero;"/><path d="M226.48,193.408c4.119,0 6.43,-0.301 11.856,-1.607l1.005,5.325c-1.909,0.904 -7.536,2.613 -13.364,2.613c-11.957,0 -19.091,-7.838 -19.091,-17.584c0,-10.249 6.833,-17.785 18.087,-17.785c10.349,0 16.378,6.732 16.378,15.775c0,1.306 -0.101,3.316 -0.302,4.421l-26.325,0c0.904,5.627 4.823,8.842 11.756,8.842Zm-11.857,-14.469l19.292,0c-0.201,-4.722 -2.411,-8.54 -9.244,-8.54c-6.229,0 -9.244,3.315 -10.048,8.54Z" style="fill:#64c2c8;fill-rule:nonzero;"/></g><g><path d="M146.699,82.982l4.622,1.005l0.101,0c0.201,0 0.402,-0.201 0.502,-0.402c0.101,-0.302 -0.1,-0.503 -0.402,-0.603l-4.622,-1.005c-0.301,-0.1 -0.502,0.101 -0.602,0.402c-0.101,0.301 0.1,0.502 0.401,0.603Z" style="fill:#b0def1;fill-rule:nonzero;"/><path d="M149.111,73.838l12.459,4.019l0.101,0c0.1,0 0.201,-0.1 0.201,-0.201c0,-0.1 0,-0.301 -0.201,-0.301l-12.46,-4.019c-0.1,0 -0.301,0 -0.301,0.201c0,0.1 0,0.301 0.201,0.301Z" style="fill:#b0def1;fill-rule:nonzero;"/><path d="M165.991,62.786l6.13,3.516c0.1,0 0.201,0.101 0.201,0.101c0.201,0 0.301,-0.101 0.402,-0.201c0.1,-0.201 0.1,-0.503 -0.201,-0.703l-6.13,-3.517c-0.201,-0.101 -0.502,-0.101 -0.703,0.201c0,0.201 0,0.502 0.301,0.603Z" style="fill:#b0def1;fill-rule:nonzero;"/><path d="M189.805,69.92l0.1,0c0.101,0 0.101,0 0.201,-0.101c0.101,-0.1 0.101,-0.301 -0.1,-0.301l-23.01,-16.68c-0.1,-0.1 -0.301,-0.1 -0.301,0.101c-0.101,0.1 -0.101,0.301 0.1,0.301l23.01,16.68Z" style="fill:#b0def1;fill-rule:nonzero;"/><path d="M163.982,51.13l0.1,0c0.101,0 0.101,0 0.201,-0.1c0.101,-0.101 0.101,-0.302 -0.1,-0.302l-2.512,-1.809c-0.101,-0.1 -0.302,-0.1 -0.302,0.101c-0.1,0.1 -0.1,0.301 0.101,0.301l2.512,1.809Z" style="fill:#b0def1;fill-rule:nonzero;"/><path d="M180.058,43.293c0.101,0.201 0.302,0.201 0.503,0.201c0.201,0 0.402,-0.101 0.502,-0.201c0.302,-0.302 0.302,-0.704 0.101,-1.005l-6.632,-7.335c-0.301,-0.302 -0.703,-0.302 -1.005,-0.101c-0.301,0.302 -0.301,0.704 -0.1,1.005l6.631,7.436Z" style="fill:#b0def1;fill-rule:nonzero;"/><path d="M207.791,47.111c0.201,0.402 0.502,0.603 0.904,0.603c0.101,0 0.301,0 0.402,-0.101c0.502,-0.201 0.703,-0.804 0.502,-1.306l-13.062,-29.239c-0.201,-0.503 -0.804,-0.704 -1.306,-0.503c-0.503,0.201 -0.704,0.804 -0.503,1.306l13.063,29.24Z" style="fill:#b0def1;fill-rule:nonzero;"/><path d="M192.216,12.144c0.201,0.402 0.503,0.603 0.905,0.603c0.1,0 0.301,0 0.402,-0.1c0.502,-0.201 0.703,-0.804 0.502,-1.307l-4Line truncated
|
||||||
|
After Width: | Height: | Size: 16 KiB |
@@ -0,0 +1,116 @@
|
|||||||
|
const INDICATOR_ID = 'loading-indicator'
|
||||||
|
const HIDDEN_CLASS = 'invisible'
|
||||||
|
const GRACE_PERIOD_MS = 500
|
||||||
|
const DEBOUNCE_MS = 200
|
||||||
|
|
||||||
|
let debounceTimeout = null
|
||||||
|
let historyRestoreGracePeriod = false
|
||||||
|
let savedScrollPosition = null
|
||||||
|
let activeRequests = 0
|
||||||
|
|
||||||
|
function getIndicator() {
|
||||||
|
return document.getElementById(INDICATOR_ID)
|
||||||
|
}
|
||||||
|
|
||||||
|
function show() {
|
||||||
|
const indicator = getIndicator()
|
||||||
|
if (indicator) {
|
||||||
|
indicator.classList.remove(HIDDEN_CLASS)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function hide() {
|
||||||
|
if (debounceTimeout) {
|
||||||
|
clearTimeout(debounceTimeout)
|
||||||
|
debounceTimeout = null
|
||||||
|
}
|
||||||
|
const indicator = getIndicator()
|
||||||
|
if (indicator) {
|
||||||
|
indicator.classList.add(HIDDEN_CLASS)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleBeforeRequest(event) {
|
||||||
|
// Ignore requests triggered during history restore grace period
|
||||||
|
if (true === historyRestoreGracePeriod) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
activeRequests++
|
||||||
|
|
||||||
|
// Save scroll position of the target container before HTMX request
|
||||||
|
const target = event.detail?.target || document.getElementById('main-content')
|
||||||
|
if (target && typeof target.scrollTop === 'number') {
|
||||||
|
savedScrollPosition = { element: target, top: target.scrollTop }
|
||||||
|
}
|
||||||
|
|
||||||
|
// Don't start a new debounce if already pending
|
||||||
|
if (debounceTimeout) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
// Show indicator after delay
|
||||||
|
debounceTimeout = setTimeout(() => {
|
||||||
|
show()
|
||||||
|
}, DEBOUNCE_MS)
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleRequestEnd() {
|
||||||
|
// Counter may already be 0 if a force-reset (history save, page show) fired
|
||||||
|
// before this afterRequest — ignore the stale completion in that case
|
||||||
|
if (0 === activeRequests) {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
activeRequests--
|
||||||
|
if (0 === activeRequests) {
|
||||||
|
hide()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleAfterSwap() {
|
||||||
|
// Restore scroll position after HTMX swaps content
|
||||||
|
if (savedScrollPosition !== null && savedScrollPosition.element) {
|
||||||
|
savedScrollPosition.element.scrollTop = savedScrollPosition.top
|
||||||
|
savedScrollPosition = null
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleHistoryRestore() {
|
||||||
|
activeRequests = 0
|
||||||
|
hide()
|
||||||
|
|
||||||
|
// Set grace period to ignore change events triggered by history restore
|
||||||
|
historyRestoreGracePeriod = true
|
||||||
|
setTimeout(() => {
|
||||||
|
historyRestoreGracePeriod = false
|
||||||
|
}, GRACE_PERIOD_MS)
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleTimeout() {
|
||||||
|
// Don't decrement here — htmx:afterRequest always fires alongside htmx:timeout
|
||||||
|
// and handles the counter. This handler only shows the alert.
|
||||||
|
alert('Die Anfrage hat zu lange gedauert. Bitte versuchen Sie es erneut. Falls das Problem weiterhin besteht, kontaktieren Sie bitte unseren Support.')
|
||||||
|
}
|
||||||
|
|
||||||
|
function handleBeforeHistorySave() {
|
||||||
|
// Hide indicator before HTMX saves the page to history cache
|
||||||
|
activeRequests = 0
|
||||||
|
hide()
|
||||||
|
}
|
||||||
|
|
||||||
|
function handlePageShow() {
|
||||||
|
activeRequests = 0
|
||||||
|
hide()
|
||||||
|
}
|
||||||
|
|
||||||
|
// Initialize event listeners
|
||||||
|
document.body.addEventListener('htmx:beforeRequest', handleBeforeRequest)
|
||||||
|
document.body.addEventListener('htmx:afterRequest', handleRequestEnd)
|
||||||
|
document.body.addEventListener('htmx:afterSwap', handleAfterSwap)
|
||||||
|
document.body.addEventListener('htmx:timeout', handleTimeout)
|
||||||
|
document.body.addEventListener('htmx:historyRestore', handleHistoryRestore)
|
||||||
|
document.body.addEventListener('htmx:beforeHistorySave', handleBeforeHistorySave)
|
||||||
|
|
||||||
|
window.addEventListener('pageshow', handlePageShow)
|
||||||
|
window.addEventListener('popstate', handleHistoryRestore)
|
||||||
@@ -40,3 +40,27 @@
|
|||||||
.htmx-request.htmx-indicator{
|
.htmx-request.htmx-indicator{
|
||||||
@apply visible;
|
@apply visible;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.bg-outer {
|
||||||
|
@apply bg-blend-multiply bg-right-top bg-cover;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-outer--1 {
|
||||||
|
background-image: url('../images/bg_4.jpg'), linear-gradient(190deg, rgba(24, 82, 123, 1) 0%, rgba(22, 88, 131, 1) 62%, rgba(0, 112, 224, 1) 100%);;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-outer--2 {
|
||||||
|
background-image: url('../images/bg_5.jpg'), linear-gradient(190deg, rgba(24, 82, 123, 1) 0%, rgba(22, 88, 131, 1) 62%, rgba(0, 112, 224, 1) 100%);;
|
||||||
|
}
|
||||||
|
|
||||||
|
.sbw .bg-outer--2 {
|
||||||
|
background-image: url('../images/bg_7.jpg'), linear-gradient(190deg, rgba(24, 82, 123, 1) 0%, rgba(22, 88, 131, 1) 62%, rgba(0, 112, 224, 1) 100%);;
|
||||||
|
}
|
||||||
|
|
||||||
|
.snz .bg-outer--2 {
|
||||||
|
background-image: url('../images/bg_6.jpg'), linear-gradient(190deg, rgba(24, 82, 123, 1) 0%, rgba(22, 88, 131, 1) 62%, rgba(0, 112, 224, 1) 100%);;
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-inner {
|
||||||
|
background-image: linear-gradient(190deg, rgba(24, 82, 123, 0.8) 0%, rgba(22, 88, 131, 0.8) 62%, rgba(0, 112, 224, 0.8) 100%);;
|
||||||
|
}
|
||||||
@@ -1,6 +1,6 @@
|
|||||||
@import "components/typography.css";
|
@import "components/typography.css";
|
||||||
@import "components/forms.css";
|
@import "components/forms.css";
|
||||||
@import "components/button.css";
|
@import "components/button.css";
|
||||||
@import "components/menu.css";
|
|
||||||
@import "components/tooltip.css";
|
@import "components/tooltip.css";
|
||||||
@import "components/table-responsive.css";
|
@import "components/toast.css";
|
||||||
|
@import "components/pagination.css";
|
||||||
@@ -1,45 +1,66 @@
|
|||||||
.button {
|
.button {
|
||||||
@apply inline-flex items-center justify-center space-x-2 px-4 py-2 md:px-8 cursor-pointer;
|
@apply inline-flex items-center justify-center space-x-2 h-8 leading-8 md:h-10 md:leading-10 px-4 md:px-8 cursor-pointer;
|
||||||
@apply uppercase leading-none text-center;
|
@apply uppercase leading-none text-center text-sm md:text-base;
|
||||||
@apply transition-colors outline-none focus:outline-2 focus:outline-offset-2 focus:outline-primary-light;
|
@apply transition-colors outline-none focus:outline-2 focus:outline-offset-2 focus:outline-primary-dark;
|
||||||
|
@apply rounded-md;
|
||||||
}
|
}
|
||||||
|
|
||||||
.button--small {
|
.button--small {
|
||||||
@apply px-2 py-1 md:px-4 text-xs sm:text-sm;
|
@apply px-2 py-1 md:px-4 text-xs sm:text-sm;
|
||||||
}
|
}
|
||||||
|
|
||||||
.button--full {
|
.button--primary {
|
||||||
@apply block w-full;
|
background: linear-gradient(120deg, #960167 0%, #9e036a 40%, #fa1a8c 100%);
|
||||||
|
@apply text-white;
|
||||||
|
@apply hover:bg-none hover:bg-pink/80;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bg-button {
|
.button[disabled] {
|
||||||
@apply bg-none bg-primary-dark text-white;
|
@apply cursor-not-allowed;
|
||||||
@apply hover:bg-badge-gradient;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.button--secondary {
|
||||||
.bg-button--active,
|
@apply bg-none bg-primary-light text-white;
|
||||||
.bg-button--secondary {
|
@apply hover:bg-primary-light/50;
|
||||||
@apply bg-badge-gradient;
|
|
||||||
@apply hover:bg-none hover:bg-pink;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
.bg-button--muted {
|
.button--neutral {
|
||||||
@apply bg-zinc-300 hover:bg-zinc-300;
|
@apply bg-none bg-gray-200;
|
||||||
|
@apply hover:bg-gray-200/50;
|
||||||
}
|
}
|
||||||
|
|
||||||
.bg-button--dark {
|
.sbw {
|
||||||
@apply bg-primary-dark;
|
.button--primary {
|
||||||
|
@apply bg-none bg-sbw-secondary text-white;
|
||||||
|
@apply hover:bg-none hover:bg-sbw-primary/50;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button--secondary {
|
||||||
|
@apply bg-none bg-sbw-primary-dark text-white;
|
||||||
|
@apply hover:bg-none hover:bg-sbw-primary/50;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.bg-button--light {
|
.snz {
|
||||||
@apply bg-white border-2;
|
.button--primary {
|
||||||
@apply font-bold;
|
@apply bg-none bg-snz-secondary text-white;
|
||||||
@apply border-primary-light text-primary;
|
@apply hover:bg-none hover:bg-snz-primary/50;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button--secondary {
|
||||||
|
@apply bg-none bg-snz-primary-dark text-white;
|
||||||
|
@apply hover:bg-none hover:bg-snz-primary/50;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
.bg-button--light:hover,
|
.ser {
|
||||||
.bg-button--light.button--active {
|
.button--primary {
|
||||||
@apply bg-white;
|
@apply bg-none bg-ser-secondary text-white;
|
||||||
@apply border-secondary text-secondary;
|
@apply hover:bg-none hover:bg-ser-primary/50;
|
||||||
|
}
|
||||||
|
|
||||||
|
.button--secondary {
|
||||||
|
@apply bg-none bg-ser-primary text-white;
|
||||||
|
@apply hover:bg-none hover:bg-ser-primary/50;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -4,7 +4,13 @@ label.required:after {
|
|||||||
}
|
}
|
||||||
|
|
||||||
.form-field {
|
.form-field {
|
||||||
@apply border-zinc-400 focus:border-zinc-800 ring-0 focus:outline-2 focus:outline-offset-2 focus:outline-primary-light mt-1 block w-full;
|
@apply border-zinc-400 ring-0 mt-1 block w-full rounded-md;
|
||||||
|
@apply focus:outline-primary-light focus:border-zinc-800 focus:outline-2 focus:outline-offset-2;
|
||||||
|
}
|
||||||
|
|
||||||
|
#participant-form .form-field,
|
||||||
|
#form-payment .form-field {
|
||||||
|
@apply bg-primary-bg border-primary-bg;
|
||||||
}
|
}
|
||||||
|
|
||||||
.form-field--has-error {
|
.form-field--has-error {
|
||||||
@@ -27,3 +33,24 @@ select[readonly] {
|
|||||||
input[readonly] {
|
input[readonly] {
|
||||||
@apply cursor-not-allowed;
|
@apply cursor-not-allowed;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sbw {
|
||||||
|
.form-checkbox,
|
||||||
|
.form-radio {
|
||||||
|
@apply text-sbw-secondary;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.snz {
|
||||||
|
.form-checkbox,
|
||||||
|
.form-radio {
|
||||||
|
@apply text-snz-primary;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ser {
|
||||||
|
.form-checkbox,
|
||||||
|
.form-radio {
|
||||||
|
@apply text-ser-secondary;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,11 +0,0 @@
|
|||||||
.menu--main {
|
|
||||||
@apply flex items-center m-0 divide-x divide-white;
|
|
||||||
}
|
|
||||||
|
|
||||||
.menu--main a {
|
|
||||||
@apply block py-2 px-4 text-white hover:bg-secondary hover:text-zinc-800 text-sm md:text-base;
|
|
||||||
}
|
|
||||||
|
|
||||||
.menu--main .current a {
|
|
||||||
@apply bg-secondary text-zinc-800;
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,90 @@
|
|||||||
|
:root {
|
||||||
|
--pagination-skew: 2rem;
|
||||||
|
--pagination-border-width: 1px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination {
|
||||||
|
@apply flex h-12 lg:h-16 overflow-hidden bg-primary-bg shadow-md;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination-item {
|
||||||
|
flex: 1 1 0;
|
||||||
|
margin-right: calc(-1 * var(--pagination-skew));
|
||||||
|
@apply relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination-item:last-child {
|
||||||
|
@apply mr-0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Outer clip-path for button shape */
|
||||||
|
.pagination-item:first-child {
|
||||||
|
clip-path: polygon(0 0, calc(100% - var(--pagination-skew)) 0, 100% 100%, 0 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination-item:not(:first-child):not(:last-child) {
|
||||||
|
clip-path: polygon(0 0, calc(100% - var(--pagination-skew)) 0, 100% 100%, var(--pagination-skew) 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination-item:last-child {
|
||||||
|
clip-path: polygon(0 0, 100% 0, 100% 100%, var(--pagination-skew) 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Border and content wrappers */
|
||||||
|
.pagination-item__border {
|
||||||
|
@apply w-full h-full flex items-center justify-center bg-primary-dark/10;
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination-item__inner {
|
||||||
|
@apply w-full h-full flex items-center justify-center;
|
||||||
|
@apply lg:text-2xl font-bold;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.pagination-item__border > .pagination-item__inner:hover {
|
||||||
|
@apply bg-primary-light text-white;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Inner clip-path for border effect */
|
||||||
|
.pagination-item:first-child .pagination-item__inner {
|
||||||
|
clip-path: polygon(0 0, calc(100% - var(--pagination-skew)) 0, 100% 100%, 0 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination-item:not(:first-child) .pagination-item__inner {
|
||||||
|
/* No left/bottom-left border on overlapping edge to prevent double borders */
|
||||||
|
clip-path: polygon(0 0, calc(100% - var(--pagination-skew) - var(--pagination-border-width)) 0, calc(100% - var(--pagination-border-width)) 100%, var(--pagination-skew) 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.pagination-item:last-child .pagination-item__inner {
|
||||||
|
/* No left/bottom-left border on overlapping edge, no right border */
|
||||||
|
clip-path: polygon(0 0, 100% 0, 100% 100%, var(--pagination-skew) 100%);
|
||||||
|
}
|
||||||
|
|
||||||
|
.sbw {
|
||||||
|
.pagination-item__border {
|
||||||
|
@apply bg-sbw-primary-dark/10;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.pagination-item__border > .pagination-item__inner:hover {
|
||||||
|
@apply bg-sbw-primary;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.snz {
|
||||||
|
.pagination-item__border {
|
||||||
|
@apply bg-snz-primary-dark/10;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.pagination-item__border > .pagination-item__inner:hover {
|
||||||
|
@apply bg-snz-primary;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ser {
|
||||||
|
.pagination-item__border {
|
||||||
|
@apply bg-ser-primary/10;
|
||||||
|
}
|
||||||
|
|
||||||
|
a.pagination-item__border > .pagination-item__inner:hover {
|
||||||
|
@apply bg-ser-primary;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,20 +0,0 @@
|
|||||||
.responsive {
|
|
||||||
@apply text-sm md:text-base;
|
|
||||||
}
|
|
||||||
|
|
||||||
.responsive thead {
|
|
||||||
@apply hidden md:table-header-group;
|
|
||||||
}
|
|
||||||
|
|
||||||
.responsive tbody tr {
|
|
||||||
@apply block mb-2 md:table-row;
|
|
||||||
}
|
|
||||||
|
|
||||||
.responsive td {
|
|
||||||
@apply grid grid-cols-2 gap-x-2 last:col-span-2 md:table-cell;
|
|
||||||
}
|
|
||||||
|
|
||||||
.responsive td:before {
|
|
||||||
content: attr(data-label);
|
|
||||||
@apply block font-bold last:hidden md:hidden;
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
@import "toastify-js/src/toastify.css";
|
||||||
|
|
||||||
|
.toastify {
|
||||||
|
@apply shadow-lg rounded;
|
||||||
|
}
|
||||||
|
|
||||||
|
.toastify--success {
|
||||||
|
@apply text-gray-100;
|
||||||
|
background: theme('colors.emerald.600');
|
||||||
|
}
|
||||||
|
|
||||||
|
.toastify--warning {
|
||||||
|
@apply text-gray-100;
|
||||||
|
background: theme('colors.red.600');
|
||||||
|
}
|
||||||
|
|
||||||
|
.toastify--error {
|
||||||
|
@apply text-gray-100;
|
||||||
|
background: theme('colors.red.700');
|
||||||
|
}
|
||||||
|
|
||||||
|
.toastify--info {
|
||||||
|
@apply text-gray-100;
|
||||||
|
background: theme('colors.primary');
|
||||||
|
}
|
||||||
@@ -3,7 +3,6 @@
|
|||||||
.tippy-box {
|
.tippy-box {
|
||||||
background-color: theme('colors.primary');
|
background-color: theme('colors.primary');
|
||||||
}
|
}
|
||||||
|
|
||||||
.tippy-box[data-placement^='top'] > .tippy-arrow::before {
|
.tippy-box[data-placement^='top'] > .tippy-arrow::before {
|
||||||
border-top-color: theme('colors.primary');
|
border-top-color: theme('colors.primary');
|
||||||
}
|
}
|
||||||
@@ -16,3 +15,57 @@
|
|||||||
.tippy-box[data-placement^='right'] > .tippy-arrow::before {
|
.tippy-box[data-placement^='right'] > .tippy-arrow::before {
|
||||||
border-right-color: theme('colors.primary');
|
border-right-color: theme('colors.primary');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.sbw {
|
||||||
|
.tippy-box {
|
||||||
|
background-color: theme('colors.sbw.secondary');
|
||||||
|
}
|
||||||
|
.tippy-box[data-placement^='top'] > .tippy-arrow::before {
|
||||||
|
border-top-color: theme('colors.sbw.secondary');
|
||||||
|
}
|
||||||
|
.tippy-box[data-placement^='bottom'] > .tippy-arrow::before {
|
||||||
|
border-bottom-color: theme('colors.sbw.secondary');
|
||||||
|
}
|
||||||
|
.tippy-box[data-placement^='left'] > .tippy-arrow::before {
|
||||||
|
border-left-color: theme('colors.sbw.secondary');
|
||||||
|
}
|
||||||
|
.tippy-box[data-placement^='right'] > .tippy-arrow::before {
|
||||||
|
border-right-color: theme('colors.sbw.secondary');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.snz {
|
||||||
|
.tippy-box {
|
||||||
|
background-color: theme('colors.snz.primary-dark');
|
||||||
|
}
|
||||||
|
.tippy-box[data-placement^='top'] > .tippy-arrow::before {
|
||||||
|
border-top-color: theme('colors.snz.primary-dark');
|
||||||
|
}
|
||||||
|
.tippy-box[data-placement^='bottom'] > .tippy-arrow::before {
|
||||||
|
border-bottom-color: theme('colors.snz.primary-dark');
|
||||||
|
}
|
||||||
|
.tippy-box[data-placement^='left'] > .tippy-arrow::before {
|
||||||
|
border-left-color: theme('colors.snz.primary-dark');
|
||||||
|
}
|
||||||
|
.tippy-box[data-placement^='right'] > .tippy-arrow::before {
|
||||||
|
border-right-color: theme('colors.snz.primary-dark');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.ser {
|
||||||
|
.tippy-box {
|
||||||
|
background-color: theme('colors.ser.secondary');
|
||||||
|
}
|
||||||
|
.tippy-box[data-placement^='top'] > .tippy-arrow::before {
|
||||||
|
border-top-color: theme('colors.ser.secondary');
|
||||||
|
}
|
||||||
|
.tippy-box[data-placement^='bottom'] > .tippy-arrow::before {
|
||||||
|
border-bottom-color: theme('colors.ser.secondary');
|
||||||
|
}
|
||||||
|
.tippy-box[data-placement^='left'] > .tippy-arrow::before {
|
||||||
|
border-left-color: theme('colors.ser.secondary');
|
||||||
|
}
|
||||||
|
.tippy-box[data-placement^='right'] > .tippy-arrow::before {
|
||||||
|
border-right-color: theme('colors.ser.secondary');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,126 +1,137 @@
|
|||||||
{
|
{
|
||||||
"type": "project",
|
"type": "project",
|
||||||
"license": "proprietary",
|
"license": "proprietary",
|
||||||
"minimum-stability": "stable",
|
"minimum-stability": "stable",
|
||||||
"prefer-stable": true,
|
"prefer-stable": true,
|
||||||
"require": {
|
"require": {
|
||||||
"php": ">=8.1",
|
"php": ">=8.2",
|
||||||
"ext-ctype": "*",
|
"ext-ctype": "*",
|
||||||
"ext-iconv": "*",
|
"ext-dom": "*",
|
||||||
"ext-simplexml": "*",
|
"ext-iconv": "*",
|
||||||
"ext-sockets": "*",
|
"ext-simplexml": "*",
|
||||||
"doctrine/dbal": "^3",
|
"ext-sockets": "*",
|
||||||
"doctrine/doctrine-bundle": "^2.13",
|
"doctrine/dbal": "^3",
|
||||||
"doctrine/doctrine-migrations-bundle": "^3.3",
|
"doctrine/doctrine-bundle": "^2.13",
|
||||||
"doctrine/orm": "^3.3",
|
"doctrine/doctrine-migrations-bundle": "^3.3",
|
||||||
"knplabs/knp-menu-bundle": "^3.4",
|
"doctrine/orm": "^3.3",
|
||||||
"league/flysystem-bundle": "^3.4",
|
"easycorp/easyadmin-bundle": "^4.27",
|
||||||
"league/flysystem-sftp-v3": "^3.29",
|
"fakerphp/faker": "^1.24",
|
||||||
"league/oauth2-server-bundle": "^0.11.0",
|
"flagception/flagception-bundle": "^6.1",
|
||||||
"nelexa/zip": "^4.0",
|
"league/flysystem-bundle": "^3.4",
|
||||||
"nesbot/carbon": "^3.8",
|
"league/flysystem-sftp-v3": "^3.29",
|
||||||
"phpdocumentor/reflection-docblock": "^5.6",
|
"league/oauth2-server-bundle": "^1.0",
|
||||||
"phpstan/phpdoc-parser": "^2.0",
|
"nelexa/zip": "^4.0",
|
||||||
"spatie/crypto": "^2.1",
|
"nesbot/carbon": "^3.8",
|
||||||
"symfony/apache-pack": "^1.0",
|
"phpdocumentor/reflection-docblock": "^5.6",
|
||||||
"symfony/asset": "6.4.*",
|
"phpoffice/phpspreadsheet": "^5.4",
|
||||||
"symfony/console": "6.4.*",
|
"phpstan/phpdoc-parser": "^2.0",
|
||||||
"symfony/doctrine-messenger": "6.4.*",
|
"spatie/crypto": "^2.1",
|
||||||
"symfony/dom-crawler": "6.4.*",
|
"symfony/apache-pack": "^1.0",
|
||||||
"symfony/dotenv": "6.4.*",
|
"symfony/asset": "7.4.*",
|
||||||
"symfony/expression-language": "6.4.*",
|
"symfony/console": "7.4.*",
|
||||||
"symfony/flex": "^2",
|
"symfony/doctrine-messenger": "7.4.*",
|
||||||
"symfony/form": "6.4.*",
|
"symfony/dom-crawler": "7.4.*",
|
||||||
"symfony/framework-bundle": "6.4.*",
|
"symfony/dotenv": "7.4.*",
|
||||||
"symfony/http-client": "6.4.*",
|
"symfony/expression-language": "7.4.*",
|
||||||
"symfony/intl": "6.4.*",
|
"symfony/flex": "^2",
|
||||||
"symfony/mailer": "6.4.*",
|
"symfony/form": "7.4.*",
|
||||||
"symfony/mime": "6.4.*",
|
"symfony/framework-bundle": "7.4.*",
|
||||||
"symfony/monolog-bundle": "^3.0",
|
"symfony/html-sanitizer": "7.4.*",
|
||||||
"symfony/notifier": "6.4.*",
|
"symfony/http-client": "7.4.*",
|
||||||
"symfony/process": "6.4.*",
|
"symfony/intl": "7.4.*",
|
||||||
"symfony/property-access": "6.4.*",
|
"symfony/lock": "7.4.*",
|
||||||
"symfony/property-info": "6.4.*",
|
"symfony/mailer": "7.4.*",
|
||||||
"symfony/runtime": "6.4.*",
|
"symfony/mime": "7.4.*",
|
||||||
"symfony/security-bundle": "6.4.*",
|
"symfony/monolog-bundle": "^3.0",
|
||||||
"symfony/serializer": "6.4.*",
|
"symfony/notifier": "7.4.*",
|
||||||
"symfony/stimulus-bundle": "^2.21",
|
"symfony/process": "7.4.*",
|
||||||
"symfony/string": "6.4.*",
|
"symfony/property-access": "7.4.*",
|
||||||
"symfony/translation": "6.4.*",
|
"symfony/property-info": "7.4.*",
|
||||||
"symfony/twig-bundle": "6.4.*",
|
"symfony/runtime": "7.4.*",
|
||||||
"symfony/uid": "6.4.*",
|
"symfony/security-bundle": "7.4.*",
|
||||||
"symfony/validator": "6.4.*",
|
"symfony/serializer": "7.4.*",
|
||||||
"symfony/web-link": "6.4.*",
|
"symfony/stimulus-bundle": "^2.21",
|
||||||
"symfony/webpack-encore-bundle": "^2.2",
|
"symfony/string": "7.4.*",
|
||||||
"symfony/yaml": "6.4.*",
|
"symfony/translation": "7.4.*",
|
||||||
"twig/extra-bundle": "^2.12|^3.0",
|
"symfony/twig-bundle": "7.4.*",
|
||||||
"twig/html-extra": "^3.15",
|
"symfony/uid": "7.4.*",
|
||||||
"twig/intl-extra": "*",
|
"symfony/validator": "7.4.*",
|
||||||
"twig/twig": "^2.12|^3.0",
|
"symfony/web-link": "7.4.*",
|
||||||
"voku/anti-xss": "^4.1"
|
"symfony/webpack-encore-bundle": "^2.2",
|
||||||
|
"symfony/yaml": "7.4.*",
|
||||||
|
"twig/extra-bundle": "^2.12|^3.0",
|
||||||
|
"twig/html-extra": "^3.15",
|
||||||
|
"twig/intl-extra": "*",
|
||||||
|
"twig/twig": "^2.12|^3.0",
|
||||||
|
"zenstruck/schedule-bundle": "^1.8"
|
||||||
|
},
|
||||||
|
"config": {
|
||||||
|
"allow-plugins": {
|
||||||
|
"php-http/discovery": true,
|
||||||
|
"symfony/flex": true,
|
||||||
|
"symfony/runtime": true
|
||||||
},
|
},
|
||||||
"config": {
|
"sort-packages": true,
|
||||||
"allow-plugins": {
|
"platform": {
|
||||||
"php-http/discovery": true,
|
"php": "8.3.30"
|
||||||
"symfony/flex": true,
|
|
||||||
"symfony/runtime": true
|
|
||||||
},
|
|
||||||
"sort-packages": true,
|
|
||||||
"platform": {
|
|
||||||
"php": "8.2.28"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload": {
|
|
||||||
"psr-4": {
|
|
||||||
"App\\": "src/"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"autoload-dev": {
|
|
||||||
"psr-4": {
|
|
||||||
"App\\Tests\\": "tests/"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"replace": {
|
|
||||||
"symfony/polyfill-ctype": "*",
|
|
||||||
"symfony/polyfill-iconv": "*",
|
|
||||||
"symfony/polyfill-php72": "*",
|
|
||||||
"symfony/polyfill-php73": "*",
|
|
||||||
"symfony/polyfill-php74": "*",
|
|
||||||
"symfony/polyfill-php80": "*",
|
|
||||||
"symfony/polyfill-php81": "*"
|
|
||||||
},
|
|
||||||
"scripts": {
|
|
||||||
"auto-scripts": {
|
|
||||||
"cache:clear": "symfony-cmd",
|
|
||||||
"assets:install %PUBLIC_DIR%": "symfony-cmd"
|
|
||||||
},
|
|
||||||
"post-install-cmd": [
|
|
||||||
"@auto-scripts"
|
|
||||||
],
|
|
||||||
"post-update-cmd": [
|
|
||||||
"@auto-scripts"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"conflict": {
|
|
||||||
"symfony/symfony": "*"
|
|
||||||
},
|
|
||||||
"extra": {
|
|
||||||
"symfony": {
|
|
||||||
"allow-contrib": true,
|
|
||||||
"require": "6.4.*",
|
|
||||||
"docker": true
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"require-dev": {
|
|
||||||
"deployer/deployer": "^7.5",
|
|
||||||
"friendsofphp/php-cs-fixer": "^3.75",
|
|
||||||
"phpunit/phpunit": "^9.5",
|
|
||||||
"symfony/browser-kit": "6.4.*",
|
|
||||||
"symfony/css-selector": "6.4.*",
|
|
||||||
"symfony/debug-bundle": "6.4.*",
|
|
||||||
"symfony/maker-bundle": "^1.0",
|
|
||||||
"symfony/phpunit-bridge": "^7.1",
|
|
||||||
"symfony/stopwatch": "6.4.*",
|
|
||||||
"symfony/web-profiler-bundle": "6.4.*"
|
|
||||||
}
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"psr-4": {
|
||||||
|
"App\\": "src/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload-dev": {
|
||||||
|
"psr-4": {
|
||||||
|
"App\\Tests\\": "tests/"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"replace": {
|
||||||
|
"symfony/polyfill-ctype": "*",
|
||||||
|
"symfony/polyfill-iconv": "*",
|
||||||
|
"symfony/polyfill-php72": "*",
|
||||||
|
"symfony/polyfill-php73": "*",
|
||||||
|
"symfony/polyfill-php74": "*",
|
||||||
|
"symfony/polyfill-php80": "*",
|
||||||
|
"symfony/polyfill-php81": "*"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"auto-scripts": {
|
||||||
|
"cache:clear": "symfony-cmd",
|
||||||
|
"assets:install %PUBLIC_DIR%": "symfony-cmd"
|
||||||
|
},
|
||||||
|
"post-install-cmd": [
|
||||||
|
"@auto-scripts"
|
||||||
|
],
|
||||||
|
"post-update-cmd": [
|
||||||
|
"@auto-scripts"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"conflict": {
|
||||||
|
"symfony/symfony": "*"
|
||||||
|
},
|
||||||
|
"extra": {
|
||||||
|
"symfony": {
|
||||||
|
"allow-contrib": true,
|
||||||
|
"require": "7.4.*",
|
||||||
|
"docker": true
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"require-dev": {
|
||||||
|
"deployer/deployer": "^7.5",
|
||||||
|
"friendsofphp/php-cs-fixer": "^3.75",
|
||||||
|
"phpstan/phpstan": "^2.1",
|
||||||
|
"phpstan/phpstan-doctrine": "^2.0",
|
||||||
|
"phpstan/phpstan-symfony": "^2.0",
|
||||||
|
"phpunit/phpunit": "^9.5",
|
||||||
|
"spatie/ray": "^1.43",
|
||||||
|
"spatie/x-ray": "^1.2",
|
||||||
|
"symfony/browser-kit": "7.4.*",
|
||||||
|
"symfony/css-selector": "7.4.*",
|
||||||
|
"symfony/debug-bundle": "7.4.*",
|
||||||
|
"symfony/maker-bundle": "^1.0",
|
||||||
|
"symfony/phpunit-bridge": "7.4.*",
|
||||||
|
"symfony/stopwatch": "7.4.*",
|
||||||
|
"symfony/web-profiler-bundle": "7.4.*"
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -13,7 +13,10 @@ return [
|
|||||||
Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true],
|
Symfony\Bundle\MakerBundle\MakerBundle::class => ['dev' => true],
|
||||||
Symfony\UX\StimulusBundle\StimulusBundle::class => ['all' => true],
|
Symfony\UX\StimulusBundle\StimulusBundle::class => ['all' => true],
|
||||||
Symfony\WebpackEncoreBundle\WebpackEncoreBundle::class => ['all' => true],
|
Symfony\WebpackEncoreBundle\WebpackEncoreBundle::class => ['all' => true],
|
||||||
Knp\Bundle\MenuBundle\KnpMenuBundle::class => ['all' => true],
|
|
||||||
League\FlysystemBundle\FlysystemBundle::class => ['all' => true],
|
League\FlysystemBundle\FlysystemBundle::class => ['all' => true],
|
||||||
League\Bundle\OAuth2ServerBundle\LeagueOAuth2ServerBundle::class => ['all' => true],
|
League\Bundle\OAuth2ServerBundle\LeagueOAuth2ServerBundle::class => ['all' => true],
|
||||||
|
Zenstruck\ScheduleBundle\ZenstruckScheduleBundle::class => ['all' => true],
|
||||||
|
Symfony\UX\TwigComponent\TwigComponentBundle::class => ['all' => true],
|
||||||
|
EasyCorp\Bundle\EasyAdminBundle\EasyAdminBundle::class => ['all' => true],
|
||||||
|
Flagception\Bundle\FlagceptionBundle\FlagceptionBundle::class => ['all' => true],
|
||||||
];
|
];
|
||||||
@@ -15,5 +15,7 @@ framework:
|
|||||||
#app: cache.adapter.apcu
|
#app: cache.adapter.apcu
|
||||||
|
|
||||||
# Namespaced pools use the above "app" backend by default
|
# Namespaced pools use the above "app" backend by default
|
||||||
#pools:
|
pools:
|
||||||
#my.dedicated.cache: null
|
bpn.cache:
|
||||||
|
adapter: cache.adapter.filesystem
|
||||||
|
tags: true
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
# Enable stateless CSRF protection for forms and logins/logouts
|
||||||
|
framework:
|
||||||
|
form:
|
||||||
|
csrf_protection:
|
||||||
|
token_id: submit
|
||||||
|
|
||||||
|
csrf_protection:
|
||||||
|
stateless_token_ids:
|
||||||
|
- submit
|
||||||
|
- authenticate
|
||||||
|
- logout
|
||||||
@@ -11,10 +11,11 @@ doctrine:
|
|||||||
orm:
|
orm:
|
||||||
auto_generate_proxy_classes: true
|
auto_generate_proxy_classes: true
|
||||||
enable_lazy_ghost_objects: true
|
enable_lazy_ghost_objects: true
|
||||||
report_fields_where_declared: true
|
|
||||||
validate_xml_mapping: true
|
validate_xml_mapping: true
|
||||||
naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
|
naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
|
||||||
auto_mapping: true
|
auto_mapping: true
|
||||||
|
controller_resolver:
|
||||||
|
auto_mapping: false
|
||||||
mappings:
|
mappings:
|
||||||
App:
|
App:
|
||||||
type: attribute
|
type: attribute
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
flagception:
|
||||||
|
features: {}
|
||||||
@@ -4,13 +4,18 @@ flysystem:
|
|||||||
adapter: 'local'
|
adapter: 'local'
|
||||||
options:
|
options:
|
||||||
directory: '%env(resolve:XML_EXPORT_PATH)%'
|
directory: '%env(resolve:XML_EXPORT_PATH)%'
|
||||||
|
xml_source.storage:
|
||||||
|
adapter: 'sftp'
|
||||||
|
options:
|
||||||
|
host: '%env(SFTP_XML_EXPORT_HOST)%'
|
||||||
|
port: '%env(int:SFTP_XML_EXPORT_PORT)%'
|
||||||
|
username: '%env(SFTP_XML_EXPORT_USER)%'
|
||||||
|
password: '%env(SFTP_XML_EXPORT_PASSWORD)%'
|
||||||
xml_dump.storage:
|
xml_dump.storage:
|
||||||
adapter: 'local'
|
adapter: 'local'
|
||||||
options:
|
options:
|
||||||
directory: '%kernel.project_dir%/var/bpn'
|
directory: '%kernel.project_dir%/var/bpn'
|
||||||
# adapter: 'sftp'
|
json_export.storage:
|
||||||
# options:
|
adapter: 'local'
|
||||||
# host: '%env(SFTP_XML_EXPORT_HOST)%'
|
options:
|
||||||
# port: '%env(int:SFTP_XML_EXPORT_PORT)%'
|
directory: '%env(resolve:JSON_EXPORT_PATH)%'
|
||||||
# username: '%env(SFTP_XML_EXPORT_USER)%'
|
|
||||||
# password: '%env(SFTP_XML_EXPORT_PASSWORD)%'
|
|
||||||
@@ -18,6 +18,13 @@ framework:
|
|||||||
php_errors:
|
php_errors:
|
||||||
log: true
|
log: true
|
||||||
|
|
||||||
|
http_client:
|
||||||
|
scoped_clients:
|
||||||
|
typo3.client:
|
||||||
|
base_uri: '%env(resolve:APP_CMS_API_BASE_URL)%'
|
||||||
|
headers:
|
||||||
|
accept: 'text/json'
|
||||||
|
|
||||||
when@test:
|
when@test:
|
||||||
framework:
|
framework:
|
||||||
test: true
|
test: true
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ league_oauth2_server:
|
|||||||
resource_server:
|
resource_server:
|
||||||
public_key: '%env(resolve:OAUTH_PUBLIC_KEY)%'
|
public_key: '%env(resolve:OAUTH_PUBLIC_KEY)%'
|
||||||
scopes:
|
scopes:
|
||||||
available: ['email','profile','api']
|
available: ['email','id','profile','roles','api']
|
||||||
default: ['email']
|
default: ['email']
|
||||||
persistence:
|
persistence:
|
||||||
doctrine: null
|
doctrine: null
|
||||||
|
|||||||
@@ -0,0 +1,2 @@
|
|||||||
|
framework:
|
||||||
|
lock: '%env(LOCK_DSN)%'
|
||||||
@@ -13,7 +13,7 @@ framework:
|
|||||||
max_retries: 3
|
max_retries: 3
|
||||||
multiplier: 2
|
multiplier: 2
|
||||||
failed: 'doctrine://default?queue_name=failed'
|
failed: 'doctrine://default?queue_name=failed'
|
||||||
# sync: 'sync://'
|
sync: 'sync://'
|
||||||
|
|
||||||
default_bus: messenger.bus.default
|
default_bus: messenger.bus.default
|
||||||
|
|
||||||
@@ -21,7 +21,7 @@ framework:
|
|||||||
messenger.bus.default: []
|
messenger.bus.default: []
|
||||||
|
|
||||||
routing:
|
routing:
|
||||||
Symfony\Component\Mailer\Messenger\SendEmailMessage: async
|
Symfony\Component\Mailer\Messenger\SendEmailMessage: sync
|
||||||
Symfony\Component\Notifier\Message\ChatMessage: async
|
Symfony\Component\Notifier\Message\ChatMessage: async
|
||||||
Symfony\Component\Notifier\Message\SmsMessage: async
|
Symfony\Component\Notifier\Message\SmsMessage: async
|
||||||
|
|
||||||
|
|||||||
@@ -59,7 +59,7 @@ when@test:
|
|||||||
path: "%kernel.logs_dir%/%kernel.environment%.log"
|
path: "%kernel.logs_dir%/%kernel.environment%.log"
|
||||||
level: debug
|
level: debug
|
||||||
|
|
||||||
when@prod:
|
when@prod: &prod_config
|
||||||
monolog:
|
monolog:
|
||||||
handlers:
|
handlers:
|
||||||
database:
|
database:
|
||||||
@@ -73,9 +73,10 @@ when@prod:
|
|||||||
level: info
|
level: info
|
||||||
channels: ["bpn"]
|
channels: ["bpn"]
|
||||||
auth:
|
auth:
|
||||||
type: stream
|
type: rotating_file
|
||||||
|
max_files: 7
|
||||||
path: "%kernel.logs_dir%/%kernel.environment%.auth.log"
|
path: "%kernel.logs_dir%/%kernel.environment%.auth.log"
|
||||||
level: debug
|
level: info
|
||||||
channels: ["auth"]
|
channels: ["auth"]
|
||||||
core:
|
core:
|
||||||
type: rotating_file
|
type: rotating_file
|
||||||
@@ -104,3 +105,5 @@ when@prod:
|
|||||||
channels: [deprecation]
|
channels: [deprecation]
|
||||||
path: php://stderr
|
path: php://stderr
|
||||||
formatter: monolog.formatter.json
|
formatter: monolog.formatter.json
|
||||||
|
|
||||||
|
when@staging: *prod_config
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
framework:
|
||||||
|
property_info:
|
||||||
|
with_constructor_extractor: true
|
||||||
@@ -32,7 +32,9 @@ security:
|
|||||||
# Easy way to control access for large sections of your site
|
# Easy way to control access for large sections of your site
|
||||||
# Note: Only the *first* access control that matches will be used
|
# Note: Only the *first* access control that matches will be used
|
||||||
access_control:
|
access_control:
|
||||||
- { path: ^/authorize, roles: IS_AUTHENTICATED_REMEMBERED }
|
- { path: ^/authorize, roles: IS_AUTHENTICATED_REMEMBERED, requires_channel: https }
|
||||||
|
- { path: ^/admin, roles: ROLE_ADMIN, requires_channel: https }
|
||||||
|
- { path: ^/, roles: PUBLIC_ACCESS, requires_channel: https }
|
||||||
|
|
||||||
when@test:
|
when@test:
|
||||||
security:
|
security:
|
||||||
|
|||||||
@@ -1,6 +1,15 @@
|
|||||||
twig:
|
twig:
|
||||||
file_name_pattern: '*.twig'
|
file_name_pattern: '*.twig'
|
||||||
form_themes: ['forms.html.twig']
|
form_themes: ['forms.html.twig']
|
||||||
|
paths:
|
||||||
|
'%kernel.project_dir%/assets/images': images
|
||||||
|
globals:
|
||||||
|
htmx_change_trigger: 'change delay:100ms'
|
||||||
|
website_base_url: '%env(APP_WEBSITE_BASE_URL)%'
|
||||||
|
customer_service_email: '%env(APP_CUSTOMER_SERVICE_EMAIL)%'
|
||||||
|
legal_notice_url: '%env(APP_LEGAL_NOTICE_URL)%'
|
||||||
|
terms_and_conditions_url: '%env(APP_TERMS_AND_CONDITIONS_URL)%'
|
||||||
|
privacy_policy_url: '%env(APP_PRIVACY_POLICY_URL)%'
|
||||||
|
|
||||||
when@test:
|
when@test:
|
||||||
twig:
|
twig:
|
||||||
|
|||||||
@@ -0,0 +1,5 @@
|
|||||||
|
twig_component:
|
||||||
|
anonymous_template_directory: 'components/'
|
||||||
|
defaults:
|
||||||
|
# Namespace & directory for components
|
||||||
|
App\Twig\Components\: 'components/'
|
||||||
@@ -0,0 +1,60 @@
|
|||||||
|
zenstruck_schedule:
|
||||||
|
timezone: Europe/Berlin
|
||||||
|
|
||||||
|
mailer:
|
||||||
|
service: mailer
|
||||||
|
default_to: [email protected]
|
||||||
|
default_from: [email protected]
|
||||||
|
subject_prefix: "[MyE&P]"
|
||||||
|
|
||||||
|
schedule_extensions:
|
||||||
|
email_on_failure:
|
||||||
|
enabled: true
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- task: app:cleanup:xml-dumps
|
||||||
|
frequency: "0 1 * * *"
|
||||||
|
description: "Removes outdated XML dumps of requests/responses to BPN API for debugging"
|
||||||
|
|
||||||
|
- task: app:cleanup:log-entries
|
||||||
|
frequency: "15 1 * * *"
|
||||||
|
description: "Removes outdated log entries with a retention period of 6 months"
|
||||||
|
|
||||||
|
- task: app:draft:cleanup
|
||||||
|
frequency: "30 1 * * *"
|
||||||
|
description: "Removes expired drafts"
|
||||||
|
|
||||||
|
- task: app:cleanup:newsletter-opt-in-requests
|
||||||
|
frequency: "45 1 * * *"
|
||||||
|
description: "Removes expired pending newsletter double opt-in requests"
|
||||||
|
|
||||||
|
- task: league:oauth2-server:clear-expired-tokens
|
||||||
|
frequency: "0 * * * *"
|
||||||
|
description: "Removes expired oauth2 tokens hourly"
|
||||||
|
|
||||||
|
- task: app:bpn:refresh-travel-snapshot --refresh-after 60
|
||||||
|
frequency: "10 8-19 * * *"
|
||||||
|
description: "Syncs travel data snapshots with BusPro XML data hourly during peak hours"
|
||||||
|
|
||||||
|
- task: app:bpn:refresh-travel-snapshot --refresh-after 180
|
||||||
|
frequency: "10 20-23,0-7 * * *"
|
||||||
|
description: "Syncs travel data snapshots with BusPro XML data every 3 hours outside peak hours"
|
||||||
|
|
||||||
|
when@staging:
|
||||||
|
zenstruck_schedule:
|
||||||
|
mailer:
|
||||||
|
subject_prefix: "[MyE&P STAGING]"
|
||||||
|
|
||||||
|
when@prod:
|
||||||
|
zenstruck_schedule:
|
||||||
|
mailer:
|
||||||
|
subject_prefix: "[MyE&P PROD]"
|
||||||
|
|
||||||
|
tasks:
|
||||||
|
- task: app:bpn:xml-sync
|
||||||
|
frequency: "*/15 8-19 * * *"
|
||||||
|
description: "Syncs BusPro XML data every 15 min. during peak hours"
|
||||||
|
|
||||||
|
- task: app:bpn:xml-sync
|
||||||
|
frequency: "0 20-23,0-7 * * *"
|
||||||
|
description: "Syncs BusPro XML data hourly outside peak hours"
|
||||||
@@ -0,0 +1,3 @@
|
|||||||
|
easyadmin:
|
||||||
|
resource: .
|
||||||
|
type: easyadmin.routes
|
||||||
@@ -5,7 +5,53 @@
|
|||||||
# https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration
|
# https://symfony.com/doc/current/best_practices.html#use-parameters-for-application-configuration
|
||||||
parameters:
|
parameters:
|
||||||
travel_info_base_url: '%env(APP_TRAVEL_INFO_BASE_URL)%'
|
travel_info_base_url: '%env(APP_TRAVEL_INFO_BASE_URL)%'
|
||||||
|
terms_and_conditions_url: '%env(APP_TERMS_AND_CONDITIONS_URL)%'
|
||||||
path_to_keys: '%kernel.project_dir%/config/secret'
|
path_to_keys: '%kernel.project_dir%/config/secret'
|
||||||
|
bpn_debug: '%env(APP_BPN_DEBUG)%'
|
||||||
|
default_booking_status: '%env(DEFAULT_BOOKING_STATUS)%'
|
||||||
|
newsletter_confirmation_ttl_hours: '%env(int:APP_NEWSLETTER_CONFIRMATION_TTL_HOURS)%'
|
||||||
|
travel_snapshot_retention_buffer_days: '%env(int:APP_TRAVEL_SNAPSHOT_RETENTION_BUFFER_DAYS)%'
|
||||||
|
default_email_from: '%env(APP_DEFAULT_EMAIL_FROM)%'
|
||||||
|
default_email_to: '%env(APP_DEFAULT_EMAIL_TO)%'
|
||||||
|
|
||||||
|
# Body dimensions choices for BodyDimensionsType
|
||||||
|
body_dimensions.height_choices:
|
||||||
|
'bis 148cm': '-148'
|
||||||
|
'149 - 157cm': '149-157'
|
||||||
|
'158 - 166cm': '158-166'
|
||||||
|
'167 - 178cm': '167-178'
|
||||||
|
'179 - 185cm': '179-185'
|
||||||
|
'186 - 194cm': '186-194'
|
||||||
|
'195cm oder mehr': '195+'
|
||||||
|
body_dimensions.shoe_size_min: 36
|
||||||
|
body_dimensions.shoe_size_max: 48
|
||||||
|
body_dimensions.weight_choices:
|
||||||
|
'42 - 48kg': '42-48'
|
||||||
|
'49 - 57kg': '49-57'
|
||||||
|
'58 - 66kg': '58-66'
|
||||||
|
'67 - 78kg': '67-78'
|
||||||
|
'79 - 85kg': '79-85'
|
||||||
|
'86 - 94kg': '86-94'
|
||||||
|
'95kg oder mehr': '95+'
|
||||||
|
|
||||||
|
# domain mapping for theme, gtm id and cmp url
|
||||||
|
domain_config:
|
||||||
|
ep-reisen.de:
|
||||||
|
theme: base
|
||||||
|
gtm_id: GTM-56LWRF
|
||||||
|
cmp_url: https://consent.cookiefirst.com/sites/my.ep-reisen.de-28eabc35-7085-4d8f-b450-522bd1a5247c/consent.js
|
||||||
|
ski-boarderweek.de:
|
||||||
|
theme: sbw
|
||||||
|
gtm_id: GTM-MS2C8CH
|
||||||
|
cmp_url: https://consent.cookiefirst.com/sites/my.ski-boarderweek.de-d3641c34-8183-4b8d-b56e-c052e7a9223e/consent.js
|
||||||
|
semesterende-skireisen.de:
|
||||||
|
theme: ser
|
||||||
|
gtm_id: GTM-MNKDKL9
|
||||||
|
cmp_url: https://consent.cookiefirst.com/sites/my.semesterende-skireisen.de-c9b3422d-eb62-4ce4-b8f7-91e9b509e26f/consent.js
|
||||||
|
snowzone.net:
|
||||||
|
theme: snz
|
||||||
|
gtm_id: GTM-M96CKL
|
||||||
|
cmp_url: https://consent.cookiefirst.com/sites/my.snowzone.net-8e6aea0c-7d93-42a0-a822-29fff2aa5613/consent.js
|
||||||
|
|
||||||
services:
|
services:
|
||||||
# default configuration for services in *this* file
|
# default configuration for services in *this* file
|
||||||
@@ -14,9 +60,13 @@ services:
|
|||||||
autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
|
autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
|
||||||
bind:
|
bind:
|
||||||
$xmlExport: '@xml_export.storage'
|
$xmlExport: '@xml_export.storage'
|
||||||
|
$xmlSource: '@xml_source.storage'
|
||||||
$xmlDump: '@xml_dump.storage'
|
$xmlDump: '@xml_dump.storage'
|
||||||
|
$jsonExport: '@json_export.storage'
|
||||||
$travelInfoBaseUrl: '%env(APP_TRAVEL_INFO_BASE_URL)%'
|
$travelInfoBaseUrl: '%env(APP_TRAVEL_INFO_BASE_URL)%'
|
||||||
|
$termsAndConditionsUrl: '%terms_and_conditions_url%'
|
||||||
$logger: '@monolog.logger.core'
|
$logger: '@monolog.logger.core'
|
||||||
|
$environment: '%kernel.environment%'
|
||||||
|
|
||||||
# makes classes in src/ available to be used as services
|
# makes classes in src/ available to be used as services
|
||||||
# this creates a service per class whose id is the fully-qualified class name
|
# this creates a service per class whose id is the fully-qualified class name
|
||||||
@@ -25,6 +75,7 @@ services:
|
|||||||
exclude:
|
exclude:
|
||||||
- '../src/DependencyInjection/'
|
- '../src/DependencyInjection/'
|
||||||
- '../src/Entity/'
|
- '../src/Entity/'
|
||||||
|
- '../src/Model'
|
||||||
- '../src/Kernel.php'
|
- '../src/Kernel.php'
|
||||||
|
|
||||||
App\BusProNet\ApiClient:
|
App\BusProNet\ApiClient:
|
||||||
@@ -34,21 +85,22 @@ services:
|
|||||||
bpn_username: '%env(APP_BPN_USER)%'
|
bpn_username: '%env(APP_BPN_USER)%'
|
||||||
bpn_password: '%env(APP_BPN_PASSWORD)%'
|
bpn_password: '%env(APP_BPN_PASSWORD)%'
|
||||||
bpn_api_ip: '%env(APP_BPN_IP)%'
|
bpn_api_ip: '%env(APP_BPN_IP)%'
|
||||||
bpn_api_port: '%env(APP_BPN_PORT)%'
|
bpn_api_ports: '%env(csv_int:APP_BPN_PORTS)%'
|
||||||
debug: '%env(bool:APP_BPN_DEBUG)%'
|
debug: '%env(bool:APP_BPN_DEBUG)%'
|
||||||
|
connection_timeout: '%env(int:APP_BPN_CONNECTION_TIMEOUT)%'
|
||||||
|
stream_timeout: '%env(int:APP_BPN_STREAM_TIMEOUT)%'
|
||||||
|
total_timeout: '%env(int:APP_BPN_TOTAL_TIMEOUT)%'
|
||||||
|
|
||||||
|
App\DependencyInjection\Env\CsvIntEnvVarProcessor: ~
|
||||||
|
|
||||||
|
App\BusProNet\XmlParser\DocumentsParser:
|
||||||
|
arguments:
|
||||||
|
$tempDir: '%kernel.project_dir%/temp'
|
||||||
|
|
||||||
App\Twig\AppRuntime:
|
App\Twig\AppRuntime:
|
||||||
arguments:
|
arguments:
|
||||||
$intlExtension: '@twig.extension.intl'
|
$intlExtension: '@twig.extension.intl'
|
||||||
|
|
||||||
App\Menu\MenuBuilder:
|
|
||||||
arguments:
|
|
||||||
$factory: '@knp_menu.factory'
|
|
||||||
tags:
|
|
||||||
- name: knp_menu.menu_builder
|
|
||||||
method: createMainMenu
|
|
||||||
alias: main
|
|
||||||
|
|
||||||
App\Command\GenerateKeysCommand:
|
App\Command\GenerateKeysCommand:
|
||||||
arguments:
|
arguments:
|
||||||
$path: '%path_to_keys%'
|
$path: '%path_to_keys%'
|
||||||
@@ -57,8 +109,94 @@ services:
|
|||||||
arguments:
|
arguments:
|
||||||
$path: '%path_to_keys%'
|
$path: '%path_to_keys%'
|
||||||
|
|
||||||
App\Service\TravelDataService:
|
App\Service\TravelSnapshotManager:
|
||||||
|
arguments:
|
||||||
|
$retentionBufferDays: '%travel_snapshot_retention_buffer_days%'
|
||||||
|
|
||||||
|
App\Service\TravelDataProvider:
|
||||||
arguments:
|
arguments:
|
||||||
$logger: '@monolog.logger.core'
|
$logger: '@monolog.logger.core'
|
||||||
$preferRemote: '%env(bool:APP_TRAVEL_PREFER_REMOTE)%'
|
$preferRemote: '%env(bool:APP_TRAVEL_PREFER_REMOTE)%'
|
||||||
$enableFallback: '%env(bool:APP_TRAVEL_ENABLE_FALLBACK)%'
|
$enableFallback: '%env(bool:APP_TRAVEL_ENABLE_FALLBACK)%'
|
||||||
|
|
||||||
|
App\Service\BookingEditDataLoader:
|
||||||
|
arguments:
|
||||||
|
$bpnCache: '@bpn.cache'
|
||||||
|
|
||||||
|
App\Service\VoucherValidator:
|
||||||
|
arguments:
|
||||||
|
$cache: '@cache.app'
|
||||||
|
$logger: '@monolog.logger.bpn'
|
||||||
|
|
||||||
|
# Field Handlers with dependencies
|
||||||
|
App\Form\Service\ParticipantInsuranceFieldHandler: ~
|
||||||
|
App\Form\Service\ParticipantBulkInsuranceFieldHandler: ~
|
||||||
|
App\Form\Service\ParticipantTransportationDiscountReplacementFieldHandler: ~
|
||||||
|
App\Form\Service\ParticipantPurchaseVoucherFieldHandler: ~
|
||||||
|
App\Form\Service\ParticipantPromoVoucherFieldHandler: ~
|
||||||
|
|
||||||
|
# Participant Field Handler Registry - most handlers instantiate dependencies directly, some use services
|
||||||
|
App\Form\Service\ParticipantFieldHandlerRegistry:
|
||||||
|
arguments:
|
||||||
|
$handlers:
|
||||||
|
# Simple handlers with no external dependencies - instantiated directly
|
||||||
|
- 'App\Form\Service\ParticipantDateOfBirthFieldHandler'
|
||||||
|
- 'App\Form\Service\ParticipantAssignedRoomFieldHandler'
|
||||||
|
- 'App\Form\Service\ParticipantRemarksRoomFieldHandler'
|
||||||
|
- 'App\Form\Service\ParticipantAdditionalServicesFieldHandler'
|
||||||
|
- 'App\Form\Service\ParticipantCoursesFieldHandler'
|
||||||
|
- 'App\Form\Service\ParticipantBoardFieldHandler'
|
||||||
|
- 'App\Form\Service\ParticipantRentalsFieldHandler'
|
||||||
|
- 'App\Form\Service\ParticipantSkiPassFieldHandler'
|
||||||
|
- 'App\Form\Service\ParticipantTransportationOutboundFieldHandler'
|
||||||
|
- 'App\Form\Service\ParticipantTransportationInboundFieldHandler'
|
||||||
|
- 'App\Form\Service\ParticipantPickupFieldHandler'
|
||||||
|
- 'App\Form\Service\ParticipantDropOffFieldHandler'
|
||||||
|
- 'App\Form\Service\ParticipantParkingFieldHandler'
|
||||||
|
- 'App\Form\Service\ParticipantRentalInsuranceFieldHandler'
|
||||||
|
- 'App\Form\Service\ParticipantLicensePlateFieldHandler'
|
||||||
|
# Complex handlers with dependencies - use service references
|
||||||
|
- '@App\Form\Service\ParticipantTransportationDiscountReplacementFieldHandler'
|
||||||
|
- '@App\Form\Service\ParticipantBulkInsuranceFieldHandler'
|
||||||
|
- '@App\Form\Service\ParticipantInsuranceFieldHandler'
|
||||||
|
- '@App\Form\Service\ParticipantPurchaseVoucherFieldHandler'
|
||||||
|
- '@App\Form\Service\ParticipantPromoVoucherFieldHandler'
|
||||||
|
|
||||||
|
# Booking Status Rules
|
||||||
|
App\BusProNet\Service\StatusRule\ChaperonServiceStatusRule: ~
|
||||||
|
|
||||||
|
# Booking Status Rule Registry
|
||||||
|
App\BusProNet\Service\BookingStatusRuleRegistry:
|
||||||
|
arguments:
|
||||||
|
$rules:
|
||||||
|
- '@App\BusProNet\Service\StatusRule\ChaperonServiceStatusRule'
|
||||||
|
|
||||||
|
App\Service\CmsDataProvider:
|
||||||
|
arguments:
|
||||||
|
$httpClient: '@typo3.client'
|
||||||
|
$apiKey: 'AbcAbc123'# dummy key, not yet implemented
|
||||||
|
|
||||||
|
App\Logger\RequestIdProcessor:
|
||||||
|
tags:
|
||||||
|
- { name: monolog.processor }
|
||||||
|
|
||||||
|
App\Service\NewsletterManager:
|
||||||
|
arguments:
|
||||||
|
$newsletterConfirmationTtlHours: '%newsletter_confirmation_ttl_hours%'
|
||||||
|
|
||||||
|
App\Service\DomainConfigProvider:
|
||||||
|
arguments:
|
||||||
|
$domainConfig: '%domain_config%'
|
||||||
|
|
||||||
|
App\Email\Mailer:
|
||||||
|
arguments:
|
||||||
|
$defaults:
|
||||||
|
from: '%default_email_from%'
|
||||||
|
to: '%default_email_to%'
|
||||||
|
|
||||||
|
App\Service\MailjetApiClient:
|
||||||
|
arguments:
|
||||||
|
$mailjetApiKey: '%env(default::MAILJET_API_KEY)%'
|
||||||
|
$mailjetApiSecret: '%env(default::MAILJET_API_SECRET)%'
|
||||||
|
$mailjetApiBaseUrl: '%env(default::MAILJET_API_BASE_URL)%'
|
||||||
|
$mailjetNewsletterListId: '%env(default::MAILJET_NEWSLETTER_LIST_ID)%'
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
parameters:
|
||||||
|
# domain mapping for theme, gtm id and cmp url
|
||||||
|
domain_config:
|
||||||
|
myep.ddev.site:
|
||||||
|
theme: base
|
||||||
|
gtm_id: GTM-56LWRF
|
||||||
|
cmp_url: https://consent.cookiefirst.com/sites/my.ep-reisen.de-28eabc35-7085-4d8f-b450-522bd1a5247c/consent.js
|
||||||
|
myswb.ddev.site:
|
||||||
|
theme: sbw
|
||||||
|
gtm_id: GTM-MS2C8CH
|
||||||
|
cmp_url: https://consent.cookiefirst.com/sites/my.ski-boarderweek.de-d3641c34-8183-4b8d-b56e-c052e7a9223e/consent.js
|
||||||
|
myser.ddev.site:
|
||||||
|
theme: ser
|
||||||
|
gtm_id: GTM-MNKDKL9
|
||||||
|
cmp_url: https://consent.cookiefirst.com/sites/my.semesterende-skireisen.de-c9b3422d-eb62-4ce4-b8f7-91e9b509e26f/consent.js
|
||||||
|
mysnz.ddev.site:
|
||||||
|
theme: snz
|
||||||
|
gtm_id: GTM-M96CKL
|
||||||
|
cmp_url: https://consent.cookiefirst.com/sites/my.snowzone.net-8e6aea0c-7d93-42a0-a822-29fff2aa5613/consent.js
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
const {defineConfig} = require("cypress");
|
||||||
|
|
||||||
|
module.exports = defineConfig({
|
||||||
|
e2e: {
|
||||||
|
baseUrl: 'https://myep-next-booking.ddev.site',
|
||||||
|
supportFile: false,
|
||||||
|
},
|
||||||
|
});
|
||||||
@@ -0,0 +1,61 @@
|
|||||||
|
describe('Booking test', () => {
|
||||||
|
it('Books a double room on test travel 1', () => {
|
||||||
|
cy.visit('/bookings/create/11946/157047')
|
||||||
|
cy.contains('Neue Buchung')
|
||||||
|
|
||||||
|
// await form refresh after selecting registration type
|
||||||
|
cy.intercept('POST', '/bookings/create/refresh').as('htmxRequest')
|
||||||
|
cy.get('#booking_create_step1_roomSelections_76_quantity').select('1')
|
||||||
|
cy.wait('@htmxRequest')
|
||||||
|
|
||||||
|
cy.intercept('POST', '/bookings/create').as('htmxRequest')
|
||||||
|
cy.get('[data-qa-btn-submit]').click()
|
||||||
|
cy.wait('@htmxRequest')
|
||||||
|
|
||||||
|
cy.intercept('GET', '/bookings/create/participants/0').as('htmxRequest')
|
||||||
|
cy.get('[data-qa-btn-edit-participant="0"]').click()
|
||||||
|
cy.wait('@htmxRequest')
|
||||||
|
|
||||||
|
cy.get('#booking_participant_firstName').type('Theo')
|
||||||
|
cy.get('#booking_participant_lastName').type('Test')
|
||||||
|
cy.get('#booking_participant_email').type('[email protected]')
|
||||||
|
cy.get('#booking_participant_mobile').type('1234567890')
|
||||||
|
cy.get('#booking_participant_address_street').type('Teststraße 1')
|
||||||
|
cy.get('#booking_participant_address_postCode').type('12345')
|
||||||
|
cy.get('#booking_participant_address_city').type('Testhausen')
|
||||||
|
|
||||||
|
cy.intercept('POST', '/bookings/create/participants/0/refresh').as('htmxRequest')
|
||||||
|
cy.get('#booking_participant_dateOfBirth').type('1980-11-11')
|
||||||
|
cy.get('#booking_participant_dateOfBirth').trigger('change')
|
||||||
|
cy.wait('@htmxRequest')
|
||||||
|
|
||||||
|
cy.get('#booking_participant_skiPass_0').check()
|
||||||
|
|
||||||
|
cy.intercept('POST', '/bookings/create/participants/0/refresh').as('htmxRequest')
|
||||||
|
cy.get('#booking_participant_courses_0').check()
|
||||||
|
cy.wait('@htmxRequest')
|
||||||
|
|
||||||
|
cy.intercept('POST', '/bookings/create/participants/0/refresh').as('htmxRequest')
|
||||||
|
cy.get('#booking_participant_insurance_0').check()
|
||||||
|
cy.wait('@htmxRequest')
|
||||||
|
|
||||||
|
cy.intercept('POST', '/bookings/create/participants/0/refresh').as('htmxRequest')
|
||||||
|
cy.get('#booking_participant_transportationOutbound_1').check()
|
||||||
|
cy.wait('@htmxRequest')
|
||||||
|
|
||||||
|
cy.intercept('POST', '/bookings/create/participants/0/refresh').as('htmxRequest')
|
||||||
|
cy.get('#booking_participant_transportationInbound_1').check()
|
||||||
|
cy.wait('@htmxRequest')
|
||||||
|
|
||||||
|
cy.intercept('POST', '/bookings/create/participants/0').as('htmxRequest')
|
||||||
|
cy.get('[data-qa-btn-submit]').click()
|
||||||
|
cy.wait('@htmxRequest')
|
||||||
|
|
||||||
|
cy.intercept('POST', '/bookings/create/participants').as('htmxRequest')
|
||||||
|
cy.get('[data-qa-btn-submit]').click()
|
||||||
|
cy.wait('@htmxRequest')
|
||||||
|
|
||||||
|
cy.get('[data-qa-alert-form-errors]').should('be.visible')
|
||||||
|
cy.get('[data-qa-participant-incomplete="1"]').should('be.visible')
|
||||||
|
})
|
||||||
|
})
|
||||||
@@ -11,23 +11,28 @@ add('shared_dirs', [
|
|||||||
'var/bpn',
|
'var/bpn',
|
||||||
'var/log',
|
'var/log',
|
||||||
'var/sessions',
|
'var/sessions',
|
||||||
|
'var/jsonexport',
|
||||||
|
'var/xmlexport',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
add('shared_files', [
|
add('shared_files', [
|
||||||
'public/.htaccess',
|
'public/.htaccess',
|
||||||
'.env.local.php',
|
|
||||||
'var/data.db',
|
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
set('keep_releases', 3);
|
||||||
|
|
||||||
// Rsync options, mainly files/dirs to exclude
|
// Rsync options, mainly files/dirs to exclude
|
||||||
$rsyncOptions = [
|
$rsyncOptions = [
|
||||||
'exclude' => [
|
'exclude' => [
|
||||||
|
'.claude',
|
||||||
|
'.cursor',
|
||||||
'.idea',
|
'.idea',
|
||||||
'.vscode',
|
'.vscode',
|
||||||
'.DS_Store',
|
'.DS_Store',
|
||||||
'.ddev',
|
'.ddev',
|
||||||
'.git',
|
'.git',
|
||||||
'.github',
|
'.github',
|
||||||
|
'.jj',
|
||||||
'node_modules',
|
'node_modules',
|
||||||
'.editorconfig',
|
'.editorconfig',
|
||||||
'.env.dev.local',
|
'.env.dev.local',
|
||||||
@@ -40,14 +45,18 @@ $rsyncOptions = [
|
|||||||
'.php-cs-fixer.dist.php',
|
'.php-cs-fixer.dist.php',
|
||||||
'.phpunit.result.cache',
|
'.phpunit.result.cache',
|
||||||
'config/secret/',
|
'config/secret/',
|
||||||
|
'CLAUDE.md',
|
||||||
|
'cypress*',
|
||||||
'deploy.php',
|
'deploy.php',
|
||||||
|
'docs',
|
||||||
'package.json',
|
'package.json',
|
||||||
'package-lock.json',
|
'package-lock.json',
|
||||||
'*.http',
|
'*.http',
|
||||||
'http-client.private.env.json',
|
'http-client*.json',
|
||||||
'postcss.config.js',
|
'postcss.config.js',
|
||||||
'phpunit.xml.dist',
|
'phpunit.xml.dist',
|
||||||
'public/.htaccess',
|
'public/.htaccess',
|
||||||
|
'ray.php',
|
||||||
'tailwind.config.js',
|
'tailwind.config.js',
|
||||||
'webpack.config.js',
|
'webpack.config.js',
|
||||||
'bin/.phpunit',
|
'bin/.phpunit',
|
||||||
@@ -68,31 +77,31 @@ $rsyncOptions = [
|
|||||||
];
|
];
|
||||||
|
|
||||||
host('prod')
|
host('prod')
|
||||||
->setHostname('92.205.212.39')
|
->setHostname('185.243.135.29')
|
||||||
->setRemoteUser('ssh-53857-root')
|
->setRemoteUser('p704161')
|
||||||
->setForwardAgent(true)
|
->setForwardAgent(true)
|
||||||
->setSshMultiplexing(true)
|
->setSshMultiplexing(true)
|
||||||
->setDeployPath('/kunden/tiefschnee.de/myep-next')
|
->setDeployPath('/home/www/p704161/html/myep')
|
||||||
->set('writable_mode', 'chmod')
|
|
||||||
->set('http_user', 'ssh-53857-root')
|
|
||||||
->set('bin/php', '/usr/bin/php82')
|
|
||||||
->set('rsync_src', __DIR__)
|
|
||||||
->set('rsync', $rsyncOptions)
|
|
||||||
->set('cachetool_args', '--web=SymfonyHttpClient --web-path={{release_or_current_path}}/public/ --web-url=https://myep.ep-reisen.de')
|
|
||||||
;
|
|
||||||
|
|
||||||
host('staging')
|
|
||||||
->setHostname('185.243.132.170')
|
|
||||||
->setRemoteUser('p546473')
|
|
||||||
->setForwardAgent(true)
|
|
||||||
->setSshMultiplexing(true)
|
|
||||||
->setDeployPath('/home/www/p546473/html/myep')
|
|
||||||
->set('writable_mode', 'chmod')
|
->set('writable_mode', 'chmod')
|
||||||
|
->set('http_user', 'p704161')
|
||||||
->set('bin/php', '/usr/local/bin/php')
|
->set('bin/php', '/usr/local/bin/php')
|
||||||
->set('rsync_src', __DIR__)
|
->set('rsync_src', __DIR__)
|
||||||
->set('rsync', $rsyncOptions)
|
->set('rsync', $rsyncOptions)
|
||||||
->set('keep_releases', 5)
|
->set('cachetool_args', '--web=SymfonyHttpClient --web-path={{current_path}}/public/ --web-url=https://my.ep-reisen.de')
|
||||||
->set('cachetool_args', '--web=SymfonyHttpClient --web-path={{release_or_current_path}}/public/ --web-url=https://myep.dreipunktnull.net')
|
;
|
||||||
|
|
||||||
|
host('staging')
|
||||||
|
->setHostname('185.243.135.29')
|
||||||
|
->setRemoteUser('p704161')
|
||||||
|
->setForwardAgent(true)
|
||||||
|
->setSshMultiplexing(true)
|
||||||
|
->setDeployPath('/home/www/p704161/html/myep-staging')
|
||||||
|
->set('writable_mode', 'chmod')
|
||||||
|
->set('http_user', 'p704161')
|
||||||
|
->set('bin/php', '/usr/local/bin/php')
|
||||||
|
->set('rsync_src', __DIR__)
|
||||||
|
->set('rsync', $rsyncOptions)
|
||||||
|
->set('cachetool_args', '--web=SymfonyHttpClient --web-path={{current_path}}/public/ --web-url=https://my.ep-reisen.net')
|
||||||
;
|
;
|
||||||
|
|
||||||
task('deploy', [
|
task('deploy', [
|
||||||
@@ -100,15 +109,21 @@ task('deploy', [
|
|||||||
'deploy:setup',
|
'deploy:setup',
|
||||||
'deploy:lock',
|
'deploy:lock',
|
||||||
'deploy:release',
|
'deploy:release',
|
||||||
|
'deploy:assets',
|
||||||
'rsync',
|
'rsync',
|
||||||
'deploy:shared',
|
'deploy:shared',
|
||||||
'deploy:writable',
|
'deploy:writable',
|
||||||
|
'deploy:cache:clear',
|
||||||
'database:migrate',
|
'database:migrate',
|
||||||
'deploy:publish',
|
|
||||||
'cachetool:clear:opcache',
|
'cachetool:clear:opcache',
|
||||||
|
'deploy:publish',
|
||||||
'deploy:stop-workers',
|
'deploy:stop-workers',
|
||||||
]);
|
]);
|
||||||
|
|
||||||
|
task('deploy:assets', function () {
|
||||||
|
runLocally('npm ci && npm run build');
|
||||||
|
});
|
||||||
|
|
||||||
task('deploy:stop-workers', function () {
|
task('deploy:stop-workers', function () {
|
||||||
run('{{bin/console}} messenger:stop-workers');
|
run('{{bin/console}} messenger:stop-workers');
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -0,0 +1,196 @@
|
|||||||
|
# Booking Flow Reference
|
||||||
|
|
||||||
|
Last updated: 2026-04-16
|
||||||
|
|
||||||
|
This document traces the booking create and edit flows from controller entry point through to session/DTO state. It is intended as orientation for developers unfamiliar with the flow, not as a substitute for reading the code.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Shared Concepts
|
||||||
|
|
||||||
|
### `BookingDto`
|
||||||
|
|
||||||
|
The central data object for both flows. Holds room selections, participants, payment method, and travel reference. Lives in the HTTP session between requests. Has two modes: `MODE_CREATE` and `MODE_EDIT`.
|
||||||
|
|
||||||
|
### `BookingSessionManager`
|
||||||
|
|
||||||
|
Owns all reads and writes to session-stored `BookingDto` instances. Also manages the baseline room snapshot used for change detection in the create flow.
|
||||||
|
|
||||||
|
### `BookingCreateContextFactory`
|
||||||
|
|
||||||
|
Assembles the view model (`BookingCreateContext`) passed to create-flow templates. Handles room grouping (by-pax vs. by-room) and wires summary sidebar data.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Create Flow
|
||||||
|
|
||||||
|
```
|
||||||
|
Step 1 (room selection)
|
||||||
|
→ Step 2 (participants)
|
||||||
|
→ Step 2 sub-form (per-participant, HTMX)
|
||||||
|
→ Step 3 (payment + API pre-validation)
|
||||||
|
→ Step 4 (confirmation + final submission)
|
||||||
|
→ Success
|
||||||
|
```
|
||||||
|
|
||||||
|
### Entry / Bootstrap
|
||||||
|
|
||||||
|
`BookingExceptionHandlerTrait::getOrCreateBookingCreateDto()` is called by every step controller. If no DTO exists in session, it calls `BookingConfigurator::startFreshBooking()` which loads travel data and initialises a fresh `BookingDto`.
|
||||||
|
|
||||||
|
### Step 1 — Room Selection
|
||||||
|
|
||||||
|
**Controller:** `Create/Step1Controller`
|
||||||
|
**Route:** `GET|POST /bookings/create/rooms`
|
||||||
|
|
||||||
|
1. Load or create DTO via `getOrCreateBookingCreateDto()`
|
||||||
|
2. `BookingSessionManager::getOrCreateBaselineSnapshot()` — saves the current room selection as a comparison point for change detection
|
||||||
|
3. Render `BookingCreateStep1Type` form
|
||||||
|
4. On submit:
|
||||||
|
- If room selection changed from baseline: `BookingDto::resetParticipantAssignments()` — clears stale assignments
|
||||||
|
- `BookingConfigurator::updateBookingStatusFromRoomSelection()` — may switch booking to inquiry mode if capacity constraints require it
|
||||||
|
- `BookingSessionManager::saveBookingDto()`, advance `currentStep` to 2
|
||||||
|
- `BookingSessionManager::clearBaselineSnapshot()`
|
||||||
|
- Redirect to Step 2
|
||||||
|
|
||||||
|
HTMX refresh (`/bookings/create/refresh`): processes the form without validation and returns updated room selection + summary sidebar blocks.
|
||||||
|
|
||||||
|
### Step 2 — Participants (Card Overview)
|
||||||
|
|
||||||
|
**Controller:** `Create/Step2Controller`
|
||||||
|
**Route:** `GET|POST /bookings/create/participants`
|
||||||
|
|
||||||
|
1. Load DTO from session (or redirect to Step 1 if missing)
|
||||||
|
2. `TravelDataProvider::enrichWithFreshAvailabilities()` — refreshes room availability
|
||||||
|
3. `ensureCorrectNumberOfParticipants()` — syncs the `BookingDto::participants` array length with the room selections (e.g., 2× double room → 4 participants). Preserves existing participant data for slots that still exist.
|
||||||
|
4. `ParticipantDataPrefiller::shouldPrepopulateApplicant()` + `prepopulateApplicantFromUser()` — prefills participant[0] from user profile on first visit
|
||||||
|
5. `RoomAssigner::validateAndResetInvalidAssignments()` — clears any room assignments that no longer match the current room selection (handles back-navigation from Step 2 → Step 1 → Step 2)
|
||||||
|
6. `RoomAssigner::assignRoomsIfNeeded()` — auto-assigns participants to rooms
|
||||||
|
7. `BookingConfigurator::preselectDefaultServices()` — selects mandatory and auto-book services for all participants
|
||||||
|
8. `BookingConfigurator::applyCreateBookingStatusRules()` — re-evaluates booking status (book / inquiry / not-bookable)
|
||||||
|
9. `BookingSessionManager::saveBookingDto()`
|
||||||
|
10. On form submit (all participants valid): advance to Step 3, redirect
|
||||||
|
|
||||||
|
### Step 2 — Individual Participant Form (HTMX)
|
||||||
|
|
||||||
|
**Controller:** `Create/Step2ParticipantController`
|
||||||
|
**Routes:** `GET|POST /bookings/create/participants/{index}` and `/participants/{index}/refresh`
|
||||||
|
|
||||||
|
Each participant card lazy-loads its form via HTMX. The controller:
|
||||||
|
|
||||||
|
1. Verifies the participant slot exists
|
||||||
|
2. Refreshes availability
|
||||||
|
3. Handles dummy data fill (`ParticipantDataPrefiller::isDummyDataFillRequested()` / `fillDummyParticipant()`)
|
||||||
|
4. On submit: re-applies status rules, saves to session, redirects to card overview
|
||||||
|
5. `ParticipantFormSupport` is used for form creation options and notification draining
|
||||||
|
|
||||||
|
### Step 3 — Payment + API Pre-Validation
|
||||||
|
|
||||||
|
**Controller:** `Create/Step3Controller`
|
||||||
|
**Route:** `GET|POST /bookings/create/payment`
|
||||||
|
|
||||||
|
1. Load DTO from session
|
||||||
|
2. `BookingConfigurator::applyCreateBookingStatusRules()`
|
||||||
|
3. On submit:
|
||||||
|
- `ApiClient::createBookingInquiry()` — submits booking to API for validation without committing it
|
||||||
|
- If inquiry fails with "nicht möglich" + "Anfrage" in message: auto-switch to inquiry mode, advance to Step 4
|
||||||
|
- If inquiry fails otherwise: show error, stay on step
|
||||||
|
- Price verification: `BookingPriceCalculator::calculateGrandTotal()` is compared against the API response total (accounting for promotional/goodwill voucher discounts and API-applied group discounts). Mismatch triggers `BookingPriceMismatchAnalyzer` for detailed logging.
|
||||||
|
- On success: advance `currentStep` to 4, redirect
|
||||||
|
|
||||||
|
### Step 4 — Confirmation + Final Submission
|
||||||
|
|
||||||
|
**Controller:** `Create/Step4Controller`
|
||||||
|
**Route:** `GET|POST /bookings/create/confirmation`
|
||||||
|
|
||||||
|
1. Load DTO from session
|
||||||
|
2. Newsletter subscription check for opt-in display
|
||||||
|
3. On submit:
|
||||||
|
- `BookingConfigurator::applyCreateBookingStatusRules()`
|
||||||
|
- `ApiClient::createBooking()` — final booking submission (already validated in Step 3)
|
||||||
|
- Newsletter double-opt-in if selected
|
||||||
|
- On success: store booking number + total in flash (for analytics), clear travel data cache, `BookingSessionManager::clearBookingDto()`, redirect to success page
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Edit Flow
|
||||||
|
|
||||||
|
```
|
||||||
|
Entry (start)
|
||||||
|
→ Load (session or API + draft restore)
|
||||||
|
→ Participant sub-forms (HTMX, per-participant)
|
||||||
|
→ Submission
|
||||||
|
```
|
||||||
|
|
||||||
|
### Entry
|
||||||
|
|
||||||
|
**Controller:** `Edit/IndexController::start()`
|
||||||
|
**Route:** `GET /bookings/{id}/edit/start`
|
||||||
|
|
||||||
|
Clears any existing session DTO for edit mode and invalidates the API booking cache, then redirects to the edit page. This ensures a clean load from API on every intentional re-entry.
|
||||||
|
|
||||||
|
### Load
|
||||||
|
|
||||||
|
**Controller:** `Edit/IndexController::index()`
|
||||||
|
**Route:** `GET|POST /bookings/{id}/edit`
|
||||||
|
|
||||||
|
Loading is delegated entirely to `BookingEditDataLoader::loadFormData()`:
|
||||||
|
|
||||||
|
**If session DTO exists and matches the requested booking ID:**
|
||||||
|
- `TravelDataProvider::enrichWithFreshAvailabilities()` — refreshes room availability
|
||||||
|
- `TravelDataProvider::getMutabilityData()` + `patchMutability()` — applies cached mutability state to DTO
|
||||||
|
|
||||||
|
**If no session DTO (first load or after `start`):**
|
||||||
|
|
||||||
|
`initializeFromApi()`:
|
||||||
|
1. `fetchBookingData()` — `ApiClient::getBooking()` with 5-minute cache (tagged by user ID for bulk invalidation)
|
||||||
|
2. `TravelDataProvider::getTravelData()` — loads travel data (XML or snapshot)
|
||||||
|
3. `TravelDataProvider::getAvailabilityData(forceRefresh: true)` + `patchAvailabilities()` — force-refreshes availability at edit start, populates cache for subsequent loads within the session
|
||||||
|
4. `TravelDataProvider::getMutabilityData(cached: true)` + `patchMutability()` — applies which service categories are currently editable
|
||||||
|
5. `BookingDataProcessor::createBookingDtoFromBooking()` — hydrates `BookingDto` from API booking entity
|
||||||
|
6. Agency code resolved via `AgencyLoader` (used by field state conditions)
|
||||||
|
7. `BookingChangeTracker::generateFingerprint()` — sets `originalFingerprint` on DTO **before** draft is applied, so dirty detection compares against original API data
|
||||||
|
8. `BookingEditDraftManager::findDraft()` + `applyDraftToDto()` — if draft exists, merges user edits on top of fresh API data. Sets `draftWasRestored = true` if successful.
|
||||||
|
9. `BookingSessionManager::saveBookingDto()`
|
||||||
|
|
||||||
|
Back in the controller: shows "draft restored" flash if applicable, fetches booking data for surcharge/status display, renders the card overview with `BookingEditContextFactory::createOverviewContext()`.
|
||||||
|
|
||||||
|
### Individual Participant Form (HTMX)
|
||||||
|
|
||||||
|
**Controller:** `Edit/ParticipantController`
|
||||||
|
**Routes:** `GET|POST /bookings/{id}/edit/participants/{index}` and `/{index}/refresh`
|
||||||
|
|
||||||
|
Per-participant forms are lazy-loaded, matching the create flow pattern.
|
||||||
|
|
||||||
|
1. `BookingEditContextFactory::prepareBookingDto()` — refreshes availabilities on the DTO travel object
|
||||||
|
2. `ParticipantFormSupport` — form creation, notification draining
|
||||||
|
3. On submit: `BookingSessionManager::saveBookingDto()` + `BookingEditDraftManager::saveDraft()` — persists participant edits to both session and draft
|
||||||
|
|
||||||
|
### Submission
|
||||||
|
|
||||||
|
**Service:** `BookingEditSubmitter::handleSubmission()`
|
||||||
|
Called from `Edit/IndexController` on valid form submit.
|
||||||
|
|
||||||
|
1. Invalidate API cache, fetch fresh booking data
|
||||||
|
2. Force-refresh mutability data (`TravelDataProvider::getMutabilityData(forceRefresh: true)`) and patch DTO travel
|
||||||
|
3. `BookingEditSubmitGuard::reconcileImmutableCategories()` — reverts any DTO fields that have become immutable since the session was loaded. Shows flash if anything was reverted.
|
||||||
|
4. `ApiClient::updateBooking()` — submit
|
||||||
|
5. On success: invalidate cache again, `BookingSessionManager::clearBookingDto()`, `BookingEditDraftManager::deleteDraft()`
|
||||||
|
|
||||||
|
### Other Edit Routes
|
||||||
|
|
||||||
|
| Route | Action |
|
||||||
|
|-------|--------|
|
||||||
|
| `GET /bookings/{id}/edit/reload` | Shows confirmation modal |
|
||||||
|
| `POST /bookings/{id}/edit/reload` | Clears session + **deletes draft**, reloads from API |
|
||||||
|
| `GET /bookings/{id}/edit/cancel` | Clears session, **preserves draft**, redirects to booking list |
|
||||||
|
|
||||||
|
The distinction between reload and cancel is intentional: cancel keeps the draft so the user can return to their changes later; reload discards everything.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Key Invariants
|
||||||
|
|
||||||
|
- `currentStep` on the DTO gates forward navigation in create mode; controllers redirect to the current step if a higher step is requested directly.
|
||||||
|
- The original fingerprint is set before draft application in edit mode. Dirty detection (`BookingChangeTracker::isDirty()`) always compares the live session DTO against the original API state, not against the draft.
|
||||||
|
- Mutability is always patched from fresh or cached data before rendering. The DTO travel object is the authoritative source of which fields are editable at render time.
|
||||||
|
- Drafts survive cancel but not reload, and are deleted on successful submission.
|
||||||
@@ -0,0 +1,122 @@
|
|||||||
|
# Service Simplification Plan
|
||||||
|
|
||||||
|
Status: active
|
||||||
|
Last updated: 2026-04-13
|
||||||
|
|
||||||
|
## Purpose
|
||||||
|
|
||||||
|
This document tracks the next pass of service simplification work. The goal is to reduce orchestration density, make the booking flow easier to follow for a human reader, and keep responsibilities aligned with the actual boundaries in the code.
|
||||||
|
|
||||||
|
The emphasis is not on deleting services for its own sake. The emphasis is on:
|
||||||
|
- keeping one clear owner for each meaningful boundary
|
||||||
|
- removing thin wrappers and pass-through helpers
|
||||||
|
- avoiding services that mostly shuffle data between layers
|
||||||
|
- keeping presentation concerns out of calculation and orchestration code
|
||||||
|
|
||||||
|
## Current Read
|
||||||
|
|
||||||
|
The codebase is already in a better place than it was at the start of the refactor, but a few services still carry more than one responsibility:
|
||||||
|
|
||||||
|
- `BookingService` now mostly covers booking bootstrap, service preselection, and booking status rules.
|
||||||
|
- `BookingParticipantCountService` was removed — its logic lives as a private method in the one controller that needed it (`Step2Controller`).
|
||||||
|
- `BookingRoomSelectionService` was removed — its logic lives as a private method in `BookingCreateContextFactory`.
|
||||||
|
- `BookingSummaryParticipantCountService` was removed — its logic lives as a private method in `BookingSummaryDataService`.
|
||||||
|
- `ParticipantPrepopulationService` now owns applicant prefill plus the create-mode dummy-data shortcut.
|
||||||
|
- `BookingEditParticipantContextFactory` now prepares the edit participant page context directly, replacing the older pass-through participant form service.
|
||||||
|
- `BookingPriceCalculatorService` is focused on pricing, but it still sits close to display-oriented behavior in adjacent code paths.
|
||||||
|
- `TravelDataService` remains broad and is likely the next larger boundary after booking orchestration is reduced.
|
||||||
|
|
||||||
|
One registry stands out as a real orchestration boundary and should be left alone for now:
|
||||||
|
- `ParticipantFieldHandlerRegistry`
|
||||||
|
|
||||||
|
It is not just a lookup table. It owns execution order, edit-mode mutability gating, and synchronization of submitted form data back into the DTO state.
|
||||||
|
|
||||||
|
## Next Pass
|
||||||
|
|
||||||
|
### 1. Keep pricing calculation focused
|
||||||
|
|
||||||
|
Primary goal: keep pricing code about pricing, not rendering.
|
||||||
|
|
||||||
|
Concrete next steps:
|
||||||
|
- keep `BookingPriceCalculatorService` as the pricing boundary
|
||||||
|
- continue removing display formatting from pricing code paths
|
||||||
|
- keep any remaining view-specific formatting in the presentation layer or a dedicated UI helper
|
||||||
|
- avoid introducing another service that only formats values already known to the view
|
||||||
|
|
||||||
|
Decision rule:
|
||||||
|
- if a value is only needed for display, prefer exposing the raw numeric/domain value and formatting it as close to the UI as possible
|
||||||
|
|
||||||
|
### 2. Leave the field-handler registry in place
|
||||||
|
|
||||||
|
Primary goal: avoid unnecessary churn in a class that is already a meaningful orchestration layer.
|
||||||
|
|
||||||
|
Concrete next steps:
|
||||||
|
- do not refactor `ParticipantFieldHandlerRegistry` in this pass
|
||||||
|
- revisit only if a later change can split ordering, mutability, and synchronization into clear collaborators without making the flow harder to trace
|
||||||
|
|
||||||
|
Decision rule:
|
||||||
|
- if a registry owns actual workflow behavior, treat it as a boundary rather than a smell
|
||||||
|
|
||||||
|
## Follow-Up Queue
|
||||||
|
|
||||||
|
After the booking service pass, the next likely candidates are:
|
||||||
|
|
||||||
|
### `TravelDataService`
|
||||||
|
|
||||||
|
This is the largest broad service still in the codebase. It likely needs a later pass if the application should become easier to follow end to end.
|
||||||
|
|
||||||
|
Likely directions:
|
||||||
|
- separate runtime travel loading from cache/snapshot maintenance if the public API still feels too wide
|
||||||
|
- keep the read path explicit and avoid hiding maintenance work behind one large method surface
|
||||||
|
|
||||||
|
### `BookingPriceCalculatorService`
|
||||||
|
|
||||||
|
This service should stay focused on pricing logic, but it may still have room for further internal cleanup if more display or transport aggregation concerns surface.
|
||||||
|
|
||||||
|
Likely directions:
|
||||||
|
- keep calculation responsibilities together
|
||||||
|
- avoid dragging presentation behavior back into the calculator
|
||||||
|
- split only if a sub-boundary becomes obvious and reusable
|
||||||
|
|
||||||
|
### `ParticipantFieldHandlerRegistry`
|
||||||
|
|
||||||
|
This stays on the list only as a future optional refactor, not as an immediate target.
|
||||||
|
|
||||||
|
Likely directions, only if justified later:
|
||||||
|
- isolate ordering/sorting logic if it becomes independently meaningful
|
||||||
|
- split synchronization code if a clearer DTO/form boundary emerges
|
||||||
|
- otherwise leave it as the central orchestration point for participant field processing
|
||||||
|
|
||||||
|
## Current Notes
|
||||||
|
|
||||||
|
- `templates/booking/_summary_travel_info.html.twig` already renders the summary participant count directly, so the remaining work here is naming and contract clarity rather than Twig branching.
|
||||||
|
- The summary count still needs a clear name if the code should distinguish the display-oriented count from the canonical participant total in the DTO/service layer.
|
||||||
|
- `ParticipantFormSupportService` was reviewed and kept: it is shared between two controllers (`Step2ParticipantController` and `Edit/ParticipantController`) with real shared logic, not just delegation.
|
||||||
|
|
||||||
|
## Progress Tracker
|
||||||
|
|
||||||
|
| Item | Status | Notes |
|
||||||
|
|------|--------|-------|
|
||||||
|
| Participant card DTO cleanup | Done | Card data now uses typed DTOs instead of nested array payloads |
|
||||||
|
| Room label formatting cleanup | Done | Pricing labels now have a dedicated presentation helper |
|
||||||
|
| Booking service split | Done | Session lifecycle, hydration, baseline snapshot, return URL handling, room grouping, and participant count shaping moved out of `BookingService` |
|
||||||
|
| Dummy prefill extraction | Done | Moved into `ParticipantPrepopulationService` |
|
||||||
|
| Micro-service consolidation | Done | `BookingRoomSelectionService`, `BookingParticipantCountService`, `BookingSummaryParticipantCountService` inlined into their single callers |
|
||||||
|
| Pricing service review | Pending | Keep focused on calculation, not rendering |
|
||||||
|
| Travel data service review | Pending | Broad boundary, likely later pass |
|
||||||
|
| Participant field registry review | Deferred | Real orchestration boundary, intentionally left alone for now |
|
||||||
|
|
||||||
|
## Acceptance Criteria
|
||||||
|
|
||||||
|
The next booking-service pass is only worth keeping if it:
|
||||||
|
- reduces the number of unrelated responsibilities in `BookingService`
|
||||||
|
- makes the booking flow easier to trace from controller to session/DTO state
|
||||||
|
- preserves existing booking behavior and test coverage
|
||||||
|
- does not replace one large service with several generic "manager" classes
|
||||||
|
|
||||||
|
## Working Agreement
|
||||||
|
|
||||||
|
- Update this document as decisions are made.
|
||||||
|
- Record rejected simplification ideas here with a short reason.
|
||||||
|
- Keep the plan aligned with actual code, not with an abstract architecture ideal.
|
||||||
|
- If a future simplification does not clearly reduce cognitive load, do not add it.
|
||||||
@@ -7,8 +7,8 @@
|
|||||||
"Grant Type": "Authorization Code",
|
"Grant Type": "Authorization Code",
|
||||||
"Client ID": "{{oauth2_client_id}}",
|
"Client ID": "{{oauth2_client_id}}",
|
||||||
"Client Secret": "{{oauth2_client_secret}}",
|
"Client Secret": "{{oauth2_client_secret}}",
|
||||||
"Auth URL": "https://myep-next.ddev.site/authorize",
|
"Auth URL": "https://myep.ddev.site/authorize",
|
||||||
"Token URL": "https://myep-next.ddev.site/token",
|
"Token URL": "https://myep.ddev.site/token",
|
||||||
"Redirect URL": "https://myep-team.ddev.site/auth/check",
|
"Redirect URL": "https://myep-team.ddev.site/auth/check",
|
||||||
"Scope": "email"
|
"Scope": "email"
|
||||||
},
|
},
|
||||||
@@ -17,8 +17,8 @@
|
|||||||
"Grant Type": "Authorization Code",
|
"Grant Type": "Authorization Code",
|
||||||
"Client ID": "{{oauth2_client_id}}",
|
"Client ID": "{{oauth2_client_id}}",
|
||||||
"Client Secret": "{{oauth2_client_secret}}",
|
"Client Secret": "{{oauth2_client_secret}}",
|
||||||
"Auth URL": "https://myep-next.ddev.site/authorize",
|
"Auth URL": "https://myep.ddev.site/authorize",
|
||||||
"Token URL": "https://myep-next.ddev.site/token",
|
"Token URL": "https://myep.ddev.site/token",
|
||||||
"Redirect URL": "https://myep-team.ddev.site/auth/check",
|
"Redirect URL": "https://myep-team.ddev.site/auth/check",
|
||||||
"Scope": "email profile"
|
"Scope": "email profile"
|
||||||
},
|
},
|
||||||
@@ -27,8 +27,43 @@
|
|||||||
"Grant Type": "Client Credentials",
|
"Grant Type": "Client Credentials",
|
||||||
"Client ID": "{{oauth2_api_client_id}}",
|
"Client ID": "{{oauth2_api_client_id}}",
|
||||||
"Client Secret": "{{oauth2_api_client_secret}}",
|
"Client Secret": "{{oauth2_api_client_secret}}",
|
||||||
"Auth URL": "https://myep-next.ddev.site/authorize",
|
"Auth URL": "https://myep.ddev.site/authorize",
|
||||||
"Token URL": "https://myep-next.ddev.site/token",
|
"Token URL": "https://myep.ddev.site/token",
|
||||||
|
"Scope": "api"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"staging": {
|
||||||
|
"Security": {
|
||||||
|
"Auth": {
|
||||||
|
"oauth2_email": {
|
||||||
|
"Type": "OAuth2",
|
||||||
|
"Grant Type": "Authorization Code",
|
||||||
|
"Client ID": "{{oauth2_client_id}}",
|
||||||
|
"Client Secret": "{{oauth2_client_secret}}",
|
||||||
|
"Auth URL": "https://my.ep-reisen.net/authorize",
|
||||||
|
"Token URL": "https://my.ep-reisen.net/token",
|
||||||
|
"Redirect URL": "https://myep-team.ep-reisen.de/auth/check",
|
||||||
|
"Scope": "email"
|
||||||
|
},
|
||||||
|
"oauth2_profile": {
|
||||||
|
"Type": "OAuth2",
|
||||||
|
"Grant Type": "Authorization Code",
|
||||||
|
"Client ID": "{{oauth2_client_id}}",
|
||||||
|
"Client Secret": "{{oauth2_client_secret}}",
|
||||||
|
"Auth URL": "https://my.ep-reisen.net/authorize",
|
||||||
|
"Token URL": "https://my.ep-reisen.net/token",
|
||||||
|
"Redirect URL": "https://myep-team.ep-reisen.de/auth/check",
|
||||||
|
"Scope": "email profile"
|
||||||
|
},
|
||||||
|
"oauth2_api": {
|
||||||
|
"Type": "OAuth2",
|
||||||
|
"Grant Type": "Client Credentials",
|
||||||
|
"Client ID": "{{oauth2_api_client_id}}",
|
||||||
|
"Client Secret": "{{oauth2_api_client_secret}}",
|
||||||
|
"Auth URL": "https://my.ep-reisen.net/authorize",
|
||||||
|
"Token URL": "https://my.ep-reisen.net/token",
|
||||||
"Scope": "api"
|
"Scope": "api"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -42,8 +77,8 @@
|
|||||||
"Grant Type": "Authorization Code",
|
"Grant Type": "Authorization Code",
|
||||||
"Client ID": "{{oauth2_client_id}}",
|
"Client ID": "{{oauth2_client_id}}",
|
||||||
"Client Secret": "{{oauth2_client_secret}}",
|
"Client Secret": "{{oauth2_client_secret}}",
|
||||||
"Auth URL": "https://myep.ep-reisen.de/authorize",
|
"Auth URL": "https://my.ep-reisen.de/authorize",
|
||||||
"Token URL": "https://myep.ep-reisen.de/token",
|
"Token URL": "https://my.ep-reisen.de/token",
|
||||||
"Redirect URL": "https://myep-team.ep-reisen.de/auth/check",
|
"Redirect URL": "https://myep-team.ep-reisen.de/auth/check",
|
||||||
"Scope": "email"
|
"Scope": "email"
|
||||||
},
|
},
|
||||||
@@ -52,8 +87,8 @@
|
|||||||
"Grant Type": "Authorization Code",
|
"Grant Type": "Authorization Code",
|
||||||
"Client ID": "{{oauth2_client_id}}",
|
"Client ID": "{{oauth2_client_id}}",
|
||||||
"Client Secret": "{{oauth2_client_secret}}",
|
"Client Secret": "{{oauth2_client_secret}}",
|
||||||
"Auth URL": "https://myep.ep-reisen.de/authorize",
|
"Auth URL": "https://my.ep-reisen.de/authorize",
|
||||||
"Token URL": "https://myep.ep-reisen.de/token",
|
"Token URL": "https://my.ep-reisen.de/token",
|
||||||
"Redirect URL": "https://myep-team.ep-reisen.de/auth/check",
|
"Redirect URL": "https://myep-team.ep-reisen.de/auth/check",
|
||||||
"Scope": "email profile"
|
"Scope": "email profile"
|
||||||
},
|
},
|
||||||
@@ -62,8 +97,8 @@
|
|||||||
"Grant Type": "Client Credentials",
|
"Grant Type": "Client Credentials",
|
||||||
"Client ID": "{{oauth2_api_client_id}}",
|
"Client ID": "{{oauth2_api_client_id}}",
|
||||||
"Client Secret": "{{oauth2_api_client_secret}}",
|
"Client Secret": "{{oauth2_api_client_secret}}",
|
||||||
"Auth URL": "https://myep.ep-reisen.de/authorize",
|
"Auth URL": "https://my.ep-reisen.de/authorize",
|
||||||
"Token URL": "https://myep.ep-reisen.de/token",
|
"Token URL": "https://my.ep-reisen.de/token",
|
||||||
"Scope": "api"
|
"Scope": "api"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,191 @@
|
|||||||
|
###
|
||||||
|
# Mailjet API test requests for IntelliJ HTTP Client
|
||||||
|
#
|
||||||
|
# 1) Fill in variables below (or move them to http-client.private.env.json).
|
||||||
|
# 2) Set `mailjet_api_key` and `mailjet_api_secret` in your env file.
|
||||||
|
# IntelliJ HTTP Client will inject them into the Authorization header below.
|
||||||
|
#
|
||||||
|
# Required variables:
|
||||||
|
# - mailjet_base_url (example: https://api.mailjet.com/v3/REST)
|
||||||
|
# - mailjet_api_key
|
||||||
|
# - mailjet_api_secret
|
||||||
|
# - mailjet_contact_email
|
||||||
|
# - mailjet_list_id
|
||||||
|
#
|
||||||
|
# @no-cookie-jar
|
||||||
|
|
||||||
|
### Mailjet health check (authenticated)
|
||||||
|
# @no-cookie-jar
|
||||||
|
GET {{mailjet_base_url}}/apikey
|
||||||
|
Accept: application/json
|
||||||
|
Authorization: Basic {{mailjet_api_key}} {{mailjet_api_secret}}
|
||||||
|
|
||||||
|
|
||||||
|
### Find contact by email
|
||||||
|
# @no-cookie-jar
|
||||||
|
GET {{mailjet_base_url}}/contact?Email={{mailjet_contact_email}}
|
||||||
|
Accept: application/json
|
||||||
|
Authorization: Basic {{mailjet_api_key}} {{mailjet_api_secret}}
|
||||||
|
|
||||||
|
> {%
|
||||||
|
if (response.body && response.body.Data && response.body.Data.length > 0) {
|
||||||
|
client.global.set("contact_id", String(response.body.Data[0].ID));
|
||||||
|
}
|
||||||
|
%}
|
||||||
|
|
||||||
|
|
||||||
|
### Create contact (run if not found)
|
||||||
|
# @no-cookie-jar
|
||||||
|
POST {{mailjet_base_url}}/contact
|
||||||
|
Accept: application/json
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: Basic {{mailjet_api_key}} {{mailjet_api_secret}}
|
||||||
|
|
||||||
|
{
|
||||||
|
"Email": "{{mailjet_contact_email}}",
|
||||||
|
"IsExcludedFromCampaigns": false
|
||||||
|
}
|
||||||
|
|
||||||
|
> {%
|
||||||
|
if (response.body && response.body.Data && response.body.Data.length > 0) {
|
||||||
|
client.global.set("contact_id", String(response.body.Data[0].ID));
|
||||||
|
}
|
||||||
|
%}
|
||||||
|
|
||||||
|
|
||||||
|
### Get contact by ID (after find/create)
|
||||||
|
# @no-cookie-jar
|
||||||
|
GET {{mailjet_base_url}}/contact/{{contact_id}}
|
||||||
|
Accept: application/json
|
||||||
|
Authorization: Basic {{mailjet_api_key}} {{mailjet_api_secret}}
|
||||||
|
|
||||||
|
|
||||||
|
### Mark contact as subscribed (opt-in)
|
||||||
|
# @no-cookie-jar
|
||||||
|
PUT {{mailjet_base_url}}/contact/{{contact_id}}
|
||||||
|
Accept: application/json
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: Basic {{mailjet_api_key}} {{mailjet_api_secret}}
|
||||||
|
|
||||||
|
{
|
||||||
|
"IsExcludedFromCampaigns": false
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
### Mark contact as unsubscribed (opt-out)
|
||||||
|
# @no-cookie-jar
|
||||||
|
PUT {{mailjet_base_url}}/contact/{{contact_id}}
|
||||||
|
Accept: application/json
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: Basic {{mailjet_api_key}} {{mailjet_api_secret}}
|
||||||
|
|
||||||
|
{
|
||||||
|
"IsExcludedFromCampaigns": true
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
### Get newsletter list by ID
|
||||||
|
# @no-cookie-jar
|
||||||
|
GET {{mailjet_base_url}}/contactslist/{{mailjet_list_id}}
|
||||||
|
Accept: application/json
|
||||||
|
Authorization: Basic {{mailjet_api_key}} {{mailjet_api_secret}}
|
||||||
|
|
||||||
|
|
||||||
|
### List all available contact lists
|
||||||
|
# @no-cookie-jar
|
||||||
|
GET {{mailjet_base_url}}/contactslist?Limit=1000
|
||||||
|
Accept: application/json
|
||||||
|
Authorization: Basic {{mailjet_api_key}} {{mailjet_api_secret}}
|
||||||
|
|
||||||
|
|
||||||
|
### Check list recipient status (before actions)
|
||||||
|
# @no-cookie-jar
|
||||||
|
GET {{mailjet_base_url}}/listrecipient?ContactsList={{mailjet_list_id}}&Contact={{contact_id}}
|
||||||
|
Accept: application/json
|
||||||
|
Authorization: Basic {{mailjet_api_key}} {{mailjet_api_secret}}
|
||||||
|
|
||||||
|
> {%
|
||||||
|
if (response.body && response.body.Data && response.body.Data.length > 0) {
|
||||||
|
client.global.set("listrecipient_id", String(response.body.Data[0].ID));
|
||||||
|
}
|
||||||
|
%}
|
||||||
|
|
||||||
|
|
||||||
|
### Subscribe to list (addnoforce)
|
||||||
|
# @no-cookie-jar
|
||||||
|
POST {{mailjet_base_url}}/contactslist/{{mailjet_list_id}}/managecontact
|
||||||
|
Accept: application/json
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: Basic {{mailjet_api_key}} {{mailjet_api_secret}}
|
||||||
|
|
||||||
|
{
|
||||||
|
"Action": "addnoforce",
|
||||||
|
"Email": "{{mailjet_contact_email}}"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
### Verify list recipient after addnoforce
|
||||||
|
# @no-cookie-jar
|
||||||
|
GET {{mailjet_base_url}}/listrecipient?ContactsList={{mailjet_list_id}}&Contact={{contact_id}}
|
||||||
|
Accept: application/json
|
||||||
|
Authorization: Basic {{mailjet_api_key}} {{mailjet_api_secret}}
|
||||||
|
|
||||||
|
|
||||||
|
### Unsubscribe from list (unsub)
|
||||||
|
# @no-cookie-jar
|
||||||
|
POST {{mailjet_base_url}}/contactslist/{{mailjet_list_id}}/managecontact
|
||||||
|
Accept: application/json
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: Basic {{mailjet_api_key}} {{mailjet_api_secret}}
|
||||||
|
|
||||||
|
{
|
||||||
|
"Action": "unsub",
|
||||||
|
"Email": "{{mailjet_contact_email}}"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
### Verify list recipient after unsub
|
||||||
|
# @no-cookie-jar
|
||||||
|
GET {{mailjet_base_url}}/listrecipient?ContactsList={{mailjet_list_id}}&Contact={{contact_id}}
|
||||||
|
Accept: application/json
|
||||||
|
Authorization: Basic {{mailjet_api_key}} {{mailjet_api_secret}}
|
||||||
|
|
||||||
|
|
||||||
|
### Re-subscribe attempt with addnoforce (expected to keep unsubscribed state)
|
||||||
|
# @no-cookie-jar
|
||||||
|
POST {{mailjet_base_url}}/contactslist/{{mailjet_list_id}}/managecontact
|
||||||
|
Accept: application/json
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: Basic {{mailjet_api_key}} {{mailjet_api_secret}}
|
||||||
|
|
||||||
|
{
|
||||||
|
"Action": "addnoforce",
|
||||||
|
"Email": "{{mailjet_contact_email}}"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
### Verify list recipient after addnoforce re-subscribe attempt
|
||||||
|
# @no-cookie-jar
|
||||||
|
GET {{mailjet_base_url}}/listrecipient?ContactsList={{mailjet_list_id}}&Contact={{contact_id}}
|
||||||
|
Accept: application/json
|
||||||
|
Authorization: Basic {{mailjet_api_key}} {{mailjet_api_secret}}
|
||||||
|
|
||||||
|
|
||||||
|
### Re-subscribe with addforce (expected to re-subscribe)
|
||||||
|
# @no-cookie-jar
|
||||||
|
POST {{mailjet_base_url}}/contactslist/{{mailjet_list_id}}/managecontact
|
||||||
|
Accept: application/json
|
||||||
|
Content-Type: application/json
|
||||||
|
Authorization: Basic {{mailjet_api_key}} {{mailjet_api_secret}}
|
||||||
|
|
||||||
|
{
|
||||||
|
"Action": "addforce",
|
||||||
|
"Email": "{{mailjet_contact_email}}"
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
### Verify list recipient after addforce
|
||||||
|
# @no-cookie-jar
|
||||||
|
GET {{mailjet_base_url}}/listrecipient?ContactsList={{mailjet_list_id}}&Contact={{contact_id}}
|
||||||
|
Accept: application/json
|
||||||
|
Authorization: Basic {{mailjet_api_key}} {{mailjet_api_secret}}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Doctrine\Migrations\AbstractMigration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Auto-generated Migration: Please modify to your needs!
|
||||||
|
*/
|
||||||
|
final class Version20251212162836 extends AbstractMigration
|
||||||
|
{
|
||||||
|
public function getDescription(): string
|
||||||
|
{
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function up(Schema $schema): void
|
||||||
|
{
|
||||||
|
// this up() migration is auto-generated, please modify it to your needs
|
||||||
|
$this->addSql('ALTER TABLE user ADD hotel_codes JSON NOT NULL COMMENT \'(DC2Type:json)\'');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(Schema $schema): void
|
||||||
|
{
|
||||||
|
// this down() migration is auto-generated, please modify it to your needs
|
||||||
|
$this->addSql('ALTER TABLE user DROP hotel_codes');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Doctrine\Migrations\AbstractMigration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Auto-generated Migration: Please modify to your needs!
|
||||||
|
*/
|
||||||
|
final class Version20260106091117 extends AbstractMigration
|
||||||
|
{
|
||||||
|
public function getDescription(): string
|
||||||
|
{
|
||||||
|
return 'Create booking_edit_draft table for persisting user edits during booking edit flow';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function up(Schema $schema): void
|
||||||
|
{
|
||||||
|
// this up() migration is auto-generated, please modify it to your needs
|
||||||
|
$this->addSql('CREATE TABLE booking_edit_draft (id INT AUTO_INCREMENT NOT NULL, user_id INT NOT NULL, booking_id INT NOT NULL, form_data JSON NOT NULL COMMENT \'(DC2Type:json)\', created_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', INDEX IDX_E6548098A76ED395 (user_id), UNIQUE INDEX user_booking_unique (user_id, booking_id), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
|
||||||
|
$this->addSql('ALTER TABLE booking_edit_draft ADD CONSTRAINT FK_E6548098A76ED395 FOREIGN KEY (user_id) REFERENCES user (id) ON DELETE CASCADE');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(Schema $schema): void
|
||||||
|
{
|
||||||
|
// this down() migration is auto-generated, please modify it to your needs
|
||||||
|
$this->addSql('ALTER TABLE booking_edit_draft DROP FOREIGN KEY FK_E6548098A76ED395');
|
||||||
|
$this->addSql('DROP TABLE booking_edit_draft');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,33 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Doctrine\Migrations\AbstractMigration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Auto-generated Migration: Please modify to your needs!
|
||||||
|
*/
|
||||||
|
final class Version20260109081315 extends AbstractMigration
|
||||||
|
{
|
||||||
|
public function getDescription(): string
|
||||||
|
{
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function up(Schema $schema): void
|
||||||
|
{
|
||||||
|
// this up() migration is auto-generated, please modify it to your needs
|
||||||
|
$this->addSql('ALTER TABLE booking_edit_draft ADD travel_date DATE NOT NULL COMMENT \'(DC2Type:date_immutable)\'');
|
||||||
|
$this->addSql('CREATE INDEX IDX_DRAFT_TRAVEL_DATE ON booking_edit_draft (travel_date)');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(Schema $schema): void
|
||||||
|
{
|
||||||
|
// this down() migration is auto-generated, please modify it to your needs
|
||||||
|
$this->addSql('DROP INDEX IDX_DRAFT_TRAVEL_DATE ON booking_edit_draft');
|
||||||
|
$this->addSql('ALTER TABLE booking_edit_draft DROP travel_date');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Doctrine\Migrations\AbstractMigration;
|
||||||
|
|
||||||
|
final class Version20260110105253 extends AbstractMigration
|
||||||
|
{
|
||||||
|
public function getDescription(): string
|
||||||
|
{
|
||||||
|
return 'Add booking_number column to booking_edit_draft table';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function up(Schema $schema): void
|
||||||
|
{
|
||||||
|
$this->addSql('ALTER TABLE booking_edit_draft ADD booking_number INT DEFAULT NULL');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(Schema $schema): void
|
||||||
|
{
|
||||||
|
$this->addSql('ALTER TABLE booking_edit_draft DROP booking_number');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Doctrine\Migrations\AbstractMigration;
|
||||||
|
|
||||||
|
final class Version20260113140000 extends AbstractMigration
|
||||||
|
{
|
||||||
|
public function getDescription(): string
|
||||||
|
{
|
||||||
|
return 'Add date_id and hotel_id columns to booking_edit_draft table for export functionality';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function up(Schema $schema): void
|
||||||
|
{
|
||||||
|
$this->addSql('ALTER TABLE booking_edit_draft ADD date_id INT DEFAULT NULL');
|
||||||
|
$this->addSql('ALTER TABLE booking_edit_draft ADD hotel_id INT DEFAULT NULL');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(Schema $schema): void
|
||||||
|
{
|
||||||
|
$this->addSql('ALTER TABLE booking_edit_draft DROP date_id');
|
||||||
|
$this->addSql('ALTER TABLE booking_edit_draft DROP hotel_id');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Doctrine\Migrations\AbstractMigration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Auto-generated Migration: Please modify to your needs!
|
||||||
|
*/
|
||||||
|
final class Version20260119174522 extends AbstractMigration
|
||||||
|
{
|
||||||
|
public function getDescription(): string
|
||||||
|
{
|
||||||
|
return 'Add profile_complete flag to user table';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function up(Schema $schema): void
|
||||||
|
{
|
||||||
|
$this->addSql('ALTER TABLE user ADD profile_complete TINYINT(1) NOT NULL');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(Schema $schema): void
|
||||||
|
{
|
||||||
|
$this->addSql('ALTER TABLE user DROP profile_complete');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Doctrine\Migrations\AbstractMigration;
|
||||||
|
|
||||||
|
final class Version20260318113000 extends AbstractMigration
|
||||||
|
{
|
||||||
|
public function getDescription(): string
|
||||||
|
{
|
||||||
|
return 'Create newsletter_opt_in_confirmation table for double opt-in confirmations';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function up(Schema $schema): void
|
||||||
|
{
|
||||||
|
$this->addSql("CREATE TABLE newsletter_opt_in_confirmation (id INT AUTO_INCREMENT NOT NULL, email VARCHAR(255) NOT NULL, token_hash VARCHAR(64) NOT NULL, expires_at DATETIME NOT NULL COMMENT '(DC2Type:datetime_immutable)', confirmed_at DATETIME DEFAULT NULL COMMENT '(DC2Type:datetime_immutable)', created_at DATETIME NOT NULL COMMENT '(DC2Type:datetime_immutable)', UNIQUE INDEX UNIQ_NEWSLETTER_OPT_IN_TOKEN_HASH (token_hash), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB");
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(Schema $schema): void
|
||||||
|
{
|
||||||
|
$this->addSql('DROP TABLE newsletter_opt_in_confirmation');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,28 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Doctrine\Migrations\AbstractMigration;
|
||||||
|
|
||||||
|
final class Version20260320071724 extends AbstractMigration
|
||||||
|
{
|
||||||
|
public function getDescription(): string
|
||||||
|
{
|
||||||
|
return 'Add error_code column and index to log_entry table';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function up(Schema $schema): void
|
||||||
|
{
|
||||||
|
$this->addSql('ALTER TABLE log_entry ADD error_code VARCHAR(12) DEFAULT NULL');
|
||||||
|
$this->addSql('CREATE INDEX IDX_LOG_ENTRY_ERROR_CODE ON log_entry (error_code)');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(Schema $schema): void
|
||||||
|
{
|
||||||
|
$this->addSql('DROP INDEX IDX_LOG_ENTRY_ERROR_CODE ON log_entry');
|
||||||
|
$this->addSql('ALTER TABLE log_entry DROP error_code');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,26 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Doctrine\Migrations\AbstractMigration;
|
||||||
|
|
||||||
|
final class Version20260321120000 extends AbstractMigration
|
||||||
|
{
|
||||||
|
public function getDescription(): string
|
||||||
|
{
|
||||||
|
return 'Create travel_snapshot table for DB-primary travel persistence';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function up(Schema $schema): void
|
||||||
|
{
|
||||||
|
$this->addSql('CREATE TABLE travel_snapshot (id INT AUTO_INCREMENT NOT NULL, date_id INT NOT NULL, hotel_id INT NOT NULL, date_code VARCHAR(64) DEFAULT NULL, label VARCHAR(255) DEFAULT NULL, product_id INT DEFAULT NULL, product_code VARCHAR(64) DEFAULT NULL, hotel_code VARCHAR(64) DEFAULT NULL, hotel_label VARCHAR(255) DEFAULT NULL, date_from DATE DEFAULT NULL COMMENT \'(DC2Type:date_immutable)\', date_to DATE DEFAULT NULL COMMENT \'(DC2Type:date_immutable)\', payload LONGTEXT NOT NULL, payload_hash VARCHAR(64) NOT NULL, captured_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', updated_at DATETIME NOT NULL COMMENT \'(DC2Type:datetime_immutable)\', extended_refreshed_at DATETIME DEFAULT NULL COMMENT \'(DC2Type:datetime_immutable)\', UNIQUE INDEX uniq_snapshot_date_hotel (date_id, hotel_id), INDEX idx_snapshot_date_code (date_code), INDEX idx_snapshot_product_id (product_id), INDEX idx_snapshot_date_to (date_to), INDEX idx_snapshot_extended_refreshed_at (extended_refreshed_at), PRIMARY KEY(id)) DEFAULT CHARACTER SET utf8mb4 COLLATE `utf8mb4_unicode_ci` ENGINE = InnoDB');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(Schema $schema): void
|
||||||
|
{
|
||||||
|
$this->addSql('DROP TABLE travel_snapshot');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,45 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Doctrine\Migrations\AbstractMigration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Auto-generated Migration: Please modify to your needs!
|
||||||
|
*/
|
||||||
|
final class Version20260323182524 extends AbstractMigration
|
||||||
|
{
|
||||||
|
public function getDescription(): string
|
||||||
|
{
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function up(Schema $schema): void
|
||||||
|
{
|
||||||
|
// this up() migration is auto-generated, please modify it to your needs
|
||||||
|
$this->addSql('ALTER TABLE booking_edit_draft CHANGE form_data form_data JSON NOT NULL');
|
||||||
|
$this->addSql('ALTER TABLE log_entry CHANGE context context JSON DEFAULT NULL, CHANGE extra extra JSON DEFAULT NULL');
|
||||||
|
$this->addSql('ALTER TABLE newsletter_opt_in_confirmation RENAME INDEX uniq_newsletter_opt_in_token_hash TO UNIQ_70505214B3BC57DA');
|
||||||
|
$this->addSql('ALTER TABLE user CHANGE roles roles JSON NOT NULL, CHANGE hotel_codes hotel_codes JSON NOT NULL');
|
||||||
|
$this->addSql('DROP INDEX IDX_75EA56E0FB7336F0 ON messenger_messages');
|
||||||
|
$this->addSql('DROP INDEX IDX_75EA56E0E3BD61CE ON messenger_messages');
|
||||||
|
$this->addSql('DROP INDEX IDX_75EA56E016BA31DB ON messenger_messages');
|
||||||
|
$this->addSql('CREATE INDEX IDX_75EA56E0FB7336F0E3BD61CE16BA31DBBF396750 ON messenger_messages (queue_name, available_at, delivered_at, id)');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(Schema $schema): void
|
||||||
|
{
|
||||||
|
// this down() migration is auto-generated, please modify it to your needs
|
||||||
|
$this->addSql('ALTER TABLE newsletter_opt_in_confirmation RENAME INDEX uniq_70505214b3bc57da TO UNIQ_NEWSLETTER_OPT_IN_TOKEN_HASH');
|
||||||
|
$this->addSql('ALTER TABLE user CHANGE roles roles JSON NOT NULL COLLATE `utf8mb4_bin`, CHANGE hotel_codes hotel_codes JSON NOT NULL COLLATE `utf8mb4_bin`');
|
||||||
|
$this->addSql('DROP INDEX IDX_75EA56E0FB7336F0E3BD61CE16BA31DBBF396750 ON messenger_messages');
|
||||||
|
$this->addSql('CREATE INDEX IDX_75EA56E0FB7336F0 ON messenger_messages (queue_name)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_75EA56E0E3BD61CE ON messenger_messages (available_at)');
|
||||||
|
$this->addSql('CREATE INDEX IDX_75EA56E016BA31DB ON messenger_messages (delivered_at)');
|
||||||
|
$this->addSql('ALTER TABLE log_entry CHANGE context context JSON DEFAULT NULL COLLATE `utf8mb4_bin`, CHANGE extra extra JSON DEFAULT NULL COLLATE `utf8mb4_bin`');
|
||||||
|
$this->addSql('ALTER TABLE booking_edit_draft CHANGE form_data form_data JSON NOT NULL COLLATE `utf8mb4_bin`');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace DoctrineMigrations;
|
||||||
|
|
||||||
|
use Doctrine\DBAL\Schema\Schema;
|
||||||
|
use Doctrine\Migrations\AbstractMigration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Changes travel_snapshot.payload from TEXT to LONGTEXT so large
|
||||||
|
* plain JSON snapshot payloads can be stored safely.
|
||||||
|
*/
|
||||||
|
final class Version20260324120000 extends AbstractMigration
|
||||||
|
{
|
||||||
|
public function getDescription(): string
|
||||||
|
{
|
||||||
|
return 'Change travel_snapshot.payload from TEXT to LONGTEXT for plain JSON snapshot payloads';
|
||||||
|
}
|
||||||
|
|
||||||
|
public function up(Schema $schema): void
|
||||||
|
{
|
||||||
|
$this->addSql('ALTER TABLE travel_snapshot CHANGE payload payload LONGTEXT NOT NULL');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function down(Schema $schema): void
|
||||||
|
{
|
||||||
|
$this->addSql('ALTER TABLE travel_snapshot CHANGE payload payload TEXT NOT NULL');
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,35 +1,35 @@
|
|||||||
{
|
{
|
||||||
"name": "myep-next",
|
"name": "myep",
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@babel/core": "^7.17.0",
|
"@babel/core": "^7.17.0",
|
||||||
"@babel/preset-env": "^7.16.0",
|
"@babel/preset-env": "^7.16.0",
|
||||||
"@hotwired/stimulus": "^3.0.0",
|
"@hotwired/stimulus": "^3.0.0",
|
||||||
"@symfony/stimulus-bridge": "^3.2.0",
|
"@symfony/stimulus-bridge": "^3.2.0",
|
||||||
"@symfony/webpack-encore": "^5.0.0",
|
"@symfony/webpack-encore": "^6.0.0",
|
||||||
"@tailwindcss/forms": "^0.5.9",
|
"@tailwindcss/forms": "^0.5.9",
|
||||||
"@tailwindcss/typography": "^0.5.15",
|
"@tailwindcss/typography": "^0.5.15",
|
||||||
"autoprefixer": "^10.4.20",
|
"autoprefixer": "^10.4.20",
|
||||||
"core-js": "^3.38.0",
|
"core-js": "^3.38.0",
|
||||||
"file-loader": "^6.2.0",
|
"cypress": "^15.5.0",
|
||||||
"htmx.org": "^1.9.12",
|
"file-loader": "^6.2.0",
|
||||||
"postcss": "^8.4.49",
|
"htmx.org": "^1.9.12",
|
||||||
"postcss-loader": "^8.1.1",
|
"postcss": "^8.4.49",
|
||||||
"regenerator-runtime": "^0.13.9",
|
"postcss-loader": "^8.1.1",
|
||||||
"tailwindcss": "^3.4.15",
|
"regenerator-runtime": "^0.13.9",
|
||||||
"webpack": "^5.74.0",
|
"tailwindcss": "^3.4.15",
|
||||||
"webpack-cli": "^5.1.0",
|
"tippy.js": "^6.3.7",
|
||||||
"webpack-notifier": "^1.15.0"
|
"toastify-js": "^1.12.0",
|
||||||
},
|
"webpack": "^5.74.0",
|
||||||
"license": "WTFPL",
|
"webpack-cli": "^6.0.1",
|
||||||
"private": true,
|
"webpack-notifier": "^1.15.0"
|
||||||
"scripts": {
|
},
|
||||||
"dev-server": "encore dev-server",
|
"license": "WTFPL",
|
||||||
"dev": "encore dev",
|
"private": true,
|
||||||
"watch": "encore dev --watch",
|
"scripts": {
|
||||||
"build": "encore production --progress"
|
"dev-server": "encore dev-server",
|
||||||
},
|
"dev": "encore dev",
|
||||||
"dependencies": {
|
"watch": "encore dev --watch",
|
||||||
"@iframe-resizer/child": "^5.3.2",
|
"build": "encore production --progress",
|
||||||
"tippy.js": "^6.3.7"
|
"cy:open": "cypress open"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,2 @@
|
|||||||
|
parameters:
|
||||||
|
ignoreErrors: []
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
includes:
|
||||||
|
- vendor/phpstan/phpstan-symfony/extension.neon
|
||||||
|
- vendor/phpstan/phpstan-doctrine/extension.neon
|
||||||
|
|
||||||
|
parameters:
|
||||||
|
level: 6
|
||||||
|
paths:
|
||||||
|
- src
|
||||||
|
tmpDir: var/phpstan
|
||||||
|
symfony:
|
||||||
|
containerXmlPath: var/cache/dev/App_KernelDevDebugContainer.xml
|
||||||
|
doctrine:
|
||||||
|
objectManagerLoader: tests/doctrine-object-manager.php
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
includes:
|
||||||
|
- vendor/phpstan/phpstan-symfony/extension.neon
|
||||||
|
- vendor/phpstan/phpstan-doctrine/extension.neon
|
||||||
|
- vendor/phpstan/phpstan-strict-rules/rules.neon
|
||||||
|
|
||||||
|
parameters:
|
||||||
|
level: 6
|
||||||
|
paths:
|
||||||
|
- src
|
||||||
|
- tests
|
||||||
|
tmpDir: var/cache/phpstan
|
||||||
|
symfony:
|
||||||
|
containerXmlPath: var/cache/dev/App_KernelDevDebugContainer.xml
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
memory_limit=512M
|
||||||
|
max_input_vars=10000
|
||||||
|
post_max_size=128M
|
||||||
|
|
||||||
|
Before Width: | Height: | Size: 6.1 KiB |
|
Before Width: | Height: | Size: 15 KiB |
|
Before Width: | Height: | Size: 6.3 KiB |
|
Before Width: | Height: | Size: 15 KiB |