@redneckz/wildless-cms-uni-blocks 0.2.78 → 0.2.82
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/bundle/blocks.schema.json +4 -1
- package/bundle/bundle.umd.js +48 -7
- package/bundle/bundle.umd.min.js +1 -1
- package/dist/ProjectSettings.d.ts +1 -0
- package/dist/ProjectSettings.js.map +1 -1
- package/dist/components/Accordion/Accordion.d.ts +5 -0
- package/dist/components/Accordion/Accordion.js +10 -0
- package/dist/components/Accordion/Accordion.js.map +1 -0
- package/dist/components/Accordion/AccordionBlocks.d.ts +4 -0
- package/dist/components/Accordion/AccordionBlocks.js +7 -0
- package/dist/components/Accordion/AccordionBlocks.js.map +1 -0
- package/dist/components/Accordion/AccordionContent.d.ts +14 -0
- package/dist/components/Accordion/AccordionContent.js +2 -0
- package/dist/components/Accordion/AccordionContent.js.map +1 -0
- package/dist/components/Accordion/AccordionItem.d.ts +5 -0
- package/dist/components/Accordion/AccordionItem.js +35 -0
- package/dist/components/Accordion/AccordionItem.js.map +1 -0
- package/dist/components/Blocks.d.ts +1 -0
- package/dist/components/Blocks.js +2 -0
- package/dist/components/Blocks.js.map +1 -1
- package/dist/components/CreditCalculator/CreditCalculator.d.ts +2 -1
- package/dist/components/CreditCalculator/CreditCalculator.js +39 -15
- package/dist/components/CreditCalculator/CreditCalculator.js.map +1 -1
- package/dist/components/CreditCalculator/CreditCalculatorContent.d.ts +15 -0
- package/dist/components/CreditCalculator/CreditCalculatorContent.js +2 -0
- package/dist/components/CreditCalculator/CreditCalculatorContent.js.map +1 -0
- package/dist/components/CreditCalculator/constants.d.ts +7 -0
- package/dist/components/CreditCalculator/constants.js +10 -0
- package/dist/components/CreditCalculator/constants.js.map +1 -0
- package/dist/components/CreditCalculator/getCalculatorParams.d.ts +7 -0
- package/dist/components/CreditCalculator/getCalculatorParams.js +11 -0
- package/dist/components/CreditCalculator/getCalculatorParams.js.map +1 -0
- package/dist/components/CreditCalculator/getCreditRate.d.ts +7 -0
- package/dist/components/CreditCalculator/getCreditRate.js +13 -0
- package/dist/components/CreditCalculator/getCreditRate.js.map +1 -0
- package/dist/components/CreditCalculator/getCreditTermYears.d.ts +1 -0
- package/dist/components/CreditCalculator/getCreditTermYears.js +15 -0
- package/dist/components/CreditCalculator/getCreditTermYears.js.map +1 -0
- package/dist/components/CreditCalculator/getMonthlyPayment.d.ts +11 -0
- package/dist/components/CreditCalculator/getMonthlyPayment.js +19 -0
- package/dist/components/CreditCalculator/getMonthlyPayment.js.map +1 -0
- package/dist/components/Footer/SocialMedia.js +11 -5
- package/dist/components/Footer/SocialMedia.js.map +1 -1
- package/dist/components/Header/HeaderSecondaryMenu.js +1 -1
- package/dist/components/Header/HeaderSecondaryMenu.js.map +1 -1
- package/dist/hooks/useCreditCalculatorData.d.ts +3 -0
- package/dist/hooks/useCreditCalculatorData.js +15 -0
- package/dist/hooks/useCreditCalculatorData.js.map +1 -0
- package/dist/ui-kit/Icon/Icon.js +1 -1
- package/dist/ui-kit/Icon/Icon.js.map +1 -1
- package/dist/ui-kit/Icon/IconProps.d.ts +4 -1
- package/dist/ui-kit/Icon/IconProps.js +3 -0
- package/dist/ui-kit/Icon/IconProps.js.map +1 -1
- package/dist/ui-kit/InputRange/InputRange.js +3 -2
- package/dist/ui-kit/InputRange/InputRange.js.map +1 -1
- package/dist/utils/addSpacesBetweenNumbers.d.ts +1 -0
- package/dist/utils/addSpacesBetweenNumbers.js +5 -0
- package/dist/utils/addSpacesBetweenNumbers.js.map +1 -0
- package/lib/ProjectSettings.d.ts +1 -0
- package/lib/ProjectSettings.js.map +1 -1
- package/lib/common.css +1 -1
- package/lib/components/Accordion/Accordion.d.ts +5 -0
- package/lib/components/Accordion/Accordion.fixture.d.ts +4 -0
- package/lib/components/Accordion/Accordion.js +8 -0
- package/lib/components/Accordion/Accordion.js.map +1 -0
- package/lib/components/Accordion/AccordionBlocks.d.ts +4 -0
- package/lib/components/Accordion/AccordionBlocks.js +6 -0
- package/lib/components/Accordion/AccordionBlocks.js.map +1 -0
- package/lib/components/Accordion/AccordionContent.d.ts +14 -0
- package/lib/components/Accordion/AccordionContent.js +2 -0
- package/lib/components/Accordion/AccordionContent.js.map +1 -0
- package/lib/components/Accordion/AccordionItem.d.ts +5 -0
- package/lib/components/Accordion/AccordionItem.js +30 -0
- package/lib/components/Accordion/AccordionItem.js.map +1 -0
- package/lib/components/BenefitsBlock/BenefitsBlock.fixture.d.ts +2 -0
- package/lib/components/Blocks.d.ts +1 -0
- package/lib/components/Blocks.js +2 -0
- package/lib/components/Blocks.js.map +1 -1
- package/lib/components/ComparisonTable/ComparisonTable.fixture.d.ts +8 -0
- package/lib/components/ContentPage/ContentPage.fixture.d.ts +6 -0
- package/lib/components/CreditCalculator/CreditCalculator.d.ts +2 -1
- package/lib/components/CreditCalculator/CreditCalculator.fixture.d.ts +2 -0
- package/lib/components/CreditCalculator/CreditCalculator.js +39 -15
- package/lib/components/CreditCalculator/CreditCalculator.js.map +1 -1
- package/lib/components/CreditCalculator/CreditCalculatorContent.d.ts +15 -0
- package/lib/components/CreditCalculator/CreditCalculatorContent.js +2 -0
- package/lib/components/CreditCalculator/CreditCalculatorContent.js.map +1 -0
- package/lib/components/CreditCalculator/constants.d.ts +7 -0
- package/lib/components/CreditCalculator/constants.js +8 -0
- package/lib/components/CreditCalculator/constants.js.map +1 -0
- package/lib/components/CreditCalculator/getCalculatorParams.d.ts +7 -0
- package/lib/components/CreditCalculator/getCalculatorParams.js +8 -0
- package/lib/components/CreditCalculator/getCalculatorParams.js.map +1 -0
- package/lib/components/CreditCalculator/getCreditRate.d.ts +7 -0
- package/lib/components/CreditCalculator/getCreditRate.js +10 -0
- package/lib/components/CreditCalculator/getCreditRate.js.map +1 -0
- package/lib/components/CreditCalculator/getCreditTermYears.d.ts +1 -0
- package/lib/components/CreditCalculator/getCreditTermYears.js +12 -0
- package/lib/components/CreditCalculator/getCreditTermYears.js.map +1 -0
- package/lib/components/CreditCalculator/getMonthlyPayment.d.ts +11 -0
- package/lib/components/CreditCalculator/getMonthlyPayment.js +16 -0
- package/lib/components/CreditCalculator/getMonthlyPayment.js.map +1 -0
- package/lib/components/ExchangeRateTile/ExchangeRateTile.fixture.d.ts +4 -0
- package/lib/components/Footer/Footer.fixture.d.ts +2 -0
- package/lib/components/Footer/SocialMedia.js +11 -5
- package/lib/components/Footer/SocialMedia.js.map +1 -1
- package/lib/components/Gallery/Gallery.fixture.d.ts +9 -0
- package/lib/components/Header/Header.fixture.d.ts +2 -0
- package/lib/components/Header/HeaderSecondaryMenu.js +1 -1
- package/lib/components/Header/HeaderSecondaryMenu.js.map +1 -1
- package/lib/components/LikeControl/LikeControl.fixture.d.ts +2 -0
- package/lib/components/MiniGallery/MiniGallery.fixture.d.ts +5 -0
- package/lib/components/MobileAppTile/MobileAppTile.fixture.d.ts +4 -0
- package/lib/components/Placeholder/Placeholder.fixture.d.ts +2 -0
- package/lib/components/ProductBlock/ProductBlock.fixture.d.ts +5 -0
- package/lib/components/ProductGallery/ProductGallery.fixture.d.ts +2 -0
- package/lib/components/ProductTile/ProductTile.fixture.d.ts +7 -0
- package/lib/components/PromoTile/PromoTile.fixture.d.ts +4 -0
- package/lib/components/StepsBlock/StepsBlock.fixture.d.ts +2 -0
- package/lib/components/TextBlock/TextBlock.fixture.d.ts +2 -0
- package/lib/components/Tile/Tile.fixture.d.ts +8 -0
- package/lib/cosmos.decorator.d.ts +4 -0
- package/lib/hooks/useCreditCalculatorData.d.ts +3 -0
- package/lib/hooks/useCreditCalculatorData.js +12 -0
- package/lib/hooks/useCreditCalculatorData.js.map +1 -0
- package/lib/setup-fixture.d.ts +3 -0
- package/lib/ui-kit/BlockItem/BlockItem.fixture.d.ts +3 -0
- package/lib/ui-kit/Button/Button.fixture.d.ts +13 -0
- package/lib/ui-kit/Button/LikeButton.fixture.d.ts +5 -0
- package/lib/ui-kit/HeaderItem/HeaderItem.fixture.d.ts +6 -0
- package/lib/ui-kit/Icon/Icon.fixture.d.ts +5 -0
- package/lib/ui-kit/Icon/Icon.js +2 -2
- package/lib/ui-kit/Icon/Icon.js.map +1 -1
- package/lib/ui-kit/Icon/IconProps.d.ts +4 -1
- package/lib/ui-kit/Icon/IconProps.js +3 -0
- package/lib/ui-kit/Icon/IconProps.js.map +1 -1
- package/lib/ui-kit/InputRange/InputRange.js +3 -2
- package/lib/ui-kit/InputRange/InputRange.js.map +1 -1
- package/lib/ui-kit/Logo/Logo.fixture.d.ts +3 -0
- package/lib/ui-kit/TopItem/TopItem.fixture.d.ts +6 -0
- package/lib/utils/addSpacesBetweenNumbers.d.ts +1 -0
- package/lib/utils/addSpacesBetweenNumbers.js +2 -0
- package/lib/utils/addSpacesBetweenNumbers.js.map +1 -0
- package/package.json +3 -2
- package/src/ProjectSettings.ts +1 -0
- package/src/components/Accordion/Accordion.fixture.tsx +62 -0
- package/src/components/Accordion/Accordion.tsx +22 -0
- package/src/components/Accordion/AccordionBlocks.tsx +7 -0
- package/src/components/Accordion/AccordionContent.ts +18 -0
- package/src/components/Accordion/AccordionItem.tsx +68 -0
- package/src/components/Blocks.ts +2 -0
- package/src/components/ContentPage/ContentPage.page.json +78 -0
- package/src/components/CreditCalculator/CreditCalculator.fixture.tsx +1 -1
- package/src/components/CreditCalculator/CreditCalculator.tsx +134 -85
- package/src/components/CreditCalculator/CreditCalculatorContent.ts +17 -0
- package/src/components/CreditCalculator/constants.ts +8 -0
- package/src/components/CreditCalculator/getCalculatorParams.ts +16 -0
- package/src/components/CreditCalculator/getCreditRate.ts +18 -0
- package/src/components/CreditCalculator/getCreditTermYears.spec.ts +10 -0
- package/src/components/CreditCalculator/getCreditTermYears.ts +15 -0
- package/src/components/CreditCalculator/getMonthlyPayment.ts +32 -0
- package/src/components/Footer/Footer.fixture.tsx +1 -1
- package/src/components/Footer/SocialMedia.tsx +26 -7
- package/src/components/Header/HeaderSecondaryMenu.tsx +6 -2
- package/src/hooks/useCreditCalculatorData.ts +23 -0
- package/src/icons/ActualBalanceIcon.svg +1 -0
- package/src/icons/AppleIcon.svg +1 -1
- package/src/icons/CalendarIcon.svg +1 -1
- package/src/icons/ClockIcon.svg +1 -0
- package/src/icons/ComfortableCompIcon.svg +1 -0
- package/src/icons/DocIcon.svg +5 -0
- package/src/icons/DollarIcon.svg +1 -1
- package/src/icons/EmptyWalletIcon.svg +1 -1
- package/src/icons/EuroIcon.svg +1 -1
- package/src/icons/GlassIcon.svg +1 -1
- package/src/icons/GridIcon.svg +2 -2
- package/src/icons/LoupeIcon.svg +1 -1
- package/src/icons/MinusIcon.svg +1 -0
- package/src/icons/NewDocIcon.svg +1 -0
- package/src/icons/OkIcon.svg +1 -2
- package/src/icons/PassSendIcon.svg +1 -0
- package/src/icons/PercentageSquareIcon.svg +1 -1
- package/src/icons/PlayMarketIcon.svg +1 -1
- package/src/icons/PlusIcon.svg +1 -0
- package/src/icons/ProfileIcon.svg +1 -1
- package/src/icons/SignDocsIcon.svg +1 -0
- package/src/icons/TelegramIcon.svg +1 -2
- package/src/icons/VKIcon.svg +1 -2
- package/src/ui-kit/Icon/Icon.tsx +8 -7
- package/src/ui-kit/Icon/IconProps.ts +3 -0
- package/src/ui-kit/InputRange/InputRange.tsx +3 -2
- package/src/utils/addSpacesBetweenNumbers.ts +2 -0
|
@@ -1,106 +1,155 @@
|
|
|
1
1
|
import { JSX } from '@redneckz/uni-jsx';
|
|
2
|
+
import { useCreditCalculatorData } from '../../hooks/useCreditCalculatorData';
|
|
2
3
|
import { UniBlockProps } from '../../types';
|
|
3
4
|
import { Button } from '../../ui-kit/Button/Button';
|
|
4
5
|
import { Checkbox } from '../../ui-kit/Checkbox/Checkbox';
|
|
5
6
|
import { InputRange } from '../../ui-kit/InputRange/InputRange';
|
|
7
|
+
import { addSpacesBetweenNumbers } from '../../utils/addSpacesBetweenNumbers';
|
|
6
8
|
import { clamp } from '../../utils/clamp';
|
|
9
|
+
import {
|
|
10
|
+
DEFAULT_MAX_MONTHS,
|
|
11
|
+
DEFAULT_MIN_MONTHS,
|
|
12
|
+
DEFAULT_MONTHS,
|
|
13
|
+
DEFAULT_SUM,
|
|
14
|
+
MONTHS_IN_YEAR,
|
|
15
|
+
} from './constants';
|
|
16
|
+
import { CreditCalculatorContent } from './CreditCalculatorContent';
|
|
17
|
+
import { getCalculatorParams } from './getCalculatorParams';
|
|
18
|
+
import { getCreditRate } from './getCreditRate';
|
|
19
|
+
import { getCreditTermYears } from './getCreditTermYears';
|
|
20
|
+
import { getMonthlyPayment } from './getMonthlyPayment';
|
|
7
21
|
|
|
8
|
-
export interface CreditCalculatorProps extends UniBlockProps {}
|
|
22
|
+
export interface CreditCalculatorProps extends CreditCalculatorContent, UniBlockProps {}
|
|
23
|
+
|
|
24
|
+
const STEP_MONEY = 1000;
|
|
25
|
+
const STEP_MONTHS = 1;
|
|
26
|
+
const DEFAULT_PAYMENT_TYPE = 'annuity';
|
|
9
27
|
|
|
10
28
|
const borderStyle = 'border-solid border-3 border-primary-main rounded-md';
|
|
11
29
|
|
|
12
|
-
const
|
|
13
|
-
|
|
14
|
-
const
|
|
30
|
+
export const CreditCalculator = JSX<CreditCalculatorProps>(
|
|
31
|
+
({ context, className, directoryName }) => {
|
|
32
|
+
const [moneyValue, setMoneyValue] = context.useState<number | undefined>(undefined);
|
|
33
|
+
const [monthsValue, setMonthsValue] = context.useState<number | undefined>(undefined);
|
|
34
|
+
const [isAnnuityChecked, setIsAnnuityChecked] = context.useState(true);
|
|
35
|
+
const [isInsuranceChecked, setIsInsuranceChecked] = context.useState(true);
|
|
15
36
|
|
|
16
|
-
const
|
|
37
|
+
const tableRows = useCreditCalculatorData(context.useAsyncData, directoryName).rows;
|
|
17
38
|
|
|
18
|
-
const
|
|
19
|
-
const MAX_MONTHS = 84;
|
|
20
|
-
const STEP_MONTHS = 1;
|
|
39
|
+
const calculatorParams = getCalculatorParams({ tableRows, isAnnuity: isAnnuityChecked });
|
|
21
40
|
|
|
22
|
-
const
|
|
41
|
+
const defaultSum =
|
|
42
|
+
calculatorParams.maxSum && calculatorParams.minSum
|
|
43
|
+
? (calculatorParams.maxSum - calculatorParams.minSum) / 2
|
|
44
|
+
: DEFAULT_SUM;
|
|
23
45
|
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
const [isInsuranceChecked, setIsInsuranceChecked] = context.useState(true);
|
|
46
|
+
const defaultMonths =
|
|
47
|
+
calculatorParams.maxMonths && calculatorParams.minMonths
|
|
48
|
+
? Math.round((calculatorParams.maxMonths - calculatorParams.minMonths) / 2)
|
|
49
|
+
: DEFAULT_MONTHS;
|
|
29
50
|
|
|
30
|
-
|
|
31
|
-
setMonthsValue(clamp(value * MONTHS_IN_YEAR, MIN_MONTHS, MAX_MONTHS));
|
|
32
|
-
};
|
|
51
|
+
const rate = getCreditRate({ calculatorParams, isInsurance: isInsuranceChecked });
|
|
33
52
|
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
53
|
+
const montlyPayment = getMonthlyPayment({
|
|
54
|
+
calculatorParams,
|
|
55
|
+
paymentType: DEFAULT_PAYMENT_TYPE,
|
|
56
|
+
rate,
|
|
57
|
+
sum: moneyValue || defaultSum,
|
|
58
|
+
months: monthsValue || defaultMonths,
|
|
59
|
+
});
|
|
60
|
+
|
|
61
|
+
const creditTermYears = getCreditTermYears(
|
|
62
|
+
calculatorParams.minMonths || DEFAULT_MIN_MONTHS,
|
|
63
|
+
calculatorParams.maxMonths || DEFAULT_MAX_MONTHS,
|
|
64
|
+
);
|
|
65
|
+
|
|
66
|
+
function handleButtonClick(value: number) {
|
|
67
|
+
setMonthsValue(
|
|
68
|
+
clamp(
|
|
69
|
+
value * MONTHS_IN_YEAR,
|
|
70
|
+
calculatorParams?.minMonths || DEFAULT_MIN_MONTHS,
|
|
71
|
+
calculatorParams?.maxMonths || DEFAULT_MAX_MONTHS,
|
|
72
|
+
),
|
|
73
|
+
);
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return (
|
|
77
|
+
<section className={`font-sans text-primary-text bg-white p-4 ${className}`}>
|
|
78
|
+
<div className={`box-border p-12 flex flex-col justify-between ${borderStyle}`}>
|
|
79
|
+
<div className="flex justify-between">
|
|
80
|
+
<div className="grow mr-11">
|
|
81
|
+
<InputRange
|
|
82
|
+
title="Желаемая сумма кредита, ₽"
|
|
83
|
+
items={[
|
|
84
|
+
`От ${addSpacesBetweenNumbers(Number(calculatorParams.minSum))} рублей`,
|
|
85
|
+
`До ${addSpacesBetweenNumbers(Number(calculatorParams.maxSum))} рублей`,
|
|
86
|
+
]}
|
|
87
|
+
min={calculatorParams?.minSum}
|
|
88
|
+
max={calculatorParams?.maxSum}
|
|
89
|
+
step={STEP_MONEY}
|
|
90
|
+
value={moneyValue || defaultSum}
|
|
91
|
+
onChange={setMoneyValue}
|
|
92
|
+
/>
|
|
93
|
+
<InputRange
|
|
94
|
+
title="Срок кредита, месяцев"
|
|
95
|
+
items={['Или выберите из предложенных вариантов ниже']}
|
|
96
|
+
min={calculatorParams?.minMonths}
|
|
97
|
+
max={calculatorParams?.maxMonths}
|
|
98
|
+
step={STEP_MONTHS}
|
|
99
|
+
value={monthsValue || defaultMonths}
|
|
100
|
+
onChange={setMonthsValue}
|
|
101
|
+
/>
|
|
102
|
+
<div className="flex mb-7">
|
|
103
|
+
{creditTermYears.map((number, i) => renderButton(number, i, handleButtonClick))}
|
|
104
|
+
</div>
|
|
105
|
+
<Checkbox
|
|
106
|
+
text="Получаю пенсию на карту Россельхозбанка"
|
|
107
|
+
checked={isAnnuityChecked}
|
|
108
|
+
onChange={setIsAnnuityChecked}
|
|
109
|
+
/>
|
|
110
|
+
<Checkbox
|
|
111
|
+
className="mb-4"
|
|
112
|
+
text="Комплексная страховая защита"
|
|
113
|
+
checked={isInsuranceChecked}
|
|
114
|
+
onChange={setIsInsuranceChecked}
|
|
115
|
+
/>
|
|
116
|
+
</div>
|
|
117
|
+
<div className="p-9 bg-primary-main rounded-md text-white">
|
|
118
|
+
<div className="text-base mb-5">Наше предложение</div>
|
|
119
|
+
<div className="text-sm opacity-60">Ежемесячный платёж</div>
|
|
120
|
+
<div className="text-lg mb-3">
|
|
121
|
+
{addSpacesBetweenNumbers(Math.round(montlyPayment))} ₽
|
|
122
|
+
</div>
|
|
123
|
+
<div className="text-sm opacity-60">Ставка</div>
|
|
124
|
+
<div className="text-lg">{rate} %</div>
|
|
59
125
|
</div>
|
|
60
|
-
<Checkbox
|
|
61
|
-
text="Получаю пенсию на карту Россельхозбанка"
|
|
62
|
-
checked={isAnnuityChecked}
|
|
63
|
-
onChange={setIsAnnuityChecked}
|
|
64
|
-
/>
|
|
65
|
-
<Checkbox
|
|
66
|
-
className="mb-4"
|
|
67
|
-
text="Комплексная страховая защита"
|
|
68
|
-
checked={isInsuranceChecked}
|
|
69
|
-
onChange={setIsInsuranceChecked}
|
|
70
|
-
/>
|
|
71
|
-
</div>
|
|
72
|
-
<div className="p-9 bg-primary-main rounded-md text-white">
|
|
73
|
-
<div className="text-base mb-5">Наше предложение</div>
|
|
74
|
-
<div className="text-sm opacity-60">Ежемесячный платёж</div>
|
|
75
|
-
<div className="text-lg mb-3">26 827 ₽</div>
|
|
76
|
-
<div className="text-sm opacity-60">Ставка</div>
|
|
77
|
-
<div className="text-lg">16,9 %</div>
|
|
78
126
|
</div>
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
127
|
+
<div className="flex items-center">
|
|
128
|
+
<Button className="mr-3" text="Отправить заявку" version="primary" href="#" />
|
|
129
|
+
<div
|
|
130
|
+
className="w-80 text-xxs leading-4 text-secondary-text"
|
|
131
|
+
aria-label="Соглашение на обработку персональных данных"
|
|
132
|
+
>
|
|
133
|
+
Отправляя заявку, вы соглашаетесь на обработку персональных данных соответственно
|
|
134
|
+
требованиям ФЗ «О персональных данных»
|
|
135
|
+
</div>
|
|
88
136
|
</div>
|
|
89
137
|
</div>
|
|
90
|
-
</
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
const renderButton = (number: number, i: number, handleClick: (number: number) => void) => (
|
|
96
|
-
<div
|
|
97
|
-
key={String(i)}
|
|
98
|
-
className="bg-secondary-light rounded-3xl h-10 w-[75px] box-border mr-2 flex items-center justify-center cursor-pointer"
|
|
99
|
-
role="button"
|
|
100
|
-
onClick={() => handleClick(number)}
|
|
101
|
-
>
|
|
102
|
-
<span className="font-medium text-sm">
|
|
103
|
-
{number} {number > 4 ? 'лет' : 'года'}
|
|
104
|
-
</span>
|
|
105
|
-
</div>
|
|
138
|
+
</section>
|
|
139
|
+
);
|
|
140
|
+
},
|
|
106
141
|
);
|
|
142
|
+
|
|
143
|
+
function renderButton(number: number, i: number, handleClick: (number: number) => void) {
|
|
144
|
+
return (
|
|
145
|
+
<button
|
|
146
|
+
key={String(i)}
|
|
147
|
+
className="bg-secondary-light rounded-3xl h-10 w-[75px] box-border mr-2 flex items-center justify-center cursor-pointer border-none"
|
|
148
|
+
onClick={() => handleClick(number)}
|
|
149
|
+
>
|
|
150
|
+
<span className="font-semibold text-sm">
|
|
151
|
+
{number} {number === 1 ? 'год' : number > 4 ? 'лет' : 'года'}
|
|
152
|
+
</span>
|
|
153
|
+
</button>
|
|
154
|
+
);
|
|
155
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface CalculatorParams {
|
|
2
|
+
isAnnuity?: boolean;
|
|
3
|
+
minSum?: number;
|
|
4
|
+
maxSum?: number;
|
|
5
|
+
minMonths?: number;
|
|
6
|
+
maxMonths?: number;
|
|
7
|
+
rateWithInsurance?: number;
|
|
8
|
+
rateWithoutInsurance?: number;
|
|
9
|
+
}
|
|
10
|
+
|
|
11
|
+
export interface CreditCalculatorData {
|
|
12
|
+
rows?: CalculatorParams[];
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export interface CreditCalculatorContent {
|
|
16
|
+
directoryName?: string;
|
|
17
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export const DEFAULT_MIN_SUM = 30000;
|
|
2
|
+
export const DEFAULT_MAX_SUM = 3000000;
|
|
3
|
+
export const DEFAULT_SUM = (DEFAULT_MAX_SUM - DEFAULT_MIN_SUM) / 2;
|
|
4
|
+
export const DEFAULT_MIN_MONTHS = 1;
|
|
5
|
+
export const DEFAULT_MAX_MONTHS = 84;
|
|
6
|
+
export const DEFAULT_MONTHS = Math.round((DEFAULT_MAX_MONTHS - DEFAULT_MIN_MONTHS) / 2);
|
|
7
|
+
|
|
8
|
+
export const MONTHS_IN_YEAR = 12;
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { CalculatorParams } from './CreditCalculatorContent';
|
|
2
|
+
|
|
3
|
+
interface GetCalculatorParamsParams {
|
|
4
|
+
tableRows?: CalculatorParams[];
|
|
5
|
+
isAnnuity?: boolean;
|
|
6
|
+
}
|
|
7
|
+
|
|
8
|
+
export const getCalculatorParams = (params: GetCalculatorParamsParams) => {
|
|
9
|
+
const { tableRows, isAnnuity = false } = params;
|
|
10
|
+
|
|
11
|
+
if (!tableRows) return {};
|
|
12
|
+
|
|
13
|
+
const calculatorParams = tableRows.find((row) => row.isAnnuity === isAnnuity);
|
|
14
|
+
|
|
15
|
+
return calculatorParams || {};
|
|
16
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { CalculatorParams } from './CreditCalculatorContent';
|
|
2
|
+
|
|
3
|
+
const DEFAULT_RATE = 5;
|
|
4
|
+
|
|
5
|
+
interface GetCreditRateParams {
|
|
6
|
+
calculatorParams?: CalculatorParams;
|
|
7
|
+
isInsurance: boolean;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
export const getCreditRate = (params: GetCreditRateParams) => {
|
|
11
|
+
const { calculatorParams, isInsurance } = params;
|
|
12
|
+
|
|
13
|
+
if (!calculatorParams) return DEFAULT_RATE;
|
|
14
|
+
|
|
15
|
+
return isInsurance
|
|
16
|
+
? calculatorParams?.rateWithInsurance || DEFAULT_RATE
|
|
17
|
+
: calculatorParams?.rateWithoutInsurance || DEFAULT_RATE;
|
|
18
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { getCreditTermYears } from './getCreditTermYears';
|
|
2
|
+
|
|
3
|
+
describe('getCreditTermYears', () => {
|
|
4
|
+
it('should return array starts from min year plus one and ends with max year', () => {
|
|
5
|
+
const minMonths = 12;
|
|
6
|
+
const maxMonths = 96;
|
|
7
|
+
const items = [2, 3, 4, 5, 6, 8];
|
|
8
|
+
expect(getCreditTermYears(minMonths, maxMonths)).toEqual(items);
|
|
9
|
+
});
|
|
10
|
+
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { MONTHS_IN_YEAR } from './constants';
|
|
2
|
+
|
|
3
|
+
const MAX_YEARS_LENGTH = 5;
|
|
4
|
+
|
|
5
|
+
export const getCreditTermYears = (minMonths: number, maxMonths: number) => {
|
|
6
|
+
const totalYears = Math.ceil((maxMonths - minMonths) / 12);
|
|
7
|
+
const firstYear = Math.floor(minMonths / MONTHS_IN_YEAR) + 1;
|
|
8
|
+
|
|
9
|
+
const result = new Array(Math.min(totalYears - 1, MAX_YEARS_LENGTH))
|
|
10
|
+
.fill(0)
|
|
11
|
+
.map((_, i) => firstYear + i);
|
|
12
|
+
|
|
13
|
+
const maxYear = totalYears + firstYear - 1;
|
|
14
|
+
return result.concat(maxYear);
|
|
15
|
+
};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { clamp } from '../../utils/clamp';
|
|
2
|
+
import { DEFAULT_MAX_SUM, DEFAULT_MIN_SUM, MONTHS_IN_YEAR } from './constants';
|
|
3
|
+
import { CalculatorParams } from './CreditCalculatorContent';
|
|
4
|
+
|
|
5
|
+
type PaymentType = 'annuity' | 'differentiated';
|
|
6
|
+
|
|
7
|
+
interface GetMonthlyPaymentParams {
|
|
8
|
+
calculatorParams?: CalculatorParams;
|
|
9
|
+
paymentType: PaymentType;
|
|
10
|
+
rate: number;
|
|
11
|
+
sum: number;
|
|
12
|
+
months: number;
|
|
13
|
+
}
|
|
14
|
+
|
|
15
|
+
export const getMonthlyPayment = (params: GetMonthlyPaymentParams) => {
|
|
16
|
+
const { calculatorParams, paymentType, rate, sum, months } = params;
|
|
17
|
+
|
|
18
|
+
if (!calculatorParams) return 0;
|
|
19
|
+
|
|
20
|
+
const finalSum = clamp(
|
|
21
|
+
sum,
|
|
22
|
+
calculatorParams.minSum || DEFAULT_MIN_SUM,
|
|
23
|
+
calculatorParams.maxSum || DEFAULT_MAX_SUM,
|
|
24
|
+
);
|
|
25
|
+
|
|
26
|
+
if (paymentType === 'annuity') {
|
|
27
|
+
const annuityCoef = Number(rate) / (MONTHS_IN_YEAR * 100);
|
|
28
|
+
return finalSum * (annuityCoef + annuityCoef / (Math.pow(1 + annuityCoef, months) - 1));
|
|
29
|
+
} else {
|
|
30
|
+
return finalSum / months + finalSum * (Number(rate) / 12);
|
|
31
|
+
}
|
|
32
|
+
};
|
|
@@ -188,7 +188,7 @@ export default (
|
|
|
188
188
|
],
|
|
189
189
|
},
|
|
190
190
|
]}
|
|
191
|
-
socialMedia={[{ href: 'https://
|
|
191
|
+
socialMedia={[{ href: 'https://t.me' }, { href: 'https://vk.com' }, { href: 'https://ok.ru' }]}
|
|
192
192
|
contacts={[
|
|
193
193
|
{
|
|
194
194
|
text: '+7 (495) 787-7-787',
|
|
@@ -6,10 +6,22 @@ import type { IconName } from '../../ui-kit/Icon/IconProps';
|
|
|
6
6
|
import { useLink } from '../../hooks/useLink';
|
|
7
7
|
import { Button } from '../../ui-kit/Button/Button';
|
|
8
8
|
|
|
9
|
-
const ICONS_MAP: Array<{
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
9
|
+
const ICONS_MAP: Array<{
|
|
10
|
+
origins: string[];
|
|
11
|
+
icon: IconName;
|
|
12
|
+
label: string;
|
|
13
|
+
width: string;
|
|
14
|
+
height: string;
|
|
15
|
+
}> = [
|
|
16
|
+
{
|
|
17
|
+
origins: ['t.me', 'telegram.org'],
|
|
18
|
+
icon: 'TelegramIcon',
|
|
19
|
+
label: 'Телеграм',
|
|
20
|
+
width: '20px',
|
|
21
|
+
height: '16px',
|
|
22
|
+
},
|
|
23
|
+
{ origins: ['vk.com'], icon: 'VKIcon', label: 'ВКонтакте', width: '24px', height: '12px' },
|
|
24
|
+
{ origins: ['ok.ru'], icon: 'OkIcon', label: 'Одноклассники', width: '12px', height: '20px' },
|
|
13
25
|
];
|
|
14
26
|
|
|
15
27
|
export interface SocialMediaProps extends UniBlockProps {
|
|
@@ -33,7 +45,7 @@ interface MediaButtonProps {
|
|
|
33
45
|
}
|
|
34
46
|
|
|
35
47
|
const MediaButton = JSX<MediaButtonProps>(({ href }) => {
|
|
36
|
-
const { icon, label } =
|
|
48
|
+
const { icon, label, width, height } =
|
|
37
49
|
ICONS_MAP.find(({ origins }) => origins.some((_) => href?.includes(_))) || {};
|
|
38
50
|
|
|
39
51
|
if (!icon) return null;
|
|
@@ -45,8 +57,15 @@ const MediaButton = JSX<MediaButtonProps>(({ href }) => {
|
|
|
45
57
|
target="_blank"
|
|
46
58
|
rel="noopener noreferrer"
|
|
47
59
|
aria-label={label}
|
|
48
|
-
className="border-solid border border-main-divider w-9 h-9 flex items-center justify-center hover:
|
|
49
|
-
appendLeft={
|
|
60
|
+
className="border-solid border border-main-divider w-9 h-9 flex items-center justify-center hover:fill-primary-main"
|
|
61
|
+
appendLeft={
|
|
62
|
+
<Icon
|
|
63
|
+
name={icon}
|
|
64
|
+
width={width}
|
|
65
|
+
height={height}
|
|
66
|
+
className="[&>*]:fill-primary-text [&>*]:hover:fill-primary-main"
|
|
67
|
+
/>
|
|
68
|
+
}
|
|
50
69
|
/>
|
|
51
70
|
);
|
|
52
71
|
});
|
|
@@ -45,10 +45,14 @@ export const HeaderSecondaryMenu = JSX<HeaderSecondaryMenuProps>(
|
|
|
45
45
|
<Icon name="ProfileIcon" aria-hidden="true" />
|
|
46
46
|
</HeaderSecondaryMenuButton>
|
|
47
47
|
<HeaderSecondaryMenuButton
|
|
48
|
-
className="mr-5 text-secondary-light hover:text-
|
|
48
|
+
className="mr-5 text-secondary-light hover:text-primary-main min-w-[32px] min-h-[32px]"
|
|
49
49
|
ariaLabel="Дополнительные ссылки"
|
|
50
50
|
>
|
|
51
|
-
<Icon
|
|
51
|
+
<Icon
|
|
52
|
+
name="GridIcon"
|
|
53
|
+
aria-hidden="true"
|
|
54
|
+
className="[&>*]:fill-secondary-light [&>*]:hover:fill-primary-main"
|
|
55
|
+
/>
|
|
52
56
|
</HeaderSecondaryMenuButton>
|
|
53
57
|
</div>
|
|
54
58
|
);
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { AsyncDataHook } from '../components/ContentPage/ContentPageContext';
|
|
2
|
+
import { CreditCalculatorData } from '../components/CreditCalculator/CreditCalculatorContent';
|
|
3
|
+
|
|
4
|
+
export function useCreditCalculatorData(
|
|
5
|
+
useAsyncData: AsyncDataHook,
|
|
6
|
+
directoryName: string | undefined,
|
|
7
|
+
): CreditCalculatorData {
|
|
8
|
+
const { data } = useAsyncData(creditCalculatorUrl(directoryName), () =>
|
|
9
|
+
fetchCreditCalculatorData(directoryName),
|
|
10
|
+
);
|
|
11
|
+
return data || {};
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
async function fetchCreditCalculatorData(
|
|
15
|
+
directoryName: string | undefined,
|
|
16
|
+
): Promise<CreditCalculatorData> {
|
|
17
|
+
const response = await fetch(creditCalculatorUrl(directoryName));
|
|
18
|
+
return await response.json();
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
function creditCalculatorUrl(directoryName: string | undefined) {
|
|
22
|
+
return `/wcms-resources/${directoryName || 'credit-calculator-data'}.json`;
|
|
23
|
+
}
|
package/src/icons/AppleIcon.svg
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 24"><path d="M18.406 12.761c-.023-3.028 2.793-4.511 2.93-4.572-1.603-2.073-4.075-2.357-4.968-2.377-2.083-.204-4.098 1.117-5.174 1.117-1.076 0-2.725-1.097-4.488-1.056-2.266.04-4.395 1.198-5.563 3.007-2.404 3.698-.618 9.124 1.694 12.09 1.145 1.464 2.496 3.09 4.259 3.028 1.717-.06 2.358-.975 4.441-.975 2.06 0 2.656.975 4.465.935 1.854-.02 3.022-1.463 4.12-2.947 1.329-1.666 1.855-3.332 1.878-3.413 0 0-3.549-1.2-3.594-4.837Zm-3.389-8.92c.916-1.037 1.557-2.419 1.374-3.841-1.35.061-3.022.833-3.984 1.829-.847.894-1.625 2.337-1.42 3.698 1.512.102 3.069-.67 4.03-1.686Z" fill="#42AB44"/></svg>
|
|
1
|
+
<svg id="icon" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 22 24"><path d="M18.406 12.761c-.023-3.028 2.793-4.511 2.93-4.572-1.603-2.073-4.075-2.357-4.968-2.377-2.083-.204-4.098 1.117-5.174 1.117-1.076 0-2.725-1.097-4.488-1.056-2.266.04-4.395 1.198-5.563 3.007-2.404 3.698-.618 9.124 1.694 12.09 1.145 1.464 2.496 3.09 4.259 3.028 1.717-.06 2.358-.975 4.441-.975 2.06 0 2.656.975 4.465.935 1.854-.02 3.022-1.463 4.12-2.947 1.329-1.666 1.855-3.332 1.878-3.413 0 0-3.549-1.2-3.594-4.837Zm-3.389-8.92c.916-1.037 1.557-2.419 1.374-3.841-1.35.061-3.022.833-3.984 1.829-.847.894-1.625 2.337-1.42 3.698 1.512.102 3.069-.67 4.03-1.686Z" fill="#42AB44"/></svg>
|
package/src/icons/ClockIcon.svg
CHANGED
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
<svg width="24" height="24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
|
+
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.809 2.759A2.813 2.813 0 0 1 11.742 2h5.524C18.776 2 20 3.16 20 4.59v13.82c0 1.43-1.224 2.59-2.734 2.59H6.734C5.224 21 4 19.84 4 18.41v-5.95c0-.477.408-.864.911-.864.504 0 .912.387.912.864v5.95c0 .476.408.863.911.863h10.532c.503 0 .911-.387.911-.864V4.591c0-.477-.408-.864-.911-.864h-5.367v4.03c0 .955-.816 1.728-1.823 1.728H4.911c-.368 0-.7-.21-.842-.533a.83.83 0 0 1 .198-.941l5.542-5.252Zm.267 2.19L7.112 7.758h2.964v-2.81Z" fill="#1C1C1C" />
|
|
3
|
+
<rect x="8" y="12" width="8" height="2" rx="1" fill="#42AB44" />
|
|
4
|
+
<rect x="8" y="15" width="5" height="2" rx="1" fill="#42AB44" />
|
|
5
|
+
</svg>
|
package/src/icons/DollarIcon.svg
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
1
|
+
<svg id="icon" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
2
|
<path
|
|
3
3
|
d="M12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24Z"
|
|
4
4
|
fill="#46B448"
|
package/src/icons/EuroIcon.svg
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
1
|
+
<svg id="icon" width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
|
|
2
2
|
<path
|
|
3
3
|
d="M12 24C18.6274 24 24 18.6274 24 12C24 5.37258 18.6274 0 12 0C5.37258 0 0 5.37258 0 12C0 18.6274 5.37258 24 12 24Z"
|
|
4
4
|
fill="#3060BF"
|
package/src/icons/GlassIcon.svg
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
<svg fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 63 63"><g clip-path="url(#a)"><path d="M63 60.987c0-.13-.172-.259-.505-.382-3.072-.812-12.836-1.398-24.405-1.398-14.04 0-25.427.873-25.427 1.944 0 .13.172.26.505.382 3.083.812 12.837 1.399 24.406 1.399 14.04 0 25.426-.873 25.426-1.945Z" fill="#050304"/><path d="M63 60.987c0-.13-.172-.259-.505-.382-3.072-.812-12.836-1.398-24.405-1.398-14.04 0-25.427.873-25.427 1.944 0 .13.172.26.505.382 3.083.812 12.837 1.399 24.406 1.399 14.04 0 25.426-.873 25.426-1.945Z" fill="url(#b)"/><path d="M63 60.987c0-.13-.172-.259-.505-.382-3.072-.812-12.836-1.398-24.405-1.398-14.04 0-25.427.873-25.427 1.944 0 .13.172.26.505.382 3.083.812 12.837 1.399 24.406 1.399 14.04 0 25.426-.873 25.426-1.945Z" fill="#050304"/><path d="M63 60.987c0-.13-.172-.259-.505-.382-3.072-.812-12.836-1.398-24.405-1.398-14.04 0-25.427.873-25.427 1.944 0 .13.172.26.505.382 3.083.812 12.837 1.399 24.406 1.399 14.04 0 25.426-.873 25.426-1.945Z" fill="url(#c)"/><path d="M53.554 40.447a.31.31 0 0 0-.609 0l-.269 1.279a1.153 1.153 0 0 1-.89.89l-1.28.27a.31.31 0 0 0 0 .608l1.28.27c.447.093.796.443.89.89l.27 1.28a.31.31 0 0 0 .608 0l.269-1.28c.094-.447.443-.797.89-.89l1.28-.27a.31.31 0 0 0 0-.608l-1.28-.27a1.153 1.153 0 0 1-.89-.89l-.27-1.279Z" fill="#FFCA42"/><path d="M48.658 53.298H15.076a.827.827 0 0 1-.824-.824v-2.213c0-.454.37-.825.824-.825h33.582c.453 0 .824.371.824.825v2.213c0 .453-.371.824-.824.824Z" fill="#FA552D"/><path d="M48.658 53.298H15.076a.827.827 0 0 1-.824-.824v-2.213c0-.454.37-.825.824-.825h33.582c.453 0 .824.371.824.825v2.213c0 .453-.371.824-.824.824Z" fill="#42AB44"/><path d="M26.19 52.168h-.597v.552h.597v-.552Zm1.196-.42h-.598v.972h.598v-.972Zm1.195-.643h-.598v1.615h.598v-1.615Zm1.195.26h-.598v1.355h.598v-1.356Zm1.191-1.357h-.598v2.436h.598v-2.436Zm1.195 0h-.597v2.712h.597v-2.712Zm1.196 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.19 0h-.597v2.712h.598v-2.712Zm1.196 0h-.597v2.712h.597v-2.712Zm1.195 0h-.597v2.712h.597v-2.712Zm1.196 0h-.598v1.904h.598v-1.904Zm1.19 0h-.597v2.712h.598v-2.712Zm1.196 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.195 0h-.597v2.712h.597v-2.712Zm1.191 0H44.7v2.712h.597v-2.712Zm1.196 0h-.598v2.712h.597v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Z" fill="#5F1A58"/><path d="M26.19 52.168h-.597v.552h.597v-.552Zm1.196-.42h-.598v.972h.598v-.972Zm1.195-.643h-.598v1.615h.598v-1.615Zm1.195.26h-.598v1.355h.598v-1.356Zm1.191-1.357h-.598v2.436h.598v-2.436Zm1.195 0h-.597v2.712h.597v-2.712Zm1.196 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.19 0h-.597v2.712h.598v-2.712Zm1.196 0h-.597v2.712h.597v-2.712Zm1.195 0h-.597v2.712h.597v-2.712Zm1.196 0h-.598v1.904h.598v-1.904Zm1.19 0h-.597v2.712h.598v-2.712Zm1.196 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.195 0h-.597v2.712h.597v-2.712Zm1.191 0H44.7v2.712h.597v-2.712Zm1.196 0h-.598v2.712h.597v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Z" fill="#050304"/><path d="M26.19 52.168h-.597v.552h.597v-.552Zm1.196-.42h-.598v.972h.598v-.972Zm1.195-.643h-.598v1.615h.598v-1.615Zm1.195.26h-.598v1.355h.598v-1.356Zm1.191-1.357h-.598v2.436h.598v-2.436Zm1.195 0h-.597v2.712h.597v-2.712Zm1.196 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.19 0h-.597v2.712h.598v-2.712Zm1.196 0h-.597v2.712h.597v-2.712Zm1.195 0h-.597v2.712h.597v-2.712Zm1.196 0h-.598v1.904h.598v-1.904Zm1.19 0h-.597v2.712h.598v-2.712Zm1.196 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.195 0h-.597v2.712h.597v-2.712Zm1.191 0H44.7v2.712h.597v-2.712Zm1.196 0h-.598v2.712h.597v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Z" fill="url(#d)"/><path d="M48.657 53.298H40.11v-3.862h8.544c.453 0 .824.371.824.824v2.214a.82.82 0 0 1-.82.824Z" fill="#050304"/><path d="M48.657 53.298H40.11v-3.862h8.544c.453 0 .824.371.824.824v2.214a.82.82 0 0 1-.82.824Z" fill="url(#e)"/><path d="M48.657 53.298H40.11v-3.862h8.544c.453 0 .824.371.824.824v2.214a.82.82 0 0 1-.82.824Z" fill="#050304"/><path d="M48.657 53.298H40.11v-3.862h8.544c.453 0 .824.371.824.824v2.214a.82.82 0 0 1-.82.824Z" fill="url(#f)"/><path d="M54.117 57.162H20.54a.827.827 0 0 1-.824-.824v-2.213c0-.454.37-.825.824-.825h33.582c.453 0 .824.371.824.825v2.213a.83.83 0 0 1-.829.824Z" fill="#42AB44"/><path d="M54.117 57.162H40.43l-20.714-2.176v-.861c0-.454.37-.825.824-.825h33.582c.453 0 .824.371.824.825v2.213a.83.83 0 0 1-.829.824Z" fill="#050304"/><path d="M54.117 57.162H40.43l-20.714-2.176v-.861c0-.454.37-.825.824-.825h33.582c.453 0 .824.371.824.825v2.213a.83.83 0 0 1-.829.824Z" fill="url(#g)"/><path d="M51.198 61.021H17.616a.827.827 0 0 1-.824-.824v-2.214c0-.453.37-.824.824-.824h33.582c.453 0 .824.371.824.825v2.213a.824.824 0 0 1-.824.824Z" fill="#050304"/><path d="M51.198 61.021H17.616a.827.827 0 0 1-.824-.824v-2.214c0-.453.37-.824.824-.824h33.582c.453 0 .824.371.824.825v2.213a.824.824 0 0 1-.824.824Z" fill="url(#h)"/><path d="M51.198 61.021H17.616a.827.827 0 0 1-.824-.824v-2.214c0-.453.37-.824.824-.824h33.582c.453 0 .824.371.824.825v2.213a.824.824 0 0 1-.824.824Z" fill="#050304"/><path d="M51.198 61.021H17.616a.827.827 0 0 1-.824-.824v-2.214c0-.453.37-.824.824-.824h33.582c.453 0 .824.371.824.825v2.213a.824.824 0 0 1-.824.824Z" fill="url(#i)"/><path d="M51.198 61.021h-8.544v-3.862h8.544c.453 0 .824.371.824.825v2.213c0 .457-.37.824-.824.824Z" fill="#050304"/><path d="M51.198 61.021h-8.544v-3.862h8.544c.453 0 .824.371.824.825v2.213c0 .457-.37.824-.824.824Z" fill="url(#j)"/><path d="M51.198 61.021h-8.544v-3.862h8.544c.453 0 .824.371.824.825v2.213c0 .457-.37.824-.824.824Z" fill="#050304"/><path d="M51.198 61.021h-8.544v-3.862h8.544c.453 0 .824.371.824.825v2.213c0 .457-.37.824-.824.824Z" fill="url(#k)"/><path d="M24.704 57.763h-.598v2.658h.598v-2.658Zm1.195.334h-.597v1.99h.597v-1.99Zm1.191.614h-.597v.762h.597v-.762Zm1.196.56h-.598v1.15h.598v-1.15Zm1.195-1.137h-.598v.956h.598v-.956Zm2.386.383h-.598v1.15h.598v-1.15Z" fill="#5F1A58"/><path d="M24.704 57.763h-.598v2.658h.598v-2.658Zm1.195.334h-.597v1.99h.597v-1.99Zm1.191.614h-.597v.762h.597v-.762Zm1.196.56h-.598v1.15h.598v-1.15Zm1.195-1.137h-.598v.956h.598v-.956Zm2.386.383h-.598v1.15h.598v-1.15Z" fill="#050304"/><path d="M24.704 57.763h-.598v2.658h.598v-2.658Zm1.195.334h-.597v1.99h.597v-1.99Zm1.191.614h-.597v.762h.597v-.762Zm1.196.56h-.598v1.15h.598v-1.15Zm1.195-1.137h-.598v.956h.598v-.956Zm2.386.383h-.598v1.15h.598v-1.15Z" fill="url(#l)"/><path d="M32.922 49.437c9.144 0 16.556-7.412 16.556-16.556 0-9.143-7.413-16.556-16.556-16.556s-16.556 7.413-16.556 16.556c0 9.144 7.413 16.556 16.556 16.556Z" fill="#050304"/><path d="M32.922 49.437c9.144 0 16.556-7.412 16.556-16.556 0-9.143-7.413-16.556-16.556-16.556s-16.556 7.413-16.556 16.556c0 9.144 7.413 16.556 16.556 16.556Z" fill="url(#m)"/><mask id="n" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="14" y="16" width="34" height="34"><path d="M30.804 49.436c9.143 0 16.556-7.412 16.556-16.556 0-9.143-7.413-16.555-16.556-16.555-9.144 0-16.556 7.412-16.556 16.555 0 9.144 7.412 16.556 16.556 16.556Z" fill="#91BD65"/></mask><g mask="url(#n)"><path d="M30.804 49.436c9.143 0 16.556-7.412 16.556-16.556 0-9.143-7.413-16.555-16.556-16.555-9.144 0-16.556 7.412-16.556 16.555 0 9.144 7.412 16.556 16.556 16.556Z" fill="url(#o)"/><path d="m24.416 27.667-7.386-8.172-2.827 1.636 6.256 6.714 3.957-.178Z" fill="#FFCA42"/><path d="m24.416 27.667-7.386-8.172-2.827 1.636 6.256 6.714 3.957-.178Z" fill="url(#p)"/><mask id="q" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="17" y="19" width="28" height="28"><path d="M30.803 46.495c7.519 0 13.614-6.095 13.614-13.613S38.322 19.27 30.803 19.27c-7.518 0-13.613 6.095-13.613 13.613s6.095 13.613 13.613 13.613Z" fill="#91BD65"/></mask><g mask="url(#q)"><path d="M30.803 46.495c7.519 0 13.614-6.095 13.614-13.613S38.322 19.27 30.803 19.27c-7.518 0-13.613 6.095-13.613 13.613s6.095 13.613 13.613 13.613Z" fill="#FA552D"/><path d="M30.803 46.495c7.519 0 13.614-6.095 13.614-13.613S38.322 19.27 30.803 19.27c-7.518 0-13.613 6.095-13.613 13.613s6.095 13.613 13.613 13.613Z" fill="url(#r)"/><path d="M30.803 46.495c7.519 0 13.614-6.095 13.614-13.613S38.322 19.27 30.803 19.27c-7.518 0-13.613 6.095-13.613 13.613s6.095 13.613 13.613 13.613Z" fill="url(#s)"/><path d="M15.888 49.14h29.369l-2.3-11.803a3.147 3.147 0 0 0-3.087-2.543H21.274a3.147 3.147 0 0 0-3.087 2.543l-2.3 11.804Z" fill="#FFCA42"/><path d="M15.888 49.14h29.369l-2.3-11.803a3.147 3.147 0 0 0-3.087-2.543H21.274a3.147 3.147 0 0 0-3.087 2.543l-2.3 11.804Z" fill="url(#t)"/></g><path d="M27.029 27.451c2.39-1.986.944-5.06-2.477-2.72-3.825 2.622-.532 5.222 2.477 2.72Z" fill="#FFCA42"/><path d="M27.029 27.451c2.39-1.986.944-5.06-2.477-2.72-3.825 2.622-.532 5.222 2.477 2.72Z" fill="url(#u)"/><path d="M31.34 20.876c-7.517 0-13.613 6.096-13.613 13.613 0 1.204.157 2.37.45 3.483a13.57 13.57 0 0 1-.986-5.09c0-7.517 6.096-13.613 13.614-13.613 6.313 0 11.622 4.303 13.163 10.135-2.02-5-6.911-8.528-12.628-8.528Z" fill="#FA552D"/><path d="M31.34 20.876c-7.517 0-13.613 6.096-13.613 13.613 0 1.204.157 2.37.45 3.483a13.57 13.57 0 0 1-.986-5.09c0-7.517 6.096-13.613 13.614-13.613 6.313 0 11.622 4.303 13.163 10.135-2.02-5-6.911-8.528-12.628-8.528Z" fill="url(#v)"/><path d="M31.34 20.876c-7.517 0-13.613 6.096-13.613 13.613 0 1.204.157 2.37.45 3.483a13.57 13.57 0 0 1-.986-5.09c0-7.517 6.096-13.613 13.614-13.613 6.313 0 11.622 4.303 13.163 10.135-2.02-5-6.911-8.528-12.628-8.528Z" fill="#050304"/><path d="M31.34 20.876c-7.517 0-13.613 6.096-13.613 13.613 0 1.204.157 2.37.45 3.483a13.57 13.57 0 0 1-.986-5.09c0-7.517 6.096-13.613 13.614-13.613 6.313 0 11.622 4.303 13.163 10.135-2.02-5-6.911-8.528-12.628-8.528Z" fill="url(#w)"/></g><path d="M21.614 6.16a.425.425 0 0 0-.833 0l-.368 1.75a1.578 1.578 0 0 1-1.22 1.22l-1.75.368a.425.425 0 0 0 0 .832l1.75.368c.613.13 1.091.607 1.22 1.22l.368 1.75a.425.425 0 0 0 .833 0l.368-1.75a1.578 1.578 0 0 1 1.219-1.22l1.75-.368a.425.425 0 0 0 0-.832l-1.75-.368a1.578 1.578 0 0 1-1.22-1.22l-.367-1.75ZM8.279 39.569a.64.64 0 0 0-1.252 0l-.553 2.632a2.372 2.372 0 0 1-1.833 1.833l-2.632.553a.64.64 0 0 0 0 1.252l2.632.553c.92.194 1.64.913 1.833 1.833l.553 2.633a.64.64 0 0 0 1.252 0l.553-2.633c.194-.92.913-1.64 1.833-1.833l2.632-.553a.64.64 0 0 0 0-1.252l-2.632-.553A2.372 2.372 0 0 1 8.832 42.2l-.553-2.632Z" fill="#FFCA42"/></g><defs><linearGradient id="b" x1="12.663" y1="61.069" x2="63" y2="61.069" gradientUnits="userSpaceOnUse"><stop stop-color="#FA552D"/><stop offset=".104" stop-color="#FA552D" stop-opacity="0"/><stop offset=".81" stop-color="#5F1A58" stop-opacity="0"/><stop offset="1" stop-color="#5F1A58"/></linearGradient><linearGradient id="c" x1="63" y1="62.932" x2="12.717" y2="62.932" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".297" stop-color="#00D63C" stop-opacity="0"/><stop offset=".833" stop-color="#FA552D" stop-opacity="0"/><stop offset="1" stop-color="#FA552D"/></linearGradient><linearGradient id="d" x1="62.165" y1="54.392" x2="15.354" y2="51.029" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".7" stop-color="#00D63C" stop-opacity="0"/></linearGradient><linearGradient id="e" x1="46.244" y1="51.847" x2="40.039" y2="51.847" gradientUnits="userSpaceOnUse"><stop stop-color="#5F1A58"/><stop offset="1" stop-color="#5F1A58" stop-opacity="0"/></linearGradient><linearGradient id="f" x1="54.82" y1="55.679" x2="35.901" y2="55.295" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".7" stop-color="#00D63C" stop-opacity="0"/></linearGradient><linearGradient id="g" x1="75.037" y1="59.543" x2="4.274" y2="54.143" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".7" stop-color="#00D63C" stop-opacity="0"/></linearGradient><linearGradient id="h" x1="16.792" y1="59.265" x2="21.944" y2="59.265" gradientUnits="userSpaceOnUse"><stop stop-color="#FA552D"/><stop offset="1" stop-color="#FA552D" stop-opacity="0"/></linearGradient><linearGradient id="i" x1="72.113" y1="63.402" x2="1.35" y2="58.002" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".7" stop-color="#00D63C" stop-opacity="0"/></linearGradient><linearGradient id="j" x1="42.757" y1="59.059" x2="48.94" y2="59.059" gradientUnits="userSpaceOnUse"><stop stop-color="#5F1A58"/><stop offset="1" stop-color="#5F1A58" stop-opacity="0"/></linearGradient><linearGradient id="k" x1="57.365" y1="63.402" x2="38.447" y2="63.018" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".7" stop-color="#00D63C" stop-opacity="0"/></linearGradient><linearGradient id="l" x1="36.293" y1="62.06" x2="20.623" y2="61.677" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".7" stop-color="#00D63C" stop-opacity="0"/></linearGradient><linearGradient id="m" x1="55.687" y1="41.093" x2="29.024" y2="16.325" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".297" stop-color="#00D63C" stop-opacity="0"/><stop offset=".833" stop-color="#FA552D" stop-opacity="0"/><stop offset="1" stop-color="#FA552D"/></linearGradient><linearGradient id="o" x1="23.849" y1="45.931" x2="26.662" y2="14.768" gradientUnits="userSpaceOnUse"><stop stop-color="#7DC15D"/><stop offset="1" stop-color="#FEE54F"/></linearGradient><linearGradient id="p" x1="18.119" y1="22.174" x2="19.561" y2="25.265" gradientUnits="userSpaceOnUse"><stop stop-color="#FEFFCF"/><stop offset="1" stop-color="#FEFFCF" stop-opacity="0"/></linearGradient><linearGradient id="r" x1="28.215" y1="46.697" x2="28.215" y2="21.144" gradientUnits="userSpaceOnUse"><stop stop-color="#FFCA42"/><stop offset="1" stop-color="#FFCA42" stop-opacity="0"/></linearGradient><linearGradient id="s" x1="24.794" y1="25.705" x2="30.803" y2="46.495" gradientUnits="userSpaceOnUse"><stop stop-color="#7DC15D"/><stop offset="1" stop-color="#FEE54F"/></linearGradient><linearGradient id="t" x1="30.572" y1="34.794" x2="30.572" y2="40.927" gradientUnits="userSpaceOnUse"><stop stop-color="#FEFFCF"/><stop offset="1" stop-color="#FEFFCF" stop-opacity="0"/></linearGradient><linearGradient id="u" x1="24.301" y1="28.354" x2="24.919" y2="25.469" gradientUnits="userSpaceOnUse"><stop stop-color="#FEFFCF"/><stop offset="1" stop-color="#FEFFCF" stop-opacity="0"/></linearGradient><linearGradient id="v" x1="24.301" y1="20.32" x2="26.98" y2="30.005" gradientUnits="userSpaceOnUse"><stop stop-color="#5F1A58"/><stop offset="1" stop-color="#5F1A58" stop-opacity="0"/></linearGradient><linearGradient id="w" x1="59.239" y1="49.504" x2="5.149" y2="48.856" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".7" stop-color="#00D63C" stop-opacity="0"/></linearGradient><clipPath id="a"><path fill="#fff" d="M0 0h63v63H0z"/></clipPath></defs></svg>
|
|
1
|
+
<svg id="icon" fill="none" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 63 63"><g clip-path="url(#a)"><path d="M63 60.987c0-.13-.172-.259-.505-.382-3.072-.812-12.836-1.398-24.405-1.398-14.04 0-25.427.873-25.427 1.944 0 .13.172.26.505.382 3.083.812 12.837 1.399 24.406 1.399 14.04 0 25.426-.873 25.426-1.945Z" fill="#050304"/><path d="M63 60.987c0-.13-.172-.259-.505-.382-3.072-.812-12.836-1.398-24.405-1.398-14.04 0-25.427.873-25.427 1.944 0 .13.172.26.505.382 3.083.812 12.837 1.399 24.406 1.399 14.04 0 25.426-.873 25.426-1.945Z" fill="url(#b)"/><path d="M63 60.987c0-.13-.172-.259-.505-.382-3.072-.812-12.836-1.398-24.405-1.398-14.04 0-25.427.873-25.427 1.944 0 .13.172.26.505.382 3.083.812 12.837 1.399 24.406 1.399 14.04 0 25.426-.873 25.426-1.945Z" fill="#050304"/><path d="M63 60.987c0-.13-.172-.259-.505-.382-3.072-.812-12.836-1.398-24.405-1.398-14.04 0-25.427.873-25.427 1.944 0 .13.172.26.505.382 3.083.812 12.837 1.399 24.406 1.399 14.04 0 25.426-.873 25.426-1.945Z" fill="url(#c)"/><path d="M53.554 40.447a.31.31 0 0 0-.609 0l-.269 1.279a1.153 1.153 0 0 1-.89.89l-1.28.27a.31.31 0 0 0 0 .608l1.28.27c.447.093.796.443.89.89l.27 1.28a.31.31 0 0 0 .608 0l.269-1.28c.094-.447.443-.797.89-.89l1.28-.27a.31.31 0 0 0 0-.608l-1.28-.27a1.153 1.153 0 0 1-.89-.89l-.27-1.279Z" fill="#FFCA42"/><path d="M48.658 53.298H15.076a.827.827 0 0 1-.824-.824v-2.213c0-.454.37-.825.824-.825h33.582c.453 0 .824.371.824.825v2.213c0 .453-.371.824-.824.824Z" fill="#FA552D"/><path d="M48.658 53.298H15.076a.827.827 0 0 1-.824-.824v-2.213c0-.454.37-.825.824-.825h33.582c.453 0 .824.371.824.825v2.213c0 .453-.371.824-.824.824Z" fill="#42AB44"/><path d="M26.19 52.168h-.597v.552h.597v-.552Zm1.196-.42h-.598v.972h.598v-.972Zm1.195-.643h-.598v1.615h.598v-1.615Zm1.195.26h-.598v1.355h.598v-1.356Zm1.191-1.357h-.598v2.436h.598v-2.436Zm1.195 0h-.597v2.712h.597v-2.712Zm1.196 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.19 0h-.597v2.712h.598v-2.712Zm1.196 0h-.597v2.712h.597v-2.712Zm1.195 0h-.597v2.712h.597v-2.712Zm1.196 0h-.598v1.904h.598v-1.904Zm1.19 0h-.597v2.712h.598v-2.712Zm1.196 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.195 0h-.597v2.712h.597v-2.712Zm1.191 0H44.7v2.712h.597v-2.712Zm1.196 0h-.598v2.712h.597v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Z" fill="#5F1A58"/><path d="M26.19 52.168h-.597v.552h.597v-.552Zm1.196-.42h-.598v.972h.598v-.972Zm1.195-.643h-.598v1.615h.598v-1.615Zm1.195.26h-.598v1.355h.598v-1.356Zm1.191-1.357h-.598v2.436h.598v-2.436Zm1.195 0h-.597v2.712h.597v-2.712Zm1.196 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.19 0h-.597v2.712h.598v-2.712Zm1.196 0h-.597v2.712h.597v-2.712Zm1.195 0h-.597v2.712h.597v-2.712Zm1.196 0h-.598v1.904h.598v-1.904Zm1.19 0h-.597v2.712h.598v-2.712Zm1.196 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.195 0h-.597v2.712h.597v-2.712Zm1.191 0H44.7v2.712h.597v-2.712Zm1.196 0h-.598v2.712h.597v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Z" fill="#050304"/><path d="M26.19 52.168h-.597v.552h.597v-.552Zm1.196-.42h-.598v.972h.598v-.972Zm1.195-.643h-.598v1.615h.598v-1.615Zm1.195.26h-.598v1.355h.598v-1.356Zm1.191-1.357h-.598v2.436h.598v-2.436Zm1.195 0h-.597v2.712h.597v-2.712Zm1.196 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.19 0h-.597v2.712h.598v-2.712Zm1.196 0h-.597v2.712h.597v-2.712Zm1.195 0h-.597v2.712h.597v-2.712Zm1.196 0h-.598v1.904h.598v-1.904Zm1.19 0h-.597v2.712h.598v-2.712Zm1.196 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.195 0h-.597v2.712h.597v-2.712Zm1.191 0H44.7v2.712h.597v-2.712Zm1.196 0h-.598v2.712h.597v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Zm1.195 0h-.598v2.712h.598v-2.712Z" fill="url(#d)"/><path d="M48.657 53.298H40.11v-3.862h8.544c.453 0 .824.371.824.824v2.214a.82.82 0 0 1-.82.824Z" fill="#050304"/><path d="M48.657 53.298H40.11v-3.862h8.544c.453 0 .824.371.824.824v2.214a.82.82 0 0 1-.82.824Z" fill="url(#e)"/><path d="M48.657 53.298H40.11v-3.862h8.544c.453 0 .824.371.824.824v2.214a.82.82 0 0 1-.82.824Z" fill="#050304"/><path d="M48.657 53.298H40.11v-3.862h8.544c.453 0 .824.371.824.824v2.214a.82.82 0 0 1-.82.824Z" fill="url(#f)"/><path d="M54.117 57.162H20.54a.827.827 0 0 1-.824-.824v-2.213c0-.454.37-.825.824-.825h33.582c.453 0 .824.371.824.825v2.213a.83.83 0 0 1-.829.824Z" fill="#42AB44"/><path d="M54.117 57.162H40.43l-20.714-2.176v-.861c0-.454.37-.825.824-.825h33.582c.453 0 .824.371.824.825v2.213a.83.83 0 0 1-.829.824Z" fill="#050304"/><path d="M54.117 57.162H40.43l-20.714-2.176v-.861c0-.454.37-.825.824-.825h33.582c.453 0 .824.371.824.825v2.213a.83.83 0 0 1-.829.824Z" fill="url(#g)"/><path d="M51.198 61.021H17.616a.827.827 0 0 1-.824-.824v-2.214c0-.453.37-.824.824-.824h33.582c.453 0 .824.371.824.825v2.213a.824.824 0 0 1-.824.824Z" fill="#050304"/><path d="M51.198 61.021H17.616a.827.827 0 0 1-.824-.824v-2.214c0-.453.37-.824.824-.824h33.582c.453 0 .824.371.824.825v2.213a.824.824 0 0 1-.824.824Z" fill="url(#h)"/><path d="M51.198 61.021H17.616a.827.827 0 0 1-.824-.824v-2.214c0-.453.37-.824.824-.824h33.582c.453 0 .824.371.824.825v2.213a.824.824 0 0 1-.824.824Z" fill="#050304"/><path d="M51.198 61.021H17.616a.827.827 0 0 1-.824-.824v-2.214c0-.453.37-.824.824-.824h33.582c.453 0 .824.371.824.825v2.213a.824.824 0 0 1-.824.824Z" fill="url(#i)"/><path d="M51.198 61.021h-8.544v-3.862h8.544c.453 0 .824.371.824.825v2.213c0 .457-.37.824-.824.824Z" fill="#050304"/><path d="M51.198 61.021h-8.544v-3.862h8.544c.453 0 .824.371.824.825v2.213c0 .457-.37.824-.824.824Z" fill="url(#j)"/><path d="M51.198 61.021h-8.544v-3.862h8.544c.453 0 .824.371.824.825v2.213c0 .457-.37.824-.824.824Z" fill="#050304"/><path d="M51.198 61.021h-8.544v-3.862h8.544c.453 0 .824.371.824.825v2.213c0 .457-.37.824-.824.824Z" fill="url(#k)"/><path d="M24.704 57.763h-.598v2.658h.598v-2.658Zm1.195.334h-.597v1.99h.597v-1.99Zm1.191.614h-.597v.762h.597v-.762Zm1.196.56h-.598v1.15h.598v-1.15Zm1.195-1.137h-.598v.956h.598v-.956Zm2.386.383h-.598v1.15h.598v-1.15Z" fill="#5F1A58"/><path d="M24.704 57.763h-.598v2.658h.598v-2.658Zm1.195.334h-.597v1.99h.597v-1.99Zm1.191.614h-.597v.762h.597v-.762Zm1.196.56h-.598v1.15h.598v-1.15Zm1.195-1.137h-.598v.956h.598v-.956Zm2.386.383h-.598v1.15h.598v-1.15Z" fill="#050304"/><path d="M24.704 57.763h-.598v2.658h.598v-2.658Zm1.195.334h-.597v1.99h.597v-1.99Zm1.191.614h-.597v.762h.597v-.762Zm1.196.56h-.598v1.15h.598v-1.15Zm1.195-1.137h-.598v.956h.598v-.956Zm2.386.383h-.598v1.15h.598v-1.15Z" fill="url(#l)"/><path d="M32.922 49.437c9.144 0 16.556-7.412 16.556-16.556 0-9.143-7.413-16.556-16.556-16.556s-16.556 7.413-16.556 16.556c0 9.144 7.413 16.556 16.556 16.556Z" fill="#050304"/><path d="M32.922 49.437c9.144 0 16.556-7.412 16.556-16.556 0-9.143-7.413-16.556-16.556-16.556s-16.556 7.413-16.556 16.556c0 9.144 7.413 16.556 16.556 16.556Z" fill="url(#m)"/><mask id="n" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="14" y="16" width="34" height="34"><path d="M30.804 49.436c9.143 0 16.556-7.412 16.556-16.556 0-9.143-7.413-16.555-16.556-16.555-9.144 0-16.556 7.412-16.556 16.555 0 9.144 7.412 16.556 16.556 16.556Z" fill="#91BD65"/></mask><g mask="url(#n)"><path d="M30.804 49.436c9.143 0 16.556-7.412 16.556-16.556 0-9.143-7.413-16.555-16.556-16.555-9.144 0-16.556 7.412-16.556 16.555 0 9.144 7.412 16.556 16.556 16.556Z" fill="url(#o)"/><path d="m24.416 27.667-7.386-8.172-2.827 1.636 6.256 6.714 3.957-.178Z" fill="#FFCA42"/><path d="m24.416 27.667-7.386-8.172-2.827 1.636 6.256 6.714 3.957-.178Z" fill="url(#p)"/><mask id="q" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="17" y="19" width="28" height="28"><path d="M30.803 46.495c7.519 0 13.614-6.095 13.614-13.613S38.322 19.27 30.803 19.27c-7.518 0-13.613 6.095-13.613 13.613s6.095 13.613 13.613 13.613Z" fill="#91BD65"/></mask><g mask="url(#q)"><path d="M30.803 46.495c7.519 0 13.614-6.095 13.614-13.613S38.322 19.27 30.803 19.27c-7.518 0-13.613 6.095-13.613 13.613s6.095 13.613 13.613 13.613Z" fill="#FA552D"/><path d="M30.803 46.495c7.519 0 13.614-6.095 13.614-13.613S38.322 19.27 30.803 19.27c-7.518 0-13.613 6.095-13.613 13.613s6.095 13.613 13.613 13.613Z" fill="url(#r)"/><path d="M30.803 46.495c7.519 0 13.614-6.095 13.614-13.613S38.322 19.27 30.803 19.27c-7.518 0-13.613 6.095-13.613 13.613s6.095 13.613 13.613 13.613Z" fill="url(#s)"/><path d="M15.888 49.14h29.369l-2.3-11.803a3.147 3.147 0 0 0-3.087-2.543H21.274a3.147 3.147 0 0 0-3.087 2.543l-2.3 11.804Z" fill="#FFCA42"/><path d="M15.888 49.14h29.369l-2.3-11.803a3.147 3.147 0 0 0-3.087-2.543H21.274a3.147 3.147 0 0 0-3.087 2.543l-2.3 11.804Z" fill="url(#t)"/></g><path d="M27.029 27.451c2.39-1.986.944-5.06-2.477-2.72-3.825 2.622-.532 5.222 2.477 2.72Z" fill="#FFCA42"/><path d="M27.029 27.451c2.39-1.986.944-5.06-2.477-2.72-3.825 2.622-.532 5.222 2.477 2.72Z" fill="url(#u)"/><path d="M31.34 20.876c-7.517 0-13.613 6.096-13.613 13.613 0 1.204.157 2.37.45 3.483a13.57 13.57 0 0 1-.986-5.09c0-7.517 6.096-13.613 13.614-13.613 6.313 0 11.622 4.303 13.163 10.135-2.02-5-6.911-8.528-12.628-8.528Z" fill="#FA552D"/><path d="M31.34 20.876c-7.517 0-13.613 6.096-13.613 13.613 0 1.204.157 2.37.45 3.483a13.57 13.57 0 0 1-.986-5.09c0-7.517 6.096-13.613 13.614-13.613 6.313 0 11.622 4.303 13.163 10.135-2.02-5-6.911-8.528-12.628-8.528Z" fill="url(#v)"/><path d="M31.34 20.876c-7.517 0-13.613 6.096-13.613 13.613 0 1.204.157 2.37.45 3.483a13.57 13.57 0 0 1-.986-5.09c0-7.517 6.096-13.613 13.614-13.613 6.313 0 11.622 4.303 13.163 10.135-2.02-5-6.911-8.528-12.628-8.528Z" fill="#050304"/><path d="M31.34 20.876c-7.517 0-13.613 6.096-13.613 13.613 0 1.204.157 2.37.45 3.483a13.57 13.57 0 0 1-.986-5.09c0-7.517 6.096-13.613 13.614-13.613 6.313 0 11.622 4.303 13.163 10.135-2.02-5-6.911-8.528-12.628-8.528Z" fill="url(#w)"/></g><path d="M21.614 6.16a.425.425 0 0 0-.833 0l-.368 1.75a1.578 1.578 0 0 1-1.22 1.22l-1.75.368a.425.425 0 0 0 0 .832l1.75.368c.613.13 1.091.607 1.22 1.22l.368 1.75a.425.425 0 0 0 .833 0l.368-1.75a1.578 1.578 0 0 1 1.219-1.22l1.75-.368a.425.425 0 0 0 0-.832l-1.75-.368a1.578 1.578 0 0 1-1.22-1.22l-.367-1.75ZM8.279 39.569a.64.64 0 0 0-1.252 0l-.553 2.632a2.372 2.372 0 0 1-1.833 1.833l-2.632.553a.64.64 0 0 0 0 1.252l2.632.553c.92.194 1.64.913 1.833 1.833l.553 2.633a.64.64 0 0 0 1.252 0l.553-2.633c.194-.92.913-1.64 1.833-1.833l2.632-.553a.64.64 0 0 0 0-1.252l-2.632-.553A2.372 2.372 0 0 1 8.832 42.2l-.553-2.632Z" fill="#FFCA42"/></g><defs><linearGradient id="b" x1="12.663" y1="61.069" x2="63" y2="61.069" gradientUnits="userSpaceOnUse"><stop stop-color="#FA552D"/><stop offset=".104" stop-color="#FA552D" stop-opacity="0"/><stop offset=".81" stop-color="#5F1A58" stop-opacity="0"/><stop offset="1" stop-color="#5F1A58"/></linearGradient><linearGradient id="c" x1="63" y1="62.932" x2="12.717" y2="62.932" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".297" stop-color="#00D63C" stop-opacity="0"/><stop offset=".833" stop-color="#FA552D" stop-opacity="0"/><stop offset="1" stop-color="#FA552D"/></linearGradient><linearGradient id="d" x1="62.165" y1="54.392" x2="15.354" y2="51.029" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".7" stop-color="#00D63C" stop-opacity="0"/></linearGradient><linearGradient id="e" x1="46.244" y1="51.847" x2="40.039" y2="51.847" gradientUnits="userSpaceOnUse"><stop stop-color="#5F1A58"/><stop offset="1" stop-color="#5F1A58" stop-opacity="0"/></linearGradient><linearGradient id="f" x1="54.82" y1="55.679" x2="35.901" y2="55.295" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".7" stop-color="#00D63C" stop-opacity="0"/></linearGradient><linearGradient id="g" x1="75.037" y1="59.543" x2="4.274" y2="54.143" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".7" stop-color="#00D63C" stop-opacity="0"/></linearGradient><linearGradient id="h" x1="16.792" y1="59.265" x2="21.944" y2="59.265" gradientUnits="userSpaceOnUse"><stop stop-color="#FA552D"/><stop offset="1" stop-color="#FA552D" stop-opacity="0"/></linearGradient><linearGradient id="i" x1="72.113" y1="63.402" x2="1.35" y2="58.002" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".7" stop-color="#00D63C" stop-opacity="0"/></linearGradient><linearGradient id="j" x1="42.757" y1="59.059" x2="48.94" y2="59.059" gradientUnits="userSpaceOnUse"><stop stop-color="#5F1A58"/><stop offset="1" stop-color="#5F1A58" stop-opacity="0"/></linearGradient><linearGradient id="k" x1="57.365" y1="63.402" x2="38.447" y2="63.018" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".7" stop-color="#00D63C" stop-opacity="0"/></linearGradient><linearGradient id="l" x1="36.293" y1="62.06" x2="20.623" y2="61.677" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".7" stop-color="#00D63C" stop-opacity="0"/></linearGradient><linearGradient id="m" x1="55.687" y1="41.093" x2="29.024" y2="16.325" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".297" stop-color="#00D63C" stop-opacity="0"/><stop offset=".833" stop-color="#FA552D" stop-opacity="0"/><stop offset="1" stop-color="#FA552D"/></linearGradient><linearGradient id="o" x1="23.849" y1="45.931" x2="26.662" y2="14.768" gradientUnits="userSpaceOnUse"><stop stop-color="#7DC15D"/><stop offset="1" stop-color="#FEE54F"/></linearGradient><linearGradient id="p" x1="18.119" y1="22.174" x2="19.561" y2="25.265" gradientUnits="userSpaceOnUse"><stop stop-color="#FEFFCF"/><stop offset="1" stop-color="#FEFFCF" stop-opacity="0"/></linearGradient><linearGradient id="r" x1="28.215" y1="46.697" x2="28.215" y2="21.144" gradientUnits="userSpaceOnUse"><stop stop-color="#FFCA42"/><stop offset="1" stop-color="#FFCA42" stop-opacity="0"/></linearGradient><linearGradient id="s" x1="24.794" y1="25.705" x2="30.803" y2="46.495" gradientUnits="userSpaceOnUse"><stop stop-color="#7DC15D"/><stop offset="1" stop-color="#FEE54F"/></linearGradient><linearGradient id="t" x1="30.572" y1="34.794" x2="30.572" y2="40.927" gradientUnits="userSpaceOnUse"><stop stop-color="#FEFFCF"/><stop offset="1" stop-color="#FEFFCF" stop-opacity="0"/></linearGradient><linearGradient id="u" x1="24.301" y1="28.354" x2="24.919" y2="25.469" gradientUnits="userSpaceOnUse"><stop stop-color="#FEFFCF"/><stop offset="1" stop-color="#FEFFCF" stop-opacity="0"/></linearGradient><linearGradient id="v" x1="24.301" y1="20.32" x2="26.98" y2="30.005" gradientUnits="userSpaceOnUse"><stop stop-color="#5F1A58"/><stop offset="1" stop-color="#5F1A58" stop-opacity="0"/></linearGradient><linearGradient id="w" x1="59.239" y1="49.504" x2="5.149" y2="48.856" gradientUnits="userSpaceOnUse"><stop stop-color="#04D600"/><stop offset=".7" stop-color="#00D63C" stop-opacity="0"/></linearGradient><clipPath id="a"><path fill="#fff" d="M0 0h63v63H0z"/></clipPath></defs></svg>
|